当前位置:文档之家› 基于单片机的电子闹钟设计

基于单片机的电子闹钟设计

基于单片机的电子闹钟设计
基于单片机的电子闹钟设计

基于单片机的电子闹钟设计

————————————————————————————————作者:————————————————————————————————日期:

基于单片机的电子闹钟设计

摘要

本设计以AT89C51芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟,它由5V直流电源供电。

关键词:单片机;led;闹钟;定时器

Abstract

This design, adopting AT89C51 chip as the core part with some necessary peripheral circuits, is a simple electronic clock which uses 5V DC as the power supply. Keywords:single chip machine ,in fixed time machine, alarm clock,LED

1 引言

1.1设计目的

此次课程设计是在学习先修课程《单片机原理与系统设计》之后,为加强对学生系统设计和应用能力的培养而开设的综合设计训练环节。本课程设计应结合《单片机原理与系统设计》课程的基础理论,重点强调实际应用技能训练,包括单片机系统设计的软件和硬件两部分。其课程设计任务是使学生通过应用单片机系统设计的基本理论,基本知识与基本技能,掌握单片机应用系统各主要环节的设计、调试方法,初步掌握并具备应用单片机进行设备技术改造和产品开发的能力,培养学生的创新意识,提高学生的动手能力和分析问题、解决问题的能力。

1.2设计要求

结合单片机知识,以AT89C51单片机为核心,利用七段LED数码管实现计时、校时及闹钟功能。

1.3设计方法

以AT89C51单片机为核心,外加晶振电路,使用8个七段数码管显示,LED 采用动态扫描,用74ls245芯片作为驱动电路。通过四个独立按键对时间进行定时、校时,从而实现闹钟提醒功能。

2 设计方案及原理

2.1设计方案

选AT89C51单片机作为系统核心,辅助外部产生时钟信号的晶振电路,再加上四个独立按键作为输入信号,使用8个七段数码管显示时间,芯片74ls245为数码管段选线的驱动,最后用蜂鸣器实现闹铃功能。使用单片机的定时器T0计时时间为50ms,计时20次作为1s的时间基准。第一部分,12MHz的晶振连接至单片机的时钟信号输入端;第二部分,四个独立按键加上四个上拉电阻连接至单片机

的P1口的低四位;第三部分,单片机的P0口通过由芯片74ls245构成的驱动电路连接至数码管的段选线,单片机的P3口连接至数码管的位选线;第四部分,单片机的P2.1通过一个NPN 型三极管连接至蜂鸣器。8个七段数码管使用动态扫描显示时间,独立按键用软件编程实现对时间和闹钟时、分、秒的设置,再通过比较所设置的闹钟与时间是否相等,达到闹铃发出声响的效果。

2.2设计原理

系统原理图如图2.1所示。

图2.1 系统原理图

3 硬件设计

硬件电路分四个模块:晶振电路、键盘电路、数码管显示电路、蜂鸣器驱动电路。晶振电路使用12MHz 晶体振荡器,经分频后供单片机工作。键盘采用4个独立按键配以4个上拉电阻实现对时钟和闹钟的设定及修改。由于通过数码管公共及的电流较大且避免过多地使用分立元件,采用了一片74ls245来驱动段码,用P3口作位码驱动。发音部分是通过三极管放大驱动蜂鸣器工作,再通过软件这时产生等时时间方波驱动蜂鸣器发出间断嘀声,这样就可以省去硬件振荡电路,降低成本。

系统硬件电路图如图3.1所示。

AT89C51

晶按

段码位码 蜂

8位数

图3.1 系统硬件图

4 软件设计

源程序清单见附录。主程序流程图如图4.1所示。

开始

初始化设置

闹铃判断

显示时间

键盘扫描

图4.1 主程序流程图

5 系统仿真及调试

硬件部分设置了的三个按键K1、K2、K3、K4。当按键K1第一次按下时,停止计时进入闹钟1的秒设置,当按键K1第二、第三次按下时,分别进入闹钟1的分设置和时设置,当按K1第四、第五、第六次按下时分别进入闹钟2的秒、分、时设置,当按K1第七、第八、第九次按下时分别进入闹钟3的秒、分、时设置,当按K1第十、第二一、第十二次按下时分别进入时间的秒、分、时设置,在K1按下的各阶段,可用按键K2、K3进行时间和闹铃时间的时、分、秒进行加减设置;当按键K1第十三次按下时恢复到时间显示功能。当显示的时间和定时设置的时间一致时,蜂鸣器发出等时间断蜂鸣声,闹铃时间设置为60秒。在各个闹钟设置阶段,如果有K4按下,则相应闹钟功能关闭或开启;如在闹铃时有K4按下则提前停止闹铃。系统仿真图如图5.1所示。

图5.1 系统仿真图

6 总结

通过两周的努力,完成了电子闹钟的设计目的,实现了时间的显示、校时、设置闹钟、闹铃等功能。这期间,我复习了单片机的相关知识,并结合查阅相关资料,设计了整体电路以及各模块的电路,对照硬件电路编写对应模块的子程序,最后将各个子程序整合到一个主程序中,完成了设计所需功能。

在设计中,我发现选择合适的元器件很重要,比如数码管有共阳极和共阴极

两种,不同的选择会导致程序的不同,经过多次调试最终选择了共阳极数码管。另外,我觉得软件的设计比硬件设计更重要,而且难度更大。比如写一个程序看其功能很少认为编写程序简单,但到编程的时候才发现一些细微的知识或低级错误经常犯做不到最后常常失败,所以有些东西只有学精弄懂并且要细心才行,只学习理论有些东西是很难理解的,更谈不上掌握。我在这次设计中收获颇多。我对所学的理论知识在实践中加深了认识,同时更加熟练掌握了Proteus、Keil等软件的使用。做任何事都需要耐心和细心,一点小的疏忽和懈怠可能导致整个设计失败。还有一点,自己的设计思路不可能凭空产生,只有借鉴别人已有的设计并充分消化吸收成为自己的东西,才能做出更好的设计作品。

参考文献

[1] 王思明.单片机原理及应用系统设计[M].北京:科学出版社,2012.

[2] 陈明荧. 89C51单片机课程设计实训教材[M].北京:清华大学出版社,2003.

[3] 刘瑞新.单片机原理及应用教程[M].北京:机械工业出版社,2005.

[4] 杨文龙.单片机原理及应用[M].西安:西安电子科技大学出版社,2002.

附录

源程序清单:

//****************************头文件********************************

#include

#include

//****************************宏定义********************************

#define uchar unsigned char

#define uint unsigned int

//****************************位声明******************************** sbit key1=P1^0;

