LED八段数码管显示.doc

上传人:hw****26 文档编号:3149576 上传时间:2019-05-23 格式:DOC 页数:10 大小:519KB
下载 相关 举报
LED八段数码管显示.doc_第1页
第1页 / 共10页
LED八段数码管显示.doc_第2页
第2页 / 共10页
LED八段数码管显示.doc_第3页
第3页 / 共10页
LED八段数码管显示.doc_第4页
第4页 / 共10页
LED八段数码管显示.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、八段数码管显示1.实验目的:(1)了解数码管动态显示的原理。(2)了解74LS164 扩展端口的方法。2.实验内容:利用实验仪提供的显示电路,动态显示一行数据。7.参考程序(SY10.ASM):OUTBIT equ 0e101h ; 位控制口CLK164 equ 0e102h ; 段控制口(接164 时钟位)DAT164 equ 0e102h ; 段控制口(接164 数据位)IN equ 0e103h ; 键盘读入口LEDBuf equ 60h ; 显示缓冲Num equ 70h ; 显示的数据DelayT equ 75horg 0000hljmp StartLEDMAP: ; 八段管显示码d

2、b 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07hdb 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ; 延时子程序mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #6 ; 共6 个八段管mov r2, #00100000b ; 从左边开始显示Loop:mov dptr, #OUTBITmov a, #00hmovx dptr, a ; 关所有八段管mov a, r0mov B, #8

3、 ; 送164DLP:rlc amov r3, amov acc.0, cANL A, #0FDHmov dptr, #DAT164movx dptr, amov dptr, #CLK164orl a,#02hmovx dptr, aanl a,#0fDhmovx dptr, amov a, r3djnz B, DLPmov dptr, #OUTBITmov a, r2movx dptr, a ; 显示一位八段管mov r6, #1call Delaymov a, r2 ; 显示下一位rr amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBITmov a,

4、 #0movx dptr, a ; 关所有八段管retStart: mov dptr,#0e100hmov a,#03hmovx dptr,amov sp, #40hmov Num, #0MLoop:inc Nummov a, Nummov b, amov r0, #LEDBufFillBuf:mov a, banl a, #0fhmov dptr, #LEDMapmovc a, a+dptr ; 数字转换成显示码mov r0,a ; 显示在码填入显示缓冲inc r0inc bcjne r0, #LEDBuf+6, FillBufmov DelayT,#30DispAgain:call Dis

5、playLED ; 显示djnz DelayT,DispAgainljmp MLoopEND八位数码管显示:8155 控制参考程序 2:对 8155 初始化,使 I/O 口控制 LED 的显示情况。ORG 0000HMOV DPTR,#4400H ;指向 8155 命令寄存器MOV A,#03H MOVX DPTR,A ;写入控制字。A 口、B 口为输出,C 口为输入INC DPTR ;指向 8155A 口MOV A,#00HMOVX DPTR,A ;向 A 口写入 00H,;输出选中所有 8 个 LEDINC DPTR ;指向 8155B 口MOV A,#0FFH MOVX DPTR,A ;

6、向 B 口写入某个字型码,输出点亮 8个 LEDSJMP $8155 控制 8 位数码管和键盘电路图26P2.6 27P2.7 28PSEN 29ALE/P 30TXD 11RXD 108031WRP20P21P22P23P24 接 8031RD接 8031WR接 8031ALE接 8031RESET8031P2274LS138200 8AD012 PA0 21AD113 PA1 22AD214 PA2 23AD315 PA3 24AD416 PA4 25AD517 PA5 26AD618 PA6 27AD719 PA7 28PB0 29CE8 PB1 30RD9 PB2 31WR10 PB3

7、 32IO/M7 PB4 33ALE11 PB5 34PB6 35PB7 36TMROUT6 PC0 37PC1 38TMRIN3 PC2 39PC3 1PC4 2RESET4 PC5 58155e d cdp b afg70 1 2 3 4 5 6VCCPC0PC1PC2PC3PA0PA70 1 2 34 5 6 78 9 10 1112 13 14 155.1 k4D03 Q0 2D14 Q1 5D27 Q2 6D38 Q3 9D413 Q4 12D514 Q5 15D617 Q6 16D718 Q7 19OE1 LE1174LS373A1 B2C3E14 E25E36Y0 15Y1 14

