文档库 最新最全的文档下载
当前位置:文档库 › 基于单片机的电子闹钟设计

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

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

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

摘要

本设计以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所示。

图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++;

}

基于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个两级中断结构,一个全双工串行通信口,片内时钟振荡

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

基于单片机的电子闹钟设计 摘要 本设计以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的晶振连接至单片机的时钟信号输入端;第二部分,四个独立按键加上四个上拉电阻连接至单片机

基于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,

基于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分别控制时、分、秒的调整,时间按递增的方式调整,每点一次按钮则相应的时间个位加以,且时间调整不干扰其他为调整时间的显示。 三、硬件设计原理(电路) 硬件电路原理图

51单片机实现的音乐闹钟程序代码

功能描述:产品可以显示时间和日期,时间格式为 hh mm ss 日期格式为 yy.mm.dd 时间和日期轮流显示。时间显示5S 日期显示3S。 可以设置5个闹铃,闹铃音乐可以设置两种:毛驴和童年。 三个按键对时间和闹铃进行设置,六个LED进行显示。 计时采用DS1307。继电时间不丢失,设置过的闹铃也不丢失。 闹铃音乐由单片机的两个定时器去产生频率实现。 部分程序如下: //************************************************* //************************************************ //*********************************************** //程序名:DS1307 时钟程序 //功能描述:用六个八段LED 轮流显示时间 // 和日期。有6个闹钟。上电时从DS1307中读出 // 当前时间、日期、闹钟。 // // // // // #include #include #define uchar unsigned char #define uint unsigned int #define LED P2 #define LEDBit P0 #define nop _nop_(>

#define LightCount 40 #define LightMax 80 sbit SCL=P3^1。 sbit SDA=P3^0。 sbit ModeKey=P1^0。 sbit UpKey=P1^1。 sbit DownKey=P1^2。 sbit Speak=P3^6。 code uchar LCD_NUM[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}。 //0x25, //uchar Clock[]={0x88,0x88,0x88}。 code uint Music_Sound_Long1[]={4,8,4,8,8,4,8,4,4,4, /*童年*/ 8,4,8,4,4,4,4,4,16,4, 4,8,4,4,4,4,4,8,4,4, 4,8,4,4,4,4,4,4,16,4, 4,8,4,4,4,4,4,8,4,4, 4,8,4,4,4,4,4,4,16,4, 8,4,8,4,4,4,8,8,4,4, 4,4,4,4,4,4,4,4,4,16, 4,8,4,8,8,4,8,4,4,4, 8,4,8,4,4,4,4,4,16,4, 8,4,8,8,4,8,4,4,4,8, 4,8,4,4,4,4,4,16,0}, Music_Sound_Long2[]={4,4,4,4,4,4,4,4,4,4, /*小毛驴*/ 4,4,16,4,4,4,4,4,4 ,4, 4,4,4,4,4,8,4,4,4,4, 4,4,4,4,4,4,4,4,4,16, 4,4,4,4,2,2,2,2,4,4, 4,4,4,4,16,0}, Music_Sound_Tone1[]={379,379,379,379,425,477,477,477,425,477, 568,637,637,637,568,637, 425,379,477,719, 637,63 7,719,637,568,568,506,568,568,568, 637,477,477,477,477,568,477,568,637,719, 637,637,719,637,568,568,506,568,568,568, 637,477,477,477,477,568,568,477,851,318,

基于单片机的定时闹钟课程设计报告书

任务书 一、设计目的 本设计主要是对51单片机的一个方面的扩展,是能实现一般定时闹钟功能的设计。需要实现某一功能时,按对应的按键即可,经过多次验证,此设计灵活简便,可以实现显示、定时、修改定时、定时时间到能发出报警声的功能。 二、设计要求 1、能显示时时—分分—秒秒。 2、能够设定定时时间,并修改定时时间。 3、定时时间到能发出警报声。

目录 1.绪论 (1) 2.方案论证 (1) 3.方案说明 (2) 4.硬件方案设计 (2) 4.1单片机STC89C52 (2) 4.2 时钟电路 (4) 4.3数码管显示电路 (4) 4.4键盘电路 (6) 4.5报警电路 (7) 5.软件方案设计 (7) 5.1系统软件设计 (7) 5.2键盘程序 (7) 5.3 LED (8) 5.4音响报警电路 (8) 5.5 程序流程图 (8) 6.调试 (9) 7.小结 (10) 8.参考文献 (11) 9.附录:定时闹钟源程序 (12)