sbit key2=P1^1;

sbit key3=P1^2;

sbit key4=P1^3;

sbit fmq=P2^1;

//************************数码管显示的数值************************** uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,

// 0 1 2 3 4 5

0x82,0xf8,0x80,0x90,0xbf,0x0ff};

// 6 7 8 9 - 灭

void jia(); //定义时间加函数

void jian(); //定义时间减函数

//********************数组定义,数组内含有8个数值****************** uchar table1[8],table2[8],table3[8],table4[8];

//**************************时间显示初始值************************** uchar shi=12,fen=0,miao=0;

//**************************定义全局变量**************************** uchar shi1,fen1,miao1,shi2,fen2,miao2,shi3,fen3,miao3;

uchar shi4,fen4,miao4;

uchar flag, flag1, wss, cnt, cnt1, alm1, alm2, alm3;

// 1秒等时位闪次数校时闹1 闹2 闹3

uint flag2;

// 蜂鸣

//*********************延时函数,用于动态扫描数码管***************** void delay(uchar i)

{ uchar x,y;

for(x=i;x>0;x--)

for(y=120;y>0;y--);

}

//*******************************初始化函数************************* void init()

{ TMOD=0x01; //工作方式1

TH0=0x3c; //定时时间为:50ms (65536-50000)/256

TL0=0x0b0; //(65536-50000)%256

ET0=1; //打开定时器

EA=1; //开总中断

TR0=1; //启动定时器

}

//********************显示子函数,用于显示时间数值***************** void display()

{ uchar i,j;

if(cnt!=10||wss==0)

{ table1[0]=miao%10; //分离秒的个位与十位

table1[1]=miao/10;

}

else

{ table1[0]=table1[1]=11;}

if(cnt!=11||wss==0)

{ table1[3]=fen%10; //分离分的个位与十位

table1[4]=fen/10;

}

else

{ table1[3]=table1[4]=11;}

if(cnt!=12||wss==0)

{ table1[6]=shi%10; //分离时的个位与十位

table1[7]=shi/10;

}

else

{ table1[6]=table1[7]=11;}

table1[2]=table1[5]=10;

j=0x7f;

for(i=0;i<=7;i++) //从秒到时的扫描

{ P3=j; //选通点亮八个数码管

P0=table[table1[i]]; //显示数值

delay(10); //调用延时程序

j=_cror_(j,1); //循环右移

}

}

//*******************显示子函数,用于显示定时1时间***************** void display1()

{ uchar i,j;

if(alm1==0)

{ if(cnt!=1||wss==0)

{ table2[0]=miao1%10; //分离秒的个位与十位

table2[1]=miao1/10;

}

else

{ table2[0]=table2[1]=11;}

if(cnt!=2||wss==0)

{ table2[3]=fen1%10; //分离分的个位与十位

table2[4]=fen1/10;

}

else

{ table2[3]=table2[4]=11;}

if(cnt!=3||wss==0)

{ table2[6]=shi1%10; //分离时的个位与十位

table2[7]=shi1/10;

}

else

{ table2[6]=table2[7]=11;}

}

else

table2[0]=table2[1]=table2[3]=table2[4]=table2[6]=table2[7]=10;

table2[2]= table2[5]=10;

j=0x7f;

for(i=0;i<=7;i++) //从秒到时的扫描

{ P3=j; //选通点亮八个数码管

P0=table[table2[i]]; //显示数值

delay(10); //调用延时程序

j=_cror_(j,1); //循环右移

}

}

//********************显示子函数,用于显示定时2时间****************** void display2()

{ uchar i,j;

if(alm2==0)

{ if(cnt!=4||wss==0)

{ table3[0]=miao2%10; //分离秒的个位与十位

table3[1]=miao2/10;

}

else

{ table3[0]=table3[1]=11;}

if(cnt!=5||wss==0)

{ table3[3]=fen2%10; //分离分的个位与十位

table3[4]=fen2/10;

}

else

{ table3[3]=table3[4]=11;}

if(cnt!=6||wss==0)

{ table3[6]=shi2%10; //分离时的个位与十位

table3[7]=shi2/10;

}

else

{ table3[6]=table3[7]=11;}

}

else

table3[0]=table3[1]=table3[3]=table3[4]=table3[6]=table3[7]=10;

table3[2]= table3[5]=10;

j=0x7f;

for(i=0;i<=7;i++) //从秒到时的扫描

{ P3=j; //选通点亮八个数码管

P0=table[table3[i]]; /显示数值

delay(10); //调用延时程序

j=_cror_(j,1); //循环右移

}

}

//***************显示子函数,用于显示定时3时间数值****************// void display3()

{ uchar i,j;

if(alm3==0)

{ if(cnt!=7||wss==0)

{ table4[0]=miao3%10; //分离秒的个位与十位

table4[1]=miao3/10;

}

else

{ table4[0]=table4[1]=11;}

if(cnt!=8||wss==0)

{ table4[3]=fen3%10; //分离分的个位与十位

table4[4]=fen3/10;

}

else

{ table4[3]=table4[4]=11;}

if(cnt!=9||wss==0)

{ table4[6]=shi3%10; //分离时的个位与十位

table4[7]=shi3/10;

}

else

{ table4[6]=table4[7]=11;}

}

else

table4[0]=table4[1]=table4[3]=table4[4]=table4[6]=table4[7]=10;

table4[2]= table4[5]=10;

j=0x7f;

for(i=0;i<=7;i++) //从秒到时的扫描

{ P3=j; //选通点亮八个数码管

P0=table[table4[i]]; //显示数值

delay(10); //调用延时程序

j=_cror_(j,1); //循环右移

}

}

//***********************时间子函数*****************************// void shijian()

{ if(flag>=20) //判断是否到一秒

{ wss=~wss;

flag=0; //到了,则标志位清零

if(cnt1!=0)

{ miao4++; //秒加1

if( miao4>59) //判断秒是否到60s

{ miao4=0; //到了,则清零

fen4++; //分加1

if(fen4>59) //判断分是否到1min

{ fen4=0; //到了,则清零

shi4++; //时加1

if(shi4>23) //判断时是否到24h

shi4=0; //到了,则清零

}

}

}

else

{ miao++; //秒加1

if( miao>59) //判断秒是否到60s

{ miao=0; //到了,则清零

fen++; //分加1

if(fen>59) //判断分是否到1min

{ fen=0; // 到了,则清零

shi++; //时加1

if(shi>23) // 判断时是否到24h

shi=0; //到了,则清零

}

}

}

}

}

//**************************键盘扫描子函数************************// void key_scan()

