当前位置:首页 >> 信息与通信 >>

51单片机12864万年历(图片+主要程序C语言)


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.h" unsigned idata unsigned char state1[1]; screennum=1;//屏幕号 unsigned char screennum=1;//屏幕号 //节拍 #define time_task_sec 200 //节拍 200Hz //晶振 #define clock 24000000 //晶振 //最大任务数 #define max_task 4 //最大任务数 idata unsigned char task_delay[4]; 18b20 #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(); //---------------------------LCD --------------------------initina1(); //---------------------------LCD 字库初始化程序 RdFromROM(state1,8,1); //-------------界面 state[0]=state1[0]; //-------界面 RdFromROM(state1,15,1); state[1]=state1[0];//------state[1]=state1[0];//------- 闹钟 RdFromROM(state1,11,1); key_sound=state1[0];//-------------按键音 key_sound=state1[0];//-------按键音 // state[2]=state1[2]; // state[3]=state1[3]; screennum=1;//-----------默认一号屏 screennum=1;//------默认一号屏 for(i=0;i<max_task;i++)//清除任务延时 for(i=0;i<max_task;i++)//清除任务延时 {task_delay[i]=0;} TMOD=0x11; EA=1; TH0=255TH0=255-clock/time_task_sec/12/526; TL0=255TL0=255-clock/time_task_sec/12%526; ET0=1; TR0=1;

}

void main() { init(); while(1) if(task_delay[0]==0){readtemp(); { if(task_delay[0]==0){readtemp(); task_delay[0]=task_delay0;} if(task_delay[3]==0){MenuCheckKey(); task_delay[3]=task_delay1;} if(task_delay[1]==0){screen_select(screennum);task_delay[1]=task_delay1;} if(task_delay[2]==0){ds1302_read_time(); if(task_delay[2]==0){ds1302_read_time(); task_delay[2]=task_delay0;} } } void timer0() interrupt 1 { uchar i=0; TH0=255TH0=255-clock/time_task_sec/12/526; TH1=255TH1=255-clock/time_task_sec/12%526; for(i=0;i<max_task;i++)if(task_delay[i]) miao=21,fen=33,xiaomiao=94; 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; } } } } } }

task_delay[i]---; task_delay[i]--;

//

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.h" miao=0,fen=78,xiaomiao=0,tt=0; idata 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,shimi ao,gemiao; idata unsigned char Number[4]; unsigned char code mainmenu[]={ " 主菜单 " "3.查询 4.温度 温度" "3.查询 4.温度" "1.调时 2.秒表 秒表" "1.调时 2.秒表" "5.设置 6.返回 返回" "5.设置 6.返回" }; char unsigned char code setmenu[]={ " 设置 " "3.查温 4.按键 按键" "3.查温 4.按键" "1.界面 2.闹铃 闹铃" "1.界面 2.闹铃" "5.报时 6.返回 返回" "5.报时 6.返回" }; void gettime() { shinian=(time_buf1[1]%100)/10; genian=(time_buf1[1]%100)%10; shiyue=(time_buf1[2])/10; geyue=(time_buf1[2])%10; shiri=(time_buf1[3])/10; shiri=(time_buf1[3])/10; geri=(time_buf1[3])%10; shishi=(time_buf1[4])/10; geshi=(time_buf1[4])%10; shifen=(time_buf1[5])/10; gefen=(time_buf1[5])%10; shimiao=(time_buf1[6])/10; gemiao=(time_buf1[6])%10; }

