项目五简易数字电子时钟设计.
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0 0 1 0 0 0 0 0 0
0 0
0 1 0 0 1 0 0 0 0
0xc0 0xf9 0xa4
1
1
0
0 0 0 0 1 0
1
1 0 0 0 1 0
0
1 1 1 0 1 0 1
0
0 0 1 1 0 0
0
1 0 0 1 0
0xb0
0x99 0x92 0x82 0xf8 0x80 0x90
显示数字“3”
任务2
显示(动态)设计
8只数码管滚动显示单个数字 使用8只集成7段共阳数码管CA,共阴CC,所有数码管的a脚并 联在一起,其余b、d、e、f、g、h也是并联,任何时候发送的段 码均会传送到所有数码管上,所有数码管共阳极是独立的,P0 口为段控,P2口为位控,要让哪个数码管点亮,就给相应的位控 送合适的电平,为共阳的数码管,由于选用的是NPN三极管,P2.0 为1,就意味着第一个数码管点亮,其余的数码管均为熄灭,原因 是其余的共阳端没有+5V供电,,本例位码初值为0X80,即1000 0000,for循环中执行循环左移,
静态显示电路
动态扫描电路
任务1
二、设计示例
从0到9的加1计数显示(静态)设计
一位计数器是单片机控制数码管计数显示的最简单的例子
,本任务采用AT89S51单片机控制数码管静态显示的方式实 现从0到9的加1计数显示。
1.1 提出任务
用AT89S51的P2口做输出口,接一位LED数码管,编写程 序,使数码管显示从0到9的加1计数,时间间隔为0.5s。即 每显示一个数字后,保持0.5s,再显示下一个,显示到数字 “9 之后再从“0 开始循环。
一、 数码管的基本知识
数码管是一类显示屏通过对其不同的管脚 输入相对的电流使其发亮从而显示出数字。可 以显示时间、日期 、温度等可以用数字代替的 参数。由于它的价格便宜、使用简单,在电器 特别是家电领域应用极为广泛,空调 、热水器、 冰箱等等绝大多数用的都是数码管。
任务1
从0到9的加1计数显示(静态)设计
任务1 程 序
从0到9的加1计数显示(静态)设计
//延时 Void Delayms(uint xms) { uint I,j; for(i=xms,i>0,i--) for(j=110,j>0,j--) ; } //主程序 void main() { uchar i=0; P2=~DSY_code[i]; i=(i+1)%10; Delayms(500) }
动态显示
将多位数码管的共阴/共阳数码管的公共端也用IO口加以控 制,各个位轮番显示,利用人眼的视觉暂留效应,使得看上 去所有位一起亮。 位选线上的电流可能会很大(例如8位数码管一起亮时,相当 于64个LED一起发光的电流),一般要用三极管或者数字芯 片驱动。
输入与输出口的等效模型
输出口等效模型 输入口等效模型
1 数码管的基本知识
LED数码管是一种半导体发光器件,其基本单元是发光 二极管,如图。
任务1
从0到9的加1计数显示(静态)设计
1 数码管的基本知识
八段数码管
由八段LED构成,各LED阴极或阳极并在一起,称为“位选线”:共 阴、共阳,其余8个引脚各自引出,称为“段选线”,各段可以分别 控制。
Βιβλιοθήκη Baidu
段码表
任务1
从0到9的加1计数显示(静态)设计
1 数码管的基本知识
多位合一的数码管
将多个八段数码管的段选线分别并在一起,位选线引出。
+
d f
·
d
(a)
使用
七段LED显示器 (b)
显示器时,要注意区分这两种不同的接法。为了显示数字或字符,
显示器显示 进制数的编
必须对数字或字符进行编码。七段数码管加上一个小数点,共计 段。因此为 显示器提供的编码正好是一个字节。用共阴
选,利用发光管的余辉和人眼视觉暂留作用,使人的感 觉好像各位数码管同时都在显示。动态显示的亮度比静
态显示要差一些,所以在选择限流电阻时应略小于静态
显示电路中的。
静态显示
共阳数码管:公共端接Vcc,用单片机的一个8位IO(以P0为 例)口接在段选线上,P0输出相应段码的反码即可显示相应 的数字。 共阴数码管:公共端接地,用单片机的一个8位IO(以P2为 例)口接在段选线上,P2输出相应段码即可显示相应的数字 。MCS51的IO口拉电流能力很弱,不推荐此种接法。
码已列在下表。
使用
显示器时,要注意区分这两种不同的接法。为了显 显示器提供的编码正好是一个字 进制数的编码已列在下表。
示数字或字符,必须对数字或字符进行编码。七段数码管加上一
个小数点,共计 段。因此为 节。用共阴 • 显示器显示
• • • • •
0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d , 0 1 2 3 4 5 0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c , 6 7 8 9 A B 0x39 , 0x5e , 0x79 , 0x71 , 0x00 C D E F 无显示 共阴数码管码表
任务1
从0到9的加1计数显示(静态)设计
2 LED数码管的驱动方式 (2)动态显示 动态显示的特点是将所有位数码管的段选线并联在 一起,由位选线控制是哪一位数码管有效。这样一来, 就没有必要每一位数码管配一个锁存器,从而大大地简 化了硬件电路。选亮数码管采用动态扫描显示。所谓动
态扫描显示即轮流向各位数码管送出字形码和相应的位
K为0000 0001,0000 0010,0000 0100,0000 1000,0001 0000
0010 0000,0100 0000,1000 0000,如此重复。
任务2
8位一体(动态)显示设计电路图
任务2
显示(动态)设计
//主程序 void main() { uchar I,k=0X80; while(1) { for (i=0;i<8;i++) { P2=0Xff;//关闭显示 k=_crol_(k,1); P0=DSY_code[i];//发送段码 P2=k;//发送数码管位码 Delayms(300); } } }
任务1
从0到9的加1计数显示(静态)设计
2 LED数码管的驱动方式 (1)静态显示方式 • LED显示工作方式有两种:静态显示方式和动态显示方式。 • 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个 段码都由一个单片机的I/O端口进行驱动,每个数码管必须接一 个8位锁存器用来锁存待显示的字形码。 • 或者使用如BCD码二-十进制译码器译码进行驱动。显示数 据时,直接将要显示的数字的编码通过单片机送到段码显示端 即可。静态驱动的优点是编程简单,显示亮度高,缺点是占用 I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端 口来驱动,而一个AT89S51单片机芯片可用的I/O端口才32个, 实际应用时必须增加译码驱动器进行驱动,硬件电路较复杂
任务1 分析任务
从0到9的加1计数显示(静态)设计
2. 软件设计思路(共阳)
LED数码管
P2口 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
h
g
f
e
d
c
b
a
P2口输出 (16进制)
功能说明 显示数字“0” 显示数字“1” 显示数字“2”
1 1
1 1
0 1
0 1
0 1 0
任务1
从0到9的加1计数显示(静态)设计
思考与练习
1. 若该从0到9的加1计数显示采用共阴极数码管,则单片 机控制的硬件电路及程序如何修改?
2. 修改程序中显示的数据,使其显示范围扩大到0~F共16 个十进制数。
任务2
一、知识储备
动态显示设计
1.1 LED数码管动态显示驱动方式 数码管动态显示接口是单片机中应用最为广泛的一种显示 方式之一; 1. 动态驱动是将所有数码管的8个显示笔划"a~dp"的同名端连 在一起,另外为每个数码管的公共极COM增加位选通控制电 路,位选通由各自独立的I/O线控制; 2. 当单片机输出字形码时,所有数码管都接收到相同的字形 码,我们只要将需要显示的数码管的选通控制打开,该位 就显示出字形,没有选通的数码管就不会亮。 3. 通过分时轮流控制各个数码管的的COM端,就使各个数码管 轮流受控显示,这就是动态驱动。
•
MCS51的拉电流能力<100uA,灌电流能力10mA 使用MCS51的IO直接驱动LED、数码管等均采用“共阳”接法 拉电流能力: 能够从IO口流出的最大电流 • 灌电流能力: 能够流入IO口的最大电流
共阴接法
共阳接法
MCS51的IO口输入状态时有弱上拉电阻效应,值为100k数量级 最大输入电压范围:-0.5V~Vcc+0.5V 是否有上拉电阻 能够承受的最大输入电压范围
任务2
显示(动态)设计
1.1 LED数码管动态显示驱动方式
关于视觉暂缓效应: 在轮流显示过程中,每位数码管的点亮时间为1~2ms, 由于人的视觉暂留现象及发光二极管的余辉效应,尽管 实际上各位数码管并非同时点亮,但只要扫描的速度足 够快,给人的印象就是一组稳定的显示数据,不会有闪 烁感,动态显示的效果和静态显示是一样的,但动态显 示更能够节省大量的I/O端口,而且功耗更低。
将需要的字形对应的各个段点亮, 即可显示对应的数字。一般将数 字对应的段列表做成数组的形式, 称为段码表。
任务1
从0到9的加1计数显示(静态)设计
(1)按段数可以分为七段数码管和八段数码管,八段数 码管比七段数码管多一个发光二极管单元(多一个小数点 显示); (2)按能显示多少个“8 可以分为1位、2位、4位、8位 数码管; (3)按发光二极管单元连接方式划分可分为共阳极/共阴 极数码管。共阳极数码管是指将所有发光二极管的阳极接 到一起形成公共阳极(COM)的数码管。当某一字段发光二 极管的阴极为低电平时,相应字段就点亮。共阴极数码管 是指将所有发光二极管的阴极接到一起形成公共阴极(COM) 的数码管。当某一字段发光二极管的阳极为高电平时,相 应字段就点亮。如图6.4。
任务1 分析任务 1.硬件电路设计
从0到9的加1计数显示(静态)设计
任务1
从0到9的加1计数显示(静态)设计
• 电路组成:这里选择具有内部程序存储器的AT89S51单片机作 为控制电路,P2口接1个1位共阳数码管,其中P2.0到P2.6分 别连接数码管的a~f引脚,P2.7连接小数点h端。硬件电路原 理图如上图所示。
//单只数码管循环显示0 #include<reg52.h> #include<intrins.h>
9
#define uchar unsigned char
#define uint unsigned int Uchar code DSY_code[ ]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
• 电路分析:要使LED数码管依次显示数字,则P2口对应输出七 段数码管数字显示对应的编码即可。由于流过LED的电流通常 较小,为了在仿真实验中让数字显示的更亮一些,所以一般 还要在回路中接入合适的限流电阻。一般情况下,根据驱动 LED的电流电压计算,在这里取限流电阻为150Ω。当P2.x输 出为低电平时,对应的LED亮,输出高电平时,对应的LED不 亮。
《单片机C语言应用技术与实践》
讲课稿
主讲人: 计算机科学与技术系 陈爱文
YangZhou Vocational college of environment and resources
项目6
★ 知识目标:
简易数字电子时钟设计
1.了解 7段LED数码管的结构及其工作原理; 2. 掌握单片机对数码管的静态、动态显示控制方式; 3. 应用单片机进行计数控制的原理。
★ 能力目标:
1. 能根据设计任务要求编制不同进制计数器的程序流程图,理解 程序对数字电子时钟的控制原理;
2. 会利用电路仿真软件绘制简易数字电子时钟的电路原理图;
3. 会用keil C51软件对源程序进行编译调试及与protues软件联 调,实现电路仿真。
任务1
从0到9的加1计数显示(静态)设计
显示数字“4” 显示数字“5” 显示数字“6” 显示数字“7” 显示数字“8” 显示数字“9”
输出电平
1 1 1 1 1
1
0
0
0
0
0
0
任务1 分析任务 2. 软件设计思路
从0到9的加1计数显示(静态)设计
根据前面分析,实现任务的思路 是: (1)程序开始时,给数组元素 的变量赋初始值0,并将数组中 第1个元素送P2端口; (2)延时0.5s后,将变量i加1, 并判断是否已读取到第10个元素; (3)如果已经读取完,则对变 量i重新赋值0,如果没有,则继 续读取数组中第i个元素送到P2 端口,依次循环。