LED数码管静态显示接口与编程
LED数码管显示

动态驱动
通过扫描方式逐行点亮 LED数码管,适用于多位 数显示。
集成电路驱动
使用专用集成电路芯片驱 动LED数码管,具有驱动 能力强、稳定性高等优点。
03
LED数码管的分类与选择
七段数码管
01
02
03
04
七段数码管是最常见的LED数 码管,由七个LED段(a-g)和 一个可选的小数点(dp)组成。
十六进制数码管也有共阳和共阴两种类型,使用方法与 七段数码管类似。
它能够显示数字和英文字母,以及一些特殊字符,通过 控制每个段的亮灭来显示不同的字符。
十六进制数码管在计算机、通信、仪器仪表等领域应用 广泛。
点阵式LED显示屏
01
点阵式LED显示屏由多个LED灯组成的矩阵,通过控制每个LED 灯的亮灭来显示文字、图像和视频等。
它能够显示数字0-9和某些英 文字母,通过控制每个段的亮
灭来显示不同的字符。
七段数码管有共阳和共阴两种 类型,共阳极的公共端接高电 平,共阴极的公共端接低电平
。
七段数码管具有低功耗、高亮 度、长寿命等优点,广泛应用
于各种显示设备中。
十六进制数码管
十六进制数码管是一种能够显示十六进制字符的LED数 码管,由16个LED段(0-9、A-F)组成。
驱动芯片的作用
提供稳定的电流,控制LED数码管的亮度和显示内 容。
常见驱动芯片型号
如74HC595、74HC164等。
驱动芯片的选择
根据LED数码管的位数和扫描方式,选择合适的驱 动芯片。
LED数码管的接口电路
接口电路的作用
实现LED数码管与微控制器的通信,传输显示数据。
常见接口电路
如共阳极、共阴极等。
基于51单片机实现LED数码管静态与动态显示的设计浅析

33第2卷 第22期产业科技创新 2020,2(22):33~34Industrial Technology Innovation 基于51单片机实现LED数码管静态与动态显示的设计浅析龙 志(广州大学松田学院,广州 增城 511370)摘要:随着社会的发展,在我们日常的生活中,数码管的应用随处可见,尤其是在电子应用设计显示等方面常常发挥着非常重要的作用,因此研究数码管的显示有非常重要的现实意义。
数码管我们可以分为静态显示和动态显示,这两种显示有着本质的区别,静态显示的特点是占用CPU 时间少,显示便于监测和控制,显示字形稳定,而动态数码管的显示,效果相对静态显示亮度差少许,但成本较低。
本设计主要是基于51单片机,先通过结合集成芯片74HC573对LED 数码管静态显示的硬件电路设计与分析,进一步拓展到采用芯片74HC138与LED 数码管动态显示的硬件电路设计与分析,最终实现两种不同的电路设计显示的方法。
关键词:LED 数码管;静态显示;动态显示;51单片机中图分类号:TP368.12 文献标识码:A 文章编号:2096-6164(2020)22-0033-02随着电子应用技术的不断发展,显示电路在电子设计应用方面更加广泛,尤其是LED 数码管显示在各行各业中的应用更加重要,如红绿交通灯显示,电子时钟显示,家电产品功能显示等方面都需要用到LED 数码管作为显示。
因此,对LED 数码管的显示控制有着非常重要的现实意义。
因此我们要实现LED 数码管的熟练显示控制,我们必须要根据数码管的特点来进行分析和设计,数码管有静态显示和动态显示的两种方法,接下对这两种电路作详细的分析与设计,最终实现对LED 数码管静态与动态的两种不同显示设计方法。
1 数码管静态显示电路设计数码管静态显示设计是利用MCS-51单片机结合两片集成芯片74HC573,实现对4个LED 数码管的显示控制。
具体设计如图1所示:图1 数码管静态显示设计电路图本电路设计主要是利用单片机的P0口来实现对数码管的位选控制与段选的控制,P0口之所以能够正确的对数码管进行位选与段选的控制,关键是在于设计中使用了芯片74HC573。
单片机实验报告——LED数码管显示实验

