版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 单片机系统设计课程设计总 结 报 告题目: 单片机电子时钟的设计与实现 设计人员: 学号: 系别: 班级: 同组人员姓名: 指导老师: 日期:2012年1月13日单片机电子时钟的设计与实现摘要:红外传感器是传感器中常见的一类,由于红外传感器是检测红外辐射的一类传感器,而自然界中任何物体只要其稳定高于绝对零度都将对外辐射红外能量,所以红外传感器称为非常实用的一类传感器,利用红外传感器可以设计出很多实用的传感器模块,如红外测温仪,红外成像仪,音频传输系统,自动门控制系统等。关键词:红外传感器 音频传输 LM386一、整体设计图1 时钟框图1、电子时钟整体思想原理:该时钟利用单片机最小系统、DS1
2、302寄存器、LCD液晶屏等构成电子时钟最基本的硬件电路。在软件程序中的年、月、日直接调用DS1302,时、分、秒利用定时器T0定时,每隔50ms产生一次中断,中断20次(1s)后秒单元加1;秒满60后向分进1,分单元加1;当分单元满60后时单元向小时加1。但由于每次执行程序时,定时器都要重新赋初值且实时将数据存入DS1302中,开机读取存放在存储器中的数据。为保证时钟在外部供电电压不足或突然掉电等突发情况下仍能正常工作和掉电记时,芯片内部包含锂电池。当突然掉电时,系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备下次开机读取正确的时间。2、
3、电子时钟结构如图1所示,此时钟由STC89C51、 LCD1602液晶屏、 DS1302寄存器、4个按键、蜂鸣器等电路构成。STC89C51作为整个系统的CPU,控制整个系统正常的运行。LCD1602液晶屏第一行显示时钟的年、月、日,第二行显示时钟的时、分、秒。单片机开机时,自动读取ds1302的时间初始化时分秒。之后由单片机的定时器产生基准时间信号开始计时。本设计具有时钟功能,在掉电情况下能完成时钟的正常运行。四个按键用来完成时钟的设置,按键1为功能选择键,可分别进入调节1602的时钟的年、月、日、星期、小时和分钟。按键2为数字加一键。按键为预留键,按键4为硬件系统复位键。蜂鸣器用来整点报时
4、,报时30秒后,自动关闭。二、硬件单元电路设计1、单片机最小系统单片机最小系统电路如图2所示,电路包括单片机、外部晶振、复位电路、外界上拉电阻等。图2 单片机最小系统2、LCD1602显示电路显示单元电路如图3所示,第一行显示日期,第二行显示时、分、秒以及星期。1602的工作电压为4.55.5v工作电流为2.0mA(5.0v),所以采用2K的限流电阻图3 LCD1602显示电路4、 时钟按键电路时钟按键电路如图4所示,电路中共有3个按键。S3为功能键,调整年、月、日、时、分、秒以及星期。第一次按下,光标在秒处闪烁,继续按下分别在秒、分、时、星期、月、日、年轮流闪烁。闪烁处,便可以对其数据进行更
5、改。当按到年闪烁后,再按下一次时,便推出了调系统。S4为加一键。S5键为系统复位键,按下后系统将对时间设为初始化时间。 图4 时钟按键电路5、蜂鸣器电路蜂鸣器电路电路如图5所示,蜂鸣器的正极接到vcc(+5V)的电源上面,蜂鸣器负极接到三极管的发射极E,三极管的基极B经过限流电阻R7后由单片机的P13引脚控制,当P13输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声。当P13输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。不同的方波频率,使得蜂鸣器发出音调不同的声音。本系统在时钟的分、秒都为0的时候,通过P13输出一个频率的方波信号,经过9013(NPN)的电流放大,
6、驱动蜂鸣器发声,做整点报时的功能。报时30秒后,自动关闭。图5 蜂鸣器电路6、 DS1302电路DS1302电路如图6所示,该芯片外带32.768k的晶振,在外设纽扣电池(3v)的电压下独立工作,不受到CPU的影响。因此具备cpu掉电能够保存数据的功能。时钟引脚须上拉电阻。DS1302的宽范围工作电压为2.05.5V,工作电流 2.0V 时,小于300nA,因此用4.7K的上拉电阻。图6 DS1302电路三、程序设计1、主程序流程图主程序如图7所示,主程序包含:单片机初始化、按键扫描程序、显示子程序、蜂鸣器程序。单片机初始化主要功能是LCD的初始化、DS1302初始化、定时器初始化,读取DS1
7、302寄存器,等待下一次中断请求。按键扫描程序的功能是用来完成时钟的设置,通过外接键盘可分别进入调节1602的时钟的年、月、日、星期、小时和分钟。数据写入DS1302寄存器。显示子程序的功能是将数据显示于LCD液晶屏上。蜂鸣器程序的功能是当整点时,蜂鸣器闹铃30秒并自动停止。图7 主程序2、中断程序流程图中断程序如图8 所示,T0中断程序流程图定时器发送中断请求则程序进入中断服务子程序中。定时器T0定时50ms,循环20次即1s秒钟加1,秒钟加满60则秒清零同时分钟加1;分钟加满60则分钟清零小时加1;小时加满24则小时清零;程序返回主程序。图8 中断程序3、按键扫描流程图按键扫描如图9所示,
8、程序运行时,先判断功能键sf是否已经按下,在确认按下后就将时钟停止并将功能键sfcount加1,根据键值的值不同而分别让对应的数字闪动。然后判断是否按下增加调节键,若按下则让相应的数据增加1,当功能键sfcount等于8时则退出调节,将所有数据存入ds1302和time1表中,更新调节后的时间程序继续运行。图9 按键扫描4、LCD显示子程序流程图LCD显示如图10所示,程序进入LCD显示子程序流程图,。LCD进行初始化,单片机在非忙时对LCD进行写命令、写数据,显示在LCD屏幕上。图10 LCD显示程序 5、整点闹铃流程图闹铃流程如图11 所示,当程序运行时就对当前时间进行判断,当整点且秒钟小
9、于30秒时,就让闹铃响起来,否则就返回到主程序中, 图11 整点闹铃四、调试与结果 在PCB电路图完成之际,进行烧写程序,发现程序没法烧进去。我先检查电路原理图,没发现错误,再检测各芯片的电源线和地线是否接触良好,发现外部时钟电路一个30pF的电容接触不良,焊好后,就能成功的把程序烧进去了。 在蜂鸣器整点报时的时候,蜂鸣器的声音很小。通过分析其具体电路,对比其实际参数和理论参数时发现驱动电流太小了,即基极加的电阻太大了。换了个较小的电阻,声音就变大了。利用定时器中断产生1秒定时用于时钟计时,发现实际时间比理论定时时间慢,后面发现由于主程序中的子程序运行产生延迟时间不能一直处于等待中断状态,使得
10、计时缓慢,最后通过软硬调试提高定时器初值使得实际能够更接近于1s定时。实物图如图所示:实物图1实物图2最后整个实验圆满结束,达到最先课程设计功能要求,能够正常显示时间、按键调节时间、整点报时和掉电记忆功能。心得体会:在本次的课程设计中,我感觉最大的就是查阅了大时量的设计资料,了解了许多芯片的内部功能,及在设计过程中才发现自己原来还有好多不懂得的知识点,以前一知半解的学问用起来就真不管用了。还有一个看似小小的程序,可能会让你调试上几百遍才能最终成功运行。想要获得最终的成功,坚定的毅力和决心是必不可缺的。参考文献(1) 兰吉昌.电子工程设计与应用百例系列-51单片机应用设计百例,化学工业出版社,2
11、009. (2)谢嘉奎.电子线路M 高等教育出版社2003.(3)丁辉,姚庆文.实用单片机电子钟的设计. 2003年合订本(4)方怡冰.单片机课程的教学与实验改革 J -电气电子教学学报2006. (5)邢小杰.单片机电子时钟设计,【J】中国科技博览,2009 年4期(6)马庆勇,吴中明.基于单片机的多功能时钟控制电路,【J】电子科技,2009年3期附录 1、系统电路原理图系统电路原理图2、整机PCB电路图 3、元器件清单:名称型号数量电阻1K12K112k14.7K310K1电解电容10u1晶振12M132.768K1瓷片电容30P2液晶显示器16021STC89C80511蜂鸣器BUZZE
12、R1插针2排底座41p1时钟芯片DS13021三极管90131+5v开关电源POWER1独立按键SW-PB4纽扣电池3V1应用程序清单:#include#include#define uchar unsigned char#define uint unsigned int#define DEC2BCD(X) (X/10)4)*10 + (X&0x0F) /用于将BCD码转成十进制的宏void write_com(uchar com);void write_data(uchar dat);void init();void write_wCome();void write_time(uchar a
13、dd,uchar dat);void write_xingqi(uchar dat) ;void write_riqi(uchar add,uchar dat);void write_byte(uchar dat);uchar read_byte();void s_write(uchar add,uchar dat);void s_write(uchar add,uchar dat);uchar s_read(uchar add);void set_ds1302(uchar *pClock);void rw_ds1302();void keyscan();uchar data table=20
14、 - - ;uchar data table1= : : ;uchar code wCome=SYS:Clock By: Du Fan Chen;uchar code xingqi=Mon Tue Wed Thu Fri Sat Sun ;uchar code time=0x00,0x00,0x00,0x00,0x00,0x2,0x10;uchar data time1=0x00,0x00,0x00,0x00,0x00,0x2,0x10;uchar hour,min,sec,week,day,month,year;uchar num,sfcount,flag,flag1=0,flag2,s_s
15、top=0,readtime=0;uchar mstcnt=0;/定时器计数,定时50ms,mstcnt满20,秒加1sbit ds1302_sclk=P25;sbit ds1302_io=P26; /ds1302 端口sbit ds1302_ce=P27;sbit acc0=ACC0;sbit acc7=ACC7;sbit lcdrs=P10; /端口定义sbit lcdrw=P11;sbit lcde=P12;sbit le=P3 6;sbit leden=P25;sbit dkle=P37;sbit b=P13;/报时端口sbit sf=P15; /功能键sbit sup=P16;/调时
16、间增加按键sbit shift=P17; /空键sbit P2_0 = P25 ;void delay(uint a);void delay1(uint a);void bz(int co,int h,int l);void keyscan();/*- 主函数-*/void main() /main函数 b=0; s_write(0x8e,0x80); /定时器初始化 TMOD |= 0x01; /time0为定时器,方式1 TH0=0x58; /预置计数初值,50ms TL0=0x37; EA=1; /总中断开 ET0=1; /允许定时器0中断 TR0=1; /开启定时器0 init();
17、while(1) keyscan(); if(flag=0&readtime=1) readtime=0; rw_ds1302(); if(sec=30&min=0&sfcount=0)/报时条件:整点和处于非调时状态 bz(60,1,1); /*- 定时器中断子程序-*/void INT_time(void)interrupt 1 using 1 TH0=0x58; /重新赋值 12M晶振计算,指令周期1uS, TL0=0x37; mstcnt+; /用于计算时间,每隔50ms加1/时间处理if(mstcnt=20)/mstcnt满20即为一秒readtime=1;if(s_stop=0)s
18、ec+; elsesec=sec; if(sec=60) sec=0;min+;if(min=60)min=0;hour+;if(hour=24)hour=0;mstcnt=0; /对计数单元的清零,重新开始计数/*-*/void init() s_write(0x90,0xa5); delay(5); lcde=0; /LCD1602初始化 le=0; leden=0; write_com(0x38); delay(100); write_com(0x38); delay(50); write_com(0x38); delay(10); write_com(0x08); write_com(
19、0x01); write_com(0x0c); write_wCome(); write_com(0x80+3); for(num=0;num15;num+) write_data(tablenum); write_com(0x80+0x40); for(num=0;num8;num+) write_data(table1num); /读取DS1302数据一次 EA=0; sec=s_read(0x81); write_time(6,sec); write_com(0x80+0x40+7); min=s_read(0x83); write_time(3,min); write_com(0x80
20、+0x40+4); hour=s_read(0x85); write_time(0,hour); write_com(0x80+0x40+1); week=s_read(0x8b); write_xingqi(week); write_com(0x80+0x0d); day=s_read(0x87); write_riqi(8,day); write_com(0x80+9); month=s_read(0x89); write_riqi(5,month); write_com(0x80+6); year=s_read(0x8d); write_riqi(2,year); write_com(0
21、x80+3); EA=1; void write_wCome() /开机信息显示int num;delay(1); write_com(0x80+3); for(num=0;num9;num+) write_data(wComenum); delay(100); delay(5); write_com(0x80+0x40); for(num=10;num26;num+) write_data(wComenum); delay(50); delay(300); write_com(0x01);void bz(int co,int h,int l)int i;for(i=1;i0;i-) ds13
22、02_io=acc0; ds1302_sclk=1; ds1302_sclk=0; ACC=ACC1; uchar read_byte() /读出一个字节 uchar i; for(i=8;i0;i-) ACC=ACC1; acc7=ds1302_io; ds1302_sclk=1; ds1302_sclk=0; return(ACC); void s_write(uchar add,uchar dat)/单字节写入子函数 ds1302_ce=0; ds1302_sclk=0; ds1302_ce=1; write_byte(add); write_byte(dat); /0x80-0x00
23、ds1302_sclk=1; ds1302_ce=0;uchar s_read(uchar add) /单字节读出子函数 uchar temp; ds1302_ce=0; ds1302_sclk=0; ds1302_ce=1; write_byte(add); temp=read_byte(); ds1302_sclk=1; ds1302_ce=0; temp=BCD2DEC(temp); return(temp); void set_ds1302(uchar *pClock) /设置ds1302的时间 uchar i; uchar add=0x80; EA=0; s_write(0x8e,0
24、x00); for(i=7;i0;i-) s_write(add,*pClock); pClock+; add+=2; s_write(0x8e,0x80); EA=1;void rw_ds1302() /读写ds1302 EA=0; write_time(6,sec); write_com(0x80+0x40+7); write_time(3,min); write_com(0x80+0x40+4); write_time(0,hour); write_com(0x80+0x40+1); week=s_read(0x8b); write_xingqi(week); write_com(0x80+0x0d); day=s_read(0x87); write_riqi(8,day); write_com(0x80+0x0c); month=s_read(0x89); write_riqi(5,month); write_com(0x80+9); year=s_read(0x8d); write_riqi(2,year); write_com(0x80+6); EA=1;void write_com(uchar com) /写命令子函数 lcde=0; lcdrw=0; lcdrs=0; delay(1); lcde=1; delay(1); P0=com; delay(1);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年陕西中医药大学第二附属医院医护人员招聘笔试参考题库及答案详解
- 2026年厦门第一医院杏林院区医护人员招聘笔试参考题库及答案详解
- 2026年宁夏回族自治区人民医院医护人员招聘考试备考试题及答案详解
- 2026年江阴市人民医院医护人员招聘笔试参考试题及答案详解
- 2026年江苏省苏北人民医院医护人员招聘考试参考题库及答案详解
- 2026年舟山医院医护人员招聘考试备考试题及答案详解
- 2026年三六三医院医护人员招聘笔试备考试题及答案详解
- 2026年解放军第九四医院医护人员招聘笔试参考题库及答案详解
- 2026年辽源市中医院医护人员招聘笔试备考试题及答案详解
- 2026年洛阳市第三人民医院医护人员招聘考试备考试题及答案详解
- 贵州省黔东南苗族侗族自治州从江县下江中学2024-2025学年度七年级下学期期末生物学试卷(文字版含答案)
- 物业防疫消毒管理制度
- JG/T 338-2011建筑玻璃用隔热涂料
- T/CECS 10214-2022钢面镁质复合风管
- T/CCS 032-2023矿井智能化通风系统建设技术规范
- 肺胀(慢阻肺)的中药治疗
- 古代文学与语文教学课件 6.1鄧小軍-杜甫与儒家的人性思想和政治思想学习资料
- T-CHSA 092-2024 口腔全瓷修复材料应用专家共识
- GB/T 45191-2025桑蚕一代杂交种
- 学校“1530”安全教育记录表(2024年秋季全学期)
- 2023年贵州贵阳国家高新区选聘事业单位工作人员笔试真题
评论
0/150
提交评论