{ if(key1==0)

{ while(!key1) //防止掉显

{ if(cnt==1||cnt==2||cnt==3)

{ display1(); } //key1按了1、2、3次,调用闹钟1子程序if(cnt==4||cnt==5||cnt==6)

{ display2(); } // key1按了4、5、6次,调用闹钟2子程序if(cnt==7||cnt==8||cnt==9)

{ display3(); } // key1按了7、8、9次,调用闹钟3子程序if(cnt==0||cnt==10||cnt==11||cnt==12||cnt==13)

{ display(); } // key1按了10、11、12、13次,调用计时子程序}

cnt++; //记下按键key1按下的次数

if(cnt==10&&cnt1==0)

{ miao4=miao;

fen4=fen;

shi4=shi;

cnt1++;

}

if(cnt==13)

{ cnt=0;

if(cnt1==1)

{ miao=miao4;

fen=fen4;

shi=shi4;

}

cnt1=0;

}

}

if(key2==0) //判断key2是否按下

{ while(!key2) //防止掉显

{ if(cnt==1||cnt==2||cnt==3)

{ display1(); }

if(cnt==4||cnt==5||cnt==6)

{ display2(); }

if(cnt==7||cnt==8||cnt==9)

{ display3(); }

if(cnt==0||cnt==10||cnt==11||cnt==12||cnt==13)

{ display(); }

}

jia(); //调用加1子函数

}

if(key3==0) //判断key3是否按下

{ while(!key3) //防止掉显

{ if(cnt==1||cnt==2||cnt==3)

{ display1(); }

if(cnt==4||cnt==5||cnt==6)

{ display2(); }

if(cnt==7||cnt==8||cnt==9)

{ display3(); }

if(cnt==0||cnt==10||cnt==11||cnt==12||cnt==13)

{ display(); }

}

jian(); //调用减1子函数

}

if(key4==0) //判断key4是否按下

{while(!key4) //防止掉显

{ if(cnt==1||cnt==2||cnt==3)

{ alm1=~alm1;

display1();

}

if(cnt==4||cnt==5||cnt==6)

{ alm2=~alm2;

display2();

}

if(cnt==7||cnt==8||cnt==9)

{ alm3=~alm3;

display3();

}

if(cnt==0||cnt==10||cnt==11||cnt==12||cnt==13)

display();

}

}

}

//****************************加1子函数*************************** void jia()

{ if(cnt==1) //判断key1按下的次数是否为1

{ miao1++; //是,则秒加1

if(miao1>59) //判断秒是否大于60,是,则秒清零

miao1=0;

}

if(cnt==2) //判断key1按下的次数是否为2 { fen1++; //是,则分加1

if(fen1>59) //判断分是否大于60

fen1=0; //是,则分清零

}

if(cnt==3) //判断key1按下的次数是否为3 { shi1++; //是,则时加1

if(shi1>23) //判断时是否大于23

shi1=0; //是,则时清零

}

if(cnt==4) //判断key1按下的次数是否为4 { miao2++; //是,则秒加1

if(miao2>59) //判断秒是否大于60,是,则秒清零miao2=0;

}

if(cnt==5) //判断key1按下的次数是否为5 { fen2++; //是,则分加1

if(fen2>59) //判断分是否大于60

fen2=0; //是,则分清零

}

if(cnt==6) //判断key1按下的次数是否为6 { shi2++; //是,则时加1

if(shi2>23) //判断时是否大于23

shi2=0; //是,则时清零

}

if(cnt==7) //判断key1按下的次数是否为7 { miao3++; //是,则秒加1

if(miao3>59) //判断秒是否大于60,是,则秒清零miao3=0;

}

if(cnt==8) //判断key1按下的次数是否为8 { fen3++; //是,则分加1

if(fen3>59) //判断分是否大于60

fen3=0; //是,则分清零

}

if(cnt==9) //判断key1按下的次数是否为9 { shi3++; //是,则时加1

if(shi3>23) //判断时是否大于23

shi3=0; //是,则时清零

}

if(cnt==10) //判断key1按下的次数是否为10 { miao++; //是,则秒加1

if(miao>59) //判断秒是否大于60,是,则秒清零miao=0;

cnt1++;

}

if(cnt==11) //判断key1按下的次数是否为11

{ fen++; //是,则分加1

if(fen>59) //判断分是否大于60

fen=0; //是,则分清零

cnt1++;

}

if(cnt==12) //判断key1按下的次数是否为12

{ shi++; //是,则时加1

if(shi>23) //判断时是否大于23

shi=0; //是,则时清零

cnt1++;

}

}

//***************************减1子函数**************************// void jian()

{ if(cnt==1) //判断key1按下的次数是否为1,是则秒减1 { miao1--;

if(miao1==255) //判断秒是否减到255,是,则秒置59

miao1=59;

}

if(cnt==2) //判断key1按下的次数是否为2,是则分减1

{ fen1--;

if(fen1==255) //判断分是否减到255,是,则分置59

fen1=59;

}

if(cnt==3) //判断key1按下的次数是否为3,是则时减1

{ shi1--;

if(shi1==255) //判断时是否减到255,是,则时置23

shi1=23;

}

if(cnt==4) //判断key1按下的次数是否为4,是则秒减1

{ miao2--;

if(miao2==255) //判断秒是否减到255,是,则秒置59

miao2=59;

}

if(cnt==5) //判断key1按下的次数是否为5,是则分减1

{ fen2--;

if(fen2==255) //判断分是否减到255,是,则分置59

fen2=59;

}

if(cnt==6) //判断key1按下的次数是否为6,是则时减1

{ shi2--;

if(shi2==255) //判断时是否减到255,是,则时置23

shi2=23;

}

if(cnt==7) //判断key1按下的次数是否为7,是则秒减1

{ miao3--;

if(miao3==255) //判断秒是否减到255,是,则秒置59

miao3=59;

}

if(cnt==8) //判断key1按下的次数是否为8,是则分减1

{ fen3--;

if(fen3==255) //判断分是否减到255,是,则分置59

fen3=59;

}

if(cnt==9) //判断key1按下的次数是否为9,是则时减1

{ shi3--;

if(shi3==255) //判断时是否减到255,是,则时置23

shi3=23;

}

if(cnt==10) //判断key1按下的次数是否为10,是则秒减1

{ miao--;

if(miao==255) //判断秒是否减到255,是,则秒置59

miao=59;

cnt1++;

}

if(cnt==11) //判断key1按下的次数是否为11,是则分减1

{ fen--;

if(fen==255) //判断分是否减到255,是,则分置59

fen=59;

cnt1++;

}

if(cnt==12) //判断key1按下的次数是否为12,是则时减1