单⽚机实验报告——LED数码管显⽰实验(此⽂档为word格式,下载后您可任意编辑修改!)《微机实验》报告LED数码管显⽰实验指导教师:专业班级:姓名:学号:联系⽅式:⼀、任务要求实验⽬的:理解LED七段数码管的显⽰控制原理,掌握数码管与MCU的接⼝技术,能够编写数码管显⽰驱动程序;熟悉接⼝程序调试⽅法。
实验内容:利⽤C8051F310单⽚机控制数码管显⽰器基本要求:利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。
提⾼要求:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:yyyy (年份)mm.dd(⽉份.⽇).asm;Description: 利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。
;Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000H ;复位⼊⼝AJMP MAINORG 000BH ;定时器0中断⼊⼝AJMP TIME0MAIN: ACALL Init_Device ;初始化配置MOV P0,#00H ;位选中第⼀个数码管MOV R0,#00H ;偏移指针初值CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#06HMOV TL0,#0C6H ;赋初值,定时1sLOOP: MOV A,R0ADD A,#0BH ;加偏移量MOVC +PC ;查表取,段码MOV P1,A ;段码给P1显⽰SETB TR0 ;开定时LOOP1: JNB PSW.1,LOOP1 ;等待中断CLR PSW.1INC R0 ;偏移指针加⼀CJNE R0,#0AH,LOOP3MOV R0,#00H ;偏移指针满10清零AJMP LOOP ;返回DB 0FCH,60H,0DAH,0F2H,66H ;段码数据表:0、1、2、3、4 DB 0B6H,0BEH,0E0H,0FEH,0F6H; 5、6、7、8、9 ;***************************************************************** ; 定时器0中断;***************************************************************** TIME0: SETB PSW.1 ;标志位置⼀MOV TH0,#06H ;定时器重新赋值MOV TL0,#0C6HLOOP3: CLR TR0 ;关定时RETI;***************************************************************** ;初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 -Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital ; P1.0 - Unassigned, Open-Drain, Digital ; P1.1 - Unassigned, Open-Drain, Digital ; P1.2 - Unassigned, Open-Drain, Digital ; P1.3 - Unassigned, Open-Drain, Digital ; P1.4 - Unassigned, Open-Drain, Digital ; P1.5 - Unassigned, Open-Drain, Digital ; P1.6 - Unassigned, Open-Drain, Digital ; P1.7 - Unassigned, Open-Drain, Digital ; P2.0 - Unassigned, Open-Drain, Digital ; P2.1 -Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digital mov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend提⾼部分:;*********************************************************;Filename: shumaguan2.asm;Description:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:; 2012 (年份); 12.07(⽉份.⽇); 12.34(⼩时.分钟);Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000HAJMP MAINORG 000BHAJMP TIME0MAIN: ACALL Init_DeviceMOV R0,#00H ;⽤于位选MOV R1,#00H ;⽤于段选MOV R2,#22H ;置偏移量,⽤于控制模式MOV R4,#8MOV R5,#250CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#0FFHMOV TL0,#0C0H ;定时器赋初值1msBACK: MOV P0,R0 ;位选MOV A,R0ADD A,#40H ;选下⼀位MOV R0,AMOV A,R1ADD A,R2 ;加偏移量MOVC +PC ;查表取段码MOV P1,A ;段码给P1显⽰LOOP: SETB TR0 ;开定时HERE: JNB PSW.1,HERE ;等待中断CLR PSW.1DJNZ R5,BACKMOV R5,#250DJNZ R4,BACKMOV R4,#8 ;循环2000次(2s)MOV A,R2ADD A,#04H ;偏移量加04H,到下⼀模式段码初值地址 MOV R2,ACJNE R2,#2EH,LOOP2MOV R2,#22H ;加三次后偏移量回到初值LOOP2: AJMP BACK ;返回进⼊下⼀模式;段码数据表:DB 0DAH,60H,0FCH,0DAH ; 2102DB 0E0H,0FCH,61H,60H ; 701. 1DB 66H,0F2H,0DBH,60H ; 432. 1;*****************************************************************; 定时器0中断;***************************************************************** TIME0: MOV TH0,#0FFH MOV TL0,#0C0HCLR TR0SETB PSW.1INC R1 ;偏移指针加⼀CJNE R1,#04H,LOOPMOV R1,#00H ;偏移指针满04H清零RETI;***************************************************************** ; 初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital; P0.1 - Unassigned, Open-Drain, Digital; P0.2 - Unassigned, Open-Drain, Digital; P0.3 - Unassigned, Open-Drain, Digital; P0.4 - Unassigned, Open-Drain, Digital; P0.5 - Unassigned, Open-Drain, Digital; P0.6 - Unassigned, Open-Drain, Digital; P0.7 - Unassigned, Open-Drain, Digital; P1.0 - Unassigned, Open-Drain, Digital; P1.1 - Unassigned, Open-Drain, Digital; P1.2 - Unassigned, Open-Drain, Digital; P1.3 - Unassigned, Open-Drain, Digital; P1.4 - Unassigned, Open-Drain, Digital; P1.5 - Unassigned, Open-Drain, Digital; P1.6 - Unassigned, Open-Drain, Digital; P1.7 - Unassigned, Open-Drain, Digital; P2.0 - Unassigned, Open-Drain, Digital; P2.1 - Unassigned, Open-Drain, Digital; P2.2 - Unassigned, Open-Drain, Digital; P2.3 - Unassigned, Open-Drain, Digitalmov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend六、程序测试⽅法与结果、软件性能分析软件调试总体截图:基础部分:软件运⾏时,我们发现P0端⼝为00H,P1端⼝以依次为FCH、60H、DAH、F2H、66H、B6H、BEH、E0H、FEH、F6H。
单片机原理及接口技术第5章 IO口应用-显示与开关键盘输入