8、Y2 13Y3 12Y4 11Y5 10Y6 9Y7 7VCCP25P26P27A0 10A1 9A2 8A3 7A4 6A5 5A6 4A7 3A8 25A9 24A10 21A11 23A12 2CS1 20CS2 26WE 27OE 22D011 D112D213 D315D416 D517D618 D7196264VCCEA/VP31X119 X218RESET9RD17 WR16INT012 INT113T014 T115P1.01 P1.12P1.23 P1.34P1.45 P1.56P1.67 P1.78P0.0 39P0.1 38P0.2 37P0.3 36P0.4 35P0.

9、5 34P0.6 33P0.7 32P2.0 21P2.1 22P2.2 23P2.3 24P2.4 25P2.52) 多位动态显示接口应用采用 8051 与 8155 接口,再采用 8155 的 I/O 口控制数码管的段码和位码,同时,采用动态扫描方式依次循环点亮各位数码管,即可构成多位动态数码管显示电路。整体设计思路如下:由 8155 的 A 口控制段码输出, C 口控制位码输出。采用定时器中断方式实现动态扫描,每隔 20ms 扫描一次,每位数码管点亮的时间为 1ms。在单片机内部 RAM 设置待显示数据缓冲区,由查表程序完成显示译码。 将缓冲区内待显示数据转换成相应的段码,再将段码通过

10、8051 的 P0 口送至 8155 的A 口;位码数据由累加器循环左移指令产生,再通过 P0 口送至 8155 的 C 口。硬件电路设计如下:上图为数码管动态显示电路。其中,8 路驱动采用 74LS244 总线驱动器,6 路驱动采用 74LS07 OC 门驱动器。74LS244 输出经 300 上拉(或限流)电阻后接至电源,同时,接至数码管的各段,控制数码管的显示字符。74LS07 输出经 1 k 上拉电阻接至电源,同时接至各位数码管的公共端,控制每位数码管的显示时间,实现动态扫描。模拟生产线计数的按键信号接至 P3.3 口。六位实现 6 位显示的秒表:从左到右每 2 位 LED 分别显示小

11、时、分和秒,并正常计数进位;上电后小时 00 00 00,当显示到 23 59 59 后,6 位显示清零,从头开始显示。EA/VPX1X2RESETRDWRINT0INT1T0T1PSENALE/PTXDRXD8031AD0 PA0AD1 PA1AD2 PA2AD3 PA3AD4 PA4AD5 PA5AD6 PA6AD7 PA7PB0CE PB1RD PB2WR PB3IO/M PB4ALE PB5PB6PB7TMROUT PC0PC1TMRIN PC2PC3PC4RESET PC581551A11A21A31A42A12A22A32A41Y1 181Y2 161Y3 141Y4 122Y1

12、92Y2 72Y3 52Y4 31G2G 74LS244a bfcgdeabcdefgdpa bfcgdeabcdefgdpa bfcgdeabcdefgdpa bfcgdeabcdefgdpa bfcgdeabcdefgdpa bfcgdeabcdefgdp74LS071 23 45 6891011 12131A 1Y2A 2Y3A 3Y4A 4Y5A 5Y6A 6Y5 V300 81 k65 V 1 k311918917161213141512345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0

13、P2.1P2.2P2.3P2.4P2.5P2.6P2.7DPY DPY DPY DPY DPY DPYdp dp dp dp dp dp12345678123456781234567812345678123456781234567824681113151711921222324252627282930313233343536373839125121314151617181989107116343938373635343332212223242526272829301110软件设计如下:以单片机内部 RAM 的 30H35H 单元作为显示数据缓冲区,六位数码管段码的获取及每位数码管的显示时间均由

14、显示子程序完成。采用定时器中断方式实现动态扫描,每隔 50 ms 扫描一次,每位数码管点亮的时间为 1 ms。单片机每接收一次按键信号(即模拟交通灯改变计数信号) ,显示缓冲区的待显示数据被刷新一次,数码管相应的显示数值也就随之发生变化。如连续按键进行测试,即可产生计数数据从左至右循环移动的效果。根据图中 IO/、与单片机的连接可知,可以确定命令 /状态字 A 口、B 口、C 口、计数值低 8位寄存器及高 6 位和方式寄存器地址分别为:0100H、0101H、0102H、0103H、0104H 、0105H 。片内资源分配如下表:名称 地址分配 用途 初始化值MSEC 20H 定时器 50MS