{ shi--;

if(shi==255) //判断时是否减到255,是,则时置23

shi=23;

cnt1++;

}

}

//***************************闹铃子函数***************************// void clock()

//判断秒的数值是否相等

{ if(miao==miao1&&alm1==0||miao==miao2&&alm2==0||miao==miao3&&alm3== 0)

//是,在判断分是否相等

if(fen==fen1&&alm1==0||fen==fen2&&alm2==0||fen==fen3&&alm3==0)

//是,再判断时是否相等

if(shi==shi1&&alm1==0||shi==shi2&&alm2==0||shi==shi3&&alm3==0)

{ flag2=0; //是,则标志位,flag2清零

while(!(flag2==1200)&&(cnt==0)) //判断flag2是否到1200且不

// 为调时状态{if(key4==0) //没有,则继续驱动蜂鸣器响

{while(!key4)

flag2=1200;

}

if(flag1>1) //等时方波驱动蜂鸣器

{ fmq=~fmq;

flag1=0;

}

shijian(); //调用时间子函数

display(); //调用显示子函数

}

fmq=1; //关闭蜂鸣器

}

}

//**************************主函数********************************// void main()

{ init(); //调用初始化子函数

while(1)

{ clock(); //闹钟子函数

if(cnt==1||cnt==2||cnt==3) //显示子函数

{ display1(); }

if(cnt==4||cnt==5||cnt==6)

{ display2(); }

if(cnt==7||cnt==8||cnt==9)

{ display3(); }

if(cnt==0||cnt==10||cnt==11||cnt==12||cnt==13)

{ display(); }

shijian(); //调用时间子函数

key_scan(); //调用键盘扫描子函数

}

}

//**************************定时中断******************************// void time0() interrupt 1

{ TH0=0x3c; //初值50ms (65536-50000)/256

TL0=0x0b0; // (65536-50000)%256

flag++; //标志位

flag1++;

flag2++;

}

基于单片机的电子闹钟设计

基于单片机的电子闹钟设计 摘要 本设计以AT89C51芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟,它由5V直流电源供电。 关键词:单片机;led;闹钟;定时器 Abstract This design, adopting AT89C51 chip as the core part with some necessary peripheral circuits, is a simple electronic clock which uses 5V DC as the power supply. Keywords:single chip machine ,in fixed time machine, alarm clock,LED 1 引言 1.1设计目的 此次课程设计是在学习先修课程《单片机原理与系统设计》之后,为加强对学生系统设计和应用能力的培养而开设的综合设计训练环节。本课程设计应结合《单片机原理与系统设计》课程的基础理论,重点强调实际应用技能训练,包括单片机系统设计的软件和硬件两部分。其课程设计任务是使学生通过应用单片机系统设计的基本理论,基本知识与基本技能,掌握单片机应用系统各主要环节的设计、调试方法,初步掌握并具备应用单片机进行设备技术改造和产品开发的能力,培养学生的创新意识,提高学生的动手能力和分析问题、解决问题的能力。 1.2设计要求 结合单片机知识,以AT89C51单片机为核心,利用七段LED数码管实现计时、校时及闹钟功能。 1.3设计方法 以AT89C51单片机为核心,外加晶振电路,使用8个七段数码管显示,LED 采用动态扫描,用74ls245芯片作为驱动电路。通过四个独立按键对时间进行定时、校时,从而实现闹钟提醒功能。 2 设计方案及原理 2.1设计方案 选AT89C51单片机作为系统核心,辅助外部产生时钟信号的晶振电路,再加上四个独立按键作为输入信号,使用8个七段数码管显示时间,芯片74ls245为数码管段选线的驱动,最后用蜂鸣器实现闹铃功能。使用单片机的定时器T0计时时间为50ms,计时20次作为1s的时间基准。第一部分,12MHz的晶振连接至单片机的时钟信号输入端;第二部分,四个独立按键加上四个上拉电阻连接至单片机

基于单片机的电子钟C语言程序

基于 5 1 单片机的电子钟 C 语言程序 #include #include #defineucharunsignedchar #defineuintunsignedint /* 七段共阴管显示定义*/ ucharcodedispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF}; /* 定义并初始化变量*/ ucharseconde=0; ucharminite=0; ucharhour=12; ucharmstcnt=0; sbitP1_0=PM0;//seco nd 调整定义 sbitP1_ 仁P1A1;//mi nite 调整定义 sbitP1_2=P1A2;//hour 调整定义 /* 函数声明*/ voiddelay(uintk);// 延时子程序 voiddelay1(ucharh); voidtime_pro();// 时间处理子程序 voiddisplay();// 显示子程序 voidkeyscan();// 键盘扫描子程序 /*****************************/ /* 延时子程序*/ voiddelay1(ucharh) { ucharj; while((h--)!=0) { for(j=0;j<125;j++) {;} } } voiddelay(uintk) { uinta,b,c; for(c=k;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); } /************************* /* 时间处理子程序*/ */ voidtime_pro(void) { if(seconde==60)// 秒钟设为60 进制 {seconde=0; minite++; if(minite==60)// 分钟设为60 进制 {minite=0; hour++;

单片机电子时钟的设计

单片机电子时钟的设计 ----------- 基于单片机的电子时钟 专业:运算机科学与技术 班级:专升本1班 小组成员:张琴张娜赵慧佩 学号:23 24 25

基于单片机的电子时钟设计 摘要 20世纪末,电子技术获得了飞速的进展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的进展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 现代生活的人们越来越重视起了时刻观念,能够说是时刻和金钱划上了等号。关于那些对时刻把握专门严格和准确的人或事来说,时刻的不准确会带来专门大的苦恼,因此以数码管为显示器的时钟比指针式的时钟表现出了专门大的优势。数码管显示的时刻简单明了而且读 数快、时刻准确显示到秒。而机械式的依靠于晶体震荡器,可能会导致误差。 数字钟是采纳数字电路实现对“时”、“分”、“秒”数字显示的计时装置。数字钟的精度、稳固度远远超过老式机械钟。在这次设计中,我们采纳LED数码管显示时、分、秒,以24 小时计时方式,依照数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。在此次设计中,电路具有显示时刻的其本功能,还能够实现对时刻的调整。数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受宽敞消费的喜爱,因此得到了广泛的使用。 .

