基于单片机89c52和1602液晶屏的万年历专业技能考核.doc_第1页
基于单片机89c52和1602液晶屏的万年历专业技能考核.doc_第2页
基于单片机89c52和1602液晶屏的万年历专业技能考核.doc_第3页
基于单片机89c52和1602液晶屏的万年历专业技能考核.doc_第4页
基于单片机89c52和1602液晶屏的万年历专业技能考核.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

专业基本技能综合考核基于单片机89c52和1602液晶屏的万年历本文研究的万年历系统拟用STC89C52单片机控制,以1602液晶屏显示。系统主要由单片机控制电路,显示电路以及校正电路三个模块组成。本文阐述了系统的硬件工作原理,所应用的各个接口模块的功能以及其工作过程,论证了设计方案理论的可行性。系统程序采用C语言编写,经Keil软件进行调试后在开发板中进行测试,可以显示年、月、日、星期、时、分、秒,并具有校准功能和与即时时间同步的功能。实验结果表明此万年历实现后具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。/ Header:1602A液晶显示时间可调万年历/File Name: calender/ Author:Devine/ Date:2013.12.1 8:30 2013.12.2 10:54#include#define uint unsigned int#define uchar unsigned char/u1,u2锁存器使能端 在此目的是为了消除对P0口的影响sbit u1=P26;sbit u2=P27;sbit led=P24;/1602液晶输出sbit en=P20;sbit rs=P22;sbit rw=P21; /控制按键输出sbit key1=P30;/模式选择键sbit key2=P31;/加计数键sbit key3=P32;/复位返回键sbit key4=P33;/闹钟开关键/sbit key_com=P37; /按键公共地/定义闹钟输出sbit beep=P23;/sbit beep=P24;/全局变量定义uchar time0,sec,min,hou; /时间(时,分,秒)变量定义uchar num,week_data,week;/星期变量定义uchar month,day;/月份 日期变量定义uint year;/年份 变量定义bit y,m;/y 为闰年的判定变量 为1 则为闰年 m为大月的判断,为1则为大月 m2为二月份的判定 若是二月则m2=1;/赋初值数组定义uchar code first_line= 2013-12-1 Sun; uchar code second_line= 12:30:00 ;uchar code week_data1=Mon;uchar code week_data2=Tue;uchar code week_data3=Wen;uchar code week_data4=Thu;uchar code week_data5=Fri;uchar code week_data6=Sat;uchar code week_data7=Sun;/延时子函数 1ms延时void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/液晶写指令子函数com即所需输入的指令码void lcd_write_com(uchar com)rs=0;rw=0;en=0;P0=com;delay(5);en=1;delay(5);en=0;/液晶写数据子函数 void lcd_write_data(uchar lcd_data)rs=1;rw=0;en=0;P0=lcd_data;delay(5);en=1;delay(5);en=0;/初始化子函数(包括: 液晶初始化操作 和 定时器0子函数操作)void init()uchar num;u1=0;u2=0;/关闭U1U2锁存器 防止对P0口的影响/给时间设置初值 2010-09-15 Wes 12:30:00year=2013;month=12;day=1;week=7;hou=12;min=30;sec=0;/液晶指令初始化en=0;/将液晶en端拉低,为初始化写指令和数据准备lcd_write_com(0x38);/MODElcd_write_com(0x0c);/DCBlcd_write_com(0x06);/NSlcd_write_com(0x01);/清屏/液晶写初值lcd_write_com(0x80);/写第一行地址for(num=0;num16;num+)lcd_write_data(first_linenum);delay(5);lcd_write_com(0x80+0x40);/写第二行地址for(num=0;num16;num+)lcd_write_data(second_linenum);delay(5);/定时器初始化TMOD=0x01;/定时器0工作方式为1TH0=(65535-50000)/256;/装初值TL0=(65535-50000)%256;ET0=1;/开定时器0中断EA=1;/开总中断TR0=1;/开始计时/星期显示动态设置void write_week(uchar week_num)uchar temp,k;temp=week_num;if(temp=1)for(k=0;k3;k+)lcd_write_data(week_data1k);delay(5);if(temp=2)for(k=0;k3;k+)lcd_write_data(week_data2k);delay(5);if(temp=3)for(k=0;k3;k+)lcd_write_data(week_data3k);delay(5);if(temp=4)for(k=0;k3;k+)lcd_write_data(week_data4k);delay(5);if(temp=5)for(k=0;k3;k+)lcd_write_data(week_data5k);delay(5);if(temp=6)for(k=0;k3;k+)lcd_write_data(week_data6k);delay(5);if(temp=7)for(k=0;k3;k+)lcd_write_data(week_data7k);delay(5);/*switch (temp)case 1 : for(k=0;k3;k+)lcd_write_data(week_data1k);delay(5);break;case 2 : for(k=0;k3;k+)lcd_write_data(week_data2k);delay(5);break;case 3 : for(k=0;k3;k+)lcd_write_data(week_data3k);delay(5);break;case 4 : for(k=0;k3;k+)lcd_write_data(week_data4k);delay(5);break;case 5 : for(k=0;k3;k+)lcd_write_data(week_data5k);delay(5);break;case 6 : for(k=0;k3;k+)lcd_write_data(week_data6k);delay(5);break;case 7 : for(k=0;k99)year=0;data_refresh(1,year/100);lcd_write_com(0x80+1);if(key3=0)delay(5);if(key3=0)sec=0;num=0;TR0=1; /开启定时器lcd_write_com(0x0c);/取消闪烁/闹钟设定void clock()bit flag;if(key4=0) /闹钟开关键delay(5);if(key4=0) flag= !flag;while(!key4);if(flag=1)led=0;if(min=0)if(hou=0)beep=0;delay(1000);beep=1;if(hou0)&(hou0)&(sec12)&(hou0)&(sec=hou-12)beep=0;delay(110);beep=1;delay(110);beep=0;delay(110);beep=1;delay(770);if(flag=0)led=1;/主函数void main()init();while(1)time_key_set();clock();/定时器中断子函数void t0() interrupt 1TH0=(65535-50000)/256;TL0=(65535-50000)%256;time0+;if(time0=20)time0=0;sec+;if(sec=60)sec=0;min+;if(min=60)min=0;hou+;if(hou=24)hou=0;day+;week+;if(week=8)week=1;lcd_write_com(0x80+13); /注意这两行的顺序 不能反过来write_week(week); /注意这两行的顺序 不能反过来 big_month(month); /调用大小月判断子函数if(m=1)if(day=32)day=1;month+;if(month=13)month=1;year+;if(year=9999)year=0;data_refresh(1,year/100);data_refresh(3,year%100); data_refresh(6,month);elseif(day=31)day=1;month+;data_refresh(6,month);if(month=2)leapyear_choise(year);/调用闰年判断子函数if(y=1)if(day=30)day=1;month=3;data_refresh(6,month);else if(y=0)if(day=29)day=1;month=3;data_refresh(6,month);data_refresh(9,day); data_refresh(0x40+4,hou);data_refresh(0x40+7,min); data_refresh(0x40+10,sec);袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁

温馨提示

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

评论

0/150

提交评论