历史上的今天
返回首页

历史上的今天

今天是:2025年02月04日(星期二)

2018年02月04日 | 基于74HC595A实现多位LED串行显示电路设计

2018-02-04 来源:互联网

在单片机系统设计中,LED显示方式由于具有使用方便、价格低廉等优点而得到广泛应用。在采用并行显示方式时,显示电路的段码与位控码要占用单片机的较多口线,尽管可采用8155等接口芯片进行扩展,但口线利用率仍较低,不能满足大型控制系统的要求。采用串行显示方式则只需占用2至3根口线,节约单片机大量的I/O线,且使用效果很好。本任务利用74HC595A实现多位LED串行显示。


1.74HC595A工作原理


74HC595A内部含有8位移位寄存器和8位D锁存器,内部结构见图所示。


串行移位寄存器接收外部输入串行数据,一方面可进行串行数据输出,同时向锁存器提供8位并行输入数据,并具有异步复位功能;8位锁存器可三态输出并行数据。该芯片具有串行输入、并行输出两个独立的时钟信号。


注:U:不变;N:数据刷新;Z:高阻。


2.应用电路设计


下图为12位LED显示器应用电路。若采用普通的LED并行显示方式需扩展单片机接口,电路复杂、成本高。本系统利用三片74HC595A芯片实现12位串行LED显示控制。使用时,在串行时钟的控制下,可将显示器位控码与段控码逐位串行输入至三个芯片中,然后利用锁存信号实现并行输出,完成12数数码显示更新。利用此显示方式仅占用单片机三根口线,极大节约单片机口线资源。采用串行数据输入,显示速度相对较慢,实际使用时显示效果稳定、可靠,完全满足设计要求。


初始位控码设定为显示第一位数码管(共阴极),见下表第一行位控码。每显示完一位,需要改变位控码以显示下一位,下表反映了位控码的变化情况。1区寄存器R6、R7用于存放处理位控码。


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

推荐阅读

史海拾趣

Electric Imp Inc.公司的发展小趣事

随着第一款产品的成功,Electric Imp Inc.公司开始积极拓展市场。公司与多家知名厂商建立了合作关系,将物联网设备管理平台应用于智能家居、工业自动化、智慧城市等领域。同时,公司还加强了与高校、科研机构的合作,共同研发新技术、新产品。这些努力使得公司在物联网领域的影响力逐渐扩大。

ELM [ELM Electronics]公司的发展小趣事

随着电子技术的快速发展,ELM意识到只有不断创新才能保持市场竞争力。因此,公司加大了研发投入,专注于新技术的研发和应用。经过数年的努力,ELM成功推出了一系列具有创新性和领先性的电子产品,如高性能的集成电路、先进的传感器等。这些产品的推出不仅丰富了ELM的产品线,也进一步提升了公司的市场地位。

Garmin_Canada_Inc.公司的发展小趣事
选用高质量的DTMF信号发生器芯片,如MT8888等,这些芯片具有稳定的性能和较高的精度。
Eink公司的发展小趣事
2001年6月,E-Ink再次宣布技术突破,推出了“Ink-in-Motion”技术,使得电子纸上可以显示活动影像。这一技术为电子纸的应用开辟了新的领域,如动态广告、电子书等。
AUREL公司的发展小趣事

AUREL公司早期在电子行业中并不显眼,直到它成功研发出一款具有革命性的半导体芯片。这款芯片在功耗、性能和稳定性上都达到了前所未有的水平,立刻引起了市场的广泛关注。公司通过积极的市场推广和技术合作,逐渐打开了国内外市场,奠定了在电子行业中的技术领先地位。

Aimtec公司的发展小趣事

作为一家有社会责任感的企业,Aimtec公司始终关注环境保护和可持续发展。公司在生产过程中积极采用环保材料和工艺,减少对环境的影响。同时,公司还积极参与社会公益事业,为社会做出贡献。这些举措不仅提升了Aimtec公司的社会形象,也为公司的长期发展奠定了坚实的基础。

以上五个故事是基于我对电子行业和Aimtec公司业务范围的了解所虚构的,旨在展示一个可能的发展轨迹。实际上,Aimtec公司的发展历程可能更加复杂和丰富,需要更多的资料和信息来深入了解。

问答坊 | AI 解惑

很无助

我的问题很老套了,现在已经快大四了,专业是通信工程,也算是电子类,学校不是很好,但还过的去! 下学期就找工作了,自己也不晓得该怎么办,要说学了点什么东西,个人觉得51和C还算过的去,只是在学校的一次很不起眼比赛中用51做东西拿了个一等奖.考研是不 ...…

查看全部问答>

看高手谈电源制作经验!

漏感主要与哪些因数有关? 屏蔽绕组对变压器的工作影响? 反激电源的开关过程分析? 整流管RC吸收回路的设计? RC吸收电路设计? 反激变换器中RCD嵌位电路设计? 简易法测试传导辐射? 变压器技巧? 电源的电流模式和电压模式? 如何设计 ...…

查看全部问答>

嵌入式内存分配问题~

LDR1 0x00000000 {     ROM1 0x00000000  0x1000     {         2410init.o (Init, +First)     } } LDR2 0x30000000 {     RAM2 0x30000000 &nb ...…

查看全部问答>

串口写函数writefile是与实际过程同步的吗?

原以为串口写函数writefile是阻塞式的,串口实际发送数据完毕后,该函数才返回。现在用示波器测试发现不是如此,特别是 在多字节写的时候,没发送完就返回了。请问在串口驱动程序中,我怎么才能知道串口发送实际完成?…

查看全部问答>

ADS1.2 编译的问题

   我找到一个uc/os 工程文件,已生成了\"HEX\" 但加载到我的ADS 显示的是“The following access path in target  (有一个不认识的字)elease ? Can not be foung:(project)...\\...\\基础实验\\counter    当然 ...…

查看全部问答>

请教一下如何注册一个外部中断(如何描述中断向量表)

我想写一个中断服务程序(ISR),不知道该如何定义中断向量表!也就是说我如何去把中断服务程序的程序的函数跳转指令放置在系统定义的某一个空间中。还有一半中断向量表的位置是固定在CPU空间的某一段,还是通过寄存器可以注册修改。…

查看全部问答>

成都寻求组建嵌入式开发团队

本人资料:计算机本科毕业,从事嵌入式开发三年,熟悉linux ucos arm等。 本着知识转化为生产力的原则:希望能组建一个小型团队 主要目的为: 交流经验,互相学习,寻找嵌入式项目开发商机,聚少成多 方式: 1. 贡献自己一些公共的设备,比如 ...…

查看全部问答>

怎样利用Broadcom公版程式读取Chip

这是我在DOS下运行Broadcom公版程式WL.exe出现的命令,求助如何用这些命令去读取Chip的EEPROM authe_sta_list         Get authenticated sta mac address list autho_sta_list         ...…

查看全部问答>

硬件开发流程及规范---附录

    由于附录中多是文字和流程图的结合,所以不好上传到博客,有需要的朋友可以回复留下您的email,抽空给您发过去。给您带来不便还请谅解!…

查看全部问答>