项目六 数码管显示原理_第1页
项目六 数码管显示原理_第2页
项目六 数码管显示原理_第3页
项目六 数码管显示原理_第4页
项目六 数码管显示原理_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、项目六 数码管显示原理学习目的:1. 介绍STC89C51的数码管显示的原理;2. 掌握单个数码管静态显示的原理;3. 熟悉四位一体数码管动态显示的原理;4. 掌握单片机数码管显示的C51程序编程。常用的LED显示器有LED状态显示器(俗称发光二极管)、LED七段显示器(俗称数码管)和LED十六段显示器。发光二极管可显示两种状态,用于系统状态显示;数码管用于数字显示;LED十六段显示器用于字符显示。一、数码管简介1数码管的结构数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字0 9、字符A F、H、L、P、R、U、Y、符号“-”及小数点“.”。数码管的外形结构如下图所示。

2、数码管又分为共阴极和共阳极两种结构。常用的LED显示器为8段(或7段,8段比7段多了一个小数点“dp”段)。有共阳极和共阴极两种其结构如下图所示:图6-1 数码管结构图2数码管工作原理共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。通常,公共阴极接低电平

3、(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。3数码管字形编码要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。字型码各位定义为:数据线D0与a字段对应,D1与b字段对应,依此类推。如使用共阳极数码管,数据为0表示对应字段亮,数据为1表示对应字段暗;如使用共阴极数码管,数据为0表示对应字段暗,数据为1表示对应字段亮。如要显示“0”,共阳极数码管的字型编码应为:11000000

4、B(即C0H);共阴极数码管的字型编码应为:00111111B(即3FH)。依此类推。下图为LED显示器的结构原理图。N个LED显示块有N位位选线和8×N根段码线。 段码线控制显示的字型,位选线控制该显示位的亮或暗。静态显示和动态显示两种显示方式。图6-2 LED显示器的结构原理图二、静态显示接口静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。每个数码管的8个字段分别与一个8位I/O口地址相连,I/O口只要有段码输出,相应字符即显示出来,并保持不变,直到I/O口输出新的段码。采用静态

5、显示方式,较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但其占用的口线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。图6-3 4位静态数码显示电路上图中各位的公共端连接在一起(接地或+5V)。 每位的段码线(adp)分别与一个8位的锁存器输出相连。显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止。显示的亮度高。该电路各位可独立显示。三、动态显示接口动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常,各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的位选线(公共阴极或阳极)由另外的I/O

6、口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码。依此规律循环,即可使各位数码管显示将要显示的字符。虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人以同时显示的感觉。图6-4 4位动态数码显示电路上图所有位的段码线相应段并在一起,由一个8位I/O 口控制,形成段码线的多路复用,各位的公共端分别由相应的I/O线控制,形成各位的分时选通。图6-4为4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位

7、I/O口。采用动态显示方式比较节省I/O口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多的时间。四、定时/计数器应用程序举例1.在四位一体数码管个位上上显示数字1。(1)硬件原理图本教材配套开发板中,数码管的段选控制信号由连接器J15分别接到单片机P0.0P0.7,位选控制信号由连接器J16分别接到单片机P2.0P2.3。四个三极管对位选信号进行驱动,位选控制信号为低电平时,相应的数码管被选中。具体的原理图如图6-5所示。 图6-5 四位一体数码管原理图(2)程序流程图 具体程序流程图见图6-6所示。(3)软件代码#includ

8、e<reg52.h>void main()P2=0xfe; /选中个位P0=0xf9;/1while(1);2.在四位一体数码管各位依次显示0F,间隔时间为1秒。(1)硬件原理图 具体原理图参见图6-5。(2)程序流程图 具体程序流程图见图6-7所示。(3)软件代码#include<reg52.h>#define uchar unsigned char #define uint unsigned intuchar data smg=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,

9、0x86,0x8e;void delay(uint t)/0.2ms * t供参考uchar time;dotime=100;while(-time);while(-t);void cycle()uchar i;P2=0xfe;while(1)for(i=0;i<16;i+)P0=smgi;delay(5000);void main()cycle();3.在四位一体数码管上动态显示8952。(1)硬件原理图 具体原理图参见图6-5。(2)程序流程图 具体程序流程图见图6-8所示。(3)软件代码#include<reg52.h>#define uchar unsigned ch

10、aruchar data smgd=0x80,0x90,0x92,0xa4; /8952uchar data smgw=0xf7,0xfb,0xfd,0xfe; /位void delay(uchar t) /0.2ms * t 供参考uchar time;dotime=100;while(-time);while(-t);void show()uchar i;while(1)for(i=0;i<4;i+)P0=0xff;/消影P2=smgwi; /位P0=smgdi; /段delay(21);void main()show();五、实训1.实训目的进一步了解掌握四位一体数码管显示的静态显

11、示方式,掌握编程方法,能够熟练编写相关控制程序。2.实训内容(1)定时器报警器设计(定时器T1定时,数码管显示20秒倒计时,时间为0时触发蜂鸣器鸣叫)。(2)四位一体数码管四个位同时显示0F,时间间隔为1秒,利用定时器定时。(3)四位显示(分+秒)的数字时钟。3.实训步骤1)用Keil51编写代码,调试、编译后生成.hex文件。2)将开发板上连接器J3、J15、J16用跳线帽连接。3)利用STC-ISP下载软件,将.hex文件下载到单片机ROM中。4.软件代码实训(1)软件代码:#include<reg52.h>#define uchar unsigned charsbit P21