void screen_select(uchar num) { // initina1(); gettime() ; //-------------------主界面 if(num==1) //----------主界面 { Lcd_Set_Post(1,0); TransferData(shinian+48,1);//-------------------------------------------年 TransferData(shinian+48,1);//----------------------年 TransferData(genian+48,1); TransferData('/',1); TransferData(shiyue+48,1);//-------------------------------------------月 TransferData(shiyue+48,1);//----------------------月 TransferData(geyue+48,1); TransferData('/',1); TransferData('/',1); TransferData(shiri+48,1);//-------------------------------------------日 TransferData(shiri+48,1);//----------------------日 TransferData(geri+48,1); Lcd_Set_Post(1,4); if(state[1]==1)//-------------------------------闹铃的状态图标 if(state[1]==1)//----------------闹铃的状态图标 { TransferData(' ',1); TransferData(14,1); } Lcd_Set_Post(1,5); if(key_sound==1) { TransferData(13,1); } if(state[0]==0) { //-------------------------------农历年 Lcd_Set_Post(1,7); //----------------农历年 nian(0); Lcd_Set_Post(2,0);//----------------------Lcd_Set_Post(2,0);//----------------------- 农历日月 LCD_WRITE_CHAR("农历 农历"); LCD_WRITE_CHAR("农历"); Conversion(0,time_buf[1],time_buf[2],time_buf[3]); Conversion(0,time_buf[1],time_buf[2],time_buf[3]); 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(state[0]==1){Lcd_Set_Post(3,5);}else if(state[0]==1){Lcd_Set_Post(3,5);}else {Lcd_Set_Post(2,5);}

LCD_WRITE_CHAR("星期");//----------------------星期 LCD_WRITE_CHAR("星期");//----------------------星期 星期");//---------------------{LCD_WRITE_CHAR("日 if(time_buf1[7]==7) {LCD_WRITE_CHAR("日");} {LCD_WRITE_CHAR("六 if(time_buf1[7]==6) {LCD_WRITE_CHAR("六");} {LCD_WRITE_CHAR("五 if(time_buf1[7]==5) {LCD_WRITE_CHAR("五");} {LCD_WRITE_CHAR("四 if(time_buf1[7]==4) {LCD_WRITE_CHAR("四");} if(time_buf1[7]==3) {LCD_WRITE_CHAR("三 if(time_buf1[7]==3) {LCD_WRITE_CHAR("三");} {LCD_WRITE_CHAR("二 if(time_buf1[7]==2) {LCD_WRITE_CHAR("二");} {LCD_WRITE_CHAR("一 if(time_buf1[7]==1) {LCD_WRITE_CHAR("一");} Lcd_Set_Post(3,0); TransferData(shishi+48,1);//----------------------时 TransferData(shishi+48,1);//----------------------时 ---------------------TransferData(geshi+48,1); TransferData(geshi+48,1); TransferData(58,1); TransferData(shifen+48,1);//----------------------分 TransferData(shifen+48,1);//----------------------分 ---------------------TransferData(gefen+48,1); TransferData(58,1); TransferData(shimiao+48,1);//-------------------------------------------秒 TransferData(shimiao+48,1);//----------------------秒 TransferData(gemiao+48,1); if(state[0]==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(ge+48,1); TransferData('.',1); TransferData(templ+48,1); TransferData(0xa1,1);TransferData(0xe6,1); Lcd_Set_Post(4,0); festival(time_buf[2],time_buf[3],time_buf[4]);//农历 festival(time_buf[2],time_buf[3],time_buf[4]);//农历 } } if(num==3)//-------------------主菜单 if(num==3)//----------主菜单 {

Lcd_Set_Post(1,0);//--------设置显示位置 Lcd_Set_Post(1,0);//--------设置显示位置 t_Post(1,0);//-------LCD_WRITE_CHAR(mainmenu); } if(num==4)//-------------------设置菜单 if(num==4)//----------设置菜单 { Lcd_Set_Post(1,0);//---------------设置显示位置 Lcd_Set_Post(1,0);//--------设置显示位置 LCD_WRITE_CHAR(setmenu); } if(num==5)//-------------------时间设置 if(num==5)//----------时间设置 { Lcd_Set_Post(1,2);//---------------设置显示位置 Lcd_Set_Post(1,2);//--------设置显示位置 LCD_WRITE_CHAR("时间设置"); WRITE_CHAR("时间设置 LCD_WRITE_CHAR("时间设置"); Lcd_Set_Post(2,1); TransferData(shinian+48,1);//-------------------------------------------年 TransferData(shinian+48,1);//----------------------年 TransferData(genian+48,1); LCD_WRITE_CHAR("年 LCD_WRITE_CHAR("年"); TransferData(shiyue+48,1);//-------------------------------------------月 TransferData(shiyue+48,1);//----------------------月 TransferData(geyue+48,1); LCD_WRITE_CHAR("月 LCD_WRITE_CHAR("月"); TransferData(shiri+48,1);//-------------------------------------------日 TransferData(shiri+48,1);//----------------------日 TransferData(geri+48,1); LCD_WRITE_CHAR("日 LCD_WRITE_CHAR("日"); TransferData(time_buf1[7]+48,1);//---------------星期 TransferData(time_buf1[7]+48,1);//---------------星期 ---------------

Lcd_Set_Post(3,2); TransferData(shishi+48,1);//---------------------------------------时 TransferData(shishi+48,1);//--------------------时 TransferData(geshi+48,1); TransferData(geshi+48,1); LCD_WRITE_CHAR("时 LCD_WRITE_CHAR("时"); TransferData(shifen+48,1);//-----------------------------------------分 TransferData(shifen+48,1);//---------------------分 TransferData(gefen+48,1); LCD_WRITE_CHAR("分 LCD_WRITE_CHAR("分"); TransferData(shimiao+48,1);//---------------------------------------秒 TransferData(shimiao+48,1);//--------------------秒 TransferData(gemiao+48,1); } if(num==6)//----------秒表 ---------if(num==6)//----------秒表 { uchar shi1,shi2,shi3,ge1,ge2,ge3;

Lcd_Set_Post(1,3);//--------设置显示位置 Lcd_Set_Post(1,3);//--------设置显示位置 -------LCD_WRITE_CHAR("秒表 秒表"); LCD_WRITE_CHAR("秒表"); Lcd_Set_Post(3,2); shi1=fen/10; ge1=fen%10; TransferData(shi1+48,1); TransferData(ge1+48,1); TransferData(':',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_Set_Post(1,2);//--------农历查询 LCD_WRITE_CHAR("温度查询 温度查询"); LCD_WRITE_CHAR("温度查询"); Lcd_Set_Post(3,0);//---------------农历查询 Lcd_Set_Post(3,0);//--------农历查询 LCD_WRITE_CHAR("最高温度 最高温度"); LCD_WRITE_CHAR("最高温度"); TransferData(':',1); RdFromROM(Number,0,4); if(Number[3]==0){TransferData('if(Number[3]==0){TransferData('-',1);} Lcd_Set_Post(3,5); TransferData(Number[0]+48,1); TransferData(Number[0]+48,1); TransferData(Number[1]+48,1); TransferData('.',1); TransferData(Number[2]+48,1); TransferData(0xa1,1);TransferData(0xe6,1); Lcd_Set_Post(4,0);//---------------农历查询 Lcd_Set_Post(4,0);//--------农历查询 LCD_WRITE_CHAR("最低温度 最低温度"); LCD_WRITE_CHAR("最低温度"); TransferData(':',1); RdFromROM(Number,4,4); RdFromROM(Number,4,4); if(Number[3]==0){TransferData('if(Number[3]==0){TransferData('-',1);} Lcd_Set_Post(4,5);

TransferData(Number[0]+48,1); TransferData(Number[1]+48,1); TransferData('.',1); TransferData(Number[2]+48,1); TransferData(0xa1,1);TransferData(0xe6,1); } if(num==9)//-------------------界面菜单 if(num==9)//----------界面菜单 { Lcd_Set_Post(1,2);//---------------设置显示位置 Lcd_Set_Post(1,2);//--------设置显示位置 LCD_WRITE_CHAR("界面选择 界面选择"); LCD_WRITE_CHAR("界面选择"); Lcd_Set_Post(2,0); TransferData(1+48,1); TransferData('.',1); LCD_WRITE_CHAR("多功能界面 多功能界面"); LCD_WRITE_CHAR("多功能界面"); Lcd_Set_Post(3,0); TransferData(2+48,1); TransferData('.',1); LCD_WRITE_CHAR("简洁界面 简洁界面"); LCD_WRITE_CHAR("简洁界面"); }


