毕业设计液晶显示时间控制器的设计_第1页
毕业设计液晶显示时间控制器的设计_第2页
毕业设计液晶显示时间控制器的设计_第3页
毕业设计液晶显示时间控制器的设计_第4页
毕业设计液晶显示时间控制器的设计_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

液晶显示时间控制器设计LiquidCrystalDisplayTimeControllerDesign学生姓名:岳维启学生学号:10780220专业名称:电子信息科学与技术指导教师:孙莹光(副教授)计算机与信息工程学院2014年6月10日

独创性声明本人声明所呈交的毕业设计(论文)是本人在指导教师指导下进行的研究工作和取得的研究成果,除了文中特别加以引用标注之处外,论文中不包含其他人已经发表或撰写过的研究成果,没有伪造数据的行为。毕业设计(论文)作者签名:签字日期:年月日毕业设计(论文)版权使用授权书本毕业设计(论文)作者完全了解学校有关保留、使用论文的规定。同意学校保留并向有关管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权天津城建大学可以将本论文的全部或部分内容编入有关数据进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本论文。(保密的毕业设计(论文)在解密后适用本授权说明)毕业设计(论文)作者签名:指导教师签名:签字日期:年月日签字日期:年月日

摘要现如今单片机系统已经普遍于我们的生活,电磁炉、微波炉、冰箱、空调等,凡是有控制面板和遥控器的基本上都内嵌有单片机模块。而时间控制器是应用于民用、军用一种非常常见的控制模块,小到家电,大道大型机械,甚至军用设备都有它的身影。时间控制器常用于作息控制,比如上课下课的闹铃,控制生产机械的定时开与关,这就是可编程时间控制器应用广泛的地方。可编程控制器是一种全天候可以不用人在旁边驻守的一种自动控制的模块,它可以大大节省人力、物力以及时间,可以大大的提升工作效率可以减少不必要的工作。时间控制器可以用于每天分时段的设备开与关,以及当前日历与时间的显示。时间控制器大多都是稳定性强,精度较高,具有不错的抗干扰性,可以在严酷条件下工作,可以嵌入到定时采集信息的仪器中去。本文所设计的时间控制器可以精确定时20个时间的控制以及显示日历时间温度等信息,还可以显示下个控制时刻,以及通过按键改变时间控制的时间和拥有倒计时功能。时间控制器可以应用于自动化生产线,提高生产效率,减少控制的大量重复性劳动,本文是对时间控制器整个设计工作的较全面的介绍及总结。关键词:时间控制器;控制;定时;输入输出

ABSTRACTNowadaysSCMsystemhasbeencommoninourlife,suchasinductioncooker,microwaveoven,refrigerator,airconditioner,thosewhohaveacontrolpanelandremotecontrolofbasicallywithembeddedMCUmodule.Andtimecontrollerisakindofverycommonusedincivilianandmilitarycontrolmodule,smalltohomeappliance,avenuelargemachines,andevenmilitaryequipmenthasitsshadow.Classtimecontrollerusedtoschedulecontrol,suchasaclassofalarm,controlintheproductionofmechanicaltimingonandoff,thisistheplacewheretimeprogrammablecontrollerisusedwidely.Programmablecontrollerisakindofall-weathercannotbesideofchooseandemploypersonsstationedakindofautomaticcontrolmodule,itcangreatlysavemanpower,materialresourcesandtime,cangreatlyimprovetheworkefficiencycanreduceunnecessarywork.Timecontrollercanbeusedineveryperiodoftimeoftheequipmentonandoff,andthecurrentcalendarandtimedisplay.Mostoftimecontrollerarestrongstability,highprecision,hasagoodanti-jamming,canworkunderharshconditions,canbeembeddedintotiminginstrumentofgatheringinformation.Inthispaper,thedesignedcontrollercanprecisetiming20timeinformationsuchasthetemperaturecontrolanddisplaythecalendartime,canalsodisplaythenextmomentcontrol,andbythetimeofkeychangecontrolandhasacountdownfunction.Timecontrollercanbeusedintheautomaticproductionline,improvetheproductionefficiency,reducethecontrolofalargenumberofrepetitivework,thisarticleistotimecontrollerisrelativelycomprehensiveintroductionandsummaryofthewholedesignwork.Keywords:timecontroller;control;timing;inputandoutput

