完整版项目六数码管显示原理分解文档良心出品_第1页
完整版项目六数码管显示原理分解文档良心出品_第2页
完整版项目六数码管显示原理分解文档良心出品_第3页
完整版项目六数码管显示原理分解文档良心出品_第4页
完整版项目六数码管显示原理分解文档良心出品_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

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段.有共阳极和共阴极两种其结构如以下图所示:g f GND a b10 I 9 I S I 7 I 6I 1 I 2 I 3 | 4 |5 c d GND e dpa共阴极b共阳极时外形及引脚图6-1数码管结构图2. 数码管工作原理共阳极数码管的8个发光二极管的阳极二极管正端连接在一起.通常,公共阳极接 高电平一般接电源,其它管脚接段驱动电路输出端.当某段驱动电路的输出端为低电平 时,那么该端所连接的字段导通并点亮.根据发光字段的不同组合可显示出各种数字或字符. 此时,要求段驱动电路

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

4、应字段亮,数据为 1表示对应字段暗;如使用共阴极数码管,数据为 0 表示对应字段暗,数据为1表示对应字段亮.如要显示“ 0,共阳极数码管的字型编码应为:11000000B 即C03 ;共阴极数码管的字型编码应为:00111111B 即3FH.依此类推.以下图为LED显示器的结构原理图. N个LED显示块有N位位选线和8X N根段码线.段码线限制显示的字型,位选线限制该显示位的亮或暗.静态显示和动态显示两种显示方式.位选线图6-2 LED显示器的结构原理图二、静态显示接口静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止.这种显示方式的各位数码管相互独立,公共端恒定接地共阴极或

5、接正电源共阳极.每个数码管的8个字段分别与一个 8位I/O 口地址相连,I/O 口只要有段码输出,相应字符即显示 出来,并保持不变,直到I/O 口输出新的段码. 采用静态显示方式, 较小的电流即可获得较 高的亮度,且占用 CPU时间少,编程简单,显示便于监测和限制,但其占用的口线多,硬件 电路复杂,本钱高,只适合于显示位数较少的场合.1/0 口 I/O 口2 1/01-131/014.JLMO+5 V/GND图6-3 4位静态数码显示电路上图中各位的公共端连接在一起接地或+5V.每位的段码线adp分别与一个8位的锁存器输出相连. 显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段

6、码为止.显示的亮度高.该电路各位可独立显示.三、动态显示接口动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描.通常,各位数码管的段选线相应并联在一起,由一个8位的I/O 口限制;各位的位选线 (公共阴极或阳极)由另外的I/O 口线限制.动态方式显示时,各数码管分时轮流选通, 要使其稳定显示,必须采用扫描方式, 即在某一时刻只选通一位数码管,并送出相应的段码, 在另一时刻选通另一位数码管,并送出相应的段码.依此规律循环,即可使各位数码管显示将要 显示的字符.虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人以同时显示的感觉.

7、段码线8 位 1/0(1)位选线4位10(2)图6-4 4位动态数码显示电路上图所有位的段码线相应段并在一起,由一个8位I/O 口限制,形成段码线的多路复用,各位的公共端分别由相应的I/O线限制,形成各位的分时选通.图6-4为4位8段LED动态显示电路.其中段码线占用一个 8位I/O 口,而位选线占用 一个 4 位 I/O 口.采用动态显示方式比较节省I/O 口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPl依次扫描,占用 CPU较多的时间.四、定时/计数器应用程序举例1. 在四位一体数码管个位上上显示数字1.(1)硬件原理图本教材配套开发板中,数码管的段

8、选限制信号由连接器J15分别接到单片机P0.0P0.7,位选限制信号由连接器 J16分别接到单片机 P2.0P2.3o四个三极管对位选信号进行驱动, 位选限制信号为低电平时,相应的数码管被选中.具体的原理图如图6-5所示.R304.7k图6-5四位一体数码管原理图(2)程序流程图具体程序流程图见图 6-6所示.(3)软件代码#include<reg52.h> void main() (P2=0xfe; / 选中个位P0=0xf9;/1while(1);2. 在四位一体数码管各位依次显示0F,间隔时间为1秒.(1)硬件原理图 具体原理图参见图6-5 .(2)程序流程图具体程序流程图见

9、图 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,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

10、)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 charuchar data smgd=0x80,0x90,0x92,0xa4;/8952uchar data smgw=0xf7,0xfb,0xfd,0xfe;/ 位void delay(uchar t)/0.2ms * t 供参考 uc

11、har time; do time=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. 实训目的进一步了解掌握四位一体数码管显示的静态显示方式,掌握编程方法,能够熟练编写相关限制程序.2. 实训内容0时触发蜂鸣(1) 定时器报警器设计(定时器 T1定时,数码管显示 20秒倒计时,时间为 器鸣叫).(2) 四位一体数码管四个位同时显示0F,时间间隔为1秒,

12、利用定时器定时.(3) 四位显示(分+秒)的数字时钟.3. 实训步骤1) 用Keil51编写代码,调试、编译后生成.hex文件.2) 将开发板上连接器J3、J15、J16用跳线帽连接.3) 利用STC-ISP下载软件,将.hex文件下载到单片机ROMK4. 软件代码实训(1)软件代码: #include<reg52.h>#define uchar unsigned charsbit P21=P2a1; sbit P20=P2A0;sbit wave=P3A4;#define thr (P0=0xff;P21=0;P20=1;/宏定义函数#define fou (P0=0xff;P2

13、1=1;P20=0; ucharx=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; do time=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()/显示( if(x/10)/高位灭

14、零( thr P0=smgx/10; delay(21); fou P0=smgx%10; delay(21); void fire()/报警程序( wave=0; while(1);/程序终止void cycle() (while(1) ( if(t/20)/ 1s( t=0; x-; if(x=0) ( P0=0xc0;/ 显示 0fire();/20秒到了,调用报警程序 show(); void main()(init();cycle();void zd()interrupt 1(t+;TH0=(65536-50000)/256;TL0=(65536-50000)%256;实训(2)软件

15、代码:#include<reg52.h>#define uchar unsigned charucharx=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;ET1=1;TR1=1;void wx()/四位同时显示P2=0xf0;void cycle()uchar i=0;while(1)if(x

16、/20)/ 定时到达1sP0=smgi;x=0;i+;if(i=16)i=0;void main()(init();wx();cycle(); void zd()interrupt 3 ( x+; TH1=(65536-50000)/256; TL1=(65536-50000)%256;实训(3)软件代码: #include<reg52.h>#define uchar unsigned charsbit P23=P2A3;sbit P22=P2A2;sbit P21=P2A1;sbit P20=P2A0;#define one P0=0xff;P23=0;P22=1;P21=1;P

17、20=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; do time=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(21); f

温馨提示

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

评论

0/150

提交评论