相关文章:
51单片机c语言电子万年历完整程序
51单片机c语言电子万年历完整程序_电子/电路_工程科技_专业资料。51单片机c语言程序程序51 单片机 c 语言电子万年历 #include"reg52.h" //#include<stdio...
基于51单片机万年历C语言程序
基于51单片机万年历C语言程序_计算机软件及应用_IT/...//www.zhixinrui.com //TS12864 并口相关设定// ...{// 图片数字 4 智芯锐电子:http://www.zhi...
12864显示程序,51单片机,C语言
12864显示程序,51单片机,C语言_信息与通信_工程科技_专业资料。12864显示程序,51单片机,C语言 12864 显示程序,51 单片机,C 语言 显示程序, 单片机, 可显示固定...
数码管万年历毕业设计(带C语言程序)
登录注册新闻网页贴吧知道音乐图片视频地图百科文库 搜...万年历c语言程序 3页 1下载券 12864万年历C语言程序...将单片机 CPU(比如 51 系列),晶振,存储器,地址锁...
12864液晶屏c语言程序
89c51单片机12864液晶显... 3页 1下载券 12864万年历C语言程序 19页 1下载...关闭图片显示功能 void LCD_PictureOff(void) { LCD_ComdWrite(0x34); ...
万年历程序
基于51单片机12864液晶... 36页 免费 C语言程序设计报告—“万... 9页 免费 万年历程序(不要嫌程序长... 34页 4下载券 公历农历转换程序 16页 免费万...
51单片机带字库12864液晶动态汉字显示C语言源程序
51 单片机带字库 12864 液晶动态汉字显示 C 语言源程序 2009-10-17 19:36 实验芯片为:AT89S52,带字库液晶屏:12864,实现的目的:动态一个汉字一个 汉字显示。...
电子万年历
51单片机12864万年历(图片... 12页 5财富值 基于51单片机的万年历设计 49页 ...其中 AT89C51 的 ISP 在线编程功能的优势在于改写单片机存储器 内的程序不需要...
基于单片机的12864显示万年历论文(带原理图和程序)
基于单片机12864显示万年历论文(带原理程序)_社会民生_生活休闲 暂无评价|0人阅读|0次下载基于单片机12864显示万年历论文(带原理程序)_社会民生_生活...
万年历12864程序
万年历12864程序_电子/电路_工程科技_专业资料。#include...{ "--单片机万年历--" "--芯片 89S/C52--"...0x51, 0x0e,0xA5,0x46, 0x56,0xd4,0xBA, 0...
更多相关标签: