基于单片机的可调时数字闹铃毕业设计.doc_第1页
基于单片机的可调时数字闹铃毕业设计.doc_第2页
基于单片机的可调时数字闹铃毕业设计.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 页 共 页摘 要随着社会的发展、科技的进步,各种方便于生活的电子产品开始进入了人们的生活,电子时钟就是其中之一。他已经成为了人们日常生活中的必需品,广泛用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学校、工作、娱乐带来了极大的方便。本设计采用stc89c52为微处理器,通过lcd1602液晶显示当前日期、时间。系统还具有对日期、星期、时间及闹铃的设置功能。经测试,本设计能实现基本的数字时钟功能。具有外围电路简单、成本低、易操作的特点。考虑到成本,计时及数据处理均由单片机处理。关键词:51单片机;数字时钟;lcd1602;可调时闹铃abstract:with the development of society, the progress of science and technology, all kinds of convenience in life of electronic products began to enter into peoples life, electronic clock is one of them.it has become the people daily lifes necessities, widely used in family, station, wharf, theatres, offices and other places, to peoples lives, school, work, entertainment brought great convenience.this design uses microprocessor stc89c52, through the lcd1602 liquid crystal display the current date and time.the system also has the function setting date, week, time and alarm.according to the test, this design can achieve the basic digital clock function. with peripheral circuit is simple, low cost, easy to operate features. considering the cost, time and data processing were determined by single chip microcomputer processing.key words:51 scm; digital clock; lcd1602;time adjustable alarm 第 页 共 页目 录引言 11 设计思路及流程 11.1 功能分析 11.2 系统模块图 12 硬件电路 22.1 主要器件 22.1.1 stc89c5单片机 22.1.2 lcd1602液晶 33 电路原理图 53.1单片机电路53.2 电源指示电路 53.3 按键电路 63.4 闹铃电路 63.5 lcd电路 64 程序设计 74.1 程序设计内容 74.2 c语言源程序 75 心得体会 8谢辞 9参考文献 10附录 11 第 24 页 共 25 页引言 电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。随着技术的发展,人们已不再满足于钟表原先简单的报时功能,希望出现一些新的功能,诸如日历的显示、闹钟的非接触式止闹跑表功能、重要日期倒计时显示等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。因此,研究实用电子钟的应用,有着非常现实的意义,具有很大的实用价值。由于数字集成电路技术的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。现在市场上已有现成的电子钟集成电路芯片出售,价格便宜,使用也灵活,如可以随意设置时、分、秒的输出,改变显示数字的大小等,并且由于集成电路技术的发展,特别是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显示。 图12 硬件电路 2.1 主要器件 系统中主要可编程器件为stc89c52rc单片机,外围器件包括:蜂鸣器,lcd1602液晶。2.1.1 stc89c52单片机stc89c52是由宏晶科技生产的一种低功耗、高性能cmos8位微控制器,具有 8k 在系统可编程flash存储器。在单芯片上,拥有灵巧的8 位cpu 和在系统可编程flash,使得stc89c52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节flash,512字节ram, 32 位i/o 口线,看门狗定时器,内置4kb eeprom,max810复位电路,2个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外stc89c52 可降至0hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu 停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下, 图2.1ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35mhz,6t/12t可选。引脚分布图见图2.1。2.1.2 lcd1602液晶 1602液晶也叫1602字符型液晶(见图3),它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5x7或者5x11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用 图2.2自定义cgram,显示效果也不好)。 1602lcd是指显示的内容为16x2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。(1)接口信号说明(图2.2.1)图2.2.11602采用标准的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.63 电路原理图按照功能模块框图,电子钟分为按键电路、显示电路、闹铃电路以及单片机相关电路。且单片机电路是整个系统的主控电路。3.1 单片机电路单片机电路主要由单片机电路(图3.1)、震荡电路组成。电路图如下:图3.1震荡电路(图3.1左)及复位电路(图3.1右)图3.1p2口的p2.0p2.3用于接按键。p3.5用于接蜂鸣器。p0口用于接lcd1602的714口。p2.5、p2.6、p2.7分别接lcd的rs、rw、en口。3.2 电源指示电路(图3.2)由一个led指示电源接通状态。图3.23.3 按键电路(图3.3左)由于外部设备并不复杂,为方便布线,采用独立按键。3.4 闹铃电路(图3.3中)闹铃电路用于提供闹铃报警,主要由蜂鸣器构成。单片机通过控制三极管的导通与截止,从而控制蜂鸣器的鸣叫。3.5 lcd电路(图3.3右)图3.3由可调电阻调节lcd背光亮度以达到显示清晰。4 程序设计4.1 程序设计内容(1)由单片机内部计数器模拟时钟的走时,通过内部中断返回信息。(2)按键扫描程序。(3)处理数据并输出给1602显示程序。(4)蜂鸣器控制程序。4.2 c语言源程序源程序及流程图参见附录。5 心得体会本次课程设计从选题到最后的实际成型经历了近一个多星期,中间的过程并不一直都很顺利。虽然接触单片机也有半年的时间了,自己实际动手完整的完成一个小项目,这还是第一次。从选题、确定方案、仿真、绘图再到绘制pcb以及制版,中间需要收集许多资料,在阅读资料的过程中找到了理论与实际应用的结合点,这引起了我极大的兴趣。为确保实际成品的成功,我借用了proteus仿真软件进行仿真,这极大的提高了设计及调试的效率。程序的调试是一个相对缓慢的过程,这中间不断会有新的想法涌现。在达到目标功能的前提下,我尽量地优化程序,希望达到更高的效率。由于受到自身知识水平的限制,虽然尽了最大努力,最终成型的程序满足基本要求但并未达到自己的期望的地步,稍有遗憾。通过这次课程设计,我深切的体会到理论与应用之间还是存在很大的差距。将理论应用到实际,其中的过程可能并不如自己想象的顺利。但当顺利地完成自己设想的效果时,会发现最大的乐趣就是解决问题的过程。谢 辞平时忙于学习,很少有机会自己实际动手进行一些小的电子制作。感谢学院提供这样一个让我们亲自动手的机会,同时也十分感激*老师对我们的理解,开放性的题目给了我们更多的发挥空间。操作过程中我得到了同学的耐心帮助。在我遇到难题时,是他们给了我好的想法,有了他们的帮助这个制作才得以顺利完成,在此一并表示感谢。参考文献1 郭天祥.新概念51单片机c语言教程m.电子工业出版社,2009,147156.2 刘坤、赵洪波、张宪栋.51单片机c语言应用开发技术大全m.人民邮电出版社,2012,5305393 贺敬凯、刘德新、管明祥.单片机系统设计、仿真与应用基于keil和proteus仿真平台m.西安电子科技大学出版社,2011,137150.附 录pcb布线图(附图1)附图1proteus仿真图(附图2)程序流程图(附图3):附图3c语言源代码/*程序说明:可调时闹铃*/#include#define uchar unsigned char#define uint unsigned intuchar code table0= 2000-00-00 mon ;uchar code table1= 00:00:00 ;uchar count;uint alarm_time2=55,55;uint time_buff2=61,25;/给初值超过小时和分钟的范围,避免闹铃时间在00时的冲突char shi,fen,miao;char year_h,year_l,month,day;sbit bell=p35;sbit rs=p25;sbit rw=p26;sbit lcd_en=p27;sbit set=p20;sbit next=p21;/next键指示修改位置sbit num_up=p22;/修改位数字加sbit num_down=p23;/修改位数字减/*延时程序1ms*/void delay(uint ms)uint i,j;for(i=ms;i0;i-)for(j=120;j0;j-);/*lcd的写数据和写指令程序段*/void write_com(uchar com)rs=0;p0=com;delay(5);lcd_en=1;delay(5);lcd_en=0;void write_data(uchar date)rs=1;p0=date;delay(5);lcd_en=1;delay(5);lcd_en=0;/*写入时、分、秒、星期、年月日*/void write_sfm(uchar add,uchar date)uchar shi,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);void write_week(uchar week)/写入星期write_com(0x80+12);switch(week) case 1: write_data(m); delay(5); write_data(o); delay(5); write_data(n);break;case 2:write_data(t);delay(5);write_data(u);delay(5);write_data(e);break;case 3:write_data(w);delay(5);write_data(e);delay(5);write_data(n);break;case 4:write_data(t);delay(5);write_data(h);delay(5);write_data(u);break;case 5:write_data(f);delay(5);write_data(r);delay(5);write_data(i);break;case 6:write_data(s);delay(5);write_data(a);delay(5);write_data(t);break;case 7:write_data(s);delay(5);write_data(u);delay(5);write_data(n);break; void write_nyr(uchar add,uchar date)/写入年、月、日格式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); /将游标返回/*/*键盘检测*/void keyscan_set_sfm(set_alarm_flag)/当设置到分秒修改检测next,num+,num-uchar next_num;while(set)if(next=0)delay(5);if(next=0)while(!next);next_num+;switch (next_num)case 1: write_com(0x80+0x40+7);/分钟位break;case 2:write_com(0x80+0x40+4);/小时位if(set_alarm_flag=1)/调闹铃模式下跳过秒位的调节next_num=0;break;case 3: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)case 0: miao+;if(miao=60)miao=0;write_sfm(10,miao);break;case 1:fen+;if(fen=60)fen=0;write_sfm(7,fen);break;case 2: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)case 0:miao-;if(miao=-1)miao=59;write_sfm(10,miao);break;case 1:fen-;if(fen=-1)fen=59;write_sfm(7,fen);break;case 2:shi-;if(shi=-1)shi=23;write_sfm(4,shi);break;if(set_alarm_flag=0)/非调闹铃模式time_buff0=fen;/将原数据保存,送缓冲区time_buff1=shi;elsealarm_time0=fen;alarm_time1=shi;fen=time_buff0;/闹铃时间设定完成后将原数据送回给时钟shi=time_buff1;write_sfm(7,fen);write_sfm(4,shi);void keyscan_set_week()uchar week_count;while(set)/当set键未按下则进入week检测if(num_up=0)delay(5);if(num_up=0)while(!num_up);week_count+;switch (week_count%7)case 1: write_week(1);break;case 2: write_week(2);break;case 3: write_week(3);break;case 4: write_week(4);break;case 5: write_week(5);break;case 6: write_week(6);break;case 0: write_week(7); break;write_com(0x80+12);if (num_down=0)delay(5);if(num_down=0)while(!num_down);week_count-;if (week_count=-1)week_count=7;switch(week_count%7)case 1: write_week(1); break;case 2: write_week(2);break;case 3: write_week(3);break;case 4: write_week(4);break;case 5: write_week(5);break;case 6: write_week(6);break;case 0: write_week(7);break;write_com(0x80+12);void keyscan_set_nyr()/用按键设置年月日uchar next_num;year_h=20;while(set)if(next=0)delay(5);if(next=0)while(!next);next_num+;switch(next_num)case 1:write_com(0x80+6);break;case 2:write_com(0x80+3);break;case 3:write_com(0x80+1);break;case 4:write_com(0x80+9);next_num=0;break;if(num_up=0)/加操作delay(5);if(num_up=0)while(!num_up);switch(next_num)case 0: day+;if(day=32)day=1;write_nyr(9,day);break;case 1:month+;if(month=13)month=1;write_nyr(6,month);break;case 2:year_l+;if(year_l=100)year_l=0;write_nyr(3,year_l);break;case 3:year_h+;if(year_h=100)year_h=0;write_nyr(1,year_h);break;if(num_down=0) /减操作delay(5);if(num_down=0)while(!num_down);switch (next_num)case 0:day-;if(day=-1)day=31;/当一开始便对day位进行减操作时,调节显示信息if(day=0)day=31;write_nyr(9,day);break;case 1:month-;if(month=-1)month=12;if(month=0)month=12;write_nyr(6,month);break;case 2:year_l-;if(year_l=-1)year_l=99;write_nyr(3,year_l);break;case 3:year_h-;if(year_h=-1)year_h=99;write_nyr(1,year_h);/*总的按键检测程序*/void keyscan()uchar set_num;if(set=0)delay(5);if(set=0)while(!set); /松手检测tr0=0;/关闭计数器中断set_num+;switch (set_num)case 1:write_com(0x80+9);write_com(0x0f);keyscan_set_nyr();/修改年、月、日break;case 2:write_com(0x80+12);/修改星期keyscan_set_week();break;case 3:write_com(0x80+0x40+10);/进入修改时分秒模式keyscan_set_sfm(0);break;case 4:write_com(0x80+0x40);/设置闹铃模式write_data(a);write_data(r);write_com(0x80+0x40+10);write_data( );write_data( );write_com(0x80+0x40+4);keyscan_set_sfm(1);break;case 5:write_com(0x80+0x40);/推出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论