图5-1
发光二极管与单片机并行口的连接
5
如果端口引脚为低电平,能使灌电流Id从单片机的外部流入内部,则将
大大增加流过的灌电流值,如图5-1(b)所示。所以,AT89S51单片机任 何一个端口要想获得较大的驱动能力,要采用低电平输出。 如果一定要高电平驱动,可在单片机与发光二极管之间加驱动电路,如 74LS04、74LS244等。 5.1.2 单片机I/O端口控制发光二极管的编程 发光二极管与单片机的I/O端口的连接,如图5-1(b)所示。如要点亮 某发光二极管,只需该I/O端口位写入“0”即可。下面通过一个例子介绍如
21
图5-6 4位LED静态显示的示意图
示字符。这样在同一时间,每一位显示的字符可以各不相同。但是,静态
显示方式占用I/O口线较多。 对于图5-6所示电路,要占用4个8位I/O口(或锁存器)。如果数码管 数目增多,则还需要增加I/O口的数目。在实际的系统设计中,如果显示位 数较少,可采用静态显示方式。但显示位数较多时,为了降低成本,一般 采用动态显示方式。 2. 动态扫描显示方式 显示位数较多时,静态显示所占用的I/O口多,为节省I/O口与驱动电路
单片机控制的8位I/O口锁存器输出相连。如果送往各个LED数码管所显示字 符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直到
送入下一个显示字符的段码。因此,静态显示方式的显示无闪烁,亮度较
高,软件控制比较容易。 图5-6所示为4位LED数码管静态显示电路,各个数码管可独立显示,
只要向控制各位I/O口锁存器写入相应的显示段码,该位就能保持相应的显
闭合时,P3.0引脚为低电平。单片机对开关状态的检测是由程序检测
10
图5-3
开关、LED发光二极管与P1口的连接
数码管的接线及显示(程序)

共阳共阴LED数码管引脚图管脚接口共阳共阴LED数码管引脚图管脚接口常见的数码管由七个条状和一个点状发光二极管管芯制成,叫七段数码管如下图所示,根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。
根据管脚资料,您可以判断使用的是何总接口类型.<LED数码管引脚图>LED数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。
在一定范围内,其正向电流与发光亮度成正比。
由于常规的数码管起辉电流只有1~2 mA,最大极限电流也只有10~30 mA,所以它的输入端在5 V电源或高于TTL 高电平(3.5 V)的电路信号相接时,一定要串加限流电阻,以免损坏器件。
数码管使用的电流与电压电流:静态时,推荐使用10-15mA;动态时,16/1动态扫描时,平均电流为4-5mA,峰值电流50-60mA。
电压:查引脚排布图,看一下每段的芯片数量是多少?当红色时,使用1.9V乘以每段的芯片串联的个数;当绿色时,使用2.1V乘以每段的芯片串联的个数。
怎样测量数码管引脚,分共阴和共阳?找公共共阴和公共共阳首先,我们找个电源(3到5伏)和1个1K(几百的也欧的也行)的电阻, VCC串接个电阻后和GND接在任意2个脚上,组合有很多,但总有一个LED会发光的找到一个就够了,,然后用GND不动,VCC(串电阻)逐个碰剩下的脚,如果有多个LED (一般是8个),那它就是共阴的了。
5.2.1数码显示原理1.LED显示器的结构与原理LED数码显示器是由若干个发光二极管组成的,当发光二极管导通时,相应的点或线段发光,将这些二极管排成一定图形,控制不同组合的二极管导通,就可以显示出不同韵字形。
单片机应用系统中常用的LED显示器为七段显示器,再加上有一个小数点,因此也可把它称为八段显示器。
结构形式有共阴极和共阳极两种,它的结构图如图5.11所示。
共阴极是把所有发光二极管的阴极连起来,通常接地,通过控制每一只发光二极管的阳极电平来使其发光或熄灭,阳极为高电平发光,为低电平熄灭;共阳极是把所有发光二极管的阳极连起来,通常为高电平(如+5V),通过控制每一只发光二极管的阴极电平来使其发光或熄灭,阴极为低电平发光,为高电平熄灭。
单片机led数码管的静态控制显示方式实验报告

