《智能仪器设计》课程设计-实时日历时钟显示系统的制作_第1页
《智能仪器设计》课程设计-实时日历时钟显示系统的制作_第2页
《智能仪器设计》课程设计-实时日历时钟显示系统的制作_第3页
《智能仪器设计》课程设计-实时日历时钟显示系统的制作_第4页
《智能仪器设计》课程设计-实时日历时钟显示系统的制作_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

《智能仪器设计》课程设计一实时日历时钟显示系统的制作河南农业大学《智能仪器设计实习》

设计说明书题目: 学院: 专业: 班级: 学号: 姓名: 指导教师: 成绩: 时间:年月日至年月日#实时日历时钟显示系统的制作一、背景及意义在当前繁忙的生活,学习,工作中,时间与每个人都有密切的关系,每个人都受到时间的影响,随着生活水平的提高,传统时钟已不能满足人们的需求,因此实时日历时钟面市了,应用于日常日历时间显示方面,并得到广泛推广。本设计的实时日历时钟显示系统,共可以显示计时万年,最小时间单位是1s;其基本功能如下:(一)在51单片机系统中设置、获取、记录实时的日历时钟信息并通过LCD显示。(二)能够进行长时间的记录,并且存储的时间信息在掉电情况下能长期保存。(三)初始的时间信息用户可用键盘输入来设置。二、系统分析系统框图及部分程序流程图:(一)系统框图:(二)主函数LCD1602液晶显示: 显示时间△矩阵键盘:用于调节时间不停的检测按键不停的检测按键

是否被按下,若有三、系统硬件设计(一)矩阵键盘模块:用于调节时间和日期矩阵键盘S9:时间功能键与P3.0相连S13:增加键与P3.1相连S17:减少键与P3.2相连$9:日期功能键与P3.3相连RD:置低电平,按键有效(二)LCD1602液晶显示模块:显示时间和日期16021602LCD1602。一ZE寸g9i_।cm寸 oc i~~t•_।i~~।।~~।i~~।i~~।i~~।9Z _口9Z _口qLp|R2110vcc|RS:读控制与P3.5相连WR:3控制与P3.6相连D0-D7:数据端口(三)AT24C02:数据存储芯片,用于断电存储数据。I

.1

VEOVCCElWCI

.1