1.绪论 系统采用单片机STC89C52作为本设计的核心元件,在其基础上外围扩展芯片和外围电路,附加时钟电路,复位电路,键盘接口及LED显示器。键盘采用独立连接式。还有定时报警系统,即定时时间到,通过扬声器发出报警声,提示预先设定时间时间到,从而起到定时作用。 外围器件有LED显示驱动器及相应的显示数字电子钟设计与制作可采用单片机来完成。由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计与制作中采用单片机STC89C52,它是低功耗、高性能的CMOS型8位单片机。片内带有8KB的Flash 存储器,且允许在系统内改写或用编程器编程。另外, STC89C52的指令系统和引脚与8051完全兼容,片内有512B的RAM、32条I/O口线、3个16位定时计数器、4个外部中断、一个7向量4级中断结构(兼容传统51的5向量2级中断结构)等。 在LED显示器中,分成静态显示和动态显示两类,在这个设计的最小系统中主要用了它的动态显示功能,动态显示器利用了人视觉的短暂停留,在数据的传输中是一个一个传输的,且先传输低位。 2.方案论证 单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。 本系统采用单片机STC89C52作为本设计的核心元件,利用两个4位7段共阴LED作为显示器件。接入共阴LED显示器,可显示时,分钟,秒,单片机外围接有定时报警系统,定时时间到,蜂鸣器发出报警声,提示预先设定时间到。 电路由下列部分组成:时钟电路、复位电路、控制电路、LED显示、报警电路,芯片选用STC89C52单片机。 系统基本框图如图2.1所示:

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

课程设计报告 课程名称:单片机课程设计 题目:多功能电子表 学院:环境与化学工程系:过程装备与测控工程 专业:测控技术与仪器 班级:测仪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

定时闹钟设计课程设计报告

定时闹钟设计 摘要: 本设计目的是利用单片机设计制作一个简易的定时闹铃时钟,可以放在宿舍或教室使用,在夜晚或黑暗的场合也可以使用。可以设置现在的时间以及闹铃的时间并且显示出来,若时间到则发出一阵声响。 本次设计的定时闹钟在硬件方面就采用了AT89C52芯片,用6位LED数码管进行显示。LED用P0口进行驱动,采用的是动态扫描显示,能够比较准确显示时时—分分—秒秒。通过五个功能按键可以实现对时间的修改、定时和闹铃终止,闹钟设置的时间到时蜂鸣器可以发出声响。在软件方面用C51编程。整个定时闹钟系统能完成时间的显示,调时和设置闹钟、停止响铃等功能,并经过系统仿真后得到了正确的结果。 关键词:定时闹钟;蜂鸣器;AT89C52;74HC245;

目录

第1章绪论 设计目的 本次课程设计的主题是定时闹钟,其基础部分是一个数字钟。电路系统由秒信号发生器、“时、分、秒”计数器、显示器组成。其中秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,这里用51单片机的定时器来实现。利用定时器获得每一秒的时刻,然后在程序中,我们就可以给秒进行逐秒赋值,满60秒则进位为1分,满60分则进位为1小时,满24小时则时间重置实现一天24小时的循环。译码显示电路将“时”、“分”、“秒”计数器的输出状态送到七段显示译码器译码,通过一个六位八段数码管显示出来。 这里利用51单片机的相关知识,来实现电子闹钟的相关功能。实验使用了 AT89C52、74HC245等芯片,通过单片机的P0、P3管脚来驱动数码管显示出相应的时刻。本文将讲述AT89C52、74HC245等芯片的基本功能原理,并重点介绍该电子闹钟的设计。 设计要求和任务 使用6位七段LED显示器来显示现在的时间;显示格式为“时时分分秒秒”;具有4个按键来做功能设置,可以设置现在的时间及显示闹铃设置时间;时间到则发出一阵声响,可通过按键复位;对单片机系统设计的过程进行总结,认真书写课程设计报告并按时上交。 利用51单片机结合七段LED显示器设计一个简易的定时闹铃时钟,可以放在宿舍或教室使用,由于用七段LED显示器显示数据,在夜晚或黑暗的场合也可以使用。可以设置现在的时间及显示闹铃设置时间,若时间到则发出一阵声响。 论文主要内容 论文分别叙述从硬件和软件上实现该设计的过程。第2章为总体设计方案。第3章主要介绍设计实现需要解决的硬件问题。依次介绍所使用的各种硬件的使用方法,并附上仿真电路图和文字说明。第4章从软件的角度说明实现该设计需要解决的问题。

单片机数字时钟带闹钟

计算机硬件综合课程 设计报告 课目: 学院: 班级: 姓名: 指导教师: 目录

1 设计要求 功能需求 设计要求 2 硬件设计及描述 总体描述 系统总体框图 Proteus仿真电路图3 软件设计流程及描述 程序流程图 函数模块及功能 4 心得体会 附:源程序

1设计要求 1.1功能需求 (1)实现数字时钟准确实时的计时与显示功能; (2)实现闹钟功能,即系统时间到达闹钟时间时闹铃响; (3)实现时间和闹钟时间的调时功能; (4)刚启动系统的时候在数码管上滚动显示数字串(学号)。 1.2设计要求 (1)应用MCS-51单片机设计实现数字时钟电路; (2)使用定时器/计数器中断实现计时; (3)选用8个数码管显示时间; (4)使用3个按钮实现调时间和闹钟时间的功能。按钮1:更换模式(模式0:正常显示时间;模式1:调当前时间的小时;模式 2;调当前时间的分钟;模式3:调闹钟时间的小时;模式4: 调闹钟时间的分钟);按钮2:在非模式0下给需要调节的时 间数加一,但不溢出;按钮3:在非模式0下给需要调节的时 间数减一,但不小于零; (5)在非0模式下,给正在调节的时间闪烁提示; (6)使用扬声器实现闹钟功能; (7)采用C语言编写程序并调试。

