基于单片机的可调时数字闹铃本科毕业设计.docx
- 文档编号:26460319
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:43
- 大小:814.23KB
基于单片机的可调时数字闹铃本科毕业设计.docx
《基于单片机的可调时数字闹铃本科毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的可调时数字闹铃本科毕业设计.docx(43页珍藏版)》请在冰豆网上搜索。
基于单片机的可调时数字闹铃本科毕业设计
基于单片机的可调时数字闹铃
摘要
随着社会的发展、科技的进步,各种方便于生活的电子产品开始进入了人们的生活,电子时钟就是其中之一。
他已经成为了人们日常生活中的必需品,广泛用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学校、工作、娱乐带来了极大的方便。
本设计采用STC89C52为微处理器,通过LCD1602液晶显示当前日期、时间。
系统还具有对日期、星期、时间及闹铃的设置功能。
经测试,本设计能实现基本的数字时钟功能。
具有外围电路简单、成本低、易操作的特点。
考虑到成本,计时及数据处理均由单片机处理。
关键词:
51单片机;数字时钟;LCD1602;可调时闹铃
Abstract:
Withthedevelopmentofsociety,theprogressofscienceandtechnology,allkindsofconvenienceinlifeofelectronicproductsbegantoenterintopeople'slife,electronicclockisoneofthem.
Ithasbecomethepeopledailylife’snecessities,widelyusedinfamily,station,wharf,theatres,officesandotherplaces,topeople'slives,school,work,entertainmentbroughtgreatconvenience.
ThisdesignusesmicroprocessorSTC89C52,throughtheLCD1602liquidcrystaldisplaythecurrentdateandtime.Thesystemalsohasthefunctionsettingdate,week,timeandalarm.
Accordingtothetest,thisdesigncanachievethebasicdigitalclockfunction.Withperipheralcircuitissimple,lowcost,easytooperatefeatures.Consideringthecost,timeanddataprocessingweredeterminedbysinglechipmicrocomputerprocessing.
Keywords:
51SCM;Digitalclock;LCD1602;TimeAdjustablealarm
引言…………………………………………………………………………1
1设计思路及流程…………………………………………………………1
1.1功能分析……………………………………………………………………………1
1.2系统模块图…………………………………………………………………………1
2硬件电路………………………………………………………………2
2.1主要器件……………………………………………………………………………2
2.1.1STC89C5单片机…………………………………………………………………2
2.1.2LCD1602液晶……………………………………………………………………3
3电路原理图……………………………………………………………5
3.1单片机电路……………………………………………………………………………5
3.2电源指示电路………………………………………………………………………5
3.3按键电路……………………………………………………………………………6
3.4闹铃电路……………………………………………………………………………6
3.5LCD电路……………………………………………………………………………6
4程序设计………………………………………………………………7
4.1程序设计内容………………………………………………………………………7
4.2C语言源程序………………………………………………………………………7
5心得体会………………………………………………………………8
谢辞………………………………………………………………………9
参考文献…………………………………………………………………10
附录………………………………………………………………………11
引言
电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
随着技术的发展,人们已不再满足于钟表原先简单的报时功能,希望出现一些新的功能,诸如日历的显示、闹钟的非接触式止闹跑表功能、重要日期倒计时显示等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。
因此,研究实用电子钟的应用,有着非常现实的意义,具有很大的实用价值。
由于数字集成电路技术的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
现在市场上已有现成的电子钟集成电路芯片出售,价格便宜,使用也灵活,如可以随意设置时、分、秒的输出,改变显示数字的大小等,并且由于集成电路技术的发展,特别是MOS集成电路技术的发展,使电子钟具有体积小、携带方便的特点,这里介绍的实用电子钟可以满足使用者的一些基本要求,输出方式灵活、功耗低、计时准确、性能稳定、维护方便等优点。
实用电子钟是一个时间控制系统,既能作为一般的时间显示器,也可作为一个定时控制器,驱动负载或显示信息,同时可以根据需要扩展其功能。
在此项目的设计研究过程中需综合运用所学的数字电子技术、单片机原理与应用等课程的知识,掌握实用电子钟的设计、组装与调试方法,利用现代的单片机等新电子技术以及现代的设计手段,系统地培养了综合设计、操作调试、故障处理的能力,达到综合素质以及创新能力的提高。
1设计思路及流程
1.1功能分析
(1)时间、日期显示:
系统采用24小时制。
正常情况下,系统显示当前日期、时间,由LCD显示。
(2)闹铃功能:
当系统时间与用户设置时间一致时,闹铃报警。
报警过程中可以按下按键停止报警。
(3)设置功能:
用户可以对时间、日期、星期及闹铃时间进行设置。
用户连续按下SET键,依次进入日期设置、星期设置、时间设置、闹铃设置、退出。
闹铃时间可调小时和分钟。
在进行设置时,光标停留在相应位,按下Num_up键、Num_down键对数值进行加、减调整。
通过Next键,在各个数位间移动。
1.2系统模块图
由功能分析,电子时钟系统分为键盘模块、显示模块、闹铃模块、时钟部分、电源模块和单片机模块,考虑成本时钟模块可由单片机内部计数器模拟实现。
见如图1。
(1)键盘模块有四个按键,分别是Set,Next,Num_up,Num_down
(2)显示模块负责显示系统的日期、星期、时间、加上分隔符。
(3)闹铃模块采用蜂鸣器实现。
(4)电源模块采用+5V直流供电。
(5)单片机模块内部计数器负责时钟,通过程序模拟生成时间走时。
同时负责扫描键盘,并将时间送LCD显示。
图1
2硬件电路
2.1主要器件
系统中主要可编程器件为STC89C52RC单片机,外围器件包括:
蜂鸣器,LCD1602液晶。
2.1.1STC89C52单片机
STC89C52是由宏晶科技生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,2个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,图2.1
RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
引脚分布图见图2.1。
2.1.2LCD1602液晶
1602液晶也叫1602字符型液晶(见图3),它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用图2.2
自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
(1)接口信号说明(图2.2.1)
图2.2.1
1602采用标准的16脚接口
(2)RAM地址映射图(图2.2.2)
控制器内部带有80B的RAM缓冲区,对应关系如图
图2.2.2
(3)数据指针设置(图2.2.3)
控制器内部设有一个数据地址指针,用户可以通过他们访问内部的全部80B的RAM。
图2.2.3
(4)其他设置(图2.2.4)
图2.2.4
(5)初始化设置
①显示模式设置(图2.2.51)
图2.2.51
②显示开/关及光标设置(图2.2.52)
图2.2.52
(6)写操作时序(图2.2.6)
分析时序图可知操作1602液晶的流程如下:
①通过RS确定是写数据还是写命令。
写命令包括使液晶的光标显示/不显示、光标闪烁/不闪烁、需/不需要移屏、在液晶的什么位置显示,等等。
②读/写控制端设置为写模式,即低电平。
③将数据或命令送达数据线上。
④给E一个高脉冲将数据送入液晶控制器,完成写操作。
图2.2.6
3电路原理图
按照功能模块框图,电子钟分为按键电路、显示电路、闹铃电路以及单片机相关电路。
且单片机电路是整个系统的主控电路。
3.1单片机电路
单片机电路主要由单片机电路(图3.1)、震荡电路组成。
电路图如下:
图3.1
震荡电路(图3.1左)及复位电路(图3.1右)
图3.1
P2口的P2.0~P2.3用于接按键。
P3.5用于接蜂鸣器。
P0口用于接LCD1602的7~14口。
P2.5、P2.6、P2.7分别接LCD的RS、RW、EN口。
3.2电源指示电路(图3.2)
由一个LED指示电源接通状态。
图3.2
3.3按键电路(图3.3左)
由于外部设备并不复杂,为方便布线,采用独立按键。
3.4闹铃电路(图3.3中)
闹铃电路用于提供闹铃报警,主要由蜂鸣器构成。
单片机通过控制三极管的导通与截止,从而控制蜂鸣器的鸣叫。
3.5LCD电路(图3.3右)
图3.3
由可调电阻调节LCD背光亮度以达到显示清晰。
4程序设计
4.1程序设计内容
(1)由单片机内部计数器模拟时钟的走时,通过内部中断返回信息。
(2)按键扫描程序。
(3)处理数据并输出给1602显示程序。
(4)蜂鸣器控制程序。
4.2c语言源程序
源程序及流程图参见附录。
5心得体会
本次课程设计从选题到最后的实际成型经历了近一个多星期,中间的过程并不一直都很顺利。
虽然接触单片机也有半年的时间了,自己实际动手完整的完成一个小项目,这还是第一次。
从选题、确定方案、仿真、绘图再到绘制PCB以及制版,中间需要收集许多资料,在阅读资料的过程中找到了理论与实际应用的结合点,这引起了我极大的兴趣。
为确保实际成品的成功,我借用了Proteus仿真软件进行仿真,这极大的提高了设计及调试的效率。
程序的调试是一个相对缓慢的过程,这中间不断会有新的想法涌现。
在达到目标功能的前提下,我尽量地优化程序,希望达到更高的效率。
由于受到自身知识水平的限制,虽然尽了最大努力,最终成型的程序满足基本要求但并未达到自己的期望的地步,稍有遗憾。
通过这次课程设计,我深切的体会到理论与应用之间还是存在很大的差距。
将理论应用到实际,其中的过程可能并不如自己想象的顺利。
但当顺利地完成自己设想的效果时,会发现最大的乐趣就是解决问题的过程。
谢辞
平时忙于学习,很少有机会自己实际动手进行一些小的电子制作。
感谢学院提供这样一个让我们亲自动手的机会,同时也十分感激**老师对我们的理解,开放性的题目给了我们更多的发挥空间。
操作过程中我得到了同学的耐心帮助。
在我遇到难题时,是他们给了我好的想法,有了他们的帮助这个制作才得以顺利完成,在此一并表示感谢。
参考文献
[1]郭天祥.新概念51单片机c语言教程[M].电子工业出版社,2009,147~156.
[2]刘坤、赵洪波、张宪栋.51单片机C语言应用开发技术大全[M].人民邮电出版社,2012,530~539
[3]贺敬凯、刘德新、管明祥.单片机系统设计、仿真与应用——基于Keil和Proteus仿真平台[M].西安电子科技大学出版社,2011,137~150.
附录
PCB布线图(附图1)
附图1
Proteus仿真图(附图2)
程序流程图(附图3):
附图3
C语言源代码
/************************************************
程序说明:
可调时闹铃
*************************************************/
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable0[]="2000-00-00Mon";
ucharcodetable1[]="00:
00:
00";
ucharcount;
uintAlarm_time[2]={55,55};
uintTime_buff[2]={61,25};//给初值超过小时和分钟的范围,避免闹铃时间在00时的冲突
charshi,fen,miao;
charyear_H,year_L,month,day;
sbitbell=P3^5;
sbitRs=P2^5;
sbitRw=P2^6;
sbitlcd_en=P2^7;
sbitSet=P2^0;
sbitNext=P2^1;//Next键指示修改位置
sbitNum_up=P2^2;//修改位数字加
sbitNum_down=P2^3;//修改位数字减
/***********延时程序1ms**********************/
voiddelay(uintms)
{
uinti,j;
for(i=ms;i>0;i--)
for(j=120;j>0;j--);
}
/***********LCD的写数据和写指令程序段********/
voidwrite_com(ucharcom)
{
Rs=0;
P0=com;
delay(5);
lcd_en=1;
delay(5);
lcd_en=0;
}
voidwrite_data(uchardate)
{
Rs=1;
P0=date;
delay(5);
lcd_en=1;
delay(5);
lcd_en=0;
}
/************写入时、分、秒、星期、年月日***********************/
voidwrite_sfm(ucharadd,uchardate)
{
ucharshi,ge;
write_com(0x80+0x40+add);
shi=date/10;
ge=date%10;
write_data(0x30+shi);
write_data(0x30+ge);
write_com(0x80+0x40+add);
}
voidwrite_week(ucharweek)//写入星期
{
write_com(0x80+12);
switch(week)
{
case1:
write_data('M');
delay(5);
write_data('o');
delay(5);
write_data('n');
break;
case2:
write_data('T');
delay(5);
write_data('u');
delay(5);
write_data('e');
break;
case3:
write_data('W');
delay(5);
write_data('e');
delay(5);
write_data('n');
break;
case4:
write_data('T');
delay(5);
write_data('h');
delay(5);
write_data('u');
break;
case5:
write_data('F');
delay(5);
write_data('r');
delay(5);
write_data('i');
break;
case6:
write_data('S');
delay(5);
write_data('a');
delay(5);
write_data('t');
break;
case7:
write_data('S');
delay(5);
write_data('u');
delay(5);
write_data('n');
break;
}
}
voidwrite_nyr(ucharadd,uchardate)//写入年、月、日格式
{
uchardate_S,date_G;
date_S=date/10;
date_G=date%10;
write_com(0x80+add);//设置所设置的十位
write_data(0x30+date_S);//转为ASCII码
delay(5);
write_data(0x30+date_G);
write_com(0x80+add);//将游标返回
}
/************************************************************/
/************键盘检测*****************************/
voidkeyscan_set_sfm(set_alarm_flag)//当设置到分秒修改检测next,num+,num-
{
ucharNext_num;
while(Set)
{
if(Next==0)
{
delay(5);
if(Next==0)
{
while(!
Next);
Next_num++;
switch(Next_num)
{
case1:
write_com(0x80+0x40+7);//分钟位
break;
case2:
write_com(0x80+0x40+4);//小时位
if(set_alarm_flag==1)//调闹铃模式下跳过秒位的调节
Next_num=0;
break;
case3:
if(set_alarm_flag!
=1)
write_com(0x80+0x40+10);//非闹铃模式下停留在秒位
Next_num=0;
break;
}
}
}
if(Num_up==0)//数字的加操作
{
delay(5);
if(Num_up==0)
{
while(!
Num_up);
if(set_alarm_flag==1&&Next_num==0)
Next_num+=2;
switch(Next_num)
{
case0:
miao++;
if(miao==60)
miao=0;
write_sfm(10,miao);
break;
case1:
fen++;
if(fen==60)
fen=0;
write_sfm(7,fen);
break;
case2:
shi++;
if(shi==24)
shi=0;
write_sfm(4,shi);
break;
}
}
}
if(Num_down==0)//数值的减操作
{
delay(5);
if(Num_down==0)
{
while(!
Num_down);
if(set_alarm_flag==1&&Next_num==0)
Next_num+=2;
switch(Next_num)
{
case0:
miao--;
if(miao==-1)
miao=59;
write_sfm(10,miao);
break;
case1:
fen--;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 可调 数字 闹铃 本科 毕业设计