单片机驱动LED数码管的方法_图文(精)
- 格式:doc
- 大小:185.00 KB
- 文档页数:2
跟我学51单片机(五):单片机动态扫描驱动数码管原理简介常用的段式数码管有七段式和八段式,八段比七段多了一个小数点,其他的基本相同。
所谓的几段就是指数码管里有相应的几个小LED 发光二极管,通过控制不同的LED 的亮灭来显示出不同的字形(见图1(a))。
从各发光二极管的电极连接方式又可以分为共阳极和共阴极两种类型。
共阴极则是所有的二极管的阴极连接在一起,而阳极是分离的(见图1(b));而共阳极就是所有二极管的阳极是公共相连,而阴极则是分离的(见图1(c))。
本学习板采用的是八段共阴极数码管,型号为LG3641AH。
图1 数码管内部结构图前文所述,数码管与发光二极管的工作原理相同,共阳极时,所有正端接电源正极,当负端有低电平时,该段有电流流过,发光管亮,当负端为高电平时,该段无电流流过,发光管不亮。
要显示什么数字,就使对应的段为低电平(见表1)。
共阴极与共阳极的电平变化状态相反。
当每个段的驱动电流为2~20mA,电流越大,发光越亮。
表1 显示的数字和七段码各位的对应关系表常用的七段式数码管的硬件驱动设计方法有:静态驱动与动态驱动。
静态驱动即指每个数码管的数据线都有一个单独的数据锁存器,数据锁存器输入的数据由使能端控制,当使能端为高电平时,数据线上的数据(要显示的七段码)进入显示器,使能端与地址译码器的输出相连,要显示那位,则选通那位的地址,在软件设计上不要求程序循环,也不存在显示数字发生闪烁。
但是这样会占用很多口线。
动态显示是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。
这样一来,就没有必要每一位数码管配一个锁存器,从而节省了口线,地简化了硬件电路。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
电路详解此讲的电路图如图2。
从图2 中可以看出,驱动八个八段数码管总共用了6 个单片机IO 口,其中三个IO通过控制74HC595来实现对数码管中的各段驱动,另外三个IO 通过控制74HC138 来实现对8 个数码管中的公共端驱动。
单片机驱动LED数码管电路及编程单片机I/O的应用最典型的是通过I/O口与7段LED数码管构成显示电路,我们从常用的LED显示原理开始,详尽讲解利用单片机驱动LED数码管的电路及编程原理,目的在于通过这一编程范例,让初学者了解I/O口的编程原理,意在起举一反三,抛砖引玉的作用。
左图为实验电路图,我们使用80C51单片机,电容C1、C2和CRY1组成时钟振荡电路,这部分基本无需调试,只要元件可靠即会正常起振。
C3和R1为单片机的复位电路,80C51的并行口P1.0-P1.7直接与LED数码管的a-f引脚相连,中间接上限流电阻R3-R10。
值得一提的是,80C51并行口的输出驱动电流并非很大,为使LED有足够的亮度,LED数码管应选用高亮度的器件。
此外,图中的80C51还可选用C51系列的其它单片机,只要它们的指令系统兼容C51即可正常运行,程序可直接移植,例如选用低价Flash型的AT89C1051或2051(详细技术手册)等,它们的ROM可反复擦写,非常适合作实验用途。
程序清单:01 START: ORG 0100H ;程序起始地址02 MAIN: MOV R0,#00H ;从“0”开始显示03 MOV DPTR,#TABLE ;表格地址送数据指针04 DISP: MOV A,R0 ;送显示05 MOVC A,@A+ADPTR ;指向表格地址06 MOV P1,A ;数据送LED07 ACALL DELAY ;延时08 INC R0 ;指向下一个字符09 CJNE R0,#0AH,DISP ;未显示完,继续10 AJMP MAIN ;下一个循环11 DELAY: MOV R1,#0FFH ;延时子程序,延时时间赋值12 LOOP0: MOV R2,#0FFH13 LOOP1: DJNZ R2,LOOP114 DJNZ R1,LOOP015 RET ;子程序返回16 TABLE: DB 0C0H ;字型码表17 DB 0F9H18 DB 0A4H19 DB 0B0H20 DB 99H21 DB 92H22 DB 82H23 DB 0F8H24 DB 80H25 DB 90H26 END ;程序结束。
51单片机并行口驱动LED数码管显示电路及程序介绍利用51单片机的一个并行口实现多个LED数码管显示的方法,给出了利用此方法设计的多路LED显示系统的硬件电路结构原理图和软件程序流程,同时给出了采用51汇编语言编写程序。
1 硬件电路多位LED显示时,常将所有位的段选线并联在一起,由一个8位I/O口控制,而共阴极点或共阳极点分别由另一个8位I/O口控制;也可采用并行扩展口构成显示电路,通常,需要扩展器件管脚的较多,价格较高。
本文将介绍一种利用单片机的一个并行I/O口实现多个LED显示的简单方法,图1所示是该电路的硬件原理图。
其中,74LS138是3线-8线译码器,74LS164是8位并行输出门控串行输入移位寄存器,LED采用L05F型共阴极数码管。
显示时,其显示数据以串行方式从89C52的P12口输出送往移位寄存器74LS164的A、B端,然后将变成的并行数据从输出端Q0~Q7输出,以控制开关管WT1~WT8的集电极,然后再将输出的LED段选码同时送往数码管LED1~LED8。
位选码由89C52的P14~P16口输出并经译码器74LS138送往开关管Y1~Y8的基极,以对数码管LED1~LED8进行位选控制,这样,8个数码管便以100ms的时间间隔轮流显示。
由于人眼的残留效应,这8个数码管看上去几乎是同时显示。
<51单片机并行口驱动LED数码管显示电路>2 软件编程该系统的软件编程采用MCS-51系列单片机汇编语言完成,并把显示程序作为一个子程序,从而使主程序对其进行方便的调用。
图2所示是其流程图。
具体的程序代码如下:<51单片机并行口驱动LED数码管显示程序>pic单片机驱动led数码管显示程序;*****该程序用于驱动led数码管显示,在8个LED数码管上依次显示数字1、2、3、4、5、6、7、8*******;**** 单片机学习网经典程序已测试,led数码管共阴和共阳不同请修改码值转换表部分LIST P=18F458INCLUDE "P18F458.INC";所用的寄存器XIANR EQU 0X20ORG 0X00GOTO MAINORG 0X30;****************以下为码值转换表******************** CONVERT ADDWF PCL,1RETLW 0XC0 ;0,显示段码与具体的硬件连接有关RETLW 0XF9 ;1RETLW 0XA4 ;2RETLW 0XB0 ;3RETLW 0X99 ;4RETLW 0X92 ;5RETLW 0X82 ;6RETLW 0XD8 ;7RETLW 0X80 ;8RETLW 0X90 ;9RETLW 0X88 ;ARETLW 0X83 ;BRETLW 0XC6 ;CRETLW 0XA1 ;DRETLW 0X86 ;ERETLW 0X8E ;FRETLW 0X7F ;"."RETLW 0XBF ;"-"RETLW 0X89 ;HRETLW 0XFF ;DARKRETURN;**************初始化子程序*****************INITIALBCF TRISA,5 ;置RA5为输出方式,以输出锁存信号BCF TRISC,5BCF TRISC,3 ;设置SCK与SDO为输出方式BCF INTCON,GIE ;关闭所有中断MOVLW 0XC0MOVWF SSPSTAT ;设置SSPSTAT寄存器MOVLW 0X30MOVWF SSPCON1 ;设置SPI的控制方式,允许SSP方式,并且时钟下降;沿发送数据,与"74HC595当其SCLK从低到高电平;跳变时,串行输入数据(DI)移入寄存器"的特点相对应MOVLW 0X11 ;显示值寄存器赋初值,每个值占两个字节,MOVWF XIANR ;从8开始显示RETURN ;返回;***************led数码管显示子程序******************;SPI发送显示子模块DISPLAYTRANSMIT CLRF PORTA ;LACK送低电平,为锁存做准备MOVWF SSPBUF ;启动发送WAITBTFSS PIR1,SSPIFGOTO WAIT ;等待发送结束BCF PIR1,SSPIF ;清除中断标志NOPBSF PORTA,5 ;最后给一个锁存信号,代表一显示任务完成RETURN;*****************pic单片机驱动led显示程序的主程序开始*************** MAIN NOPCALL INITIAL ;调用系统初始化子程序LOOP MOVF XIANR,WCALL CONVERT ;查出XIANR的显示段码值CALL DISPLAYDECF XIANRDECF XIANR ;显示值减2,因为按字存放,按字节读取MOVF XIANR,WSUBLW 0X01BTFSS STATUS,ZGOTO LOOP ;若送完显示的数,则退出显示HERE GOTO HEREENDC语言源程序如下:/*************************************************程序名称:8位数码管移位显示0-F简要说明:使用共阳型数码管P0口输出数码管段码,P2口输出数码管位码编写:时间:2008-8-21*************************************************/#include<reg51.h>#define uchar unsigned char#define uint unsigned int#define duan P0 //定义段码输出#define wei P2 //定义位码输出uchar a=0,b=0; //全局变量。
系统装置技术与应用TECHNOLOGY & APPLICATION单片机静态输出驱动和动态输出静态驱动都可以分为单片机直接七段码输出驱动和单片机8421码输出七段译码驱动。
动态扫描驱动显示可以分为单片机七段码输出动态位选驱动、单片机8421码输出七段译码动态位选驱动、串行移位输出扫描驱动等,现分析这几种驱动方法的工作原理及优缺点。
工作原理及优缺点1. 单片机静态输出驱动LED七段数码管工作原理及优缺点单片机静态输出驱动LED七段数码管是指给每位数码管的笔段加驱动信号,以显示数据。
它分为单片机直接七段码输出驱动和单片机8421码输出七段译码驱动,工作原理及优缺点如下。
1) 单片机直接七段码输出驱动。
单片机将要显示的数据通过程序译成七段码,经单片机I/O口直接驱动LED数码管。
显示1位LED数码(含小数点)需要8位I/O口驱动,除显示十进制数、十六进制数外,还可以显示一部分特定的字符,如“H”、“J”、“L”、“n”、“o”、“P”、“q”及“U”等字符。
2) 单片机8421码输出七段译码驱动。
单片机将要显示的十进制数或十六进制数的8421码直接从I/O口输出,经过七段译码器驱动LED数码管。
显示1位LED数码(不含小数点)只需要4位I/O口驱动,但需要外部译码器支持,一般只能显示十进制数、十六进制数对应的数字、字符。
控制程序与直接七段码输出驱动相似,省去了“查找对应的七段码”过程。
2. 单片机动态输出静态驱动LED七段数码管工作原理及优缺点单片机动态输出静态驱动LED七段数码管也是单片机驱动LED数码管的方法文/福建省建阳市供电有限公司 蓝厚荣单片机应用于工业控制等方面时,经常要用LED七段数码管显示一些数据。
单片机驱动LED数码管的方法有很多种,可以分为静态输出驱动、动态输出静态驱动和动态扫描驱动等几种方法。
94 | 电气时代・2008年第4期www.eage.com.cn系统装置技术与应用TECHNOLOGY & APPLICATION2008年第4期・电气时代 | 95指给每位数码管加驱动信号,以显示数据。
电子世界2003年11期35・・相约单片机图1图2现在驱动LED数码管流行采用单片机设计电路,但发现一些显示(LED数码管)电路设计复杂,没有充分利用单片机的电气特点、没有采用“硬件软化”的方法。
这里向大家介绍几种89C2051驱动LED数码管的方法,并附软件,可直接移植到其它电路中使用。
1.直接驱动5位LED数码管(1)由于89C2051的I/O脚吸入电流可达20mA,故可直接驱动LED数码管,但LED数码管必须采用高亮、共阴型。
由P1口输出段码,P3口输出位选码。
R1~R8为LED数码管提供工作电流(电路见图1)。
(2)在89C2051的RAM中建一个5字节的数码管缓存区,将每一个数码管要显示的数字存入。
输出时采用查表法,将数字对应的段码值送到P1口;位选信号输出,采用直接位寻址方式(程序见本刊网站上的附1)。
2.驱动8位LED数码管(1)在电路中添加一片74LS164串入并出的锁存器,用于锁存输出的段码,R1~R8是限流电阻(电路见图2)。
(2)此软件与附1(见本刊网站)基本相同,只是在段码输出时,要做一段模拟串口发送程序,将段码串行输入到74LS164中(程序见本刊网站上的附2)。
89C2051驱动LED数码管的方法・李 杰・3.驱动24位LED数码管(1)电路使用了3片74LS164(HC164)做位选码输出用,共可驱动8×3=24位,段码由P1口输出。
74LS164的驱动电流可达20mA,可直接驱动LED数码管(电路见图3)。
(2)此时89C2051的绝大部分时间被扫描LED数码管的程序所占用,胜任其它费时的操作已不可能,否则LED数码管会闪烁。
要确保主程序的执行周期<20ms(程序见本刊网站上的附3)。
4.LED数码管的亮度控制LED数码管的亮度控制非常重要,它直接影响LED数码管的使用寿命。
如果采用硬件控制,则电路复杂。
可采用“硬件软化”的方法,由软件控制(程序见本刊网站上的附3)。
实验三数码管的动态驱动一、实验目的:1、了解数码管LED的工作原理;2、掌握数码管的动态扫描驱动程序设计方法。
二、实验原理:数码管显示器内部由7段条形的LED和一个右下角圆形的用作小数点的LED组成,一共有8段,恰好是用于8位的并行系统。
通过控制点亮不同组合的字段,就可以显示不同的数字。
数码管显示器有共阴极和共阳极两种。
当共阴极显示的公共阴极接地时,在某段的阳极上电压为高电平时,该段被点亮。
EZMCU实验板上的6个数码管,均为共阴极接法。
三、实验内容:1、编写程序,使某位数码管闪烁而其余正常点亮控制小数点的点亮。
#include<reg52.h> //从左至右显示“8051AF”且使某位闪烁,某位小数点闪烁,其余正常#define uint unsigned int#define uchar unsigned charuchar code DispSeg[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,};uchar code table[]={8,0,5,1,0xA,0xF};uchar count;void delayms(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}void display(void){uchar num=0x80;uchar *num1=table;while(num!=0x02){if(count<50){P0=DispSeg[*num1];if(num&0x20)P0|=0x80;}else{if(num&0x80){P0=0;}else{P0=DispSeg[*num1];}}num1++;P1=num;num=num>>1;delayms(1);}}void main(void){while(1){display();count++;count%=80;}}2、使用查表方法在数码管上产生广告灯的效果#include<reg52.h> //数码管实现广告灯效果#define uint unsigned int#define uchar unsigned charuchar code DispSeg[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x38,0x00 };uchar code table1[]={2,0,1,3,0x10,0x10};uchar code table2[]={0x11,0x11,0x11,0x11,0x11,0x11}; uchar count,count1;void delayms(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}void display(void){uchar num=0x80,i=5;uchar *num1=table1,*num2=table2;while(num!=0x02){if(count<50){P0=DispSeg[*num1];if(num&0x80)P0|=0x80;}else{P0=DispSeg[*num2];}num1++;num2++;P1=num;num=num>>1;delayms(1);}}void main(void){while(1){display();count++;count%=80;}}四、实验小结:数码管的使用在生活中非常普遍。
单片机驱动数码管电路数码管是一种常见的显示器件,广泛应用于各种电子设备中。
为了实现对数码管的驱动,可以使用单片机来完成。
单片机是一种集成电路,内部集成了处理器、存储器和各种输入输出接口,能够完成各种控制任务。
数码管电路主要由数码管、电流限制电阻和单片机组成。
数码管是一种七段显示器,能够显示0~9的数字。
电流限制电阻用于控制数码管的亮度,通常选择合适的电阻使得数码管的亮度适中。
单片机则负责控制数码管的显示。
单片机通过输出高低电平信号来控制数码管的显示。
七段显示器的每一段都对应一个引脚,通过控制引脚的电平状态,就可以实现对数码管的控制。
单片机通过改变引脚的电平状态来控制数码管的显示内容。
单片机驱动数码管的原理如下:首先,单片机通过输出引脚的高低电平来控制数码管的每一段,通过控制引脚的电平状态,可以使某一段亮起或者熄灭。
然后,通过改变每一段的亮灭状态,可以实现对数字的显示。
例如,要显示数字1,就只需要点亮第二段,其他段熄灭即可。
同理,要显示其他数字,只需要点亮相应的段,其他段熄灭即可。
为了实现对数码管的驱动,需要编写相应的程序。
在程序中,需要定义每一段对应的引脚,并通过控制引脚的电平状态来控制数码管的显示。
同时,还需要定义每个数字对应的亮灭状态,通过改变亮灭状态来实现数字的显示。
例如,要显示数字0,需要点亮除了第三段之外的其他段,其他段熄灭。
通过改变每一段的亮灭状态,可以实现对数字的显示。
同时,还可以通过改变每一段的亮度来控制数码管的亮度。
通过改变电流限制电阻的值,可以改变流过数码管的电流大小,从而改变数码管的亮度。
在实际应用中,单片机驱动数码管的电路可以通过外部电路连接数码管和单片机。
通过合理设计电路连接方式,可以实现对多个数码管的驱动。
例如,可以通过复用引脚的方式,将多个数码管连接在一起,并通过单片机的输出引脚来控制每个数码管的显示内容。
总结起来,单片机驱动数码管的电路可以实现对数码管的显示控制。
电子信息工程系实验报告课程名称:单片机原理及接口(应用)实验项目名称:实验3 LED 数码管显示实验 实验时间:2011.11.4班级: 电信092 姓名: 学号:实验目的:熟悉keil 仿真软件、proteus 仿真软件、软件仿真板的使用。
了解并熟悉一位数码管与多位LED 数码管的电路结构、与单片机的连接方法及其应用原理。
学习proteus 构建LED 数码管显示电路的方法,掌握C51中单片机控制LED 数码管动态显示的原理与编程方法。
实验环境:Window 7Keil2仿真软件实验原理:1、LED 显示器是由发光二极管显示字段的显示器件。
在单片机应用系统中通常使用的是七段LED ,这种显示器有共阴极与共阳极两种,如图1。
图1 共阴和共阳显示原理共阴极LED 显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发光二极管则点亮;共阳极LED 显示器的发光二极管阳极并接。
下面简单举共阴数码管显示“1”为例“三步骤”说明其原理:af begcddp1 2 3 4 510 9 8 7 6g f a be d c dp(a) 共阴极 (b) 共阳极 (c) 管脚配置成 绩:指导教师(签名):(1)要显示“1”b、c两个灯是亮的;(2)因为其为共阴,所以b、c应该取1才亮;(3)所以dp、g、f、e、d、c、b、a分别为00000110B即0x06。
2、LED显示器有静态显示与动态显示两种方式:(1)LED静态显示方式。
各位LED的位选线连在一起接地或接+5V;每位LED的段选线(a-dp)各与一个八位并行口相连;在同一时间里每一位显示的字符可以各不相同。
图 2 四位静态LED显示器电路(2)LED动态显示方式。
将所有LED的段选线并联在一起,由一个八位I/O口控制,而位选线分别由相应的I/O口线控制。
如:8位LED动态显示电路只需要两个八位I/O口。
其中一个控制段选码,另一个控制位选。
动态显示三部曲:图3 八位LED动态显示器电路由于所有位的段选码皆由一个I/O控制,因此,在每个瞬间,多位LED只可能显示相同的字符。