目录 第一章绪论 1.1 数字电子钟的背景 (4) 1.2 数字电子钟的意义 (4) 1.3 数字电子钟的应用 (4) 第二章整体设计方案 2.1 单片机的选择 (5) 2.2 单片机的差不多结构 (7) 第三章数字钟的硬件设计 3.1 最小系统设计 (11) 3.2 LED显示电路 (14) 第四章数字钟的软件设计 4.1 系统软件设计流程图 (16) 4.2 数字电子钟的原理图 (19) 第五章系统仿真 5.1 PROTUES软件介绍 (20) 5.2 电子钟系统PROTUES仿真 (21) 第六章调试与功能说明 6.1 硬盘调试 (22) 6.2 系统性能测试与功能说明 (22) 6.3 系统时钟误差分析 (22) 6.4 软件调试问题及解决 (22) 附件:主程序 (23)

基于51单片机电子闹钟的设计

前言 20世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高。同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间。所以有必要制作一个定时系统。随时提醒这些容易忘记时间的人。而钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等等。所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 随着生活水平的提高,人们越来越追求人性化的事物。传统的时钟已不能满足人们的需求。而现代的时钟不仅需要模拟电路技术和数字电路技术而且更需要单片机技术,增加数字钟的功能。利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,减小因元器件精度不够引起的误差,但是数字钟还是可以改进和提高如选用更精密的元器件。但与机械式时钟相比已经具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。 数字钟通过数字电路实现时、分、秒。数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。 多功能数字钟的应用非常普遍。由单片机作为数字钟的核心控制器,通过它的时钟信号进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行校时、定时等功能。输出设备显示器可以用液晶显示技术和数码管来显示技术。 本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机AT89C51为核心元件同时采用LED数码管显示器动态显示“时”、“分”、“秒”的现代计时装置。另外具有校时功能,秒表功能,和定时器功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。

基于单片机的电子时钟设计报告(LCD显示)

单片机原理及应用课程设计任务书 题目:电子时钟(LCD显示) 1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间: 使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用3个功能键操作来设置当前时间。功能键K1~K4功能下。 K1—设置小时。 K2—设置分钟。 K3—设置秒。 程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。 2、工作原理 本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。 3、参考电路 硬件设计电路图如下图所示: 硬件电路原理图 单片机原理及应用课程设计任务书

题目:电子时钟(LCD显示) 1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间: 使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用3个功能键操作来设置当前时间。功能键K1~K4功能下。 K1—设置小时。 K2—设置分钟。 K3—设置秒。 程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。 2、工作原理 本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。 3、参考电路 硬件设计电路图如下图所示: 硬件电路原理图 基于AT89C51单片机的电子时钟设计报告

一、设计要求与目的 1)设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间。 2)、使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。3)、用3个功能键操作来设置当前时间。 4)、熟悉掌握proteus编成软件以及keil软件的使用 二、本设计原理 本设计以AT89C51单片机为核心,通过时钟程序的编写,并在LCD显示器上显示出来。该编程的核心在于定时器中断及循环往复判断是否有按键操作,并对每个按键的操作在LCD显示器上作出相应的反应。由于LCD显示器每八位对应一个字符,故把秒、分、时的个位和十位分开表示。 该课题中有三个控制开关KM1、KM2、KM3分别控制时、分、秒的调整,时间按递增的方式调整,每点一次按钮则相应的时间个位加以,且时间调整不干扰其他为调整时间的显示。 三、硬件设计原理(电路) 硬件电路原理图

基于单片机的电子闹钟的设计说明

课程设计报告 课程名称:单片机课程设计 题目:多功能电子表 学院:环境与化学工程系:过程装备与测控工程 专业:测控技术与仪器 班级:测仪111 学号: 5801211040 学生:白金成 起讫日期: 2012-12-28~2013-1-7 指导教师:大勇、俊清、熊剑

单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。 本设计以AT89C52芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的闹钟,它由5V直流电源供电。在硬件方面,除了CPU外,使用1602液晶显示时钟的时间,并通过所写程序控制在某个时间点蜂鸣器的响应,即完成闹钟的功能,该闹钟设有4个独立按键,时间调整按键、闹钟调整按键和两个时间加减按键。软件方面采用C语言编程。整个闹钟系统能完成时间的显示、调时和定时闹钟的功能。 选用单片机最小系统应用程序,添加比较程序、时间调整程序及蜂鸣程序,通过时间比较程序触发蜂鸣,实现闹钟功能,完成设计所需求的软件环境。介绍并使用KEIL单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。 关键词:AT89C52单片机定时器中断闹钟

一、设计任务、要求 (4) 1.1、设计任务: (4) 1.2、设计要求: (4) 二、方案总体设计 (5) 2.1、显示模块 (5) 2.2、实时时间计算模块 (5) 2.3、按键控制模块 (5) 2.4、声音报警模块 (5) 2.5、总体设计: (5) 三、硬件设计 (7) 3.1、单片机最小系统 (7) 3.1.1、时钟信号的产生 (7) 3.1.2、复位电路 (7) 3.2、液晶显示模块 (8) 3.2.1、1602液晶引脚图及连线电路 (8) 3.2.2、一般1602字符型液晶显示器实物图 (8) 3.3、矩阵键盘 (8) 3.4、蜂鸣器电路 (9) 3.5、电源指示灯部分 (9) 3.6、STC89C52芯片 (9) 3.7、整体电路原理图 (10) 3.8、Lockmaster硬件电路 (11) 四、程序流程图 (12) 五、系统仿真与调试 (14) 5.1、Proteus仿真原理图 (14) 5.2、实物图 (16) 5.3、使用说明 (16) 六、设计总结及心得体会 (17) 附录: (18)

基于单片机电子闹钟的设计

电子信息工程专业课程设计任务书 题目:基于单片机电子闹钟的设计 设计内容 1.能随意设定走时时间,具有对时功能,既能随意设定走时起始时间。 2.能设定闹铃时间,一旦走到该时间,能以声或光的形式报警。 3可采用交直流供电电源,即能自动切换。 4.设计5V直流电源,系统时钟电路、复位电路。 5.按钮与按键电路、闹铃声光电路。 设计步骤 一、总体方案设计 电子闹钟既可以通过纯硬件实现,也可以通过软硬件结合实现,根据电子时钟核心部件——秒信号的产生原理,通常可以用NE555时基电路、石英钟专用芯片、微处理器等三种形式来实现。本系统采用基于微处理器的实现形式。 二、硬件选型工作 对于每一个芯片要有具体型号,对每个分立元件要给出其参数 三、硬件的设计和工作 1.选择计算机机型 2.设计支持计算机工作的外围电路 3.接口电路 4.其他相关电路设计或方案(电源,通信等) 四、软件设计 1.分配系统资源,编写系统初始化和主程序模块 2.编写相关子程序 3.其他程序模块(显示与键盘等处理程序) 五、编写课程设计说明书,绘制完整的系统电路图(A3幅面) 课程设计说明书要求 1.课程设计说明书应采用学校统一印制的课程设计(论文)说明书封面,书写应认真。 2.课程说明书应有目录,摘要,序言,主干内容(按章节编写),主要论理和参考书,附录应包括序清单,系统方框图和电路原理图。 3.课程设计说明书应包括上述设计步骤进行设计的分析和思考内容和引用的相关知识。 4.要求打印B5纸,排版要求请向指导教师索取。

