1 / 12
文档名称:

数字时钟课程设计论文.doc

格式:doc   大小:236KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数字时钟课程设计论文.doc

上传人:lanyou1106 2018/1/12 文件大小:236 KB

下载得到文件列表

数字时钟课程设计论文.doc

相关文档

文档介绍

文档介绍:一、数字时钟的基本原理
数字时钟是用数字集成电路组成,用数码管显示的一种现代化计数器。数字时钟实际上是一个对标准频率(1Hz)进行计数的计数电路。振荡器产生的时钟信号经过分频器形成秒脉冲信号,秒脉冲信号输入计数器进行计数,并把累计结果“时”、“分”、“秒”的数字显示出来。秒计数器电路计满60后触发分计数器电路,分计数器电路计满60后触发时计数器电路,当计满24小时后又开始下一轮的循环计数。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需在电路上加一个校时电路可以对分和时进行校时。
二、数字时钟的硬件设计
1、数字时钟的电路原理图
2、原器件清单
序号
器件名称
参数
数量
1
USB座

1
2
USB线

1
3
双排针(2)

1
4
跳帽

3
5
电容

7
6
LED灯

1
7
电阻
2K
1
8
40针座

1
9
STC89C51

1
10
晶振
12MHZ
1
11
电容
20pF
2
12
复位键

1
13
电阻
10K
1
14
蜂鸣器

1
15
三极管9015

9
16
电阻
330
9
17
16针座

1
18
MAX232

1
19
单排针(5)

1
20
按键

4
21
单排针(3)

1
22
4位LED

2
23
电阻

8
三、数字时钟的软件设计
1、程序流程图
开始

清显示缓冲区

初始化定时计数器

赋时钟初值
开定时器
调整时间
数码管显示当前时钟值
2、源程序
#include <>
//定义按键端口
sbit key_1=P3^0;//用于小时增加
sbit key_2=P3^1;//用于分钟增加
sbit key_3=P3^2;//用于分钟减少
sbit key_4=P3^3;//用于秒钟增加
//定义所需变量
unsigned char shi=12,fen=00, miao=00;//定义十分秒并初始化为12:00:00
code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90};//定义共阳极数码管编码表
unsigned char sbuff[8];//定义数据缓冲数组
void init() //定义初始化函数对定时器0和定时器1进行初始化
{
TMOD=0x11; //定时器0和1均为模式1
ET0=1;//开定时器0中断
ET1=1;//开定时器1中断
TH0=0xd8;
TL0=0xf0; //定时10ms
TH1=0xfc;
TL1=0x18;//
TR1=1;//T1开始计时
TR0=1;//T0开始计时
EA=1;//开总中断
}
//显示数值写入缓冲区函数
void displayset()
{
sbuff[7]=tab[(shi/10)];//显示小时的十位
sbuff[6]=tab[(shi%10)];//显示小时的个位
sbuff[5]=0xbf;// 显示'-'号
sbuff[4]=tab[(fen/10)];//显示分钟十位
sbuff[3]=tab[(fen%10)];//显示分钟个位
sbuff[2]=0xbf;//显示'-'号
sbuff[1]=tab[(miao/10)];//显示秒钟十位
sbuff[0]=tab[(miao%10)];//显示秒钟个位
}
//延时子函数
void delay(unsigned char z)
{ while(z--)
{unsigned char j;
for(j=0;j<123;j++);
}
}
void key_scan()
{
if(!key_1) //按键1去抖以及动作
{
delay(100);
if(!key_1)
{
shi++;
if(shi==24)
shi=0; //正常时间小时加1
displayset();
}
}
if(!key_2) //按键2去抖以及动作
{
delay(100);
if(!key_2)
{
fen++;
if(fen==60)
fen=0; //分增加1
displayset();
}
}
if(