目录TOC\o"1-3"\h\u10169第一章绪论 致谢时光如梭,曾经欣喜自己考上大学的我眨眼间将要离开了在此学习生活了四年的大学,说实话我的内心充满了不舍和眷恋,虽然我是一个怀旧的人,但是我需要往前看,马上要步入职场的我对此并不慌张和彷徨,我坚信人生就像一场旅程,我只是从一个歇脚的地方踏上新的旅途,我将会把我学到的知识学以致用,并且我相信我一定会活到老学到老,一直补充着自己的不足,和学习新的知识。眨眼间两个月的时间就要过去了,从我接到论文题目和任务书,到系统的论证,硬件的完成,软件的一遍遍修改、调试,以及最终的系统实现功能,再到论文的准备,查找资料、文献,一个字一个字的往论文上打字,无数遍的修改最终完成了毕业论文。虽然我的论文比较生疏和毕业设计比较粗糙,但是是我辛苦两个月的成果,当我拿着成果看的时候,我的内心是充满了喜悦的,就好似父母看待自己孩子一样,从无到有,有着那种满足的成就感。说道此我不得不感谢这四年来学校老师的培养,是您们的辛苦与汗水浇灌了我们这些小树茁壮成长为一棵棵大树,您们不光教授了我们知识,还教授了我们做人的道理,培养了我们自己的创造性思维,和自己独立思考的能力,以及对整体的规划、安排、实现的能力。在此特别感谢我的指导老师孙莹光教授,他从大二期间教授我们单片机知识、计算机硬件知识,到最后毕业设计我找到了孙莹光教授作为我的指导老师,孙莹光教授教学严谨,专业能力强,教授我很多知识,在我卡壳的时候给予了我许多的帮助,一步步指导我完成我的毕业设计,在此再次感谢您孙莹光老师。在此感谢我的父母这四年来对我的鼓励和支持,每次拿着生活费我都会想到这些是父母辛辛苦苦的血汗钱。在此感谢您们的从小到大的抚养教育,对于我文化科学知识启迪的培养,让我在彷徨灰心的时候,给与我心灵的港湾。在以后的日子里,我会更加的努力的学习工作,好好的孝顺您们。在此感谢这四年我的同窗们,这四年我们互相帮助,互相学习,互相进步,一起走过这四年的风风雨雨,我会好好真心珍藏这份美好的回忆。在此感谢我这四年的室友们,虽然大家都有着种种不同的生活习惯,但是由于缘分我们聚在了一起,我们互相容忍别人的缺点,互相鼓励、帮助和学习,过了这大学四年,我会说一句好哥们珍重。在此特别感谢我的同学翟菲菲同学,他给予了很多关于学习和毕业设计的帮助,把从一个单片机小白的我变为了一个单片机菜鸟,真心谢谢你。最后了,在此我只能说一句自此海阔凭鱼跃,天高任鸟飞,祝愿我们未来一切顺利,越来越好。参考文献参考文献[1]STC12C5A60S2系列单片机器件手册[S],/index.htm.[2]张毅刚,单片机原理及应用[M],高等教育出版社,2006.[3]李华,MCS-51系列单片机实用接口技术[M],北京航空航天大学出版社,1993.[4]何立民,单片机应用系统设计[M],北京航空航天大学出版社,1990.[5]高鹏、安涛等,电路设计与制版Protel99入门与提高[M],人民邮电出版社,2000.[6]字符液晶模块说明书[S].[7]陈勇,DS12887实时时钟芯片及其应用[J],电子世界,1998(2)0:39-40.[8]张义和,王敏男等.例说51单片机[M],人民邮电出版社,2008.[9]周华兴,实时时钟芯片DS12887特点与应用[J],电子世界,2005(7):47-48.[10]单片机STC12C5A60S2资料[S],/jichuzhishi/datasheet/STC12C5A60S2/MCU/185549.html[11]郭凌、姚大红,新型实时时钟芯片DS12887原理及应用[D],2006[12]百度百科单片机芯片资料[Z],/view/1012.htm?fr=aladdin[13]简单介绍几种常见的单片机/News/view/id/2.html[14]鲁广英.基于单片机电子万年历的设计与实现[J].硅谷.2010(12)[15]吴瑰丽,刘建华,崔玉洁.单片机与时钟芯片DS12C887的接口设计[J].石家庄铁路工程职业技术学院学报.2004(02)[16]赵亚转.浅谈单片机应用与单片机芯片——兼对八位单片机学习的感想[J].科技传播.2010(08)[17]齐婉玉,孟英红,沈满.用DS18B20进行温度检测的方法与技巧[J].仪器仪表学报.2003(S2)[18]Joe-AirJiang.Applicationofaweb-basedremoteagro-ecologicalmonitoringsystemforobservingspatialdistributionanddynamicsofBactroceradorsalisinfruitorchards.[J].PrecisionAgriculture,2013,14(3)[19]BlackAM.Progressinnon-invasiverespiratorymonitoringusinguncalibratedbreathingmovementcomponents..[J].PhysiologicalMeasurement,2001,22(1)附录附录#include<STC12C5A60S2.h>#defineuintunsignedint#defineucharunsignedcharsbitbeep=P1^2;sbits1=P1^0;sbits2=P1^1;sbits3=P1^2;sbits4=P1^3;sbitrs=P2^0;sbitrw=P2^1;sbitlcden=P2^7;sbitrd=P3^7;sbitwr=P3^6;sbitdsirq=P3^2;sbitdsas=P4^5;sbitdscs=P2^6;sbitDQ=P1^7;bitflag1,flag_ri;//定义两个位置变量uinttvalue;uchartflag;ucharcount,s1num,flag,t0_num;ucharxdatasavetimer[20];charmiao,shi,fen,year,month,day,week,nmiao,nshi,nfen;ucharcodetable[]="20--";//液晶固定显示内容ucharcodetable1[]="::";voidwrite_ds(uchar,uchar);voidset_alarm(uchar,uchar,uchar);voidread_alarm();ucharread_ds(uchar);voidset_time();voiddisplay();ucharread_temp();voidsave_timer();voiddelay(uintz){uintx,y;for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddi(){beep=0;delay(100);beep=1;}voidsave_timer(void){unsignedchari;a=nshi*60+nfensavetimer[times]=a;times++;if(20<=times)times=0;}voiddelay1(uinti){ while(i--);}voidwrite_com(ucharcom){//写液晶命令函数rs=0;rw=0;lcden=0;rd=0;wr=0;P0=com;delay(3);lcden=1;delay(3);lcden=0;}voidwrite_date(uchardate){//写液晶数据函数rs=1;rw=0;lcden=0;rd=0;wr=0;P0=date;delay(3);lcden=1;delay(3);lcden=0;}voidwrite_ds(ucharadd,uchardate){//写12887函数//dsas=0;delay(2);dscs=0;dsas=1;rd=1;wr=1;delay(2);P0=add;delay(2); //先写地址dsas=0;wr=0;delay(2);P0=date;//在写数据delay(2);wr=1;dsas=1;dscs=1;}ucharread_ds(ucharadd){//读12887函数uchards_date;//dsas=0;delay(1);dsas=1;rd=1;wr=1;dscs=0;delay(2);P0=add;delay(2);dsas=0;rd=0;delay(2);P0=0xff;delay(2);ds_date=P0;delay(2);rd=1;dsas=1;dscs=1;returnds_date;}//voidDS_init()//{//DS_A=0x20;// DS_B=0x12;//}//voidwrite_time()//{// DS_A=0x2f;//寄存器A// DS_B|=0x80;// Years=0x13;//年// Month=0x09;//月// Day=0x13;//日// Week=0x05;//星期// Hour=0x10;//时// Minute=0x55;//分// Second=0x00;//秒// DS_B&=0x7f;//寄存器A//}/**///首次操作12887时给与寄存器的初始化voidset_time(){write_ds(0x0A,0x20);//正常更新,二进制格式,24进制小时write_ds(0x0B,0x12);//禁止更新,接下来初始化数据,即写入时间,日期等write_ds(0x0A,0x2f);//禁止更新,接下来初始化数据,即写入时间,日期等write_ds(0x0B,0x86);//禁止更新,接下来初始化数据,即写入时间,日期等write_ds(0x00,0x00);write_ds(0x01,0x16);write_ds(0x02,0x1a);write_ds(0x03,0x00);write_ds(0x04,0x0b);write_ds(0x05,0x00);write_ds(0x06,1);write_ds(0x07,16);write_ds(0x08,6);write_ds(0x09,14);//write_ds(0x0A,0x20);//正常更新,二进制格式,24进制小时write_ds(0x0B,0x26);//正常更新,二进制格式,24进制小时}voidread_alarm(){//读取12887闹钟值nmiao=read_ds(0x01);nfen=read_ds(0x03);nshi=read_ds(0x05);}voidinit(){//初始化函数ucharnum;EA=1;EX0=1;IT0=1;flag=0;flag1=0;t0_num=0;flag_ri=0;//beep=0;s1num=0;week=1;lcden=0;P1=0x0f;P4SW=0x20;/**///以下是首次设置ds12887 时使用,以后不必在写入write_ds(0x0A,0x20);//打开振荡器//write_ds(0x0B,0x86);//禁止更新,接下来初始化数据,即写入时间,日期等//write_ds(0x0B,0x06);//正常更新,二进制格式,24进制小时write_ds(0x0B,0x26);//设置24小时模式,BCD格式,开启闹铃中断//set_time();//设置默认闹钟时间write_com(0x38);//1602液晶初始化write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num<16;num++) { write_date(table[num]); delay(1); }write_com(0x80+0x40);for(num=0;num<11;num++) { write_date(table1[num]); delay(1); }}voidwrite_sfm(ucharadd,chardate) {//1602液晶刷新时分秒函数chartens,ge;tens=date/10;ge=date%10;write_com(0x80+0x40+add);//write_com(0x06);write_date(0x30+tens);write_date(0x30+ge);}voidwrite_nyr(ucharadd,chardate){//1602液晶刷新年月日charshi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_com(0x06);write_date(0x30+shi);write_date(0x30+ge);}voidwrite_week(charwe){//写液晶星期显示函数write_com(0x80+12);//write_com(0x06);switch(we){case1:write_date('M');delay(5); write_date('O');delay(5); write_date('N'); break;case2:write_date('T');delay(5); write_date('U');delay(5); write_date('E'); break;case3:write_date('W');delay(5); write_date('E');delay(5); write_date('D'); break;case4:write_date('T');delay(5); write_date('H');delay(5); write_date('U'); break;case5:write_date('F');delay(5); write_date('R');delay(5); write_date('I'); break;case6:write_date('S');delay(5); write_date('A');delay(5); write_date('T'); break;case7:write_date('S');delay(5); write_date('U');delay(5); write_date('N'); break;}}voidkeyscan(){ucharssec=0;ucharminn=1;ucharhour=0;uinttimes=0;if(flag_ri==1) { if((s1==0)||(s2==0)||(s3==0)||(s4==0)) { delay(5); if((s1==0)||(s2==0)||(s3==0)||(s4==0)) { while(!(s1&&s2&&s3&&s4));di(); flag_ri=0; //清除报警标志 //beep=0; } } } if(s1==0) { delay(5); if(s1==0) { s1num++; if(flag1==1) if(s1num==4) s1num=1; flag=1; while(!s1);di(); switch(s1num) { //光标闪烁点定位 case1:write_com(0x80+0x40+8); write_com(0x0f); break; case2:write_com(0x80+0x40+5); break; case3:write_com(0x80+0x40+2); break; case4:write_com(0x80+12); break; case5:write_com(0x80+9); break; case6:write_com(0x80+6); break; case7:write_com(0x80+3); break; case8:s1num=0; write_com(0x0c); flag=0; write_ds(0x00,miao); write_ds(0x02,fen); write_ds(0x04,shi); write_ds(0x06,week); write_ds(0x07,day); write_ds(0x08,month); write_ds(0x09,year); break; } } } if(s1num!=0) { delay(1); if(s2==0) { while(!s2);di(); switch(s1num) { //根据功能键次数调节相应数值 case1:miao++; if(miao==60) miao=0; write_sfm(0x0a,miao); write_com(0x80+0x40+8); if(flag1==0) write_ds(0,miao); break; case2:fen++; if(fen==60) fen=0; write_sfm(0x07,fen); write_com(0x80+0x40+5); if(flag1==0) write_ds(2,fen); break; case3:shi++; if(shi==24) shi=0; write_sfm(0x04,shi); write_com(0x80+0x40+2); if(flag1==0) write_ds(4,shi); break; case4:week++; if(week==8) week=1; write_week(week); write_com(0x80+12); write_ds(6,week); break; case5:day++; if(day==32) day=1; write_nyr(0x09,day); write_com(0x80+9); write_ds(7,day); break; case6:month++; if(month==13) month=1; write_nyr(0x06,month); write_com(0x80+6); write_ds(8,month); break; case7:year++; if(year==100) year=0; write_nyr(0x03,year); write_com(0x80+3); write_ds(9,year); break; } } } if(s3==0) { delay(1); if(s3==0) { while(!s3);di(); ssec=0;while(1){if(s4==0)//显示时间{ delay(5);if(s4==0)//显示时间break;}if((read_ds(0x0c)&0x10)!=0)//显示时间{//if()write_sfm(0x02,hour); write_sfm(0x05,minn); write_sfm(0x08,ssec);times++;if(ssec<=0){minn--;ssec=60;}ssec--;if(times%60==0){ssec=0;}if(times>60){beep=0;ssec=0;minn=0;}if(times>62)beep=1;read_temp(); display();//if(ssec<=0){minn--;ssec=59;}}} } } if(s4==0)//检测s4 { delay(5); if(s4==0) { flag1=~flag1; while(!s4); di(); if(flag1==0) { //退出闹钟时设置保存数值 flag=0; write_com(0x80+0x40); write_date(''); write_date(''); write_com(0x0c); write_ds(0x01,miao); write_ds(0x03,fen); write_ds(0x05,shi); } else { //进入闹钟设置 read_alarm();//读取原始数据 miao=nmiao; //重新赋值用于按键调节 fen=nfen; shi=nshi; write_com(0x80+0x40); write_date('N');//显示标志 write_date('Z');// write_com(0x80+0x40+3) ; write_sfm(0x02,nshi); write_sfm(0x05,nfen); write_sfm(0x08,nmiao);nmiao=read_ds(0x02);nfen=read_ds(0x04);nshi=read_ds(0x05);//ucharssec=0;//ucharminn=0;//ucharhour=0;////uinttimes=0;/**********************************************************//************************************************************/ } } }}voidmain()//主函数{ init();//set_time(); while(1) { keyscan();//按键扫描 if(flag_ri==1) { di(); delay(100); di(); delay(500); beep=0; } if(flag==0&&flag1==0) { keyscan();//按键扫描 year=read_ds(0x09); month=read_ds(0x08); day=read_ds(0x07); week=read_ds(0x06); shi=read_ds(0x04); fen=read_ds(0x02); miao=read_ds(0x00); write_sfm(8,miao) ; write_sfm(5,fen); write_sfm(2,shi); write_week(week); write_nyr(3,year); write_nyr(6,month); write_nyr(9,day);read_temp(); display();save_timer(); } }}voidexter()interrupt0{ucharc;//进入中断表示闹钟时间到flag_ri=1; //设置标志位//beep=0;c=read_ds(0x0c);//读取12887的c寄存器表示响应了中断} voidds18b20rst()//ds18b20初始化子函数{ //要求"数据线拉高-延时-数据线拉低-延时大于480微妙-数据线拉高-延时等待" ucharx=0; DQ=1;//信号线DQ复位 delay1(40);//延时 DQ=0;//DQ拉低 delay1(4000);//精确延时大于480us DQ=1;//拉高 delay1(400);}voidds18b20wr(ucharwdata)//写数据子函数,无返回值,含参数{ uchari=0; for(i=8;i>0;i--)//要写完一个字节,故需要重复8次以下操作 { DQ=0;//数据线拉低 DQ=wdata&0x01;//wdata是一个形参,将其与00000001进行按位与

温馨提示

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

评论

0/150

提交评论