单片机led数码管的静态控制显示方式实验报告开发环境:
本实验使用的是Keil uV5,MCU为STC89C52RC,和四位数码管模块。
实验目的:
本次实验是静态控制数码管显示,目的是使用单片机控制四位数码管上显示一个数字。
实验准备:
硬件:STC89C52RC单片机模块,4位数码管模块;
软件:Keil uV51.3 + STC-ISP软件;
实验原理:
单片机控制数码管显示,需要使用三个管脚控制,分别为A,B,C,当A为高电平时,B和C同时为低电平时,这时显示第一个数字;当B为高电平时,A和C同时为低电平时,这时显示第二个数字;当C为高电平时,A和B同时为低电平时,这时显示第三个数字。
实验步骤:
1. 设计电路:确定STC89C52RC控制四位数码管控制连接。
2. 安装软件:安装Keil uV5以及STC-ISP软件。
3. 编程:根据原理进行程序编写,编写完整的显示代码,实现任意数字的显示。
4. 烧录:将编写的程序通过STC-ISP软件烧录,然后重新启动单片机。
5. 测试:当烧写完成,四位数码管显示正确且稳定时,表示实验测试成功。
实验结果:
实验成功,STC89C52RC控制四位数码管显示正确且稳定。
实验结论:
实验证明,基于STC89C52RC芯片,通过编写程序,可以实现不同数字或字母在四位
数码管上的显示,达到定量和定性的要求。
led数码管 静态显示 电路

LED数码管及其在静态显示电路中的应用1. 介绍LED数码管的基本概念LED数码管是一种由发光二极管(LED)组成的数字显示器件,通常用于显示数字和少量特殊字符。
它们可以在各种设备中被发现,包括数字时钟、仪表盘和计算器等。
LED数码管通常由7段或14段LED组成,每个LED代表显示数字中的一个线条或段。
2. 静态显示电路的基本原理静态显示电路是指在不改变显示内容的情况下,通过给显示器件(如LED数码管)加电来显示一组固定的数字或字符。
在静态显示电路中,LED数码管的每个段由一个控制开关来控制,当控制开关打开时,相应的LED亮起,反之则灭。
3. LED数码管在静态显示电路中的连接方式在静态显示电路中,LED数码管的连接方式通常采用共阳或共阴的方式。
共阳接法是指LED数码管的阳极均接在一起,通过接通对应的阴极来控制显示内容。
而共阴接法则是LED数码管的阴极均接在一起,通过接通对应的阳极来控制显示内容。
4. 静态显示电路中的驱动电路设计静态显示电路需要配合驱动电路来实现稳定的显示效果。
驱动电路通常包括译码器、锁存器和显示数据输入端等部分,通过这些部件能够将外部输入的数字信号转换成LED数码管需要的控制信号,从而实现对LED数码管的静态显示。
5. 对LED数码管静态显示电路的个人理解和观点静态显示电路中LED数码管的应用非常广泛,不仅可以用于数字显示,还可以结合其他传感器等模块来实现更为复杂的功能。
在设计静态显示电路时,需要考虑电路的稳定性、功耗以及显示效果等因素,以确保显示效果的同时也保证电路的可靠性和稳定性。
6. 总结LED数码管在静态显示电路中的应用是一种常见且重要的应用场景。
通过合理的连接方式和驱动电路设计,能够实现稳定、清晰的数字显示效果,为各种电子设备的显示提供了便利和可靠性。
通过这篇文章的撰写,我对LED数码管在静态显示电路中的原理和应用有了更深入的了解。
希望这篇文章也能够帮助读者更好地理解LED数码管及其在静态显示电路中的应用。
LED显示器接口技术及实验

