LED八段数码管显示.doc_第1页
LED八段数码管显示.doc_第2页
LED八段数码管显示.doc_第3页
LED八段数码管显示.doc_第4页
LED八段数码管显示.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

八段数码管显示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: ; 八段管显示码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, r0mov 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, #OUTBITmov 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,#30DispAgain: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 INCDPTR ;指向8155B口 MOV A,#0FFH MOVX DPTR,A ;向B口写入某个字型 码,输出点亮8个LED SJMP $8155控制8位数码管和键盘电路图2) 多位动态显示接口应用采用8051与8155接口,再采用8155的I/O口控制数码管的段码和位码,同时,采用动态扫描方式依次循环点亮各位数码管,即可构成多位动态数码管显示电路。 整体设计思路如下: 由8155的A口控制段码输出,C口控制位码输出。采用定时器中断方式实现动态扫描,每隔20ms扫描一次,每位数码管点亮的时间为1ms。在单片机内部RAM设置待显示数据缓冲区,由查表程序完成显示译码。 将缓冲区内待显示数据转换成相应的段码,再将段码通过8051的P0口送至8155的A口;位码数据由累加器循环左移指令产生,再通过P0口送至8155的C口。 硬件电路设计如下: 上图为数码管动态显示电路。其中,8路驱动采用74LS244总线驱动器,6路驱动采用74LS07 OC门驱动器。74LS244输出经300 W上拉(或限流)电阻后接至电源,同时,接至数码管的各段,控制数码管的显示字符。74LS07输出经1 kW上拉电阻接至电源,同时接至各位数码管的公共端,控制每位数码管的显示时间,实现动态扫描。模拟生产线计数的按键信号接至P3.3口。六位实现6位显示的秒表:从左到右每2位LED分别显示小时、分和秒,并正常计数进位;上电后小时00 00 00,当显示到23 59 59后,6位显示清零,从头开始显示。软件设计如下: 以单片机内部RAM的30H35H单元作为显示数据缓冲区,六位数码管段码的获取及每位数码管的显示时间均由显示子程序完成。采用定时器中断方式实现动态扫描,每隔50 ms扫描一次,每位数码管点亮的时间为1 ms。单片机每接收一次按键信号(即模拟交通灯改变计数信号),显示缓冲区的待显示数据被刷新一次,数码管相应的显示数值也就随之发生变化。如连续按键进行测试,即可产生计数数据从左至右循环移动的效果。根据图中IO/、与单片机的连接可知,可以确定命令/状态字A口、B口、C口、计数值低8位寄存器及高6位和方式寄存器地址分别为:0100H、0101H、0102H、0103H、0104H、0105H 。片内资源分配如下表:名称地址分配用途初始化值MSEC20H定时器50MS计数单元14HSECOND21H秒计数单元00HMIN22H分计数单元00HHOUR23H小时计数单元00H30H35H显示缓冲区30H:秒的个位31H:秒的十位32H:分的个位33H:分的十位34H:小时的个位35H:小时的十位00H40H以上堆栈区软件流程图如下页图所示:主程序:MSECEQU20H;50MS计数单元SECOND EQU21H;秒单元MINEQU22H;分单元HOUREQU23H;小时单元ORG0000HLJMPMAINORG000BHLJMPCONTMAIN:MOVSP,#3FHMOVTMOD#01HMOVTH0,#3CHMOVTL0,#0B0HMOVIE,#82HMOVSECOND,#00HMOVMIN,#00HMOVHOUR,#00HMOVMSEC,#14HMOV35H,#00HMOV34H,#00HMOV33H,#00HMOV32H,#00HMOV31H,#00HMOV30H,#00HSETBTR0START:LCALLDISPSJMPSTART;LED动态显示子程序;功能:动态显示六个数码管;入口:显示缓冲区30H35H中待显示的6个数据DISP: MOV R0,#30H;显示缓冲区首址 MOV R7,#00H;设定每位显示延时时间 MOV R2,#06H;显示位数 MOV R3,#20H;共阳管位码初始值,从右端先亮 MOV A,R0;取显示缓冲区的一个数据DISP1:MOV DPTR, #TAB;查表首址给DPTR MOVC A, A+DPTR;查表得到显示字符的字型码MOVP0 , A; 将字型码送P0口MOVDPTR,#0101HMOVXDPTR,A;字型码送8155A口MOVA , R3;位选码送AMOVP2 , A;位码送P2口MOVDPTR,#0103HMOVXDPTR,A;位码送8155C口DJNZR7 , $;延时DJNZR7 , $;延时RR A;位码右移MOVR3,A;位码回送R3INCR0;指向下一位MOVA,R0;取显示缓冲区下一个数据DJNZR2,DISP1;6位显示一遍吗?RETTAB:DB0C0H, 0F9H, 0A4H , 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H 主程序流程图:;定时器中断子程序:;功能:50MS执行一次,完成秒、分、小时单元的刷新并拆开放到显示缓冲区;出口:显示缓冲区30H35H中存放待显示的6个数据CONT:PUSHACC MOVTH0,#3CH MOVTL0,#0B0H DJNZMSEC, RN;判断到20次吗?(暨1秒)到1秒,返回主程序MOVMSEC,#14H;1秒到,重置MSEC=20INCSECONDMOVA,SECONDMOVR1,#31H;指向显示缓冲区的31H单元LCALLBINBCD;调用拆字子程序,将秒拆开为十位、个位,分别放31H,30HMOVA,SECONDCJNEA,#60,RN;到60秒?未到返主程序MOVA,#0MOVSECOND,A;60秒到,秒单元清零显示子程序流程图:MOVR1,#31H;指向31H单元LCALLBINBCD;调用拆字子程序MOVA,MININCA;分单元内容加1MOVMIN,AMOVR1,#33H;R1指向33H单元LCALLBINBCD;调用拆字子程序,将分单元拆开为十位、个位,分别存放33H和32H单元MOVA,MINCJNEA,#60,RN;到60分吗?未到返主程序MOVA,#00MOVMIN,A;60分到,分单元清零MOVR1,#33H;指向33H单元LCALLBINBCD;调用拆字子程序MOVA,HOURINCA;小时单元内容加1MOVHOUR,AMOVR1,#35H;R1指向35H单元LCALLBINBCD;调用拆字子程序,将小时拆开为十位、个位,分别存放到35H和34H单元MOVA,HOURCJNEA,#24,RN;到24小时吗?未到返回主程序MOVA,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论