在单片机系统设计中,led显示方式由于具有使用方便、价格低廉等优点而得到广泛应用。在采用并行显示方式时,显示电路的段码与位控码要占用单片机的较多口线,尽管可采用8155等接口芯片进行扩展,但口线利用率仍较低,不能满足大型控制系统的要求。采用串行显示方式则只需占用2至3根口线,节约单片机大量的i/o线,且使用效果很好。本任务利用74hc595a实现多位led串行显示。
74hc595芯片
1.74hc595a工作原理
74hc595a内部含有8位移位寄存器和8位d锁存器,内部结构见图所示。
74hc595a内部逻辑结构
74hc595与数码管连接
串行移位寄存器接收外部输入串行数据,一方面可进行串行数据输出,同时向锁存器提供8位并行输入数据,并具有异步复位功能;8位锁存器可三态输出并行数据。该芯片具有串行输入、并行输出两个独立的时钟信号。
74hc595a逻辑功能表
注:u:不变;n:数据刷新;z:高阻。
2.应用电路设计
下图为12位led显示器应用电路。若采用普通的led并行显示方式需扩展单片机接口,电路复杂、成本高。本系统利用三片74hc595a芯片实现12位串行led显示控制。使用时,在串行时钟的控制下,可将显示器位控码与段控码逐位串行输入至三个芯片中,然后利用锁存信号实现并行输出,完成12数数码显示更新。利用此显示方式仅占用单片机三根口线,极大节约单片机口线资源。采用串行数据输入,显示速度相对较慢,实际使用时显示效果稳定、可靠,完全满足设计要求。
12位led串行显示应用电路
初始位控码设定为显示第一位数码管(共阴极),见下表第一行位控码。每显示完一位,需要改变位控码以显示下一位,下表反映了位控码的变化情况。1区寄存器r6、r7用于存放处理位控码。
12位led显示器位控码形成示意图
3. 显示程序工作方式
本程序采用定时方式控制显示器工作。12位显示器采用动态扫描显示,每位显示器显示时间大约为1.67ms,由定时器t0控制。t0定时时间到产生显示中断,进入显示中断程序显示下一位数据。这种显示方式可提高cpu的工作效率,可准确控制显示器的刷新速度。
4.中断显示子程序应用
编制一程序,在12位数码管上依次显示0、1、2、3、4、5、6、7、8、9、0、1
org 0000h
dsdate bit p1.0 ;串行数据输入
dsclk bit p1.1 ;串行移位时钟
dsluck bit p1.2 ;并行锁存时钟
disbuf equ 51h ;显示缓冲区首址
ds20 equ 34h ;20ms定时寄存器(12位显示计数器)
ljmp main ;转主程序
org 000bh
ljmp timint ;转定时显示中断子程序
main: mov sp,#70h ;置椎栈指针
mov 51h,#00h ;预置显示缓冲区
mov 52h,#01h
mov 53h,#02h
mov 54h,#03h
mov 55h,#04h
mov 56h,#05h
mov 57h,#06h
mov 58h,#07h
mov 59h,#08h
mov 5ah,#09h
mov 5bh,#00h
mov 5ch,#01h
mov 08h,#disbuf ;1区r0指向显示缓冲区首址
mov 0eh,#07h ;置初始位控码(1区r6)
mov 0fh,#0ffh ;置初始位控码(1区r7)
mov tmod,#01h ;置t0为1.67ms定时器
mov tl0,#00h
mov th0,#0fah
mov ds20,#12 ;置显示位数计数器
setb tr0 ;启动t0
setb ea ;开中断
setb et0 ;开t0中断
here: sjmp here
timint: push psw ;定时显示中断子程序,状态字进栈
mov psw,#08h ;重置状态字,选择1区工作寄存器
push acc ;累加器进栈
push b ;b寄存器进栈
clr tr0 ;停止t0定时
mov th0,#0fah ;重置1.67ms定时初值
mov tl0,#00h
setb tr0 ;启动t0定时
mov r5,0fh ;位控码送r4、r5
mov r4,0eh
lcall dis1 ;调用显示一位数码管子程序
setb c ;形成显示下一位位控码并置于1区r6、r7中
mov a,r6
setb acc.4
rrc a
mov r6,a
mov a,r7
rrc a
mov r7,a
djnz ds20,loop1 ;12位显示完了否,没完退出,若显示完重置
mov ds20,#12 ;重置显示计数器
mov r0,#disbuf ;重置显示缓冲区指针
mov r7,#0ffh ;重置初始位控码
mov r6,#07h
loop1: pop b ;恢复现场
pop acc
pop psw
reti ;中断返回
dis1: mov dptr,#tab ;显示一位数码管子程序,指向段码表
mov a,@r0 ;取待显示字符数据
inc r0 ;修改缓冲区指针
movc a,@a+dptr ;查表取显示字符段码
mov r3,a ;将段码与位控码组合成20位有效串行码
mov r1,#0ch ;20位有效串行码置于r3、r4、r5中
mov a,@r1
swap a
mov @r1,a
mov a,r3
xchd a,@r1
mov a,@r1
swap a
mov @r1,a
mov a,r3
swap a
mov r3,a
mov r1,#20 ;置串行输出计数器
dis0: mov a,r3 ;r3、r4、r5串行移位,由r5高位输出。
rrc a
mov r3,a
mov a,r4
rrc a
mov r4,a
mov a,r5
rrc a
mov r5,a
mov dsdate,c ;最高位送至595芯片串行输入端
setb dsclk ;产生595芯片串行输入信号
nop
clr dsclk ;串行输入锁存
djnz r1,dis0 ;20位二进码输出完否,没完继续
setb dsluck ;产生595芯片并行输出信号,字符开始显示
nop
clr dsluck ;输出字符数据由595芯片锁存
ret
tab: db 3fh,06h,5bh ;显示段码表
db 4fh,66h,6dh
db 7dh,07h,7fh
db 6fh,00h,40h
H桥互补对称输出及低通滤波电路
华为宣布与腾讯游戏达成战略合作 将成立联合创新实验室
一文轻松图解搞懂Elasticsearch原理!
旅行手机充电器电路图详解
压敏电阻选型与应用
基于74HC595A实现多位LED串行显示电路设计
防爆型电容电抗器是如何抑止和操纵谐波的
紧逼日韩!中国大陆液晶面板份额位于世界前列
使用WhatsApp桌面音频和视频通话
Computex揭幕 群联Gen4 SSD芯片效能刷新世界纪录
iQOOPro5G正式发布 3798元售价成迄今为止最便宜的5G手机
苹果WWDC 2017大会十大看点 iOS11将会是主角
电磁兼容测试工程中的峰值准峰值和平均值解析
邦纳传感器在各个领域中的应用介绍
基于WiFi+蓝牙技术的智能家居解决方案
燧原科技基于HAPS构建高效安全的AI芯片软件
华为P10怎么样?华为P10钻雕蓝上手图赏:大气不失时尚!
一文带你了解滤波器
新型快速接线式组合智能电表的原理及设计
摩托罗拉双核侧滑手机DROID4首次登台