VEOVCCElWCL2SCLCNDKBA金「Al-24C0l2E2PROMSCL:控制总线与P2.1相连SDA:数据总线与P2.0相连(四)主控电路STC89C52模块:作为主控芯片,并用其内部定时器记时。STCS9C52vcc40Pl欧[>I5L 1Fl0Pl.:l P04Pl2 PD.lFJ.3 PD.2Pl4 PO3P]5 P04Pl.6 PO.iPl7 PO-6RES POJP3.3RXDLAPU/IXDALEFS.2/TNT5R5ENP3.3/INT1P27P34/T0 P2AP3.5/TI P25P生返耳P2AP3.7^DP之3XT.4L2 T22XTALl P21GND1234567S9DQ2 239 DOI1B4 4竞 a37 D2DBS 536 D36.■? !JDB7 7;4DBS 左S3 D6R.ST 932 D7P3.0 1。31EAPJ.Iii30ALECSDA1229INTIB2SftTLALCDEN1427DULA艮4 IS26DIOLAWR23CSU5BRD 1724『M. 出xi 19目坐改'12SCL2021SDAX控电路P0,P1,P2,P3四个IO口,用于接收和传送地址与数据;其中P3口有第二功能;RES:硬件复位键(五)蜂鸣器模块:发出滴的响声,表示有按键按下。vccFM KQImk53550蜂鸣器模块FM:蜂鸣器控制接口,与P2.3相接,低电平有效。四、系统软件设计详见附录1。五、结束语本次实时日历时钟显示系统设计具有闰年调节,日期错误调整等校正功能;按键自校正功能,防止误按键等措施,能保证时间日期的正确运行调节;共能显示万年的日历,时间能正确地走秒运行,但仍有其不足之处,其中走秒时间与真实走秒时间有一定的误差.【参考文献】[1]李广弟等.《单片机基础》[M].北京:航空航天大学出版社,2001[2]杨欣荣等.《智能仪器原理、设计与发展》.中南大学出版社,2003[3]孙传友等.《感测技术基础》.电子工业出版社,2001[4]王福瑞等.《单片微机测控系统设计大全》.北京航空航天大学出版社,1999[5]李朝青编.《单片机原理及接口技术》(简明修订版).北京航空航天大学出版社,1998[6]冯克.《MCS-51单片机实用子程序及其应用实例》.黑龙江科学技术出版社,1990[7]其他参考资料:《单片机与嵌入式系统应用》、《实用测试技术》、《自动化仪表》、《传感器世界》、《测控技术》、《电子技术应用》等。附录参考文献格式要求如下:参考文献的著录均应符合国家有关标准(按GB7714—87《文后参考文献著录格式》执行)。以“参考文献”字样(四号宋体加粗)居中排作为标识;参考文献的序号左顶格,并用数字加方括号表示,如[1],[2],…,以与正文中的指示序号格式一致。每一参考文献条目的最后均以“.”结束。各类参考文献条目的编排格式及示例如下。.连续出版物[序号]主要责任者.文献题名[J].刊名,出版年份,卷号(期号):起止页码.例如:[1]宋维明.用科学发展观指导高校教育改革的实践[J].河南农业大学理学院学报,2005,4(增刊):8-10..专著[序号]主要责任者.文献题名[M].出版地:出版者,出版年:起止页码.例如:[2]王沙生.杨树栽培生理研究.北京:北京农业大学1991:11-12..会议论文集[序号]主要责任者.文献题名[A]//主编.论文集名[C].出版地:出版者,出版年:起止页码.例如:[3]韩海荣.加强实践教学是培养创新人才的保障[A]//宋维明.高校教学改革、探索、实践[C].北京:中国林业出版社,2002:362-365..学位论文[序号]主要责任.文献题名[D].保存地:保存单位,年份.例如:[4]李梅.辽东栎天然群体表型多样性研究2].北京:河南农业大学理学院,1998..报告[序号]主要责任.文献题名[R].报告地:报告会主办单位,年份.例如:[5]江泽民.全面建设小康社会,开创中国特色社会主义事业新局面[R].北京:人民出版社,2002:38..专利文献[序号]专利所有者.专利题名[P].专利国别:专利号,发布日期.例如:[6]姜锡洲.一种温热外敷药制备方案[P].中国专利:881056078,1983-08-12..国际、国家标准[序号]标准代号,标准名称[S].出版地:出版者,出版年.例如:[7]GB/T16159—1996,汉语拼音正词法基本规则[S].北京:中国标准出版社,1996..报纸文章[序号]主要责任者.文献题名[N].报纸名,出版日期(版次).例如:[8]晓颂,韦国华.高校结盟发展“教学共同体”[N].光明日报,2001-06-08(B1)..电子文献[序号]主要责任者.电子文献题名[文献类型/载体类型].电子文献的出版或可获得地址,发表或更新的期/引用日期(任选).例如:[10]王明亮.关于中国学术期刊标准化数据库系统工程的进展[EB/OL]./pub/wml.txt/980810-2.html,1998-08-16/1998-10-04.外国作者的姓名书写格式一般为:名的缩写、姓。例如A.Johnson,R.O.Duda引用参考文献类型及其标识说明如下:根据GB3469规定,以单字母方式标识以下各种参数文献类型,如表2.1:表2.1参数文献的标识参考文献类型专著论文集(单篇论文)报纸文章期刊文章文献类MC(A)NJ

对于数据库、计算机程序及光盘图书等电子文献类型的参考文献,以下列字母作为标识,如表2.2:表2.2电子文献的标识参考文

献类型

文献类

型标识对于数据库、计算机程序及光盘图书等电子文献类型的参考文献,以下列字母作为标识,如表2.2:表2.2电子文献的标识参考文

献类型

文献类