12、=P21;sbit P20=P20;sbit wave=P34; #define thr P0=0xff;P21=0;P20=1; / 宏定义函数#define fouP0=0xff;P21=1;P20=0;uchar x=20;uchar t=0;uchar data smg10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void delay(uchar t) / t * 0.2 ms参考uchar time;dotime=100;while(-time);while(-t); void init() / 初始化 TMOD=0x01;

13、TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;void show()/ 显示if(x/10)/ 高位灭零thrP0=smgx/10;delay(21);fouP0=smgx%10;delay(21);void fire() / 报警程序wave=0;while(1); / 程序终止void cycle()while(1)if(t/20) /1st=0;x-;if(x=0)P0=0xc0;/ 显示 0fire(); / 20秒到了,调用报警程序show();void main()init();cycle();void z

14、d()interrupt 1t+;TH0=(65536-50000)/256;TL0=(65536-50000)%256;实训(2)软件代码:#include<reg52.h>#define uchar unsigned charuchar x=0;uchar data smg16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;void init()TMOD=0x10;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET

15、1=1;TR1=1;void wx() /四位同时显示 P2=0xf0;void cycle()uchar i=0;while(1)if(x/20)/定时达到1sP0=smgi;x=0;i+;if(i=16)i=0;void main()init();wx();cycle();void zd()interrupt 3x+;TH1=(65536-50000)/256;TL1=(65536-50000)%256;实训(3)软件代码:#include<reg52.h>#define uchar unsigned charsbit P23=P23;sbit P22=P22;sbit P21

16、=P21;sbit P20=P20;#define one P0=0xff;P23=0;P22=1;P21=1;P20=1; / 宏定义函数#define two P0=0xff;P23=1;P22=0;P21=1;P20=1;#define thr P0=0xff;P23=1;P22=1;P21=0;P20=1;#define fou P0=0xff;P23=1;P22=1;P21=1;P20=0;uchar m=0,s=0,x=0;/ 初值为零uchar data smg10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void delay(uchar t)/ 0.2ms * t 参考uchar time;dotime=100;while(-time);while(-t);void init() /初始化TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;void show() /显示oneP0=smgm/10;delay(21);twoP0=smgm%10;delay(21);thrP0=smgs/10;delay(2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论