51单片机12864万年历(图片+主要程序C语言).doc_第1页
51单片机12864万年历(图片+主要程序C语言).doc_第2页
51单片机12864万年历(图片+主要程序C语言).doc_第3页
51单片机12864万年历(图片+主要程序C语言).doc_第4页
51单片机12864万年历(图片+主要程序C语言).doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

51单片机做的12864万年历这是我花了一个星期时间做的万年历;一开始是一些图片,后面是这个制作的C语言源程序;希望大家稀饭:Main.c#include reg52.h#include macroconst.h#include keyscan.h#include screen.h#include 18b20.h#include ds1302.h#include atao_12864.h#include 24c02.hidata unsigned char state11;unsigned char screennum=1;/屏幕号#define time_task_sec 200 /节拍200Hz#define clock 24000000 /晶振#define max_task 4 /最大任务数idata unsigned char task_delay4;#define task_delay0 time_task_sec/1/2赫兹18b20#define task_delay1 time_task_sec/5/10赫兹屏幕#define task_delay2 time_task_sec/3/4赫兹1302#define task_delay3 time_task_sec/20/20赫兹键盘void init() unsigned char i; init18b20(); ds1302_init(); initina1(); /-LCD字库初始化程序 RdFromROM(state1,8,1); state0=state10; /-界面 RdFromROM(state1,15,1); state1=state10;/- 闹钟 RdFromROM(state1,11,1); key_sound=state10;/-按键音/ state2=state12;/ state3=state13; screennum=1;/-默认一号屏 for(i=0;imax_task;i+)/清除任务延时 task_delayi=0; TMOD=0x11; EA=1; TH0=255-clock/time_task_sec/12/526; TL0=255-clock/time_task_sec/12%526; ET0=1; TR0=1;void main() init(); while(1) if(task_delay0=0)readtemp(); task_delay0=task_delay0; if(task_delay3=0)MenuCheckKey(); task_delay3=task_delay1; if(task_delay1=0)screen_select(screennum);task_delay1=task_delay1; if(task_delay2=0)ds1302_read_time(); task_delay2=task_delay0; void timer0() interrupt 1 uchar i=0; TH0=255-clock/time_task_sec/12/526; TH1=255-clock/time_task_sec/12%526;for(i=0;imax_task;i+)if(task_delayi) task_delayi-; / miao=21,fen=33,xiaomiao=94; if(ma_start=1) tt+; if(tt=8) tt=0;xiaomiao+; if(xiaomiao=99) xiaomiao=0;miao+; if(miao=60) miao=0;fen+; if(fen=99) fen=0; Screen.c:#include reg52.h#include macroconst.h#include delay.h#include 18b20.h#include atao_12864.h#include ds1302.h#include 24c02.h#include festival.h#include keyscan.hidata unsigned char miao=0,fen=78,xiaomiao=0,tt=0;idata unsigned char bai,shi,ge,shinian,genian,shiyue,geyue,shiri,geri,shishi,geshi,shifen,gefen,shimiao,gemiao;idata unsigned char Number4;unsigned char code mainmenu= 主菜单 3.查询 4.温度1.调时 2.秒表5.设置 6.返回;unsigned char code setmenu= 设置 3.查温 4.按键1.界面 2.闹铃5.报时 6.返回;void gettime() shinian=(time_buf11%100)/10; genian=(time_buf11%100)%10; shiyue=(time_buf12)/10; geyue=(time_buf12)%10; shiri=(time_buf13)/10; geri=(time_buf13)%10; shishi=(time_buf14)/10; geshi=(time_buf14)%10; shifen=(time_buf15)/10; gefen=(time_buf15)%10; shimiao=(time_buf16)/10; gemiao=(time_buf16)%10;void screen_select(uchar num) / initina1(); gettime(); if(num=1) /-主界面 Lcd_Set_Post(1,0); TransferData(shinian+48,1);/-年 TransferData(genian+48,1); TransferData(/,1); TransferData(shiyue+48,1);/-月 TransferData(geyue+48,1); TransferData(/,1); TransferData(shiri+48,1);/-日 TransferData(geri+48,1); Lcd_Set_Post(1,4); if(state1=1)/-闹铃的状态图标 TransferData( ,1); TransferData(14,1); Lcd_Set_Post(1,5); if(key_sound=1) TransferData(13,1); if(state0=0) Lcd_Set_Post(1,7); /-农历年 nian(0); Lcd_Set_Post(2,0);/- 农历日月 LCD_WRITE_CHAR(农历); Conversion(0,time_buf1,time_buf2,time_buf3); TransferData(month_moon/16+0,1); TransferData(month_moon%16+0,1); TransferData(/,1); TransferData(day_moon/16+0,1); TransferData(day_moon%16+0,1); if(state0=1)Lcd_Set_Post(3,5);else Lcd_Set_Post(2,5); LCD_WRITE_CHAR(星期);/-星期 if(time_buf17=7) LCD_WRITE_CHAR(日); if(time_buf17=6) LCD_WRITE_CHAR(六); if(time_buf17=5) LCD_WRITE_CHAR(五); if(time_buf17=4) LCD_WRITE_CHAR(四); if(time_buf17=3) LCD_WRITE_CHAR(三); if(time_buf17=2) LCD_WRITE_CHAR(二); if(time_buf17=1) LCD_WRITE_CHAR(一); Lcd_Set_Post(3,0); TransferData(shishi+48,1);/-时 TransferData(geshi+48,1); TransferData(58,1); TransferData(shifen+48,1);/-分 TransferData(gefen+48,1); TransferData(58,1); TransferData(shimiao+48,1);/-秒 TransferData(gemiao+48,1); if(state0=0) bai=(temph/100); /-温度 shi=(temph%100)/10; ge=(temph%100)%10; Lcd_Set_Post(3,4); if(zerotemp=0)TransferData( ,1);TransferData( ,1); Lcd_Set_Post(3,5); TransferData(shi+48,1); TransferData(ge+48,1); TransferData(.,1); TransferData(templ+48,1); TransferData(0xa1,1);TransferData(0xe6,1); Lcd_Set_Post(4,0); festival(time_buf2,time_buf3,time_buf4);/农历 if(num=3)/-主菜单 Lcd_Set_Post(1,0);/-设置显示位置 LCD_WRITE_CHAR(mainmenu); if(num=4)/-设置菜单 Lcd_Set_Post(1,0);/-设置显示位置 LCD_WRITE_CHAR(setmenu); if(num=5)/-时间设置 Lcd_Set_Post(1,2);/-设置显示位置LCD_WRITE_CHAR(时间设置);Lcd_Set_Post(2,1);TransferData(shinian+48,1);/-年TransferData(genian+48,1);LCD_WRITE_CHAR(年);TransferData(shiyue+48,1);/-月TransferData(geyue+48,1);LCD_WRITE_CHAR(月);TransferData(shiri+48,1);/-日TransferData(geri+48,1);LCD_WRITE_CHAR(日);TransferData(time_buf17+48,1);/-星期Lcd_Set_Post(3,2);TransferData(shishi+48,1);/-时TransferData(geshi+48,1);LCD_WRITE_CHAR(时);TransferData(shifen+48,1);/-分TransferData(gefen+48,1);LCD_WRITE_CHAR(分);TransferData(shimiao+48,1);/-秒TransferData(gemiao+48,1); if(num=6)/-秒表 uchar shi1,shi2,shi3,ge1,ge2,ge3; Lcd_Set_Post(1,3);/-设置显示位置 LCD_WRITE_CHAR(秒表); Lcd_Set_Post(3,2);shi1=fen/10;ge1=fen%10;TransferData(shi1+48,1);TransferData(ge1+48,1);TransferData(:,1);shi2=miao/10;ge2=miao%10;TransferData(shi2+48,1);TransferData(ge2+48,1);TransferData(:,1);shi3=xiaomiao/10;ge3=xiaomiao%10;TransferData(shi3+48,1);TransferData(ge3+48,1); if(num=8) Lcd_Set_Post(1,2);/-农历查询 LCD_WRITE_CHAR(温度查询); Lcd_Set_Post(3,0);/-农历查询 LCD_WRITE_CHAR(最高温度); TransferData(:,1); RdFromROM(Number,0,4); if(Number3=0)TransferData(-,1); Lcd_Set_Post(3,5); TransferData(Number0+48,1); TransferData(Number1+48,1); TransferData(.,1); TransferData(Number2+48,1); TransferData(0xa1,1);TransferData(0xe6,1); Lcd_Set_Post(4,0);/-农历查询 LCD_WRITE_CHAR(最低温度); TransferData(:,1); RdFromROM(Number,4,4); if(Number3=0)TransferData(-,1); Lcd_Set_Post(4,5); TransferData(Number0+48,1); TransferData(Number1+48,1); TransferData(.,1); Transfe

温馨提示

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

评论

0/150

提交评论