0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于AT89C2051串口的LED数码管显示电路,AT89C2051 LED DISPLAYER

454398 2018-09-20 19:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

基于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。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    第5章 定时器与数码管基础(5.3)

    5-2所示。 图5-2 数码管原理图 这是比较常见的数码管的原理图,Kingst51开发板子上一共有6个数码管。前边有了LED小灯的学习,数码管
    的头像 发表于 12-02 15:57 173次阅读
    第5章 定时器与<b class='flag-5'>数码管</b>基础(5.3)

    FZH183 带键盘扫描接口的LED(发光二极显示器)驱动控制专用电路--方中禾科技

    ℃(存储)。典型应用电路共阴数码管连接:SEG接LED阳极,GRID接阴极,通过寄存器数据控制显示。共阳数码管连接:GRID接
    发表于 11-28 09:31

    FZH119 一种LED(发光二极显示器)驱动控制与用电路,内部集成有MCU 数字接口、数据锁存器、 LED 驱动等电路

    屏驱动。采用SOP28的封装形式。 主要特性集成功能内置MCU数字接口、数据锁存器、LED驱动电路,支持动态扫描显示。支持8段×16位的显示模式,适用于多位
    发表于 11-20 09:55

    原厂 FZH114C  一款LED(发光二极数码管、点阵屏)驱动控制专用芯片

    FZH114C通过灵活的亮度调节、单线通讯和动态扫描设计,显著简化了多位数码管LED点阵屏的驱动电路设计。其独特的引脚排列(如VDD位于引脚13)和SOP16封装,使其在紧凑型设计中
    发表于 11-19 14:43

    FZH114  LED(发光二极数码管、点阵屏)驱动控制专用芯片,集成数字通讯电路、 解码电路、数据锁存器、震荡器

    )FZH114 是一款LED(发光二极数码管、点阵屏)驱动控制专用芯片,内部集成了数字通讯电路、解码电路、数据锁存器、震荡器、
    发表于 11-19 11:13

    点阵数码管显示芯片高抗干扰数显IC芯片VK1S68C

    产品品牌:永嘉微电/VINKA 产品型号:VK1S68C 封装形式:SSOP24 产品年份:新年份 简介:VK1S68C是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集
    发表于 11-06 17:45

    级联动态扫描显示数码管问题

    GD32F103C8T6 硬件SPI连接移位寄存器74HC595级联,动态扫描显示五位数码管 是否需要电平转换芯片TXB0104 数码管选择共阴极和共阳极区别是什么 若使用TXB010
    发表于 10-07 20:36

    微盟/ME原装正品SOT89 L7135线性恒流LED驱动电路

    微盟/ME原装正品SOT89 L7135线性恒流LED驱动电路
    发表于 07-18 17:00 2次下载

    PL2303串口驱动

    PL2303串口驱动
    发表于 04-09 16:02 4次下载

    cp2102串口驱动

    cp2102串口驱动
    发表于 04-09 16:01 9次下载

    防干扰数码管驱动LED数码管驱动芯片VK1668

    产品型号:VK1668 产品品牌:永嘉微电/VINKA 封装形式:SOP24 概述 VK1668是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有3线串行接口、数据锁存器、LED
    发表于 03-25 17:13

    数码管的结构与原理

    数码管,也被称作辉光LED数码管,是一种能够显示数字、字母、符号等信息的电子设备。它广泛应用于各种电子设备中,如计算器、电子钟表、电子秤
    的头像 发表于 02-05 17:32 4070次阅读

    数码管共阴和共阳的区别

    在电子设备的众多显示元件中,数码管以其简单直观、成本低廉等特点,广泛应用于各类电子仪器仪表、数码时钟、电子秤等设备上,承担着数字和简单字符的显示任务。对于电子工程师和电子爱好者而言,深
    的头像 发表于 02-05 17:29 7756次阅读

    四位数码管12个引脚怎么分配

    在电子显示技术中,四位数码管作为一种常见的显示器件,广泛应用于各种数字显示系统。其通过控制不同段(A-G)的发光二极
    的头像 发表于 01-30 15:00 5w次阅读

    求解答!用STC89C51系列数字秒表

    实验室学51单片机,用STC89C51系列,作业太难了,求佬给源代码帮助一下谢谢 1.通过定时器,8位数码管,8个独立按键完成1000秒以内的数字秒表,最小分辨0.1秒,设置启动计秒键,暂停计秒键
    发表于 12-08 16:48