LED显示器接口技术及实验在单片机系统中,经常用LED(发光二极管)数码显示器来显示单片机系统的工作状态、运算结果等各种信息,LED数码显示器是单片机与人对话的一种重要输出设备。
16.1 LED数码显示器的构造及特点图16-1是LED数码显示器的构造。
它实际上是由8个发光二极管构成,其中7个发光二极管排列成“8”字形的笔画段,另一个发光二极管为圆点形状,安装在显示器的右下角作为小数点使用。
通过发光二极管亮暗的不同组合,从而可显示出0~9的阿拉伯数字符号以及其它能由这些笔画段构成的各种字符。
图16-1 LED数码显示器的构造LED数码显示器的内部结构共有两种不同形式,一种是共阳极显示器,其内部电路见图16-2,即8个发光二极管的正极全部连接在一起组成公共端,8个发光二极管的负极则各自独立引出。
另一种是共阴极显示器,其内部电路见图16-3,即8个发光二极管的负极全部连接在一起组成公共端,8个发光二极管的正极则各自独立引出。
图16-2 共阳极显示器内部电路图16-3 共阴极显示器内部电路LED数码显示器中的发光二极管共有两种连接方法:共阳极接法。
把发光二极管的阳极连在一起,使用时公共阳极接+5V,这时阴极接低电平的段发光二极管就导通点亮,而接高电平的则不点亮。
共阴极接法。
把发光二极管的阴极连在一起,使用时公共阴极接地,这时阳极接高电平的段发光二极管就导通点亮,而接低电平的则不点亮。
驱动电路中的限流电阻R,通常根据LED的工作电流计算而得到,R=(Vcc-Vled)/Iled。
式中,Vcc为电源电压(+5V),Vled为LED压降(一般取2V左右),Iled为工作电流(可取1~20mA)。
R通常取数百欧姆。
我们实验中使用的89C51单片机,其P0~P3口具有20mA的灌电流输出能力,因此可直接驱动共阳极的LED数码显示器。
为了显示数字或符号,要为LED数码显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机汇编语言教程:23课:LED数码管静态显示接口与编程在单片机系统中,常常用LED数码数码管显示器来显示各种数字或符号。
由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。
引言:还记得我们小时候玩的“火柴棒游戏”吗,几根火柴棒组合起来,能拼成各种各样的图形,LED数码管显示器实际上也是这么一个东西。
八段LED数码管显示器
<单片机静态显示接口>
八段LED数码管显示器由8个发光二极管组成。
基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。
LED数码管显示器有两种不一样的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED数码管显示器。
如下图所示。
`
共阴和共阳结构的LED数码管显示器各笔划段名和安排位置是相同的。
当二极管导通时,对应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。
8个笔划段hgfedcba对应于一个字节(8位)的D7 D6 D5 D4 D3 D2 D1 D0,于是用8位二进制码就能表示欲显示字符的字形代码。
例如,对于共阴LED数码管显示器,当公共阴极接地(为零电平),而阳极hgfedcba各段为0111011时,数码管显示器显示"P"字符,即对于共阴极LED数码管显示器,“P”字符的字形码是73H。
如果是共阳LED数码管显示器,公共阳极接高电平,显示“P”字符的字形代码应为10001100(8CH)。
这里必须注意的是:很多产品为方便接线,常不按规则的办法去对应字段与位的关系,这个时候字形码就必须根据接线来自行设计了,后面我们会给出一个例程。
在单片机应用系统中,数码管显示器显示常用两种办法:静态显示和动态扫描显示。
所谓静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。
这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU的开销小。
能供给单独锁存的I/O接口电路很多,这里以常用的串并转换电路74LS164为例,介绍一种常用静态显示电路,以使大家对静态显示有一定的了解。
MCS-51单片机串行口方式押为移们寄存器方式,外接6片74LS164作为6位LED数码管显示器的静态显示接口,把8031的RXD作为数据输出线,TXD作为移位时钟脉冲。
74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。
其中A、B(第1、2脚)为串行数据输入端,2个管脚按逻辑与运算规律输入信号,公一个输入信号时可并接。
T(第8脚)为时钟输入端,可连接到串行口的TXD端。
每一个时钟信号的上升沿加到T 端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。
R(第9脚)为复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。
Q1…Q8(第3-6和10-13管脚)并行输出端分别接LED数码管显示器的hg---a各段对应的管脚上。
关于74LS164还能作如下的介绍:所谓时钟脉冲端,其实就是需要高、低、高、低的脉冲,不管这个脉冲是怎么来的,比如,我们用根电线,一端接T,一端用手拿着,分别接高电平、低电平,那也是给出时钟脉冲,在74LS164获得时钟脉冲的瞬间(再讲清楚点,是在脉冲的沿),如果数据输入端(第1,2管脚)是高电平,则就会有一个1进入到74LS164的内部,如果数据输入端是低电平,则就会有一个0进入其内部。
在给出了8个脉冲后,最先进入74LS164的第一个数据到达了最高位,然后再来一个脉冲会有什么发生呢?再来一个脉冲,第一个脉冲就会从最高位移出,就象车站排队买票,栏杆就那么长,要从后面进去一本人,前面必须要从前面走出去一本人才行。
搞清了这一点,下面让我们来看电路,6片7LS164首尾相串,而时钟端则接在一起,这样,当输入8个脉冲时,从单片机RXD端输出的数据就进入到了第一片74LS164中了,而当第二个8个脉冲到来后,这个数据就进入了第二片74LS164,而新的数据则进入了第一片74LS164,这样,当第六个8个脉冲完成后,首次送出的数据被送到了最左面的164中,其他数据依次出现在第一、二、三、四、五片74LS164中。
有个问题,在第一个脉冲到来时,除了第一片74LS164中接收数据外,其他各片在干吗呢?它们也在接收数据,因为它们的时钟端都是被接在一起的,可是数据还没有送到其他各片呢,它们在接收什么数据呢?。
其实所谓数据不过是一种说法而已,实际就是电平的高低,当第一个脉冲到来时,第一片164固然是从单片机接收数据了,而其它各片也接到前一片的Q8上,而Q8是一根电线,在数字电路中它只可能有两种状态:低电平或高电平,也就是“0”和“1”。
所以它的下一片74LS164也相当于是在接收数据啊。
只是接收的全部是0或1而已。
这个问题放在这儿说明,可能有朋友不屑一顾,而有的朋友可能还是不清楚,这实际上涉及到数的本质的问题,如果不懂的,请仔细思考,并找一些数字电路的数,理解164的工作原理,再来看这个问题,或者去看看我的另一篇文章《27课:关于单片机的一些基本概念》的文章。
务必搞懂,搞懂了这一点,你的级别就高过开始学习者,可谓入门者了。
入口:把要显示的数分别放在显示缓冲区60H-65H共6个单元中,并且分别对应各个数码管LED0-LED5。
出口:将预置在显示缓冲区中的6个数成对应的显示字形码,然后输出到数码管显示器中显示。
单片机led显示程序如下:
DISP: MOV SCON,#00H ;初始化串行口方式0
MOV R1,#06H ;显示6位数
MOV R0,#65H ;60H-65H为显示缓冲区
MOV DPTR,#SEGTAB ;字形表的入口地址
LOOP:
MOV A,@R0 ;取最高位的待显示数据
MOVC A,@A+DPTR ;查表获取字形码
MOV SBUF,A ;送串行口显示
DELAY: JNB TI,DELAY ;等待发送完毕
CLR TI ;清发送标志
DEC R0 ;指针下移一位,准备取下一个待显示数
DJNZ R1,LOOP ;直到6个数据全显示完。
RET
SETTAB: ;字形表,前面有介绍,以后我们再介绍字形表的制作。
DB 03H 9FH 27H 0DH 99H 49H 41H 1FH 01H 09H 0FFH
; 0 1 2 3 4 5 6 7 8 9 消隐码
单片机显示测试用主程序
ORG 0000H
AJMP START
ORG 30H
START: MOV SP,#6FH
MOV 65H,#0
MOV 64H,#1
MOV 63H,#2
MOV 62H,#3
MOV 61H,#4
MOV 60H,#5
LCALL DISP
SJMP $
如果按图示数码管排列,则以上主程序将显示的是543210,想想看,如果要显示012345该怎样送数?
下面我们来分析一下字形表的制作问题。
先就上述“标准”的图形来看吧。
写出数据位和字形的对应关系并列一个表如下(设为共阳型,也就是对应的输出位为0时笔段亮)
如何,字形表会做了吧,就是这样列个表格,根据要求(0亮或1亮)写出对应位的0和1,就成了。
做个练习,写出A-F的字形码吧。
如果为了接线方便而打乱了接线的次序,那么字形表又该如何接呢?也很简单,一样地列表啊。
以新实验板为例,共阳型。
接线如下:
P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
C E H
D G F A B
则字形码如下所示:
;0 00101000 28H
;1 01111110 7EH
;2 10100100 0A4H
;3 01100100 64H
;4 01110010 72H
;5 01100001 61H
;6 00100001 21H
;7 01111100 7CH
;8 00100000 20H
;9 01100000 60H。