型标识数据库(网

上)DB(DB/OL)计算机程序

(磁盘)

CP(CP/DK)光盘图书M/CD引用电子文献的范围仅限于以上三种。关于参考文献的未尽事项可参见国家标准《文后参考文献著录规则》(GB7714—87)。附录i源程序:/rjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjw功能介绍:

有时间功能键,增加键,减少键,日期功能键;可根据不同键调节百年,年,月,日,时,分,秒;具有闰年调节,日期错误调整等校正功能;具有按键自校正功能,防止误按键;,rjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjw/#indude<reg52.h>〃包含52单片机头文件#defineucharunsignedchar//写24C02//写24C02的标志;sbitsda=P2A0;sbitscl=P2A1;voiddelay0(){;;}voidstart()〃开始信号{sda=1;delay0();scl=1;delay0();sda=0;delay0();}voidstop() 〃停止{sda=0;delay0();scl=1;delay0();sda=1;delay0();}voidrespons()〃应答{uchari;scl=1;delay0();while((sda==1)&&(i<250))i++;scl=0;delay0();}voidinit_24c02()//IIC初始化函数sda=1;delay0();scl=1;delay0();}voidwrite_byte(uchardate)〃3一个字节函数{uchari,temp;temp=date;for(i=0;i<8;i++)(temp=temp<<1;scl=0;delay0();sda=CY;delay0();scl=1;delay0();}scl=0;delay0();sda=1;delay0();}ucharread_byte()//读一个字节函数{uchari,k;scl=0;delay0();sda=1;delay0();for(i=0;i<8;i++)(scl=1;delay0();k=(k<<1)lsda;scl=0;delay0();}returnk;}voidwrite_add(ucharaddress,uchardate)〃才指定地址写一个字节start();write_byte(0xa0);respons();write_byte(address);respons();write_byte(date);respons();stop();}charread_add(ucharaddress)〃指定地址读一个字节{uchardate;start();write_byte(0xa0);respons();write_byte(address);respons();start();write_byte(0xa1);respons();date=read_byte();stop();returndate;sbitdula=P2八6;〃定义锁存器锁存端sbitwela=P2八7;sbitrs=P3八5;〃定义1602液晶RS端sbitlcden=P3八4;〃定义1602液晶LCDEN端sbitrw=P3八6;sbits1=P3八0; 〃定义按键--功能键sbits2=P3八1;〃定义按键■■增力口键sbits3=P3八2;〃定义按键--减小键sbits4=P3八3; 〃定义按键--riqi功能键sbitrd=P3A7;sbitbeep=P2A3;〃定义蜂鸣器端ucharcount,s1num;charmiao,shi,fen;ucharn,moon,d,t,s4num,m;ucharcodetable[]="2013-12-03";//定义初始上电时液晶默认显示状态voiddelay(uintz)//延时函数{uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voiddi()〃蜂鸣器发声函数{beep=0;delay(100);beep=1;}voidwrite_com(ucharcom)〃液晶写命令函数{rs=0;rw=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}voidwrite_date(uchardate)〃液晶写数据函数{rs=1;rw=0;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}voidwrite_sfm(ucharadd,uchardate)//3时分秒函数{ucharshi,ge;shi=date/10;//分解一个2位数的十位和个位ge=date%10;write_com(0x80+0x40+add);〃设置显示位置write_date(0x30+shi);〃送去液晶显示十位write_date(0x30+ge);//送去液晶显示个位voidwrite_nyr(ucharadd,uchardate)〃写年月日函数{ucharshi,ge;shi=date/10;//分解一个2位数的十位和个位ge=date%10;write_com(0x80+add);〃设置显示位置write_date(0x30+shi);〃送去液晶显示十位write_date(0x30+ge);//送去液晶显示个位}voidinit()//初始化函数{ucharnum;rd=0;〃软件将矩阵按键第4列一端置低用以分解出独立按键dula=0;〃关闭两锁存器锁存端,防止操作液晶时数码管会出乱码wela=0;lcden=0;fen=0;〃初始化种变量值miao=0;shi=0;m=0;moon=0;d=0;n=0;s4num=0;count=0;s1num=0;init_24c02();write_com(0x38);〃初始化1602液晶write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);//设置显示初始坐标for(num=0;num<13;num++)〃显示年月日{write_date(table[num]);delay(5);}write_com(0x80+0x40+6);〃写出时间显示部分的两个冒号write_date(':');delay(5);write_com(0x80+0x40+9);write_date(':');delay(5);miao=read_add(1);〃首次上电从AT24C02中读取出存储的数据fen=read_add(2);shi=read_add(3);d=read_add(4);〃首次上电从AT24C02中读取出存储的数据moon=read_add(5);n=read_add(6);m=read_add(7);write_nyr(10,d);〃分别送去液晶显示write_nyr(7,moon);write_nyr(4,n);write_nyr(2,m);write_sfm(10,miao);〃分别送去液晶显示write_sfm(7,fen);write_sfm(4,shi);TMOD=0x01;//设置定时器0工作模式1TH0=(65536-50000)/256;〃定时器装初值TL0=(65536-50000)%256;EA=1;〃开总中断ET0=1;〃开定时器0中断TR0=1;〃启动定时器0}voidkeyscan()//按键扫描函数{if(s1==0)(delay(5);if(s1==0)〃确认功能键被按下{s1num++;〃功能键按下次数记录while(!s1);//释放确认5();〃每当有按键释放蜂鸣器发出滴声§4口口皿=0;〃终止日期调节write_com(0x0c);//光标不再闪烁if(s1num==1)//第一次被按下时{TR0=0;〃关闭定时器write_com(0x80+0x40+10);〃光标定位到秒位置write_com(0x0f);//光标开始闪烁}if(s1num==2)〃第二次按下光标闪烁定位到分钟位置{write_com(0x80+0x40+7);write_com(0x0f);}if(s1num==3)〃第三次按下光标闪烁定位到小时位置{write_com(0x80+0x40+4);write_com(0x0f);}if(s1num==4)//第四次按下{s1num=0;//记录按键数清零write_com(0x0c);〃取消光标闪烁TR0=1;〃启动定时器使时钟开始走}}}if(s1num!=0)〃只有功能键被按下后,增加和减小键才有效{if(s2==0)(delay(5);if(s2==0)//增加键确认被按下{while(!s2);//按键释放di();〃每当有按键释放蜂鸣器发出滴声if(s1num==1)//若功能键第一次按下{miao++;//则调整秒加1if(miao==60)〃若满60后将清零miao=0;write_sfm(10,miao);//每调节一次送液晶显示一下write_com(0x80+0x40+10);〃显示位置重新回到调节处write_add(1,miao);//数据改变立即存入24C02}if(s1num==2)/^功能键第二次按下{fen++;〃则调整分钟加1if(fen==60)//若满60后将清零fen=0;write_sfm(7,fen);//每调节一次送液晶显示一下write_com(0x80+0x40+7);〃显示位置重新回到调节处write_add(2,fen);〃数据改变立即存入24C02}if(s1num==3)〃若功能键第三次按下{shi++;〃则调整小时加1if(shi==24)//若满24后将清零shi=0;write_sfm(4,shi);//每调节一次送液晶显示一下write_com(0x80+0x40+4);〃显示位置重新回到调节处write_add(3,shi);//数据改变立即存入24C02}}}if(s3==0){delay(5);if(s3==0)//确认减小键被按下(while(!s3);//按键释放di();〃每当有按键释放蜂鸣器发出滴声if(s1num==1)〃若功能键第一次按下{miao--;//则调整秒减1if(miao==-1)〃若减到负数则将其重新设置为59miao=59;write_sfm(10,miao);//每调节一次送液晶显示一下write_com(0x80+0x40+10);〃显示位置重新回到调节处write_add(1,miao);//数据改变立即存入24C02}if(s1num==2)/^功能键第二次按下{fen--;〃则调整分钟减1if(fen==-1)〃若减到负数则将其重新设置为59fen=59;write_sfm(7,fen);//每调节一次送液晶显示一下write_com(0x80+0x40+7);〃显示位置重新回到调节处write_add(2,fen);〃数据改变立即存入24C02}if(s1num==3)//若功能键第二次按下{shi--;〃则调整小时减1if(shi==-1)〃若减到负数则将其重新设置为23shi=23;write_sfm(4,shi);//每调节一次送液晶显示一下write_com(0x80+0x40+4);//显示位置重新回到调节处write_add(3,shi);//数据改变立即存入24C02}}}}}/rjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjw时间调整,rjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjwrjw///闰年判断ucharnian(ucharn)uchary;if(n%400==0)y=i;elseif(n%100==0)y=0;elseif(n%4==0)y=i;elsey=0;returny;〃月天数判断ucharm_tian(ucharmoon)(uchary,tian,nm;nm=n+m*100;y=nian(nm);if(moon==2)(if(y==0)tian=28;elsetian=29;}elseif(moon==4||moon==6||moon==9||moon==11)(tian=30;}elsetian=31;returntian;}〃键盘扫描1voidkeyscan1(){1砧4==0)〃日期功能键实现(delay(5);if(s4==0){s4num++;//s4按下的次数while(!s4);di();§1口口皿=0;〃终止时间调节write_com(0x0c);//光标不再闪烁switch(s4num)(case1:{TR0=0;write_com(0x80+10);write_com(0x0f);〃光标显示并闪烁break;}case2:write_com(0x80+7);write_com(0x0f);break;case3:write_com(0x80+4);write_com(0x0f);break;case4:write_com(0x80+2);write_com(0x0f);break;case5:{s4num=0;write_com(0x0c);〃光标不再闪烁TR0=1;break;}}}}//日期调整if(s4num!=0)if(s2==0)delay(5);if(s2==0)//时间增加调整while(!s2);di();if(s4num==1)d++;t=m_tian(moon);if(d>t)d=1;write_nyr(10,d);write_com(0x80+10);write_add(4,d);}if(s4num==2){moon++;if(moon==13)moon=1;write_nyr(7,moon);write_com(0x80+7);write_add(5,moon);}if(s4num==3){n++;if(n==100)n=0;write_nyr(4,n);write_com(0x80+4);write_add(6,n);if(s4num==4){m++;if(m==100)m=0;write_nyr(2,m);write_com(0x80+2);write_add(7,m);}}}if(s3==0)//时间减少调整{delay(5);if(s3==0)(while(!s3);di();if(s4num==1){t=m_tian(moon);if(d==1)d=t+1;d--;write_nyr(10,d);write_com(0x80+10);write_add(4,d);}if(s4num==2){if(moon==1)moon=13;moon--;write_nyr(7,moon);write_com(0x80+7);write_add(5,moon);}if(s4num==3){if(n==0)n=100;n--;write_nyr(4,n);write_com(0x80+4);write_add(6,n);}if(s4num==4)if(m==0)m=100;m--;write_nyr(2,m);write_com(0x80+2);)1,一voidmain()//主函数{init();〃首先初始化各数据卬/品(1)〃进入主程序大循环{keyscan();〃不停的检测按键是否被按下keyscan1();}}voidtimer0()interrupt1//定时器0中断服务程序{TH0=(65536-50000)/256;〃再次装定时器初值TL0=(65536-50000)%256;count++; 〃中断次数累加if(count==18)//20次50毫秒为1秒(count=0;miao++;if(miao==60)〃秒力口至U60则进位分钟{miao=0;//同时秒数清零fen++;1★£©n==60)〃分钟力口至U60则进位小时fen=0;〃同时分钟数清零shi++;if(shi==24)〃小时加到24则小时清零shi=0;d++;t=m_tian(moon);if(d>t)d=1;moon++;if(moon==13)moon=1;n++;if(n==100)(n=0;m++;if(m==100)m=0;write_nyr(2,m);//bainian若变化则重新写入w

温馨提示

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

评论

0/150

提交评论