目录 第一章:系统概述…………………………………..(3 ) 一、电子闹钟的设计的基本原理………………………………( 3) 二、电子闹钟的设计框图及基本工作过程…………………….(3 ) 第二章:系统硬件的设计…………………………...( 4 ) 一、单片机AT89C51芯片的简介………………………………( 4 ) 二、直流电源的设计……………………………………………( 7 ) 三、时钟电路的设计…………………………………………….( 7 ) 四、数码管的显示电路………………………………………….( 7 ) 五、复位电路…………………………………………………….( 9 ) 六、按键电路………………………………………………….....( 9 ) 第三章:系统软件的设计…………………..……( 10 ) 一、走时功能的设计……………………………………………( 10 ) 二、显示功能的设计……………………………………………( 11 ) 三、调整时间功能的设计………………………………………( 12 ) 四、喇叭和指示灯等功能的设计………………………………( 13 ) 五、闹铃功能的设计……………………………………………( 14 ) 六、时钟主程序…………………………………………………( 16 ) 第四章:心得体会………………………………….( 18 ) 第五章:附录:…………………………………….( 19 ) 一、系统整体硬件图……………………………………………( 19 ) 二、原件清单………………………………………………….(20 )

基于单片机电子闹钟的设计

西南石油大学 单片机课程设计 学院: 电气信息学院 专业年级: 通信工程2013级 姓名: 王昕铃 学号: 课题:基于单片机的定时闹钟设计 指导老师: 邓魁 日期: 2016 年 6月 30日 前言 20世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高。同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间。所以有必要制作一个定时系统。随时提醒这些容易忘记时间的人。而钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等等。所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 随着生活水平的提高,人们越来越追求人性化的事物。传统的时钟已不能满足人们的需求。而现代的时钟不仅需要模拟电路技术和数字电路技术而且更需要单片机技术,增加数字钟的功能。利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,减小因元器件精度不够引起的误差,但是数字钟还是可以改进和提高如选用更精密的元器件。但与机械式时钟相比已经具有

更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。 数字钟通过数字电路实现时、分、秒。数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。 多功能数字钟的应用非常普遍。由单片机作为数字钟的核心控制器,通过它的时钟信号进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行校时、定时等功能。输出设备显示器可以用液晶显示技术和数码管来显示技术。 本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机AT89C51为核心元件同时采用LED数码管显示器动态显示“时”、“分”、“秒”的现代计时装置。另外具有校时功能,秒表功能,和定时器功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。 摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。 本设计以AT89C51芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟,它由5V直流电源供电。在硬件方面,除了CPU外,使用八个七段LED数码管来进行显示,LED采用的是动态扫描显示,使用74LS245芯片进行驱动。通过LED能够较为准确地显示时、分、秒。四个简单的按键实现对时间的调整。软件方面采用C语言编程。整个电子钟系统能完成时间的显示、调时、校时和三组定时闹钟的功能。 选用单片机最小系统应用程序,添加比较程序、时间调整程序及蜂鸣程序,通过时间比较程序触发蜂鸣,实现闹钟功能,完成设计所需求的软件环境。介绍并使用Keil单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。 关键词:单片机,定时器,中断,闹钟,LED

基于单片机电子时钟的设计说明

单片机课程设计 姓名:韶辉 学号: 1402250232 班级:自动化11402 成绩: 指导老师:吴玉蓉 设计时间:2016年12月26日~2017年1月5日

目录 1.设计要求 (1) 2.系统总体方案 (2) 3.硬件电路设计 (3) 4.系统软件设计. (4) 5.课程设计体会 (15) 6.参考文献 (15) 7.系统实物图 (16) 附录1 电路原理图 (17) 附录2 原件清单 (18)

一、设计要求 利用51单片机开发电子时钟,实现时间显示、调整功能。具体要求如下:(1)按以上要求制定设计方案,并绘制出系统工作框图; (2)按要求设计部分外围电路,并与单片机仿真器、单片机实验箱、电源等正确可靠的连接,给出电路原理图; (3)用仿真器及单片机实验箱进行程序设计与调试; (4)利用键盘输入调整秒、分和小时时刻,数码管显示时间; 二、系统总体方案 1.时钟计数:形成秒、分、小时,系统时间采用24小时制。利用单片机部的定时器/计数器来实现,它的处理过程如下:首先设定单片机部的一个定时器/计数器工作于定时方式,对机器周期计数形成基准时间(如10ms),然后用另一个定时器/计数器或软件计数的方法对基准时间计数形成秒(对10ms计数100次),秒计60次形成分,分计60次形成小时,小时计24次则计满一天。 (如12-25-09)。 2.显示:采用8个LED显示系统当前时间,显示格式为“时-分-秒” 3.设置功能:用户可以对系统的时间进行设置。没有按键时,则时钟正常走时。当按下K0键,进入调分状态,时钟停止走动,此时,按K1或K2键可进行加1或减1操作;继续按K0键可分别进行分和时的调整,此时,按K1或K2键可进行加1或减1操作;最后按K0键将退出调整状态,时钟开始计时运行。 4.系统框图

基于51单片机的电子时钟的设计

目录 0 前言 (1) 1 总体方案设计 (2) 2 硬件电路设计 (2) 3 软件设计 (5) 4 调试分析及说明 (7) 5 结论 (9) 参考文献 (9) 课设体会 (10) 附录1 电路原理 (12) 附录2 程序清单 (13)

电子时钟的设计 许山沈阳航空航天大学自动化学院 摘要:传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。 单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。而51系列的单片机是各单片机中最为典型和最有代表性的一种。,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。该设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。 关键字:AT89C2051,C语言程序,电子钟。 0前言 利用51单片机开发电子时钟,实现时间显示、调整和闹铃功能。具体要求如下: (1)按以上要求制定设计方案,并绘制出系统工作框图; (2)按要求设计部分外围电路,并与单片机仿真器、单片机实验箱、电源等正确可靠的连接,给出电路原理图; (3)用仿真器及单片机实验箱进行程序设计与调试;

