




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上八段数码管显示1. 实验目的 :(1了解数码管动态显示的原理。(2了解 74LS164 扩展端口的方法。2. 实验内容 :利用实验仪提供的显示电路 , 动态显示一行数据。3. 实验线路 :PB 0 数据 输入PB 1 时钟 输入说明:这里只是显示草图,详细原理参见 " 8155 接口实验 "4. 实验器材:(1 QTH2008下载式 综合实验仪 1 台 (2 QTH2008仿真器 1 台(3计算机 1 台5. 实验说明 :(1 本实验仪提供了 8 段码 LED 显示电路, 学生只要按地址输出相应数据, 就可以实现对显示器的控制。 显示共有 6 位,
2、 用动态方式显示。 8 段码是由 8155 的 PB0、 PB1 经 74LS164“串转并” 后输出得到。 6 位位码由 8155(或 8255 的 PA0-5 口输出,经 uA2003 反向驱动后,选择相应显示位。74LS164 是串行输入并行输出转换电路,串行输入的数据位由 8155 的 PB0 控制, 时钟位由 8155 的 PB1 控制输出。 写程序时, 只要向数据位地址输出数据, 然后向时钟位地址输出一高一低两个电平就可以将数据位置到 74LS164 中, 并且 实现移位。向显示位选通地址输出高电平就可以点亮相应的显示位。本实验仪中数据位输出地址为 0e102H , 时钟位输出地址
3、为 0e102H , 位选通输 出地址为 0e101H 。本实验涉及到了 8155 I0/RAM 扩展芯片的工作原理以及 74LS164 器件的工作原理。 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: ; 八段管显
4、示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h Delay: ; 延时子程序mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #6 ; 共 6 个八段管mov r2, #b ; 从左边开始显示 Loop:mov dptr, #OUTBITmov a, #00hmovx dptr, a ; 关所有八段管mov a, r0mov B, #8
5、; 送 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
6、, #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 Di
7、splayLED ; 显示djnz DelayT,DispAgainljmp MLoopEND八位数码管显示:8155控制参考程序 2:对 8155初始化,使 I/O口控制 LED 的显示情况。ORG 0000HMOV DPTR , #4400H ;指向 8155命令寄存器MOV A , #03HMOVX DPTR,A; 写入控制字。 A 口、 B 口为输出, C 口为输入 INC DPTR ;指向 8155A 口MOV A , #00HMOVX DPTR, A ;向 A 口写入 00H ,;输出选中所有 8个 LEDINC DPTR ;指向 8155B 口MOV A , #0FFHMOVX
8、DPTR, A ;向 B 口写入某个字型码,输出点亮 8个 LEDSJMP $8155控制 8位数码管和键盘电路图2 多位动态显示接口应用采用 8051与 8155接口, 再采用 8155的 I/O口控制数码管的段码 和位码, 同时, 采用动态扫描方式依次循环点亮各位数码管, 即可构成多位动态数码管显示 电路。整体设计思路如下:由 8155的 A 口控制段码输出, C 口控制位码输出。 采用定时器中断方式实现动态扫描, 每隔 20ms 扫描一次,每位数码管点亮的时间为 1ms 。在单片机内部 RAM 设置待显示数据 缓冲区,由查表程序完成显示译码。将缓冲区内待显示数据转换成相应的段码,再将段码
9、通过 8051的 P0口送至 8155的 A 口;位码数据由累加器循环左移指令产生,再通过 P0口送至 8155的 C 口。硬件电路设计如下:上图为数码管动态显示电路。其中, 8路驱动采用 74LS244总线驱动器, 6路驱动采用 74LS07 OC门驱动器。 74LS244输出经 300 上拉(或限流电阻后接至电源,同时,接至 数码管的各段, 控制数码管的显示字符。 74LS07输出经 1 k上拉电阻接至电源, 同时接至 各位数码管的公共端, 控制每位数码管的显示时间, 实现动态扫描。 模拟生产线计数的按键 信号接至 P3.3口。 六位实现 6位显示的秒表:从左到右每 2位 LED 分别显示
10、小时、 分和秒, 并正常计数进位;上电后小时 00 00 00,当显示到 23 59 59后, 6位显示清零,从头开始显 示。 软件设计如下:以单片机内部 RAM 的 30H 35H 单元作为显示数据缓冲区, 六位数码管段码的获 取及每位数码管的显示时间均由显示子程序完成。 采用定时器中断方式实现动态扫描, 每隔 50 ms扫描一次,每位数码管点亮的时间为 1 ms。单片机每接收一次按键信号(即模拟交通 灯改变计数信号 ,显示缓冲区的待显示数据被刷新一次,数码管相应的显示数值也就随之 发生变化。如连续按键进行测试,即可产生计数数据从左至右循环移动的效果。根据图中 IO/、与单片机的连接可知,可
11、以确定命令 /状态字 A 口、 B 口、 C 口、计数值低 8位寄存器 及高 6位和方式寄存器地址分别为:0100H 、 0101H 、 0102H 、 0103H 、 0104H 、 0105H 。 片内资源分配如下表: 主程序:MSEC EQU 20H ; 50MS 计数单元SECOND EQU 21H ;秒单元MIN EQU 22H ;分单元HOUR EQU 23H ;小时单元ORG 0000HLJMP MAINORG 000BHLJMP CONTMAIN : MOV SP , #3FHMOV TMOD #01HMOV TH0, #3CHMOV TL0, #0B0HMOV IE, #82
12、HMOV 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 动态显示子程序;功能:动态显示六个数码管;入口:显示缓冲区 30H 35H 中待显示的 6个数据DISP: MOV R0, #30H ;显示缓冲区首址MOV R7, #00H ;设定每位显示延时时间MOV R2, #06H ;显示位数MOV R3
13、, #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 , $ ;延时RR A ;位码右移MOV R3, A
14、;位码回送 R3INC R0 ;指向下一位MOV A , R0 ;取显示缓冲区下一个数据DJNZ R2, DISP1 ; 6位显示一遍吗?RETTAB :DB 0C0H, 0F9H, 0A4H , 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H主程序流程图: ;定时器中断子程序:;功能:50MS 执行一次,完成秒、分、小时单元的刷新并拆开放到显示缓冲区;出口:显示缓冲区 30H 35H 中存放待显示的 6个数据CONT :PUSH ACCMOV TH0, #3CHMOV TL0, #0B0HDJNZ MSEC, RN ;判断到 20次吗?(暨 1秒到 1秒,返回主程序M
15、OV MSEC, #14H ; 1秒到,重置 MSEC=20INC SECONDMOV A, SECONDMOV R1, #31H ;指向显示缓冲区的 31H 单元LCALL BINBCD ; 调用拆字子程序, 将秒拆开为十位、 个位, 分别放 31H,30H MOV A, SECONDCJNE A, #60, RN ;到 60秒?未到返主程序MOV A, #0MOV SECOND, A ; 60秒到,秒单元清零显示子程序流程图: MOV R1, #31H ;指向 31H 单元LCALL BINBCD ;调用拆字子程序MOV A, MININC A ;分单元内容加 1MOV MIN, AMOV
16、 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 ; 调用拆字子程序, 将小时拆开为十位、 个位, 分别存放到 35H 和 34H 单元MOV A, HOURCJNE A, #24, RN ;到 24小时吗?未到返回主程序MOV A, #
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论