简易时钟翟兵兵Word格式.docx
《简易时钟翟兵兵Word格式.docx》由会员分享,可在线阅读,更多相关《简易时钟翟兵兵Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
、硬件电路设计……………………………………………2
二>
、软件程序设计……………………………………………2
1、程序流程图……………………………………………2
2、源程序………………………………………………3
任务二:
LED数码管的动态控制显示方式
一、任务目标……………………………………………………3
二、任务分析……………………………………………………3
三、任务实施……………………………………………………4
、硬件电路设计……………………………………………4
、软件程序设计……………………………………………5
1、程序流程图…………………………………………5
2、源程序………………………………………………5
任务三:
从0到9的加1计数显示
一、任务目标……………………………………………………6
二、任务分析……………………………………………………6
三、任务实施……………………………………………………6
、硬件电路设计…………………………………………6
、软件程序设计…………………………………………7
1、程序流程图………………………………………7
2、源程序……………………………………………7
任务四:
一位数字有规律的显示
一、任务目标…………………………………………………7
二、任务分析…………………………………………………8
三、任务实施…………………………………………………8
、硬件电路设计………………………………………8
、软件程序设计………………………………………8
1、程序流程图………………………………………8
2、源程序…………………………………………9
任务五:
从0到99加法计数器
一、任务目标………………………………………………9
二、任务分析……………………………………………10
三、任务实施………………………………………………10
、硬件电路设计……………………………………10
、软件程序设计……………………………………11
1、程序流程图……………………………………11
2、源程序………………………………………11
任务六:
从0到99999999加法计数器
一、任务目标……………………………………………12
二、任务分析……………………………………………12
三、任务实施……………………………………………12
、硬件电路设计……………………………………12
、软件程序设计……………………………………13
1、程序流程图…………………………………13
2、源程序………………………………………13
任务七:
24进制计数器
一、任务目标……………………………………………14
二、任务分析……………………………………………14
三、任务实施……………………………………………14
、硬件电路设计…………………………………14
、软件程序设计…………………………………15
1、源程序……………………………………15
任务八:
简易数字钟
一、任务目标……………………………………………16
二、任务分析……………………………………………16
三、任务实施……………………………………………16
、硬件电路设计…………………………………16
、软件程序设计…………………………………17
1、程序流程图…………………………………17
2、源程序……………………………………18
LED数码管的静态控制显示方式
1、任务目标
将单片机与数码管接成正确的静态显示方式的电路,并编程实现数码管的数字显示。
所谓的静态电路显示,就是当单片机某一端口输出一组数据显示之后,该端口一直保持该数据输出,维持数码管的显示数字,直到端口数据改变,又保持显示下一数据的显示方式。
在具体电路连接上,将单片机一个端口的8个端子接在一只数码管的8个引脚上,控制数码管的7段LED的亮灭,显示出数字。
静态显示电路连接特点是单片机端口的每一位与数码管的一个端相连接,相当于单片机的一个引脚外接一只发光二极管。
LED静态显示的控制电路:
AT89C51的P2口P2.0~P2.7直接与LED数码管的a~h引脚相连,由于流过LED的电流通常较小,一般均需在回路电路中接上合适的限流电流电阻(通常为150欧姆)。
数码管为共阴数码管,端口输出高电平的位,对应的LED亮,输出低电平的位,对应的LED不亮。
二、任务分析
要实现单片机对LED数码管的控制,首先要了解LED数码管。
数码管是利用LED组合排列成“8”字形的7段(或8段)数码显示器件,如图示。
数码管的每段LED分别引出一个电极,电极名为a、b、c、d、e、f、g、h,其中h是小数点段的引出电极。
通过点亮相应的LED笔画来显示出0~9的数字和小数点。
根据LED的连接不通,LED数码管分为共阴极和共阳极两类,以共阴极为例,若阴极接地,在相应段的阳极端头接头上高电平,该LED即会发光。
假如将b和c段接上高电平,其他端接地或悬空,那么b和c段发光,此时,数码光将显示数字1。
而将a、b、c、d、e、f和g段都接上高电平,其他引脚悬空,此时数码管将显示2。
此时共阳数码管在对应电极上加低电平,该LED亮。
LED数码管是由8只发光二级管组成,数字显示就如彩灯组成的图案。
因此,完全可以采用彩灯花样显示程序来完成数据的显示控制,将程序中的显示彩灯花样数组更换为LED数码显示数字所需要的数据,当数码管与单片机端口相连接,程序将这些数据送到端口,数码管就显示数字。
先设计一个在数码管上依次显示出0~9的数字的程序。
要实现0~9的显示,设计方法与前面的彩灯花样显示类似,首先写出0~9的显示数据,这些数据在程序中作数组元素。
程序中将数组数据依次读出送到端口,使数码管显示出对应的数字。
三、任务实施
、硬件电路设计
、软件程序设计
2、程序流程图
2、源程序如下:
#include”reg51.h”
#defineucharunsignedchar
uchardispcode[10]={
0x3F,
0x06,
0x5B,
0x4F,
0x66,
0x6D,
0x7D,
0x07,
0x7F,
0x6F,
};
voiddelay05s(void)
{
unsignedcharI,j,k;
for(i=5;
i>
0;
i--)
for(j=250;
j>
j--)
for(k=250;
k>
k--);
}
voidmain(void)
{
ucharI;
while
(1)
for(i=0;
i<
10;
i++)
P2=dispcode[i];
delay05s();
}
LED数码管的动态控制显示方式
一、任务目标
当单片机与数码管接成动态显示方式时,编程实现数码管的数字显示。
在静态显示中,数码管的每个LED需要占用单片机的一条端口线实现显示控制,而单片机端口的引脚有限,在数码管较多时,就不能采用一个端口接一个数码管的静态显示方式,常采用动态显示控制方式进行电路连接。
所谓动态显示,就是在显示时,单片机控制电路连续不断刷新输出显示数据,使各数码管轮流点亮,这就是动态显示。
由于人眼的视觉暂留性,使人眼观察到数码管显示的是稳定数字。
动态显示的电路有很多,本课题中所选用的电路如图3-5所示,使用了两只四位数码管。
每只已将所有数码管的a~h分别连接在一起,再将两只四位数码管的ah连接在一起,即将8只数码管8段显示的断码控制线连接在一起,作为整个数码管的断码控制。
单片机端口驱动能力不足,在断码上使用上拉电阻提高数码管亮度。
对每只数码管的公共端进行控制,使每只数码管可以单独显示。
由于数码管的电流较大,采用三极管电流驱动。
电路中,将位码控制信号接在晶体三极管的基极,集电极接数码管,驱动数码管工作,实现数码管的位控制。
在电路连接上将所有要显示的数码管的8端并接在单片机的同一个端口的8位上,而用单片机的另一个端口的各个位分别控制各数码管的公共端,控制数码管是否点亮.在程序控制下,依次快速输出要显示的各个数,并同时控制对应数码管工作,这就是数码管的动态显示方式.
动态显示达到一定速度时,由于人眼的视觉暂留特性,在观察时,数码管显示内容同静态显示一样,不会产生闪烁.因此,对动态扫描有一定的要求,频率太低LED数码管将出现闪烁现象;
频率太高,由于每个LED数码管点亮的时间太短,LED数码管的亮度太低无法看清。
所以显示时间一般取几个毫秒左右为宜。
在编写程序时,常采用调用延时子程序来达到要求的保持时间。
程序工作时,使电路选用某一位数码管后,该数码管被点亮后并保持一定的时间。
下面以数码管上从左到右依次显示出8个数字为例,编写动态显示程序。
程序中将要显示的8个数字放在一个数据组中。
如果从段码输出端口来看,动态显示的显示段码输出的过程,其实质和静态显示8个数字是一样的,依次输出个个段码;
从位段码看,动态显示,就是那只数码管对应位输出1,显示一个数据后,则下一位输出高电平,这与跑马灯的控制是一样的。
将这两个程序结合起来,这就是动态显示程序,并能准确地表示出程序框图。
外部电路设计图如下:
、软件程序设计
1、程序流程图
#include"
reg51.h"
uchardisplay_code[]={0x3F,0x06,ox5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0X7C,0X39,0X5E,0X79,0X71};
uchardisplay_date[8]={1,2,3,4,5,6,7,8};
voiddelay(void)
uchari;
for(i=250;
j--);
voiddisplay()
uchark;
k=0x08;
8;
P2=0;
P0=display_code[display_date[i]];
P2=k;
k=k>
>
1;
delay();
}
display();
从0到9的加1计数显示
实现一位数的加1技术显示显示。
从0开始,依次加1,一直到显示到9。
作为1位数据显示,一般来说是用静态显示,直接将数码管的隔断引脚直接接到单片机的某一端口,也可采用锁存器存储驱动的电路。
在将数码管段