基于AT89C2051串口的LED数码管显示电路,AT89C2051 LED DISPLAYER
关键字:AT89C2051数码管电路
AT89C2051单片机内有一个串行I/O端口,通过引脚RXD[P3.0]和TXD[P3.1]可与外部电路进行全双工的串行异步通信,发送数据时由TXD端送出,接收时数据由RXD端输入。串口有四种工作方式,通过编程设置,可以使其工作在任一方式以满足不同的场合。其中,方式0是8位移位寄存器输入/输出方式,多用与外接移位寄存器以扩展I/O端口。串口的工作方式可以参看相关的书籍,此处不做详细介绍。方式 0的输出是8位串行数据,通过移位寄存器可将8位串行数据变成8位并行数据输出,也可以将外部的8位并行数据变成8位串行数据输入。因此外接一个移位寄存器就可扩展一个8位的并行输入/输出接口,如果想多扩展几个并口就需要在外部级连几个移位寄存器。但是这种扩展也不是无限的,因为串口的数据是一位一位串行输入/输出的。如果外接的移位寄存器比较多的话那么是必影响数据输入/输出的速度。
串口外接的移位寄存器有两种,一种是“串行输入/并行输出移位寄存器”(如:741一S164),另一种是“并行输入/串行输出”移位寄存器(如: 74LS165)。通过寄存器的名称就可以看出“串行输入/并行输出移位寄存器”是用于串口扩展并行输出接口,“并行输入/串行输出”是用于串口扩展并行输入接口。
图1(a)是串行输入/并行输出移位寄存器74LS164的管脚排列图。其功能表见表1所示。74LS164有两个串行数据A、B输入端,使用时一般把它们连在一起;丽为清零输入端,低电平有效,当该端加入低电平时,寄存器输出Q0~Q7全为低电平。在正常情况下,清零输入端接高电平,当CP信号上升沿到来时,数据从A、B端输入并右移一位; Q0~Q7为并行数据输出端,同时Q7端也是串行数据输出端,对于串行输入的数据,最先输入的从Q7输出,最后进入的从Q0输出。CP为移位脉冲。
图1(b)是另一种常用的“并行(串行)输入/串行输出”移位寄存器74LS165的管脚排列图。该器件的功能表见表2。该器件能在一个信号的控制下并行置入一个8位数据,然后在时钟脉冲的作用下逐位移出,也能使数据从另外一个引脚串行输入。在图1(b)中,DO~D7是并行数据输入端。S/L端是控制信号输入端,当为高电平时,具有移位功能;当为低电平时,将DO~D7端的数据置入到内部的移位寄存器保存。CP端为时钟(即移位脉冲)输入端,当S/L= 1时,CP端的每一次正跳变,都会使已存入内部的数据DO~D7从Q7端移出一位,移位的顺序是D7最先从Q7端移出,Q0最后从Q7端移出。CI端为时钟脉冲禁止端,当该端为低电平时,时钟信号(移位脉冲)不能进入,正常工作时必须接高电平。S1为串行数据输入端,在S/L=1时,SI端的数据在CP脉冲上升沿作用下置入Q0,因此,当CP脉冲上升沿到来时内部的数据DO~D7从Q7端移出一位同时外部数据通过SI移入一位,当经过8次CP上升沿后 DO~D7这8个数据就全部通过Q7输出,而内部的DO~D7全部更新为通过SI的输入的信号。例如:如果SI外接电源电压,那么当CP上升沿到来时,Q7会移出一位数据,而S1会移入一个“1”,当经过8个上升沿后,原先置入的DO~D7全被移出,内部的Q0~Q7全被更新为 “1”。如果CP上升沿再次到来时,输出的就是“1”。因此当8个输入数据都通过Q7输出后,如果还想输入就再次必须置入新的数据
通过对两种移位寄存器的分析可以得出。通过串口扩展单片机的I/O口的具体电路如图2所示:
图2(a)是通过串口扩展的并行输出接口。RXD作为数据输出线,TXD作为移位时钟脉冲。每一个时钟信号的上升沿加到74LS164的CP端时,移位寄存器将串口输出的数据移入一位,8个时钟脉冲过后串口输出的8位二进制数全部移入74LS164,通过Q0-Q7并行输出。
图2(b)是通过串口扩展的并行输入接口。同样RXD作为数据输入线,TXD作为移位时钟脉冲。每一个时钟信号的上升沿加到74LS165的CP端时,移位寄存器就将内部的数据向外移一位,通过Q7输出。8个时钟脉冲过后,并行输入的8位二进制数全部移出,通过Q7串行输入。
基于串口的LED数码管静态显示电路
在串口扩展中最常用的就是基于串口的LED数码管显示电路。在单片机应用系统中,LED数码管的显示常用两种方法:静态显示和动态扫描显示。所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小。可以提供单独锁存的I/O接口电路很多,常用的就是通过串口外接串并转换器74LS164,扩展并行的I/O口。需要几个数码管就扩展几个并行接口,数码管直接接在74LS164的输出脚上,单片机通过串口将要显示数据的字形码逐一的串行移出至74LS164的输出脚上数码管就可以显示相应的数字。
1. 硬件设计
单片机AT89C2051的串口外接1片74LS164作为LED显示器的静态显示接口,把AT89C2051的RXD作为数据输出线,TXD作为移位时钟脉冲。Q0-Q7(第3—6和10—13引脚)并行输出端分别接LED显示器的DP---A各段对应的引脚上。图中采用的是共阴极数码管,因而各数码管的公共极接电源GND,要显示某字段则相应的移位寄存器74LS164的输出线必须是高电平。P1口接8个按键,分别编号为KEY1--KEY8。当某个按键按下时。某个数就显示在数码管上。
2. 软件设计
软件设计流程图如图4所示。图(a)为主程序流程图,图(b)为显示子程序流程图。
开机时,初始化数码管,通过串口将“0”的字形码输出使数码管显示“O”。然后判断P1口是否有键按下,如果没键按下继续判断。
当确认有键按下后单片机将P1口的值赋给累加器A,由于按键没被按下时是低电平,被按下后为高电平因此判断A中哪一位为高电平就能得出哪个按键被按下。将此按键的编号读入显示缓冲区65H中,然后调用显示子程序将按键编码显示在数码管上。这样程序就完成了一次的执行过程。
显示子程序首先初始化串口,使串口工作在方式0,再读取显示缓冲区内的数据(显示缓冲区主要是用来存放即将要显示的数据),然后通过查表的方式找到对应的字形码,最后把字形码写入串口寄存器SBUF通过串口方式0发送出去。当8个时钟脉冲后,字形码都移至74Ls164的Q0-Q7,数码管就显示相应按键的编码。
显示子程序是怎么将显示缓冲区中的数据变成相应的字形码呢?具体的方法是将每个数字的字形码以16进制数从小到大的次序依次存放在存储器中的固定区域中,构成显示代码表。当要显示某字符时,把表格的起始地址送入数据指针寄存器DPTR中作为基址,将显示缓冲区内的数据作为偏移量送入变址寄存器A,执行查表指令“MOVCA,@A+DPTR”,则累加器A中得到的结果即表格中取出的对应数字的字形码。
注意:MOVC指令是将程序存储器内相应地址的值赋给累加器A。MOVC指令只有两种,一种是:MOVCA,@A+DPTR,将程序存储器中地址为A+ DPTR内的数据赋给A,例如:累加器A内的数据为01H,而DPTR内的数据为2000H,程序存储器中地址2001H内的数据为50H,那么执行 MOVCA,@A+DPTR指令后,累加器A内的数据变为50H。另一种是MOVCA,@A+PC。将程序存储器中地址为A+PC内的数据赋给A。两种指令的功能基本是一样。只是第一种中的地址是存放在DPTR中,而第二种是直接使用PC指针的地址。
对于电路中的74LS164共阴极数码管数据位和字形的对应关系如下表。
由于单片机在以方式0串行发送数据的时候数据从RXD引脚从低位到高位依次输出,而最先输出的数据经过74LS164串转并后到达Q7,也就是说单片机内的DO通过串口发送并经过74LS164后到达74LS164的Q7脚即数码管的A脚,因此在单片机内字型码与74LS164所对应的字型码正好相反,所以在单片机内O-8所对应的字型码分别是:
3FH,06H,5BH,4FH,66H,6DH,7DH,07H.7FH。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
发布评论请先 登录
相关推荐
求解答!用STC89C51系列数字秒表
实验室学51单片机,用STC89C51系列,作业太难了,求佬给源代码帮助一下谢谢
1.通过定时器,8位数码管,8个独立按键完成1000秒以内的数字秒表,最小分辨0.1秒,设置启动计秒键,暂停计秒键
发表于 12-08 16:48
89C52单片机控制直流24V电机输出,数码管显示乱码?
一电子板,89C52单片机控制直流24V电机输出,带93C86读取用户数据,能正常运行,但起动10-20秒内不能控制,数码管显示乱码?
发表于 11-10 19:06
led数码管显示器的显示方式有几种,各有什么特点
LED数码管显示器是一种广泛应用于各种场合的显示设备,具有显示效果好、寿命长、能耗低等特点。 静态显示
数码管显示屏的作用和功能是什么
数码管显示屏是一种广泛应用于各种电子设备中的显示威廉希尔官方网站
,它具有多种作用和功能。 一、数码管显示屏的基本概念 1.1
什么是共阳极数码管怎么判断
共阳极数码管是一种常见的七段显示器,用于显示数字和字母。它由七个发光二极管(LED)组成,分别代表数字0-9的每个段。共阳极
LED数码管的显示方式和驱动方式
LED数码管,作为现代电子显示威廉希尔官方网站
中的重要组成部分,以其高亮度、长寿命和低功耗等特点,广泛应用于各种数字显示设备中。本文将详细阐述LED
51单片机8位数码管显示学号程序编写思路
与51单片机进行连接。数码管通常由8个LED灯组成,其引脚分别是A、B、C、D、E、F、G和DP。当我们将数码管的8个引脚与51单片机的8个IO口
评论