八段数码管显示 1. 实验目的 :
(1 认识数码管动向显示的原理。 (2 认识 74LS1 扩展端口的方法。 2. 实验内容 :
利用实验仪供给的显示电路 , 动向显示一行数据。
3. 实验线路 : PB 0数据输入
PB 1时钟输入
说明 :这里不过显示草图 ,详尽原理拜见 \" 8155 接口实验 \" 4. 实验器械 :
(1 QTH2008 下载式 综合实验仪 1 台 (2 QTH2008 仿真器 1 台 (3计算机 1 台 5. 实验说明 :
(1 本实验仪供给了 8 段码 LED 显示电路 , 学生只需按地点输出相应数据 , 就能够实现对显示器的控制。 显示共有 6 位, 用动向方式显示。 8 段码是由 8155 的PB0、 PB1 经 74LS1“串转并 ”后输出获得。 6 位位码由 8155(或 8255 的 PA0-5 口输出 ,经 uA2003 反向驱动后 ,选择相应显示位。
74LS1 是串行输入并行输出变换电路 ,串行输入的数据位由 8155 的 PB0 控制 , 时钟位由 8155 的 PB1 控制输出。 写程序时 , 只需向数据位地点输出数据 , 而后向时
1 / 18
六位LED八段数码管显示(精)
钟位地点输出一高一低两个电平就能够将数据地点到
74LS1 中, 而且 实现移位。
向显示位选通地点输出高电平就能够点亮相应的显示位。
本实验仪中数据位输出地点为 0e102H , 时钟位输出地点为 0e102H , 位选通输出地点为 0e101H 。本实验波及到了 8155 I0/RAM 扩展芯片的工作原理以及 74LS1 器件的工作原理。
2 / 18
六位LED八段数码管显示(精)
7. 参照程序 (SY10.ASM: OUTBIT equ 0e101h ; 位控制口
CLK1 equ 0e102h ; 段控制口 (接 1 时钟位 DAT1 equ 0e102h ; 段控制口(接 1 数据位 IN equ 0e103h ; 键盘读进口
LEDBuf equ 60h ; 显示缓冲
Num equ 70h ; 显示的数据
3 / 18
六位LED八段数码管显示(精)
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 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
4 / 18
六位LED八段数码管显示(精)
mov B, #8 ; 送 1 DLP: rlc a mov r3, a mov acc.0, c ANL A, #0FDH mov dptr, #DAT1 movx @dptr, a mov dptr, #CLK1 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 ; 显示一位八段管call Delay
mov r6, #1 5 / 18
六位LED八段数码管显示(精)
mov a, r2 ; 显示下一位 rr a mov r2, a inc r0 djnz r1, Loop mov dptr, #OUTBIT mov a, #0
movx @dptr, a ; 关全部八段管
ret
Start: mov dptr,#0e100h mov a,#03h movx @dptr,a mov sp, #40h mov Num, #0 MLoop: inc Num mov a, Num mov b, a mov r0, #LEDBuf
6 / 18
六位LED八段数码管显示(精)
FillBuf: mov a, b anl a, #0fh
mov dptr, #LEDMap
movc a, @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 命令寄存器
7 / 18
六位LED八段数码管显示(精)
MOV A , #03H
MOVX @DPTR,A; 写入控制字。 A 口、 B 口为输出 , C 口为输入 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 $
8155 控制 8 位数码管和键盘电路图
2 多位动向显示接口应用采纳 8051 与 8155 接口 , 再采纳 8155 的 I/O 口控制数码管的段码 和位码 , 同时 , 采纳动向扫描方式挨次循环点亮各位数码管 , 即可组成多位动向数码管显示 电路。
整体设计思路以下 :
由 8155 的 A 口控制段码输出 , C 口控制位码输出。 采纳准时器中止方式实现动向扫描 , 每隔 20ms 扫描一次 ,每位数码管点亮的时间为 1ms 。在单片机内部
RAM 设置待显示数据 缓冲区 ,由查表程序达成显示译码。
8 / 18
六位LED八段数码管显示(精)
将缓冲区内待显示数据变换成相应的段码
,再将段码经过 8051 的 P0 口送至
8155 的 A 口;位码数据由累加器循环左移指令产生 ,再经过 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 位显示清零 ,重新开始显 示。
9 / 18
六位LED八段数码管显示(精)
软件设计以下 :
10 / 18
六位LED八段数码管显示(精)
以单片机内部 RAM 的 30H ~35H 单元作为显示数据缓冲区 , 六位数码管段码的获 取及每位数码管的显示时间均由显示子程序达成。 采纳准时器中止方式实现动向扫描 , 每隔 50 ms扫描一次 ,每位数码管点亮的时间为 1 ms。单片机每接收一次按键信号 (即模拟交通 灯改变计数信号 ,显示缓冲区的待显示数据被刷新一次 ,数码管相应的显示数值也就随之 发生变化。如连续按键进行测试 ,即可产生计数数据从左至右循环挪动的成效。依据图中 IO/、与单片机的连结可知 ,能够确立数令 /状态字 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 0000H
11 / 18
六位LED八段数码管显示(精)
LJMP MAIN ORG 000BH LJMP CONT
MAIN : MOV SP , #3FH
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 TR0
12 / 18
六位LED八段数码管显示(精)
START :LCALL DISP SJMP START ; LED 动向显示子程序 ;功能 :动向显示六个数码管
;进口 :显示缓冲区 30H — 35H 中待显示的 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 ; 查表获得显示字符的字型码 MOV P0 , A ; 将字型码送
P0 口
MOV DPTR, #0101H
MOVX @DPTR, A ; 字型码送 8155A 口 MOVA,R3;位选码送 A MOV P2 , A ; 位码送 P2口 MOV DPTR, #0103H
MOVX @DPTR, A ; 位码送 8155C 口
DJNZ R7 , $ ;延时
13 / 18
六位LED八段数码管显示(精)
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
主程序流程图 :
;准时器中止子程序 :
14 / 18
六位LED八段数码管显示(精)
;功能 :50MS 履行一次 ,达成秒、分、小时单元的刷新并打开放到显示缓冲区 ;出口 :显示缓冲区 30H — 35H 中寄存待显示的 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 ; 调用拆字子程序 , 将秒打开为十位、 个位 ,MOV A, SECOND
CJNE A, #60, RN ;到 60 秒 ?未到返主程序 MOV A, #0
MOV SECOND, A ; 60 秒到 ,秒单元清零 显示子程序流程图 :
15 / 18
31H,30H
分别放
六位LED八段数码管显示(精)
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, MIN
CJNE A, #60, RN ;到 60 分吗 ?未到返主程序
16 / 18
个位 ,
分别寄存 六位LED八段数码管显示(精)
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 ; 调用拆字子程序 , 将小时打开为十位、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
准时中止子程序流程图 :
17 / 18
个位 , 分别寄存到
六位LED八段数码管显示(精)
; 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
18 / 18
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo6.com 版权所有 湘ICP备2023023988号-11
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务