(4)利用键盘输入调整秒、分和小时时刻,数码管显示时间; (5)实现闹钟功能,在设定的时间给出声音提示。 1总体方案设计 该电子时钟由89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,利用单片机内部定时计数器0通过软件扩展产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。闹钟和时钟的时分秒的调节是由一个按键控制,而另外一个按键控制时钟和闹钟的时间的调节。 图1 系统结构框图 该电子时钟由STC89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,晶振电路的晶振频率为12MHZ,使用的定时器/计数器工作方式0,通过软件扩展产生的一秒定时,达到时分秒的计时,60秒为一分钟,60分钟为一小时,24小时为一天,又重00:00:00开始计时。没有按键按键按下时,时钟正常运行,当按下调节时钟按键K1,就会关闭时钟,当按下闹钟按键K3时时钟就会进入设置时间界面,但是时钟不会停止工作,按K2键,,就可以对时钟和闹钟要设置的时间进行调整。 2硬件电路设计

基于51单片机实现的简单闹钟设计

【摘要】众所周知闹钟对我们日常生活来讲是一个很重要的工具,因而我利用单片机AT89C52制作一个简单的倒计时定时闹钟。本设计利用单片机的内部中断资源和按键的基本使用方法构思而成。利用按键设定需要定时的时间长短,利用中断设置20次中断定义一秒,然后利用程序设计时间倒数。并使用4个8段数码管显示分和秒,并且定时结束后使用电铃警示。硬件系统利用proteus仿真,在仿真中就能观察到系统的实际运行情况。 【关键字】 单片机AT89C51 倒计时定时中断 protues仿真 一、设计项目简介 基于51单片机进行简单闹钟设计。四位数码管从左往右分别代表十分位,分位,十秒位,秒位。按动对应按键能增加各个位的数值,按动开始计时按键能开始倒计时。 二、硬件设计 1.总体设计思路 控制芯片使用比较熟悉的AT89C52单片机芯片,数码管使用四位相连的8段共阴数码管,并且使用74HC573锁存器控制数码管的显示。在定时过程使用s1控制十分位,s2控制分位,s3控制十秒位,s4控

制秒位,s5开始倒计时。 基本思路设计如下: 2. AT89C52芯片介绍 80C52是INTEL 公司MCS-51系列单 片机中基本的产品,它采用INTEL 公司可靠的CHMOS 工艺技术制造的 高性能8 位单片机,属于标准的MCS-51的HCMOS 产品。它结合了HMOS 的高速和高密度技术及CHMOS 的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。 80C52内置8位中央处理单元、256字节内部数据存储器RAM 、8k 片内程序存储器(ROM )32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡

基于单片机的电子时钟课程设计报告

目录 一、引言········ 二、设计课题········· 三、系统总体方案········· 四、系统硬件设计······ 1.硬件电路原理图 2.元件清单 五、系统软件设计········· 1.软件流程图 2.程序清单 六、系统实物图········ 七、课程设计体会········ 八、参考文献及网站········· 九、附录·········

一.引言 单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。 基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。 数字钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。而且是控制的核心部分。因此,研究数字钟及扩大其应用,有着非常现实的意义。 本设计使用12MHZ晶振与单片机AT89C51相连接,以AT89C51芯片为核心,采用动态扫描方式显示,通过使用该单片机,加之在显示电路部分使用HD74LS373驱动电路,实现在8个LED数码管上显示时间,通过4个按键进行调时、复位等功能,在实现各功能时数码管进行相应显示。软件部分用C语言实现,分为显示、延迟、调时、复位等部分。通过软硬件结合达到最终目的。

基于ATC单片机定时闹钟设计

塔里木大学信息工程学院 《单片机原理与外围电路》课程论文 题目:单片机定时闹钟设计 姓名:海热古丽·依马木 学号: 15 班级:计算机15-1班

摘要:本设计是单片机定时闹钟系统,不仅能实现系统要求的功能,而且还有附加功能,即还能设定和修改当前所显示的时间。?本次设计的定时闹钟在硬件方面就采用了AT89C51芯片,用6位LED数码管来进行显示。LED用P0口进行驱动,采用的是动态扫描显示,能够比较准确显示时时—分分—秒秒。通过S1、S2、S3、和S4四个功能按键可以实现对时间的修改和定时,定时时间到喇叭可以发出报警声。在软件方面采用汇编语言编程。整个定时闹钟系统能完成时间的显示,调时和定时闹钟、复位等功能,并经过系统仿真后得到了正确的结果。 关键词:单片机、AT89C51、定时闹钟、仿真? Abstract:T his design is a single-chip timing alarm system, can not only realize the function of system requirements, and there are additional functions, which can set up and modify the display time. Timing alarm clock this design adopts the AT89C51 chip on the hardware side, with 6 LED digital tube to display. LED P0 export driven, by using dynamic scanning display, can accurately display always - sub - seconds seconds. Through the S1, S2, S3, and S4 four function keys can be achieved on the time changes and timing, timing to the horn can send out alarm sound. Using assembly language programming in the software. The timing clock system has functions of time display, timing and timing alarm clock, reset and other functions, and the system simulation to obtain correct results. Keywords: single chip microcomputer, AT89C51, alarm clock,

(完整word版)基于单片机电子时钟的制作

毕业综合实训概述 实训目的: 对单片机电子时钟的制作及设计原理的掌握,利用本次实训对所学的理论课程进行实际论证,更好的掌握理论知识。能够更好的运用在实践当中。 实训时间: 2015年9月21日-2015年11月8日 实训要求: 1.独立完成实物的制作及理解设计原理; 2.分析及制作程序流程图; 3. 绘制电路图; 4.了解个元器件在电路中的作用。

目录 1 引言 (1) 1.1选题背景 (1) 1.2设计原理 (1) 1.3单片机简介 (2) 1.4单片机的发展历史 (2) 1.5单片机的应用领域及发展趋势 (2) 2 方案议论 (5) 2.1 设计要求 (5) 2.2 系统描述 (5) 2.3 设计方案 (5) 2.3.1 集成电路 (5) 2.3.2 单片机的最小系统 (6) 2.3.3结论 (7) 3 硬件设计 (8) 3.1硬件结构 (8) 3.2中心控制模块 (8) 3.3电源模块 (11) 3.4控制电路 (12) 3.5复位电路 (12) 4软件设计 (15) 4.1电子时钟的设计原理 (15) 4.2 软件设计流程 (15) 5 总结 (17) 致谢 (18) 参考文献 (18) 附录电子时钟程序 (19)

