电子时钟的设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

专业综合设计报告项目名称:电子钟的设计

学生姓名:xx

专业名称:测控技术与仪器

班级:xx

指导教师:xx

项目起止日期:2012年10月25日至2012年10月31日

项目1:电子钟的设计

一、任务要求

设计一个电子钟,要求如下:

(1) 利用单片机最小系统设计一个电子钟(不能采用单片机开发系

统)

(2) 使用按键修改时间

(3) 显示方式:** 时** 分** 秒

(4) 时间可以任意修改

二、总体设计方案

设计一个电子产品,首先了解它能实现的功能,时钟系统最基本的功能就是实现计时,在这里设计的数字电子时钟,它能实现计时和校时的功能,给电子钟加上电自动计时,设计三个按键对时间进行调整。

硬件设计很简单,主要包括:单片机、按键电路、驱动显示电路,以及LED 显示器四个部分。单片机选用AT89C51芯片,它无须外扩程序存储器,设计电路很简单。由于只用了三个按键,所以采用独立式按键使设计更简单。显示时、分、秒加两个分隔符,采用两个共阴极数码管及键盘达到时间显示和修改的功能。

简易数字时钟可实现校时和整点报时功能,该软件采用C 语言来实现,主要包括主程序、键输入程序、显示程序、定时程序和中断程序等软件模块。把原程序加入原理图,做出电子钟的仿真,以秒计数并显示时、分、秒。其中秒和分为60进制,小时为24进制计数。

四、系统组成

电子钟的电路图主要由单片机(AT89C51)、键盘电路、驱动显示电路和LED 显示器四部分组成,它主要实现时钟的显示,以及对时、分、秒进行调整,即实现调时的功能。其数字钟系统整体结构如图2-1所示。 单 片 机 显示器 键盘

图2-1 电子钟系统整体结

Isis 仿真图设计如下

:

编程如下:

#include

#define uint unsigned int

#define uchar unsigned char

uchar led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0X40};

uchar we[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

uint a=0,miao=1,fen=1,shi=1,flag=0,s=0,sum=0;

bit flag1=1,flag2=1,flag3=1;

sbit k1=P1^0;

sbit k2=P1^1; AT89C51 驱动 LED 显示器 位选

按 键

sbit k3=P1^2;

void delay(uint i)

{

uint j,k;

for(j=0;j

for(k=0;k<120;k++);

}

void kai()

{

TMOD=0X11;

TH0=0X3C;

TL0=0XB0;

TH1=0X3C;

TL1=0XB0;

EA=1;

ET0=1;

TR0=1;

ET1=1;

TR1=1;

}

void zd()interrupt 1

{

TH0=0X3C;

TL0=0XB0;

a++ ;

if(a>=15){miao++;a=0;}

if(miao>=60){fen++;miao=0;}

if(fen>=60){shi++;fen=0;}

if(shi>=24){shi=0;}

}

void zde()interrupt 3

{

TH1=0X3C;

TL1=0XB0;

if(s<=2)s++ ;

else {s=0;

if(flag==1){flag1=~flag1;}

if(flag==2){flag2=~flag2;}

if(flag==3){flag3=~flag3;}

}

}

void xian()

{if(flag1)

{P2=we[0];

delay(2);

P2=0xff;

delay(2);

P2=we[1];

P0=led[miao/10]; delay(2);

P2=0xff;

delay(2);}

P2=we[2];

P0=led[10]; delay(2);

P2=0xff;

delay(2);

if(flag2){

P2=we[3];

P0=led[fen%10]; delay(2);

P2=0xff;

delay(2);

P2=we[4];

P0=led[fen/10]; delay(2);

P2=0xff;

delay(2);}

P2=we[5];

P0=led[10]; delay(2);

P2=0xff;

delay(2);

if(flag3){

P2=we[6];

P0=led[shi%10]; delay(2);

P2=0xff;

delay(2);

P2=we[7];

delay(2);

P2=0xff;

delay(2); }

}

void main()

{kai();

while(1)

{

xian();

if (k1==0){while(k1==0)xian();sum++;

switch(sum%4)

{

case 1:flag=1;TR0=0;xian();break;

case 2:flag=2;TR0=0;flag1=1;xian();break;

case 3:flag=3;TR0=0;flag2=1;xian();break;

case 0:flag=0;TR0=1;flag3=1;xian();break;

}

}

if(flag==1)

{

if(!k2){while(!k2)xian();miao++;if(miao>=59)miao=0;xian();} if(!k3){while(!k3)xian();miao--;if(miao<=0)miao=59;xian();} }

if(flag==2)

{

if(!k2){while(!k2)xian();fen++;if(fen>=59)fen=0;xian();}

if(!k3){while(!k3)xian();fen--;if(fen<=0)fen=59;xian();}

}

if(flag==3)

{

if(!k2){while(!k2)xian();shi++;if(shi>=23)shi=0;xian();}

if(!k3){while(!k3)xian();shi--;if(shi<=0)shi=23;xian();}

}

}

}

相关文档
最新文档