这是程序您可以帮我看看吗
- #include <reg51.h>
- #define uint unsigned int
- #define uchar unsigned char
- #include "value.h"
- #include "nongli.h"
- uchar n_nian,n_yue,n_ri;
- unsigned int CYCLE=800,PWM_LOW=0;
- bit flag_200ms = 1;
- uchar menu_1;
- uchar flag_clock_en;
- uchar flag_clock_kai;
- uchar flag_c_en;
- bit flag_100ms;
- sbit beep=P2^7;
- sbit LED0=P2^6;
- sbit dq=P3^2;
- uint temperature ;
- void delay_uint(uint z)
- {
- while(z--);
- }
- void Delay(unsigned int t)
- {
- while(--t);
- }
- void delay_1ms(uint q)
- {
- uint i,j;
- for(i=0;i<q;i++)
- for(j=0;j<115;j++);
- }
- uchar dis_lcd[10];
- #include "lcd12864bu.h"
- void dis_shijian()
- {
- write_shu16(3*2,1*8,shi,0);
- write_shuzi(1,3*2,3*8,fuhao[1],0);
- write_shu16(3*2,4*8,fen,0);
- write_shuzi(1,3*2,6*8,fuhao[1],0);
- write_shu16(3*2,7*8,miao,0);
- write_shu16(1*2,6*8,nian,0);
- write_shu16(1*2,10*8,yue,0);
- write_shu16(1*2,14*8,ri,0);
- write_shu16(2*2,4*8,n_yue,0);
- write_shuzi(1,2*2,6*8,fuhao[0],0);
- write_shu16(2*2,7*8,n_ri,0);
- if(week==0)
- {
- write_yhanzi(1,4,7*16,xingqi[0]);
- }
- if(week==1)
- {
- write_yhanzi(1,4,7*16,xingqi[1]);
- }
- if(week==2)
- {
- write_yhanzi(1,4,7*16,xingqi[2]);
- }
- if(week==3)
- {
- write_yhanzi(1,4,7*16,xingqi[3]);
- }
- if(week==4)
- {
- write_yhanzi(1,4,7*16,xingqi[4]);
- }
- if(week==5)
- {
- write_yhanzi(1,4,7*16,xingqi[5]);
- }
- if(week==6)
- {
- write_yhanzi(1,4,7*16,xingqi[6]);
- }
- if(week==7)
- {
- week=0;
- write_yhanzi(1,4,7*16,xingqi[0]);
- }
- write_shu18b20(3*2,10*8,temperature,0);
- write_shuzi(1,3*2,12*8,dian,0);
- }
- void init_12864_dis()
- {
- cs1=1;
- cs2=0;
- write_yhanzi(7,0,16,dzrl);
- write_yhanzi(2,2,0,yangli);
- write_yhanzi(2,4,0,nongli);
- write_shu16(1*2,4*8,0x20,0);
- write_yhanzi(1,2,4*16,qita[0]);
- write_yhanzi(1,2,6*16,qita[1]);
- write_yhanzi(2,4,5*16,qita[6]);
- dis_shijian();
- write_yhanzi(1,6,7*16,wendu_fuhao);
- }
- void init_18b20()
- {
- bit q;
- dq = 1;
- delay_uint(1);
- dq = 0;
- delay_uint(80);
- dq = 1;
- delay_uint(10);
- q = dq;
- delay_uint(20);
- dq = 1;
- }
- void write_18b20(uchar dat)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- dq = 0;
- dq = dat & 0x01;
- delay_uint(5);
- dq = 1;
- dat >>= 1;
- }
- }
- uchar read_18b20()
- {
- uchar i,value;
- for(i=0;i<8;i++)
- {
- dq = 0;
- value >>= 1;
- dq = 1;
- if(dq == 1)
- value |= 0x80;
- delay_uint(5);
- }
- return value;
- }
- uint read_temp()
- {
- uint value;
- uchar low;
- init_18b20();
- write_18b20(0xcc);
- write_18b20(0x44);
- delay_uint(50);
- init_18b20();
- write_18b20(0xcc);
- write_18b20(0xbe);
- EA = 0;
- low = read_18b20();
- value = read_18b20();
- EA = 1;
- value <<= 8;
- value |= low;
- value *= 0.625;
- return value;
- }
- void dis_shijian_set()
- {
- write_shu16(0*2,0*8,0x20,0);
- write_shu16(1*2,2*8,shi,0);
- write_shu16(1*2,6*8,fen,0);
- write_shu16(1*2,10*8,miao,0);
- write_shu16(0*2,2*8,nian,0);
- write_shu16(0*2,6*8,yue,0);
- write_shu16(0*2,10*8,ri,0);
- if(week>=1)
- {
- write_shu16(2*2,10*8,week-1,0);
- }
- if(week<=0)
- {
- week=7;write_shu16(2*2,10*8,week-1,0);
- }
- write_shu16(3*2,8*8,shi1,0);
- write_shu16(3*2,12*8,fen1,0);
- if(flag_clock_kai == 1)
- write_yhanzi_fanbai(1,6,2*16,qita[10],0);
- else
- write_yhanzi_fanbai(1,6,2*16,qita[11],0);
- }
- void init_12864_set1()
- {
- write_yhanzi(1,0,2*16,qita[0]);
- write_yhanzi(1,0,4*16,qita[1]);
- write_yhanzi(1,0,6*16,qita[2]);
- write_yhanzi(1,2,2*16,qita[3]);
- write_yhanzi(1,2,4*16,qita[4]);
- write_yhanzi(1,2,6*16,qita[5]);
- write_yhanzi(2,4,3*16,qita[6]);
- write_yhanzi(2,6,0*16,qita[8]);
- write_yhanzi(1,6,5*16,qita[3]);
- write_yhanzi(1,6,7*16,qita[4]);
- write_yhanzi(2,4,0*16,shezi[0]);
- if(flag_clock_kai == 1)
- write_yhanzi_fanbai(1,6,2*16,qita[10],0);
- else
- write_yhanzi_fanbai(1,6,2*16,qita[11],0);
- dis_shijian_set();
- }
- void ds1302_dis()
- {
- uchar miao_1;
- if(menu_1 == 0)
- {
- read_time();
- if(miao_1 != miao)
- {
- miao_1 = miao;
- Conversion(0,nian,yue,ri);
- n_nian = year_moon ;
- n_yue = month_moon ;
- n_ri = day_moon ;
- dis_shijian();
- }
- }
- }
- uchar key_can;
- void key()
- {
- static uchar key_new;
- key_can = 20;
- P3 |= 0x78;
- if((P3 & 0x78) != 0x78)
- {
- delay_1ms(1);
- if(((P3 & 0x78) != 0x78) && (key_new == 1))
- {
- key_new = 0;
- switch(P3 & 0x78)
- {
- case 0x70: key_can = 1; break;
- case 0x68: key_can = 2; break;
- case 0x58: key_can = 3; break;
- case 0x38: key_can = 4; break;
- }
- // write_sfm2(1,0,key_can);
- }
- }
- else
- key_new = 1;
- }
- void key_with()
- {
- if(key_can == 4)
- {
- qingling();
- init_12864_dis();
- flag_200ms = 1;
- menu_1 = 0;
- }
- if(key_can == 1)
- {
- menu_1 ++;
- flag_200ms = 1;
- if(menu_1 == 1)
- {
- qingling();
- init_12864_set1();
- }
- if(menu_1 > 10)
- menu_1 = 1;
- }
- if(menu_1 != 0)
- {
- if(menu_1 == 1)
- {
- if(key_can == 2)
- set_ds1302time(1,&nian,0x99);
- if(key_can == 3)
- set_ds1302time(0,&nian,0x99);
- }
- if(menu_1 == 2)
- {
- if(key_can == 2)
- set_ds1302time(1,&yue,0x13);
- if(key_can == 3)
- set_ds1302time(0,&yue,0x13);
- }
- if(menu_1 == 3)
- {
- if(key_can == 2)
- set_ds1302time(1,&ri,0x32);
- if(key_can == 3)
- set_ds1302time(0,&ri,0x32);
- }
- if(menu_1 == 4)
- {
- if(key_can == 4)
- set_ds1302time(1,&shi,0x24);
- if(key_can == 3)
- set_ds1302time(0,&shi,0x24);
- }
- if(menu_1 == 5)
- {
- if(key_can == 2)
- set_ds1302time(1,&fen,0x60);
- if(key_can == 3)
- set_ds1302time(0,&fen,0x60);
- }
- if(menu_1 == 6)
- {
- if(key_can == 2)
- set_ds1302time(1,&miao,0x60);
- if(key_can == 3)
- set_ds1302time(0,&miao,0x60);
- }
- if(menu_1 == 7)
- {
- if(key_can == 2)
- set_ds1302time(1,&week,0x8);
- if(key_can == 3)
- set_ds1302time(0,&week,0x8);
- }
- if(menu_1 == 8)
- {
- if(key_can == 2)
- set_ds1302time(1,&shi1,0x24);
- if(key_can == 3)
- set_ds1302time(0,&shi1,0x24);
- clock1_save();
- }
- if(menu_1 == 9)
- {
- if(key_can == 2)
- set_ds1302time(1,&fen1,0x60);
- if(key_can == 3)
- set_ds1302time(0,&fen1,0x60);
- clock1_save();
- }
- if(menu_1 == 10)
- {
- if((key_can == 2) || (key_can == 3))
- flag_clock_kai ++;
- if(flag_clock_kai >= 2)
- flag_clock_kai = 0;
- if(flag_clock_kai == 1)
- write_yhanzi_fanbai(1,6,2*16,qita[10],1);
- else
- write_yhanzi_fanbai(1,6,2*16,qita[11],1);
- clock1_save();
- }
- dis_shijian_set();
- switch(menu_1)
- {
- case 1: write_shu16(0*2,2*8,nian,1); break;
- case 2: write_shu16(0*2,6*8,yue,1); break;
- case 3: write_shu16(0*2,10*8,ri,1); break;
- case 4: write_shu16(1*2,2*8,shi,1); break;
- case 5: write_shu16(1*2,6*8,fen,1); break;
- case 6: write_shu16(1*2,10*8,miao,1); break;
- case 7:
- if(week>0)
- {
- write_shu16(2*2,10*8,week-1,1);
- }
- if(week<=0)
- {
- week=7;
- write_shu16(2*2,10*8,week-1,1);
- }
- break;
- case 8: write_shu16(3*2,8*8,shi1,1); break;
- case 9: write_shu16(3*2,12*8,fen1,1); break;
- case 10: if(flag_clock_kai == 1)
- write_yhanzi_fanbai(1,6,2*16,qita[10],1);
- else
- write_yhanzi_fanbai(1,6,2*16,qita[11],1);
- break;
- }
- write_time();
- }
- }
- void menu_dis()
- {
- if(menu_1 == 0)
- if(flag_clock_kai == 1)
- {
- if((fen == fen1) && (shi == shi1) && (miao == 0))
- {
- flag_clock_en = 1;
- }
- if(flag_clock_en == 1)
- {
- beep=~beep;
- }
- }
- }
- //void deng
- /
- /
- void time0_init()
- {
- EA = 1;
- TMOD = 0X11;
- ET0 = 1;
- TR0 = 1;
- }
- void main()
- {
- beep = 0;
- delay_1ms(150);
- P0 = P1 = P2 = P3 = 0xff;
- init_ds1302();
- init_lcd();
- Clr_Scr();
- time0_init();
- init_12864_dis();
- while(1)
- {
- key();
- if(key_can < 10)
- {
- if(flag_clock_en == 0)
- key_with();
- else
- {
- beep = 1;
- flag_clock_en = 0;
- }
- }
- if(flag_100ms == 1)
- {
- menu_dis();
- flag_100ms = 0;
- }
- if(flag_200ms == 1)
- {
- flag_200ms = 0;
- temperature = read_temp();
- ds1302_dis();
- }
- }
- }
- void time0_int() interrupt 1
- {
- static uchar value;
- TH0 = 0x3c;
- TL0 = 0xb0;
- value ++;
- if(value % 2 == 0)
- {
- flag_100ms = 1;
- }
- if(value % 20 == 0)
- {
- flag_200ms = 1;
- }
- }
复制代码
|