15、 计数单元 14HSECOND 21H 秒计数单元 00HMIN 22H 分计数单元 00HHOUR 23H 小时计数单元 00H30H35H显示缓冲区30H:秒的个位31H:秒的十位32H:分的个位33H:分的十位34H:小时的个位35H:小时的十位00H40H 以上 堆栈区软件流程图如下页图所示:主程序:MSEC EQU 20H ;50MS 计数单元SECOND EQU 21H ;秒单元MIN EQU 22H ;分单元HOUR EQU 23H ;小时单元ORG 0000HLJMP MAINORG 000BHLJMP CONTMAIN: MOV SP, #3FHMOV TMOD #01HMO

16、V TH0,#3CHMOV TL0,#0B0HMOV IE, #82HMOV SECOND, #00HMOV MIN, #00HMOV HOUR, #00HMOV MSEC, #14HMOV 35H, #00HMOV 34H, #00HMOV 33H, #00HMOV 32H, #00HMOV 31H, #00HMOV 30H, #00HSETB TR0START:LCALL DISPSJMP START;LED 动态显示子程序;功能:动态显示六个数码管;入口:显示缓冲区 30H35H 中待显示的 6 个数据DISP: MOV R0,#30H ;显示缓冲区首址MOV R7,#00H ;设定每位

17、显示延时时间MOV R2,#06H ;显示位数MOV R3,#20H ;共阳管位码初始值,从右端先亮MOV A,R0 ;取显示缓冲区的一个数据DISP1: MOV DPTR, #TAB ;查表首址给 DPTRMOVC A, A+DPTR ;查表得到显示字符的字型码MOV P0 , A ; 将字型码送 P0 口MOV DPTR, #0101HMOVX DPTR, A ;字型码送 8155A 口MOV A , R3 ;位选码送 AMOV P2 , A ;位码送 P2 口MOV DPTR, #0103HMOVX DPTR, A ;位码送 8155C 口DJNZ R7 , $ ;延时DJNZ R7 ,

18、 $ ;延时RR A ;位码右移MOV R3,A ;位码回送 R3INC R0 ;指向下一位MOV A,R0 ;取显示缓冲区下一个数据DJNZ R2,DISP1 ;6 位显示一遍吗?RETTAB: DB 0C0H, 0F9H, 0A4H , 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H 主程序流程图:;定时器中断子程序:;功能:50MS 执行一次,完成秒、分、小时单元的刷新并拆开放到显示缓冲区;出口:显示缓冲区 30H35H 中存放待显示的 6 个数据CONT:PUSH ACCMOV TH0,#3CHMOV TL0,#0B0HDJNZ MSEC, RN ;判断到 20

19、 次吗?(暨 1 秒)到 1 秒,返回主程序MOV MSEC, #14H ;1 秒到,重置 MSEC=20INC SECONDMOV A, SECONDMOV R1,#31H ;指向显示缓冲区的 31H 单元LCALL BINBCD ;调用拆字子程序,将秒拆开为十位、个位,分别放31H,30HMOV A, SECONDCJNE A, #60,RN ;到 60 秒?未到返主程序MOV A, #0MOV SECOND, A ;60 秒到,秒单元清零显示子程序流程图:MOV R1, #31H ;指向 31H 单元LCALL BINBCD ;调用拆字子程序MOV A, MININC A ;分单元内容加

20、 1MOV MIN, AMOV R1, #33H ;R1 指向 33H 单元LCALL BINBCD ;调用拆字子程序,将分单元拆开为十位、个位,分别存放 33H 和 32H 单元MOV A, MINCJNE A, #60,RN ;到 60 分吗?未到返主程序MOV A, #00MOV MIN, A ;60 分到,分单元清零MOV R1,#33H ;指向 33H 单元LCALL BINBCD ;调用拆字子程序MOV A, HOURINC A ;小时单元内容加 1MOV HOUR, AMOV R1,#35H ;R1 指向 35H 单元LCALL BINBCD ;调用拆字子程序,将小时拆开为十位、

21、个位,分别存放到 35H 和 34H 单元MOV A, HOURCJNE A, #24,RN ;到 24 小时吗?未到返回主程序MOV A, #00MOV HOUR, A ;到 24 小时,小时单元清零MOV R1,#35HLCALL BINBCDRN: POP ACCRETI定时中断子程序流程图:;BCD 码拆字子程序:;入口参数:A,待拆开的 BCD 码;R1:拆开后 BCD 码存放的末地址;功能:将 A 中的两个十六进制数拆开为哦两个 BCD 码,分别存放到 R1 指向的两个缓冲单元BINBCD:MOV B, #10DIV ABMOV R1,ADEC R1MOV A, BMOV R1,ARETEND

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 建筑建材

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。