2 硬件设计及描述 2.1总体描述 (1)单片机采用AT89C51型; (2)时间显示电路:采用8个共阴极数码管,P1口驱动显示数字,P2口作为扫描信号; (3)时间设置电路:、、分别连接3个按键,实现调模式,时间加和时间减; (4)闹钟:口接扬声器。 2.2系统总体框图 2.3Proteus仿真电路图

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

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

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

定时闹钟课程设计

扬州大学水利与能源动力工程学院课程设计报告 题目:定时闹钟 课程:单片机原理及应用课程设计 专业:电气工程及其自动化 班级:电气1201 姓名:陈明飞 学号:121704102

第一部分 任 务 书

《单片机原理及应用》课程设计任务书 一、课题名称 详见《单片机课程设计题目(一)》:主要是软件仿真,利用Proteus软件进行仿真设计并调试; 《单片机课程设计题目(二)》:主要是硬件设计,利用单片机周立功实验箱进行设计并调试。 二、课程设计目的 课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。 《单片机原理及应用》是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。单片机原理及应用课程设计的目的是让学生在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锻炼和提高。为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的基本技能,逐步熟悉开展科学实践的程序和方法。 三、课程设计内容 设计以89C51单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。 1. 系统方案设计:综合运用单片机课程中所学到的理论知识,学生根据所选课题的任务、要求和条件进行总体方案的设计。 2. 硬件电路设计:对方案中以单片机为核心的电路进行设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。 3. 软件设计:根据已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。 4. 调试:在单片机EDA仿真软件环境Proteus下进行仿真设计并调试;或在单片机周立功实验箱上进行相关设计并调试。 四、课程设计要求 详见《单片机课程设计题目(一)》 《单片机课程设计题目(二)》 五、进度安排

基于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)

(完整版)单片机毕业课程设计—带有LCD的定时闹钟

郑州轻工业学院 软件学院 单片机与接口技术课程设计总结 报告 设计题目:带有LCD的定时闹钟 学生姓名: 系别: 专业: 班级: 学号: 指导教师:

2011年12月16日

郑州轻工业学院 课程设计任务书 题目带有LCD的定时闹钟 专业、班级学号姓名 主要内容: 设使用89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟,若LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可以使用。 基本要求: .字符型LCD(16*2)显示器 .显示格式“时时分分”。 .由LED闪动来做秒计数表示。 .一旦时间到侧发动声响,同时继电器启动,可以扩充控制家电开启和关闭。 .程序执行后工作指示灯LED闪动,表示程序开始执行,LCD 显示“00 00”,按下操作键K1-k4动作如下: (1)K1—设置现在的时间。 (2)K2—显示闹钟设置的时间。

(3)K3—设置闹铃的时间。 (4)K4—闹铃ONOFF的状态设置,设置ON时连续三次发出“哗”的一声,off置为哗的一声。设置当前时间或闹 铃时间如下: (1)K1—时的调整。 (2)K2—分的调整。 (3)K3—设置完成。 (5)OFF发出“哗”K4---闹铃时间到时,发出一阵声响,按下本键可以停止声响。 除了显示当前时间的功能外,还可以扩充如下功能; .增加秒表计数。 .闹铃时间到侧产生音乐声。 .增加减计数功能。 .增加多组计数的功能。 参考文献 郭天祥 51单片机C语言教程-入门。 余发山单片机原理及应用技术。中国矿业大学出版社。 涂世亮,张友德。单片微机控制技术。清华大学出版社。

(最新版)基于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方式,直接将编写好的 程序下载到连接好的单片机中进行调试。 选题 系统功能分析 硬件电路设计 整体流程设计 及模块划分 模块流程设计 模块编 码测试 系统合成调 试编译 下载调试(含硬件电路调试及软件烧写调试) 验收 完成总结报告课程设计流程图↑ 选题目的及设计思想简介: 课程设计是一次难得的对所学的知识进行实践的机会,我希望通过课程设计独立设计一个简单的系统从而达到强化课本知识并灵活运用的目的。电子数字钟是日常生活钟随处可见的简单系统。对电子数字钟的设计比较容易联系实际并进行拓展,在设计中我将力求尽可能跳出课本的样板,从现实生活中寻找设计原型和设计思路,争取有所突破。 如图所示便是我本次课程设计流程图,设计的整个过程运用自顶向下分析、自底向上实现的

(完整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,那么我们对于这个单

相关文档
相关文档 最新文档