ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:68.59KB ,
资源ID:11208922      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11208922.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(LED八段数码管显示.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

LED八段数码管显示.docx

1、LED八段数码管显示八段数码管显示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:

2、 ; 八段管显示码db 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, r

3、0mov B, #8 ; 送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, #OU

4、TBITmov a, #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,#30DispAgai

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

6、个字型 码,输出点亮8个LED SJMP $8155控制8位数码管和键盘电路图2) 多位动态显示接口应用采用8051与8155接口,再采用8155的I/O口控制数码管的段码和位码,同时,采用动态扫描方式依次循环点亮各位数码管,即可构成多位动态数码管显示电路。 整体设计思路如下: 由8155的A口控制段码输出,C口控制位码输出。采用定时器中断方式实现动态扫描,每隔20ms扫描一次,每位数码管点亮的时间为1ms。在单片机内部RAM设置待显示数据缓冲区,由查表程序完成显示译码。 将缓冲区内待显示数据转换成相应的段码,再将段码通过8051的P0口送至8155的A口;位码数据由累加器循环左移指令产生,再

7、通过P0口送至8155的C口。 硬件电路设计如下: 上图为数码管动态显示电路。其中,8路驱动采用74LS244总线驱动器,6路驱动采用74LS07 OC门驱动器。74LS244输出经300 上拉(或限流)电阻后接至电源,同时,接至数码管的各段,控制数码管的显示字符。74LS07输出经1 k上拉电阻接至电源,同时接至各位数码管的公共端,控制每位数码管的显示时间,实现动态扫描。模拟生产线计数的按键信号接至P3.3口。六位实现6位显示的秒表:从左到右每2位LED分别显示小时、分和秒,并正常计数进位;上电后小时00 00 00,当显示到23 59 59后,6位显示清零,从头开始显示。软件设计如下: 以

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

9、如下表:名称地址分配用途初始化值MSEC20H定时器50MS计数单元14HSECOND21H秒计数单元00HMIN22H分计数单元00HHOUR23H小时计数单元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, #3F

10、H MOV TMOD #01H MOV TH0,#3CH MOV TL0,#0B0H MOV IE, #82H MOV SECOND, #00H MOV MIN, #00H MOV HOUR, #00H MOV MSEC, #14H MOV 35H, #00H MOV 34H, #00H MOV 33H, #00H MOV 32H, #00H MOV 31H, #00H MOV 30H, #00H SETB TR0START:LCALL DISP SJMP START;LED动态显示子程序;功能:动态显示六个数码管;入口:显示缓冲区30H35H中待显示的6个数据DISP: MOV R0,#30

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

12、55C口 DJNZ R7 , $ ;延时 DJNZ R7 , $ ;延时 RR A ;位码右移 MOV R3,A ;位码回送R3 INC 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 ACC MOV TH0,#3CH MOV

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

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

15、L BINBCD ;调用拆字子程序,将小时拆开为十位、个位,分别存放到35H和34H单元 MOV A, HOUR CJNE A, #24,RN ;到24小时吗?未到返回主程序 MOV A, #00 MOV HOUR, A ;到24小时,小时单元清零 MOV R1,#35H LCALL BINBCDRN: POP ACC RETI定时中断子程序流程图:;BCD码拆字子程序:;入口参数:A,待拆开的BCD码;R1:拆开后BCD码存放的末地址;功能:将A中的两个十六进制数拆开为哦两个BCD码,分别存放到R1指向的两个缓冲单元BINBCD:MOV B, #10 DIV AB MOV R1,A DEC R1 MOV A, B MOV R1,A RET END

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1