1 / 11
文档名称:

六位LED八段数码管显示.pdf

格式:pdf   大小:935KB   页数:11页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

六位LED八段数码管显示.pdf

上传人:1781111**** 2024/5/11 文件大小:935 KB

下载得到文件列表

六位LED八段数码管显示.pdf

相关文档

文档介绍

文档介绍:该【六位LED八段数码管显示 】是由【1781111****】上传分享,文档一共【11】页,该文档可以免费在线阅读,需要了解更多关于【六位LED八段数码管显示 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..:(1)了解数码管动态显示的原理。(2)了解74LS164扩展端口的方法。:利用实验仪提供的显示电路,动态显示一行数据。:PB数据输入0PB时钟输入1说明:这里只是显示草图,:(1)QTH2008下载式综合实验仪1台(2)QTH2008仿真器1台(3):(1)本实验仪提供了8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8段码是由8155的PB0、PB1经74LS164“串转并”后输出得到。6位位码由8155(或8255)的PA0-5口输出,经uA2003反向驱动后,选择相应显示位。74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位置到74LS164中,并且实现移位。向显示位选通地址输出高电平就可以点亮相应的显示位。本实验仪中数据位输出地址为0e102H,时钟位输出地址为0e102H,位选通输出地址为0e101H。本实验涉及到了8155I0/RAM扩展芯片的工作原理以及74LS164器件的工作原理。(2)七段数码管的字型代码表如下表:显示字gfedcba段码形001111113fh1000011006h210110115bh310011114fh4110011066h511011016dh611111017dh:..:():OUTBITequ0e101h;位控制口CLK164equ0e102h;段控制口(接164时钟位)DAT164equ0e102h;段控制口(接164数据位)INequ0e103h;键盘读入口LEDBufequ60h;显示缓冲Numequ70h;显示的数据DelayTequ75horg0000hljmpStartLEDMAP:;八段管显示码db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71hDelay:;延时子程序movr7,#0DelayLoop:djnzr7,DelayLoop:..djnzr6,DelayLoopretDisplayLED:movr0,#LEDBufmovr1,#6;共6个八段管movr2,#00100000b;从左边开始显示Loop:movdptr,#OUTBITmova,#******@dptr,a;关所有八段管mova,***@r0movB,#8;送164DLP:rlcamovr3,,cANLA,#0FDHmovdptr,#******@dptr,amovdptr,#CLK164orla,#******@dptr,aanla,#******@dptr,amova,r3djnzB,DLPmovdptr,#OUTBITmova,******@dptr,a;显示一位八段管movr6,#1callDelaymova,r2;显示下一位rramovr2,aincr0djnzr1,Loopmovdptr,#OUTBITmova,#******@dptr,a;关所有八段管retStart:movdptr,#0e100hmova,#******@dptr,amovsp,#40h:..movNum,#0MLoop:ummova,Nummovb,amovr0,#LEDBufFillBuf:mova,banla,#0fhmovdptr,#LEDMapmovca,***@a+dptr;数字转换成显示码******@r0,a;显示在码填入显示缓冲incr0incbcjner0,#LEDBuf+6,FillBufmovDelayT,#30DispAgain:callDisplayLED;显示djnzDelayT,DispAgainljmpMLoopEND八位数码管显示:8155控制参考程序2:对8155初始化,使I/O口控制LED的显示情况。ORG0000HMOVDPTR,#4400H;指向8155命令寄存器MOVA,#******@DPTR,A;写入控制字。A口、B口为输出,C口为输入INCDPTR;指向8155A口MOVA,#******@DPTR,A;向A口写入00H,;输出选中所有8个LEDINCDPTR;指向8155B口MOVA,#******@DPTR,A;向B口写入某个字型码,输出点亮8个LEDSJMP$:...728CS219X1CS12018X2P251AY01511P273C8383Y21317TXD30112RDALE/PSY31116WRPSEN29LY44E14Y510WR5E27Y696E3Y77VCC12218×8×13AD0PA022?AD1PA114AD2PA223015AD3PA324020216AD4PA42517AD5PA52618AD6PA62719AD7PA72829pdpdgfedcba8PB0309CEPB131RD8155PB210WRPB332接8031P227IO/?×4PC037PC0383PC139PC14567TMRINPC21PC32PC28910114PC45RESETPC5PC312131415接8031RESETPA0~PA7VCC2)多位动态显示接口应用采用8051与8155接口,再采用8155的I/O口控制数码管的段码和位码,同时,采用动态扫描方式依次循环点亮各位数码管,即可构成多位动态数码管显示电路。整体设计思路如下:由8155的A口控制段码输出,C口控制位码输出。采用定时器中断方式实现动态扫描,每隔20ms扫描一次,每位数码管点亮的时间为1ms。在单片机内部RAM设置待显示数据缓冲区,由查表程序完成显示译码。将缓冲区内待显示数据转换成相应的段码,再将段码通过8051的P0口送至8155的A口;位码数据由累加器循环左移指令产生,再通过P0口送至8155的C口。硬件电路设计如下:上图为数码管动态显示电路。其中,8路驱动采用74LS244总线驱动器,6路驱动采用74LS07OC门驱动器。74LS244输出经300?上拉(或限流)电阻后接至电源,同时,接至数码管的各段,控制数码管的显示字符。74LS07输出经1k?上拉电阻接至电源,同时接至各位数码管的公共端,控制每位数码管的显示时间,实现动态扫描。。六位实现6位显示的秒表:从左到右每2位LED分别显示小时、分和秒,并正常计数进位;上电后小时000000,当显示到235959后,6位显示清零,从头开始显示。:..300?×+5V1k?/?×+5V1aDPY1aDPY1aDPY1aDPY1aDPY1aDPY2ba2ba2ba2ba2ba2ba3cfb3cfb3cfb3cfb3cfb3cfb4dg4dg4dg4dg4dg4dg5e5e5e5e5e5eedcedcedcedcedcedc6f6f6f6f6f6f7gdp7gdp7gdp7gdp7gdp7gdp8dp8dp8dp8dp8dp8dp软件设计如下:以单片机内部RAM的30H~35H单元作为显示数据缓冲区,六位数码管段码的获取及每位数码管的显示时间均由显示子程序完成。采用定时器中断方式实现动态扫描,每隔50ms扫描一次,每位数码管点亮的时间为1ms。单片机每接收一次按键信号(即模拟交通灯改变计数信号),显示缓冲区的待显示数据被刷新一次,数码管相应的显示数值也就随之发生变化。如连续按键进行测试,即可产生计数数据从左至右循环移动的效果。根据图中IO/、与单片机的连接可知,可以确定命令/状态字A口、B口、C口、计数值低8位寄存器及高6位和方式寄存器地址分别为:0100H、0101H、0102H、0103H、0104H、0105H。片内资源分配如下表:名称地址分配用途初始化值MSEC20H定时器50MS计数单元14HSECOND21H秒计数单元00HMIN22H分计数单元00HHOUR23H小时计数单元00H显示缓冲区30H:秒的个位31H:秒的十位30H—35H32H:分的个位00H33H:分的十位34H:小时的个位35H:小时的十位40H以上堆栈区软件流程图如下页图所示::..主程序:MSECEQU20H;50MS计数单元SECONDEQU21H;秒单元MINEQU22H;分单元HOUREQU23H;小时单元ORG0000HLJMPMAINORG000BHLJMPCONTMAIN:MOVSP,#3FHMOVTMOD#01HMOVTH0,#3CHMOVTL0,#0B0HMOVIE,#82HMOVSECOND,#00HMOVMIN,#00HMOVHOUR,#00HMOVMSEC,#14HMOV35H,#00HMOV34H,#00HMOV33H,#00HMOV32H,#00HMOV31H,#00HMOV30H,#00HSETBTR0START:LCALLDISPSJMPSTART;LED动态显示子程序;功能:动态显示六个数码管;入口:显示缓冲区30H—35H中待显示的6个数据DISP:MOVR0,#30H;显示缓冲区首址MOVR7,#00H;设定每位显示延时时间MOVR2,#06H;显示位数MOVR3,#20H;共阳管位码初始值,从右端先亮MOVA,***@R0;取显示缓冲区的一个数据DISP1:MOVDPTR,#TAB;查表首址给DPTRMOVCA,***@A+DPTR;查表得到显示字符的字型码MOVP0,A;将字型码送P0口MOVDPTR,#******@DPTR,A;字型码送8155A口MOVA,R3;位选码送AMOVP2,A;位码送P2口MOVDPTR,#******@DPTR,A;位码送8155C口:..DJNZR7,$;延时DJNZR7,$;延时RRA;位码右移MOVR3,A;位码回送R3INCR0;指向下一位MOVA,***@R0;取显示缓冲区下一个数据DJNZR2,DISP1;6位显示一遍吗?RETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H主程序流程图:;定时器中断子程序:;功能:50MS执行一次,完成秒、分、小时单元的刷新并拆开放到显示缓冲区;出口:显示缓冲区30H—35H中存放待显示的6个数据CONT:MOVTH0,#3CHMOVTL0,#0B0HDJNZMSEC,RN;判断到20次吗?(暨1秒)到1秒,返回主程序MOVMSEC,#14H;1秒到,重置MSEC=20INCSECONDMOVA,SECONDMOVR1,#31H;指向显示缓冲区的31H单元LCALLBINBCD;调用拆字子程序,将秒拆开为十位、个位,分别放31H,30HMOVA,SECOND:..CJNEA,#60,RN;到60秒?未到返主程序MOVA,#0MOVSECOND,A;60秒到,秒单元清零显示子程序流程图:MOVR1,#31H;指向31H单元LCALLBINBCD;调用拆字子程序MOVA,MININCA;分单元内容加1MOVMIN,AMOVR1,#33H;R1指向33H单元LCALLBINBCD;调用拆字子程序,将分单元拆开为十位、个位,分别存放33H和32H单元MOVA,MIN:..CJNEA,#60RN;到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,#00MOVHOUR,A;到24小时,小时单元清零MOVR1,#35HLCALLBINBCDRN:RETI定时中断子程序流程图:;BCD码拆字子程序:;入口参数:A,待拆开的BCD码:..:拆开后BCD码存放的末地址;功能:将A中的两个十六进制数拆开为哦两个BCD码,分别存放到R1指向的两个缓冲单元BINBCD:MOVB,#******@R1,ADECR1MOVA,******@R1,ARETEND