1 引言 1.1选题背景 单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。 INTEL的8080是最早按照这种思想设计出的处理器,当时的单片机都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列单片机系统。因为简单可靠而性能不错获得了很大的好评。尽管2000年以后ARM 已经发展出了32位的主频超过300M的高端单片机,直到现在基于8051的单片机还在广泛的使用。现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作! 利用单片机实现电子时钟有很多优点,例如外部电路简单,控制方便等,因而备受广大单片机爱好者的喜爱。通过电子时钟的制作方案,掌握C语言的编程方法。并熟练的运用89S52单片机定时器准确的实现时间的递进,按下按键可以设置时间,最重要的是自己还可以通过程序设计输入自己需要的定点时间。 1.2设计原理 通过单片机对时间准确的控制,实现时间的递进。 定时器:时钟周期T是时序中最小的时间单位,具体计算的方法是1/时钟源频率,我们KST-52单片机开发板上用的晶振是11.0592M,那么我们对于这个单

基于51单片机电子闹钟的设计(1)

单片机原理与接口技术课程设计题目:多功能电子闹钟 院系:电气与电子工程系 专业:电气工程及其自动化 班级:电气工程1503 姓名: 学号: 指导教师: 二零一七年十二月

多功能电子闹钟 摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51单片机是各单片机中最为典型和最有代表性的一种。 本设计以AT89C51芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟,它由5V直流电源供电。在硬件方面,除了CPU外,使用八个七段LED数码管来进行显示,LED采用的是动态扫描显示,使用74LS245芯片进行驱动。通过LED能够较为准确地显示时、分、秒。四个简单的按键实现对时间的调整。软件方面采用C语言编程。整个电子钟系统能完成时间的显示、调时、校时和三组定时闹钟的功能。 选用单片机最小系统应用程序,添加比较程序、时间调整程序及蜂鸣程序,通过时间比较程序触发蜂鸣,实现闹钟功能,完成设计所需求的软件环境。介绍并使用Keil 单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。 关键词:单片机定时器中断闹钟 LED

目录 第1章方案的选择和论证 (1) 1.1单片机型号的选择 (1) 1.2按键的选择 (1) 1.3显示器的选择 (1) 1.4计时部分的选择 (1) 1.5发音部分的设计 (2) 1.6显示器驱动电路 (2) 1.7电源的选择 (2) 第2章数字电子钟的设计原理和方法 (3) 2.1设计原理 (3) 2.2硬件电路的设计 (3) 2.2.1 AT89C51单片机简介 (3) 2.2.2 键盘电路的设计 (3) 2.2.3 段码驱动电路 (4) 2.2.4 蜂鸣器驱动电路 (4) 2.3软件部分的设计 (5) 2.3.1 主程序部分的设计 (5) 2.3.2 中断定时器的设置 (5) 2.3.3 闹钟子函数 (6) 2.3.4 计时函数 (6) 2.3.5 键盘扫描函数 (8) 2.3.6 时间和闹钟的设置 (8) 第3章实验结果 (10) 总结 (11) 致谢 (12) 参考文献 (13) 附录 (14)

(最新版)基于51单片机汇编语言的数字钟课程设计报告含有闹钟万毕业论文

单片微型计算机课程设计报告 多功能电子数字钟 姓 名 学

教师 许伟敏 电气二班 林卫

目录 一:概述 (1) 二:设计基本原理简介 (2) 三:设计要求及说明 (3) 四:整体设计方案 (4) 系统硬件电路设计 4 系统软件总流程设计模块划分及分析5 6 五:单模块流程设计 (8) 各模块设计概述、流程图模块源程序集合及注释8 13 六:单模块软件测试 (23) 七:系统检测调试 (24) 硬件电路调试 软件部分烧写调试 八:系统优化及拓展 (26) 九:心得体会 (28)

单片微型计算机课程设计 一、概述 基于汇编语言的电子数字钟概述 课程设计题目:电子数字钟 应用知识简介: ● 51 单片机 单片机又称单片微控制器,它不是完成某一个逻辑功能 的芯片,而是把一个计算机系统集成到一个芯片上。作为嵌 入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。51 系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51 系列单片机的发展又进入了一个新的阶段。在今后很长一段时间内51 系列单片机仍将占据嵌入式系统产品的中低端市场。 ●汇编语言 汇编语言是一种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。汇编语言可以与高级语言配合使用,应用十分广泛。 ● ISP ISP(In-System Programming)在系统可编程, 是当今流行的单片机编程模式,指电路板上的空白元器 件可以编程写入最终用户代码,而不需要从电路板上取 下元器件。已经编程的器件也可以用ISP方式擦除或再 编程。本次课程设计便使用ISP方式,直接将编写好的 程序下载到连接好的单片机中进行调试。 选题 系统功能分析 硬件电路设计 整体流程设计 及模块划分 模块流程设计 模块编 码测试 系统合成调 试编译 下载调试(含硬件电路调试及软件烧写调试) 验收 完成总结报告课程设计流程图↑ 选题目的及设计思想简介: 课程设计是一次难得的对所学的知识进行实践的机会,我希望通过课程设计独立设计一个简单的系统从而达到强化课本知识并灵活运用的目的。电子数字钟是日常生活钟随处可见的简单系统。对电子数字钟的设计比较容易联系实际并进行拓展,在设计中我将力求尽可能跳出课本的样板,从现实生活中寻找设计原型和设计思路,争取有所突破。 如图所示便是我本次课程设计流程图,设计的整个过程运用自顶向下分析、自底向上实现的

基于单片机的简易电子时钟设计

基于单片机的简易电子时钟设计 1 设计任务与要求 1.1 设计背景 数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。 单片根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机模块、数码显示模块与按键模块,模块之间的关系图如下面得方框电路图1所示。 机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。 1.2 课程设计目的 (1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力; (2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力; (3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。

1.3 设计要求 1).时制式为24小时制。 2).采用LED数码管显示时、分,秒采用数字显示。 3).具有方便的时间调校功能。 4).计时稳定度高,可精确校正计时精度。 2 总体方案设计 2.1 实现时钟计时的基本方法 利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计数。 (1) 计数初值计算: 把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。 假设使用T/C0,方式1,50ms定时,fosc=12MHz。 则初值X满足(216-X)×1/12MHz×12μs =50000μs X=15536→0011110010110000→3CB0H (2) 采用中断方式进行溢出次数累计,计满20次为秒计时(1秒); (3) 从秒到分和从分到时的计时是通过累加和数值比较实现。 2.2 电子钟的时间显示 电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元。 LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1 37H 36H 35H 34H 33H 32H 31H 30H 时十位时个位分隔分十位分个位分隔秒十位秒个位 2.3 电子钟的时间调整 电子钟设置3个按键通过程序控制来完成电子钟的时间调整。 A键调整时;

相关主题
文本预览
相关文档 最新文档