《2022年2022年六位LED八段数码管显示 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年六位LED八段数码管显示 .pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、八段数码管显示1. 实验目的 : (1) 了解数码管动态显示的原理。(2) 了解74LS164 扩展端口的方法。2. 实验内容 : 利用实验仪提供的显示电路, 动态显示一行数据。3. 实验线路 : PB0 数据输入PB1 时钟输入说明:这里只是显示草图,详细原理参见8155 接口实验 4. 实验器材:(1)QTH2008 下载式 综合实验仪1 台 (2)QTH2008仿真器 1 台(3)计算机1 台5. 实验说明 : () 本实验仪提供了 8 段码LED 显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。 显示共有 6 位,用动态方式显示。 8 段码是由 8155 的PB0 、
2、PB1 经74LS164 “串转并”后输出得到。6 位位码由 8155(或8255) 的PA0-5 口输出,经 uA2003 反向驱动后,选择相应显示位。74LS164 是串行输入并行输出转换电路,串行输入的数据位由8155 的PB0 控制,时钟位由 8155 的PB1 控制输出。 写程序时, 只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位置到74LS164 中, 并且实现移位。向显示位选通地址输出高电平就可以点亮相应的显示位。本实验仪中数据位输出地址为0e102H ,时钟位输出地址为 0e102H ,位选通输出地址为 0e101H 。本实验涉及到了 8155 I
3、0/RAM 扩展芯片的工作原理以及74LS164 器件的工作原理。()七段数码管的字型代码表如下表:显示字形g f e d c b a 段码0 0 1 1 1 1 1 1 3fh 1 0 0 0 0 1 1 0 06h 2 1 0 1 1 0 1 1 5bh 3 1 0 0 1 1 1 1 4fh 4 1 1 0 0 1 1 0 66h 5 1 1 0 1 1 0 1 6dh 6 1 1 1 1 1 0 1 7dh 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页
4、 - - - - - - - - - 7 0 0 0 0 1 1 1 07h 8 1 1 1 1 1 1 1 7fh 9 1 1 0 1 1 1 1 6fh A 1 1 1 0 1 1 1 77h b 1 1 1 1 1 0 0 7ch C 0 1 1 1 0 0 1 39h d 1 0 1 1 1 1 0 5eh E 1 1 1 1 0 0 1 79h F 1 1 1 0 0 0 1 71h 6程序框图:7. 参考程序 (SY10.ASM) :OUTBIT equ 0e101h ; 位控制口CLK164 equ 0e102h ; 段控制口 ( 接164 时钟位 ) DAT164 equ 0e
5、102h ; 段控制口 ( 接164 数据位 ) IN equ 0e103h ; 键盘读入口LEDBuf equ 60h ; 显示缓冲Num equ 70h ; 显示的数据DelayT equ 75h org 0000h ljmp Start LEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h Delay: ; 延时子程序mov r7, #0 DelayLoop: djnz r7, DelayLoop 名师资料总结 - - -精品资料欢迎下载 -
6、- - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - djnz r6, DelayLoop ret DisplayLED: mov r0, #LEDBuf mov r1, #6 ; 共6 个八段管mov r2, #00100000b ; 从左边开始显示Loop: mov dptr, #OUTBIT mov a, #00h movx dptr, a ; 关所有八段管mov a, r0 mov B, #8 ; 送164 DLP: rlc a mov r3, a mov acc.0,
7、 c ANL A, #0FDH mov dptr, #DAT164 movx dptr, a mov dptr, #CLK164 orl a,#02h movx dptr, a anl a,#0fDh movx dptr, a mov a, r3 djnz B, DLP mov dptr, #OUTBIT mov a, r2 movx dptr, a ; 显示一位八段管mov r6, #1 call Delay mov a, r2 ; 显示下一位rr a mov r2, a inc r0 djnz r1, Loop mov dptr, #OUTBIT mov a, #0 movx dptr,
8、a ; 关所有八段管ret Start: mov dptr,#0e100h mov a,#03h movx dptr,a mov sp, #40h 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - mov Num, #0 MLoop: inc Num mov a, Num mov b, a mov r0, #LEDBuf FillBuf: mov a, b anl a, #0fh mov dptr, #LEDMap movc a
9、, a+dptr ; 数字转换成显示码mov r0,a ; 显示在码填入显示缓冲inc r0 inc b cjne r0, #LEDBuf+6, FillBuf mov DelayT,#30 DispAgain: call DisplayLED ; 显示djnz DelayT,DispAgain ljmp MLoop END 八位数码管显示: 8155 控制参考程序2:对 8155 初始化,使I/O 口控制 LED 的显示情况。ORG 0000H MOV DPTR,#4400H ;指向 8155 命令寄存器MOV A,#03H MOVX DPTR,A ;写入控制字。A 口、 B 口为输出, C
10、 口为输入INC DPTR ;指向 8155A 口MOV A,#00H MOVX DPTR, A ;向 A 口写入 00H,;输出选中所有8 个 LED INC DPTR ;指向 8155B 口MOV A ,#0FFH MOVX DPTR, A ;向 B 口写入某个字型码,输出点亮8个 LED SJMP $ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 11 页 - - - - - - - - - 8155 控制 8 位数码管和键盘电路图2) 多位动态显示接口应用采用8
11、051 与 8155 接口, 再采用 8155 的 I/O 口控制数码管的段码和位码, 同时,采用动态扫描方式依次循环点亮各位数码管,即可构成多位动态数码管显示电路。整体设计思路如下:由 8155 的 A 口控制段码输出, C 口控制位码输出。 采用定时器中断方式实现动态扫描,每隔 20ms 扫描一次,每位数码管点亮的时间为1ms。在单片机内部RAM 设置待显示数据缓冲区,由查表程序完成显示译码。将缓冲区内待显示数据转换成相应的段码,再将段码通过8051 的 P0 口送至 8155 的 A口;位码数据由累加器循环左移指令产生,再通过P0 口送至 8155 的 C 口。硬件电路设计如下:上图为数
12、码管动态显示电路。其中,8 路驱动采用74LS244 总线驱动器, 6 路驱动采用74LS07 OC 门驱动器。 74LS244 输出经 300 上拉(或限流)电阻后接至电源,同时,接至数码管的各段, 控制数码管的显示字符。74LS07 输出经 1 k上拉电阻接至电源,同时接至各位数码管的公共端,控制每位数码管的显示时间,实现动态扫描。 模拟生产线计数的按键信号接至 P3.3 口。六位实现 6 位显示的秒表: 从左到右每2 位 LED 分别显示小时、 分和秒,并正常计数进位;上电后小时00 00 00,当显示到23 59 59 后, 6 位显示清零,从头开始显示。26P2.627P2.728P
13、SEN29ALE/P30TXD11RXD108031WRP20P21P22P23P24接8031RD接8031WR接 8031ALE接8031RESET接8031P2274LS1382008AD012PA021AD113PA122AD214PA223AD315PA324AD416PA425AD517PA526AD618PA627AD719PA728PB029CE8PB130RD9PB231WR10PB332IO/M7PB433ALE11PB534PB635PB736TMROUT6PC037PC138TMRIN3PC239PC31PC42RESET4PC558155edcdpbafg701234
14、56VC CPC0PC1PC2PC3PA0PA701234567891011121314155.1 k 4D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE1174LS373A1B2C3E14E25E36Y015Y114Y213Y312Y411Y510Y69Y77VCCP25P26P27A010A19A28A37A46A55A64A73A825A924A1021A1123A122CS120CS226WE27OE22D011D112D213D315D416D517D618D7196264VCCEA/VP31X119X218R
15、ESET9RD17WR16INT012INT113T014T115P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P0.039P0.138P0.237P0.336P0.435P0.534P0.633P0.732P2.021P2.122P2.223P2.324P2.425P2.5名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 11 页 - - - - - - - - - 软件设计如下:以单片机内部RAM 的 30H35H 单元作为显示数据缓冲
16、区,六位数码管段码的获取及每位数码管的显示时间均由显示子程序完成。采用定时器中断方式实现动态扫描,每隔50 ms 扫描一次,每位数码管点亮的时间为1 ms。单片机每接收一次按键信号(即模拟交通灯改变计数信号) ,显示缓冲区的待显示数据被刷新一次,数码管相应的显示数值也就随之发生变化。如连续按键进行测试,即可产生计数数据从左至右循环移动的效果。根据图中IO/、与单片机的连接可知,可以确定命令/状态字 A 口、 B 口、 C 口、计数值低8 位寄存器及高 6 位和方式寄存器地址分别为:0100H、0101H、0102H、0103H、0104H、0105H 。片内资源分配如下表:名称地址分配用途初始
17、化值MSEC 20H 定时器 50MS 计数单元14H SECOND 21H 秒计数单元00H MIN 22H 分计数单元00H HOUR 23H 小时计数单元00H 30H35H 显示缓冲区30H:秒的个位31H:秒的十位32H:分的个位33H:分的十位34H:小时的个位35H:小时的十位00H 40H 以上堆栈区软件流程图如下页图所示:EA/VPX1X2RESETRDWRINT0INT1T0T1PSENALE/PTXDRXD8031AD0PA0AD1PA1AD2PA2AD3PA3AD4PA4AD5PA5AD6PA6AD7PA7PB0CEPB1RDPB2WRPB3IO/MPB4ALEPB5P
18、B6PB7TMROUTPC0PC1TMRINPC2PC3PC4RESETPC581551A11A21A31A42A12A22A32A41Y1181Y2161Y3141Y4122Y192Y272Y352Y431G2G74LS244abfcgdeabcdefgdpabfcgdeabcdefgdpabfcgdeabcdefgdpabfcgdeabcdefgdpabfcgdeabcdefgdpabfcgdeabcdefgdp74LS0712345689101112131A1Y2A2Y3A3Y4A4Y5A5Y6A6Y5 V300 81 k 65 V1 k3119189171612131415123456
19、78P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7DPYDPYDPYDPYDPYDPYdpdpdpdpdpdp12345678123456781234567812345678123456781234567824681113151711921222324252627282930313233343536373839125121314151617181989107116343938373635343332212223242526272829301110名师
20、资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 11 页 - - - - - - - - - 主程序:MSEC EQU 20H ;50MS 计数单元SECOND EQU 21H ;秒单元MIN EQU 22H ;分单元HOUR EQU 23H ;小时单元ORG 0000H LJMP MAIN ORG 000BH LJMP CONT MAIN : MOV SP, #3FH MOV TMOD #01H MOV TH0,#3CH MOV TL0,#0B0H MOV IE, #82H
21、 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 TR0 START:LCALL DISP SJMP START ;LED 动态显示子程序;功能:动态显示六个数码管;入口:显示缓冲区30H35H 中待显示的6 个数据DISP: MOV R0,#30H ;显示缓冲区首址MOV R7,#00H ;设定每位显示延时时间MOV R2,#06H ;显示位数
22、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 ;位码送 8155C 口名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -
23、 - - - - 名师精心整理 - - - - - - - 第 7 页,共 11 页 - - - - - - - - - DJNZ R7 , $ ;延时DJNZ R7 , $ ;延时RR A ;位码右移MOV R3,A ;位码回送R3 INC R0 ;指向下一位MOV A,R0 ;取显示缓冲区下一个数据DJNZ R2,DISP1 ;6 位显示一遍吗?RET TAB :DB 0C0H, 0F9H, 0A4H , 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H 主程序流程图:;定时器中断子程序:;功能: 50MS 执行一次,完成秒、分、小时单元的刷新并拆开放到显示缓冲区;出
24、口:显示缓冲区30H35H 中存放待显示的6 个数据CONT :PUSH ACC MOV TH0,#3CH MOV 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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
25、 - - - - - 名师精心整理 - - - - - - - 第 8 页,共 11 页 - - - - - - - - - CJNE A, #60,RN ;到 60 秒?未到返主程序MOV A, #0 MOV SECOND, A ;60 秒到,秒单元清零显示子程序流程图:MOV R1,#31H ;指向 31H 单元LCALL BINBCD ;调用拆字子程序MOV A, MIN INC A ;分单元内容加1 MOV MIN, A MOV R1,#33H ;R1 指向 33H 单元LCALL BINBCD ;调用拆字子程序,将分单元拆开为十位、个位,分别存放33H 和 32H 单元MOV A,
26、MIN 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 11 页 - - - - - - - - - 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 单元LCALL BINBCD ;调
27、用拆字子程序,将小时拆开为十位、个位,分别存放到35H 和 34H 单元MOV A, HOUR CJNE A, #24,RN ;到 24 小时吗?未到返回主程序MOV A, #00 MOV HOUR, A ;到 24 小时,小时单元清零MOV R1,#35H LCALL BINBCD RN:POP ACC RETI 定时中断子程序流程图:;BCD 码拆字子程序:;入口参数: A,待拆开的BCD 码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 11 页 - - - - - - - - - ;R1:拆开后BCD 码存放的末地址;功能:将A 中的两个十六进制数拆开为哦两个BCD 码,分别存放到R1 指向的两个缓冲单元BINBCD :MOV B, #10 DIV AB MOV R1,A DEC R1 MOV A, B MOV R1,A RET END 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 11 页 - - - - - - - - -