0.png (225.1 KB, 下載次數: 85)
下載附件
2016-12-23 04:19 上傳
0.png (399.72 KB, 下載次數: 72)
下載附件
2016-12-23 04:19 上傳
萬年歷電路圖&PCB圖.zip
(702.87 KB, 下載次數: 36)
2016-12-20 21:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
萬年歷(51程序).zip
(64.73 KB, 下載次數: 24)
2016-12-20 21:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
- #include <reg52.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define ds1302_sec_add 0x80 //秒數據地址
- #define ds1302_min_add 0x82 //分數據地址
- #define ds1302_hr_add 0x84 //時數據地址
- #define ds1302_date_add 0x86 //日數據地址
- #define ds1302_month_add 0x88 //月數據地址
- #define ds1302_day_add 0x8a //星期數據地址
- #define ds1302_year_add 0x8c //年數據地址
- #define ds1302_control_add 0x8e //控制數據地址
- #define ds1302_charger_add 0x90
- #define ds1302_clkburst_add 0xbe
- sbit LCD_RS=P2^0;
- sbit LCD_RW=P2^1;
- sbit LCD_E =P2^2;
- sbit DS_CLK=P1^0;
- sbit DS_IO =P1^1;
- sbit DS_RES=P1^2;
- sbit Key_Clock=P1^4;
- sbit Key_Set=P1^5;
- sbit Key_up=P1^6;
- sbit Key_down=P1^7;
- sbit fengmingqi=P1^3;
- sbit DQ =P3^3;
- uchar warning_tem[4]=0;
- uchar time_buf[10];
- uchar time_buf1[10];
- uchar time_buf2[20];
- uchar temp_buf[7];
- uchar taozhong_buf[6]={0};
- uchar anjianzhi=0;
- uchar time1_jishu1=0;
- uchar time_jishu2=0;
- ///////////////////////
- uchar DS18B20_Mode=0;
- uchar Clock_Mode=0;
- uchar Set_Mode=0;
- uchar forbid_Tem=0;
- uchar guang_wei=0;
- uchar guang_wei2=0;
- uchar nao_change_wei=0;
- uint fengmingqi_jishi=0;
- uchar time_view1=2;
- uchar time_view2=0;
- void delay_1ms(int delay); //毫秒延遲
- void delay_1us(int delay_us); //微妙延遲
- void delay(uint i); //18B20所用延遲
- void Write_Dat_1602(uchar Dat_1602); //1602數據寫入
- void Write_Com_1602(uchar Com_1602); //1602命令寫入
- void ds1302_read_time(void); //1302讀取溫度
- uchar ds1302_read_byte(uchar addr); //1302單字節讀取
- void ds1302_write_byte(uchar addr, uchar Dat); //1302單字節寫入
- void ds1302_write_time(void); //1302時間寫入
- void ds1302_read_time(void); //1302時間讀取
- void Init_1602(); //1602初始化
- void Init_DS18B20(void); //18b20初始化
- uchar ReadOneChar(void); //18b20單字節讀
- void WriteOneChar(unsigned char dat); //18b20單字節寫
- void ChangeTemperature(void);
- uint ReadTemperature(void); //18b20讀取溫度
- void Time_View(); //
- void Temp_View(); //
- void naozhong_View();
- void tiaoshi_view();
- void Init_1302()
- {
- DS_RES=0;
- DS_CLK=0;
- }
- void main()
- {fengmingqi=1;
- warning_tem[0]=' ';
- warning_tem[1]=3;
- warning_tem[2]=0;
- TMOD=0X11;
- ET0=1;
- ET1=1;
- EA=1;
- TH0=(65536-10000)/256; //10ms
- TL0=(65536-10000)%256;
- TH1=(65536-50000)/256; //50ms
- TL1=(65536-50000)%256;
- Init_1302();
- Init_1602();
- Time_View();
- TR0=1;
- TR1=1;
- while(1)
- {if(anjianzhi!=0)
- {
- ///////////////////////////////
- if(anjianzhi==8&&Set_Mode==0)
- {if(Clock_Mode==0)
- {Clock_Mode=1;
- TR1=0;
- guang_wei=0x09;
- Write_Com_1602(0X01);
- delay_1ms(5);
- Write_Com_1602(0x0f);
- nao_change_wei=1;
- naozhong_View();
- }
- else
- {TR1=1;
- Write_Com_1602(0x0c);
- Write_Com_1602(0X01);
- delay_1ms(5);
- Clock_Mode=0;
- guang_wei=0x80;
- guang_wei2=0;
- }
- }
- /////////////////////////////////////////////////
- if(anjianzhi==4)
- {
- if(Clock_Mode==1)
- {
- if(guang_wei2==0x0b)
- {guang_wei=0x06;nao_change_wei=0;guang_wei2=0;}
- if(nao_change_wei>3)
- {nao_change_wei++;
- guang_wei2++;
- }
- if(nao_change_wei==3)
- {guang_wei2=0x09;
- nao_change_wei++;
- }
- if(nao_change_wei<3)
- {
- guang_wei+=3;
- nao_change_wei++;
- }
- naozhong_View();
- }
- else
- {
- switch(Set_Mode)
- {case 0:TR1=0;Write_Com_1602(0X01);delay_1ms(5);Write_Com_1602(0x0f);guang_wei=0x83;Set_Mode++;break;
- case 1:guang_wei=0x86;Set_Mode++;break;
- case 2:guang_wei=0x89;Set_Mode++;break;
- case 3:guang_wei=0x8b;Set_Mode++;break;
- case 4:guang_wei=0x80+0x41;Set_Mode++;break;
- case 5:guang_wei=0x80+0x44;Set_Mode++;break;
- case 6:guang_wei=0x80+0x47;Set_Mode++;break;
- case 7:TR1=1;Set_Mode=0;
- Write_Com_1602(0x0c);
- ds1302_write_time();
- break;
- }
- tiaoshi_view();
- }
- }
- //////////////////////////////////////////////////////////////
- if(anjianzhi==2&&(Clock_Mode==1||Set_Mode!=0))
- {
- if(Clock_Mode==1)
- {if(nao_change_wei==1)
- {
- if(taozhong_buf[0]*10+taozhong_buf[1]<23)
- { taozhong_buf[1]+=1;
- if(taozhong_buf[1]==10&&taozhong_buf[0]<2)
- {taozhong_buf[1]=0;taozhong_buf[0]+=1;}
- }
- }
- if(nao_change_wei==2)
- { if(taozhong_buf[2]*10+taozhong_buf[3]<59)
- taozhong_buf[3]+=1;
- if(taozhong_buf[3]==10&&taozhong_buf[2]<6)
- {taozhong_buf[3]=0;taozhong_buf[2]+=1;}
- }
- if(nao_change_wei==3)
- { if(taozhong_buf[4]*10+taozhong_buf[5]<59)
- taozhong_buf[5]+=1;
- if(taozhong_buf[5]==10&&taozhong_buf[4]<6)
- {taozhong_buf[5]=0;taozhong_buf[4]+=1;}
-
- }
- if(nao_change_wei==4)
- {
- if(warning_tem[0]==' ')
- warning_tem[0]='-';
- else
- warning_tem[0]=' ';
- }
- if(nao_change_wei==5)
- {if(warning_tem[1]<10)
- warning_tem[1]+=1;
- }
- if(nao_change_wei==6)
- {if(warning_tem[2]<10)
- warning_tem[2]+=1;
- }
- naozhong_View();
- }
- else
- {
- switch(Set_Mode)
- {
- case 1: {if(time_buf2[3]*10+time_buf2[4]<99)
- time_buf2[4]+=1;
- if(time_buf2[4]==10&&time_buf2[3]<9)
- {time_buf2[4]=0;time_buf2[3]+=1;}
- break;}
- case 2:{if(time_buf2[5]*10+time_buf2[6]<12)
- time_buf2[6]+=1;
- if(time_buf2[6]==10&&time_buf2[5]<1)
- {time_buf2[6]=0;time_buf2[5]+=1;}
- break;}
- case 3:{if(time_buf2[7]*10+time_buf2[8]<31)
- time_buf2[8]+=1;
- if(time_buf2[8]==10&&time_buf2[7]<3)
- {time_buf2[8]=0;time_buf2[7]+=1;}
- break;}
- case 4:{if(time_buf2[18]<7)
- time_buf2[18]+=1;
- break;}
- case 5:{if(time_buf2[12]*10+time_buf2[13]<23)
- { time_buf2[13]+=1;
- if(time_buf2[13]==10&&time_buf2[12]<2)
- {time_buf2[13]=0;time_buf2[12]+=1;}
- }
- break;
- }
- case 6:{if(time_buf2[14]*10+time_buf2[15]<59)
- { time_buf2[15]+=1;
- if(time_buf2[15]==10&&time_buf2[14]<6)
- {time_buf2[15]=0;time_buf2[14]+=1;}
- }
- break;
- }
- case 7:{if(time_buf2[17]*10+time_buf2[16]<59)
- time_buf2[16]+=1;
- if(time_buf2[17]==10&&time_buf2[16]<6)
- {time_buf2[17]=0;time_buf2[16]+=1;}
- break;
- }
- }
- tiaoshi_view();
- }
- }
- //////////////////////////////////////////////////////////////////
- if(anjianzhi==1&&(Clock_Mode==1||Set_Mode!=0))
- {if(Clock_Mode==1)
- {switch(nao_change_wei)
- {case 1:{if(taozhong_buf[1]>0)
- taozhong_buf[1]=taozhong_buf[1]-1;
- if(taozhong_buf[1]==9&&taozhong_buf[0]>0)
- {taozhong_buf[1]-=1;}
- break;
- }
- case 2:{if(taozhong_buf[3]>0)
- taozhong_buf[3]=taozhong_buf[3]-1;
- if(taozhong_buf[3]==9&&taozhong_buf[2]>0)
- {taozhong_buf[3]-=1;}
- break;
- }
- case 3:{if(taozhong_buf[5]>0)
- taozhong_buf[5]=taozhong_buf[5]-1;
- if(taozhong_buf[5]==9&&taozhong_buf[4]>0)
- {taozhong_buf[5]-=1;}
- break;
- }
- case 5:{if(warning_tem[1]>0)
- warning_tem[1]-=1;
- break;
- }
- case 6:{if(warning_tem[2]>0)
- warning_tem[2]-=1;
- break;
- }
- }
- naozhong_View();
- }
- else
- {
- switch(Set_Mode)
- {case 1:{if(time_buf2[4]>0)
- time_buf2[4]-=1;
- if(time_buf2[4]==0&&time_buf2[3]>0)
- {time_buf2[4]=9;time_buf2[3]-=1;}
- break;}
- case 2:{if(time_buf2[6]>0)
- time_buf2[6]-=1;
- if(time_buf2[6]==0&&time_buf2[5]>0)
- {time_buf2[6]=9;time_buf2[5]-=1;}
- break;}
- case 3:{if(time_buf2[8]>0)
- time_buf2[8]-=1;
- if(time_buf2[8]==0&&time_buf2[7]>0)
- {time_buf2[8]=9;time_buf2[7]-=1;}
- break; }
- case 4:{if(time_buf2[18]>0)
- time_buf2[18]-=1; }
- case 5:{if(time_buf2[13]>0)
- time_buf2[13]-=1;
- if(time_buf2[13]==0&&time_buf2[12]>0)
- {time_buf2[13]=9;time_buf2[12]-=1;}
- break;}
- case 6:{if(time_buf2[15]>0)
- time_buf2[15]-=1;
- if(time_buf2[15]==0&&time_buf2[14]>0)
- {time_buf2[15]=9;time_buf2[14]-=1;}
- break;}
- case 7:{if(time_buf2[17]>0)
- time_buf2[17]-=1;
- if(time_buf2[17]==0&&time_buf2[16]>0)
- {time_buf2[17]=9;time_buf2[16]-=1;}
- break;}
-
- }
- tiaoshi_view();
- }
- }
- anjianzhi=0;
- }
- }
- }
- void naozhong_View()
- {uchar i;
- Write_Com_1602(0x80);
- Write_Dat_1602('C');
- Write_Dat_1602('l');
- Write_Dat_1602('o');
- Write_Dat_1602('_');
- Write_Dat_1602('S');
- Write_Dat_1602('e');
- Write_Dat_1602('t');
- Write_Dat_1602(' ');
- for(i=0;i<6;i++)
- {Write_Dat_1602(taozhong_buf[i]+48);
- if(i==1||i==3)
- Write_Dat_1602(':');
- }
- Write_Com_1602(0x80+0x40);
- Write_Dat_1602('T');
- Write_Dat_1602('e');
- Write_Dat_1602('m');
- Write_Dat_1602('_');
- Write_Dat_1602('S');
- Write_Dat_1602('e');
- Write_Dat_1602('t');
- Write_Dat_1602(' ');
- Write_Dat_1602(' ');
- Write_Dat_1602(warning_tem[0]);
- Write_Dat_1602(warning_tem[1]+48);
- Write_Dat_1602(warning_tem[2]+48);
- Write_Dat_1602('.');
- Write_Dat_1602(warning_tem[3]+48);
- Write_Dat_1602(0xdf);
- Write_Dat_1602('C');
- if(Clock_Mode==1)
- {if(guang_wei2==0)
- Write_Com_1602(0x80+guang_wei);
- else
- Write_Com_1602(0x80+0x40+guang_wei2);
- }
- }
- void time0() interrupt 1
- {uchar anjian=0;
- TR0=0;
- TH0=(65536-10000)/256;
- TL0=(65536-10000)%256;
- if(Key_Clock==0||Key_Set==0||Key_up==0||Key_down==0)//有按鍵按下
- {
- delay_1ms(12);
- if(Key_Clock==0||Key_Set==0||Key_up==0||Key_down==0)//有按鍵按下
- {anjian=P1&0xf0;
- switch(anjian)
- {case 0xe0:anjianzhi=8;break; //鬧鐘鍵按下
- case 0xd0:anjianzhi=4;break; //設置鍵按下
- case 0xb0:anjianzhi=2;break; //上調移鍵按下
- case 0x70:anjianzhi=1;break; //下調鍵按下
- }
- }
- }
- while(Key_Clock==0||Key_Set==0||Key_up==0||Key_down==0);
- TR0=1;
- }
- void time1() interrupt 3
- {uchar m,i;
- TR1=0;
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;
- if(time1_jishu1<3)
- time1_jishu1++;
- else
- {time1_jishu1=0;
- Time_View();
- }
- if(time_jishu2<13)
- time_jishu2++;
- else
- {time_jishu2=0;
- if(forbid_Tem==0)
- {
- if(DS18B20_Mode==0)
- {
- ChangeTemperature();
- DS18B20_Mode=1;
- }
- else
- {Temp_View();
- DS18B20_Mode=0;
- if(warning_tem[0]=='-'&&temp_buf[0]!='-')
- {fengmingqi=0;fengmingqi_jishi=0;}
- if((warning_tem[0]!='-'&&temp_buf[0]!='-')&&(warning_tem[1]*10+warning_tem[2]<=(temp_buf[1]-48)*10+(temp_buf[2]-48)))
- {fengmingqi=0;fengmingqi_jishi=0;
- }
- if((warning_tem[0]=='-'&&temp_buf[0]=='-')&&(warning_tem[1]*10+warning_tem[2]>=(temp_buf[1]-48)*10+(temp_buf[2]-48)))
- {fengmingqi=0;fengmingqi_jishi=0;}
- } //溫度報警
- }
- }
- if( taozhong_buf[0]==time_buf2[12]&& //時間報警
- taozhong_buf[1]==time_buf2[13]&&
- taozhong_buf[2]==time_buf2[14]&&
- taozhong_buf[3]==time_buf2[15]&&
- taozhong_buf[4]==time_buf2[16]&&
- taozhong_buf[5]==time_buf2[17])
- {fengmingqi=0;
- fengmingqi_jishi=0;
- }
- fengmingqi_jishi++;
- if(fengmingqi==0&&fengmingqi_jishi>=200)
- {fengmingqi=1;
- fengmingqi_jishi=0;
- }
- TR1=1;
- }
- void tiaoshi_view()
- {uchar i;
- Write_Com_1602(0x80);
- switch(time_buf2[18])
- {case 1:time_buf2[9]='M'-48;time_buf2[10]='O'-48;time_buf2[11]='N'-48;break;
- case 2:time_buf2[9]='T'-48;time_buf2[10]='U'-48;time_buf2[11]='E'-48;break;
- case 3:time_buf2[9]='W'-48;time_buf2[10]='E'-48;time_buf2[11]='D'-48;break;
- case 4:time_buf2[9]='T'-48;time_buf2[10]='H'-48;time_buf2[11]='U'-48;break;
- case 5:time_buf2[9]='F'-48;time_buf2[10]='R'-48;time_buf2[11]='I'-48;break;
- case 6:time_buf2[9]='S'-48;time_buf2[10]='A'-48;time_buf2[11]='T'-48;break;
- case 7:time_buf2[9]='S'-48;time_buf2[10]='U'-48;time_buf2[11]='N'-48;break;
- }
- for(i=1;i<18;i++)
- { Write_Dat_1602(time_buf2[i]+48);
- if(i==4|i==6)
- Write_Dat_1602('-');
- if(i==8)
- Write_Dat_1602(' ');
- if(i==11)
- {
- Write_Com_1602(0x80+0x40);
- }
- if(i==13||i==15)
- Write_Dat_1602(':');
- }
- Write_Dat_1602(' ');
- Write_Dat_1602('T');
- Write_Dat_1602('i');
- Write_Dat_1602('m');
- Write_Dat_1602('_');
- Write_Dat_1602('S');
- Write_Dat_1602('e');
- Write_Dat_1602('t');
- if(Set_Mode>0)
- Write_Com_1602(guang_wei);
- }
- void Time_View()
- { uchar i;
- ds1302_read_time();
- Write_Com_1602(0x80);
- for(i=1;i<18;i++)
- { Write_Dat_1602(time_buf2[i]+48);
- if(i==4|i==6)
- Write_Dat_1602('-');
- if(i==8)
- Write_Dat_1602(' ');
- if(i==11)
- {
- Write_Com_1602(0x80+0x40);
- }
- if(i==13||i==15)
- Write_Dat_1602(':');
- }
- if(Set_Mode>0)
- Write_Com_1602(guang_wei);
- }
- void Temp_View()
- {uint t;
- uchar i;
- t=ReadTemperature();
- temp_buf[5]=0xdf;
- temp_buf[6]='C';
- temp_buf[3]='.';
- Write_Com_1602(0x80+0x49);
- if(t&0x8000)
- {temp_buf[0]='-';t=~t;t+=1;}
- else
- temp_buf[0]=' ';
- if(t&0x0001)
- temp_buf[4]='5';
- else
- temp_buf[4]='0';
- t=t>>4;
- temp_buf[1]=t/10+48;
- temp_buf[2]=t%10+48;
- for(i=0;i<7;i++)
- Write_Dat_1602(temp_buf[i]);
- }
- ////////////////////////////DS1302驅動///////////////////////////
- uchar ds1302_read_byte(uchar addr)
- { uchar i;
- uchar temp;
- DS_RES=1; /*啟動DS1302總線*/
- addr=addr|0x01; /*最低位置高*/
- /*寫入目標地址:addr*/
- for (i=0;i<8;i++)
- {
- if (addr&0x01)
- DS_IO=1;
- else
- DS_IO=0;
- DS_CLK=1;
- DS_CLK=0;
- addr=addr>>1;
- }
-
- /*輸出數據:temp*/
- for(i=0;i<8;i++)
- {
- temp=temp>>1;
- if(DS_IO)
- temp|=0x80;
- else
- temp&=0x7F;
- DS_CLK=1;
- DS_CLK=0;
- }
- DS_RES=0; /*停止DS1302總線*/
- return temp;
- }
- void ds1302_write_byte(uchar addr, uchar Dat)
- {
- uchar i;
- DS_RES=1; /*啟動DS1302總線*/
- /*寫入目標地址:addr*/
- addr=addr&0xFE; /*最低位置零*/
- for(i=0;i<8;i++)
- {
- if(addr&0x01)
- DS_IO=1;
- else
- DS_IO=0;
- DS_CLK=1;
- DS_CLK=0;
- addr=addr>>1;
- }
-
- /*寫入數據:Dat*/
- for (i=0;i<8;i++)
- {
-
- if (Dat&0x01)
- DS_IO=1;
- else
- DS_IO=0;
-
- DS_CLK=1;
- DS_CLK=0;
- Dat=Dat>>1;
- }
- DS_RES=0; /*停止DS1302總線*/
- }
- void ds1302_write_time(void)
- {
- unsigned char i,tmp;
- time_buf1[1]=time_buf2[3]*10;
- time_buf1[1]+=time_buf2[4];
- time_buf1[2]=time_buf2[5]*10;
- time_buf1[2]+=time_buf2[6];
- time_buf1[3]=time_buf2[7]*10;
- time_buf1[3]+=time_buf2[8];
- time_buf1[4]=time_buf2[12]*10;
- time_buf1[4]+=time_buf2[13];
- time_buf1[5]=time_buf2[14]*10;
- time_buf1[5]+=time_buf2[15];
- time_buf1[6]=time_buf2[16]*10;
- time_buf1[6]+=time_buf2[17];
- time_buf1[7]=time_buf2[18];
- for(i=0;i<8;i++)
- { //BCD處理
- tmp=time_buf1[i]/10;
- time_buf[i]=time_buf1[i]%10;
- time_buf[i]=time_buf[i]+tmp*16;
- }
- ds1302_write_byte(ds1302_control_add,0x00); //關閉寫保護
- ds1302_write_byte(ds1302_sec_add,0x80); //暫停
- ds1302_write_byte(ds1302_charger_add,0xa9); //涓流充電
- ds1302_write_byte(ds1302_year_add,time_buf[1]); //年
- ds1302_write_byte(ds1302_month_add,time_buf[2]); //月
- ds1302_write_byte(ds1302_date_add,time_buf[3]); //日
- ds1302_write_byte(ds1302_day_add,time_buf[7]); //周
- ds1302_write_byte(ds1302_hr_add,time_buf[4]); //時
- ds1302_write_byte(ds1302_min_add,time_buf[5]); //分
- ds1302_write_byte(ds1302_sec_add,time_buf[6]); //秒
- ds1302_write_byte(ds1302_day_add,time_buf[7]); //周
- ds1302_write_byte(ds1302_control_add,0x80); //打開寫保護
- }
- void ds1302_read_time(void)
- {
- uchar i,tmp;
- time_buf[1]=ds1302_read_byte(ds1302_year_add); //年
- time_buf[2]=ds1302_read_byte(ds1302_month_add); //月
- time_buf[3]=ds1302_read_byte(ds1302_date_add); //日
- time_buf[4]=ds1302_read_byte(ds1302_hr_add); //時
- time_buf[5]=ds1302_read_byte(ds1302_min_add); //分
- time_buf[6]=(ds1302_read_byte(ds1302_sec_add))&0x7F;//秒
- time_buf[7]=ds1302_read_byte(ds1302_day_add); //周
- for(i=0;i<8;i++)
- { //BCD處理
- tmp=time_buf[i]/16;
- time_buf1[i]=time_buf[i]%16;
- time_buf1[i]=time_buf1[i]+tmp*10;
- }
- time_buf2[1]=time_view1;
- time_buf2[2]=time_view2;
- time_buf2[3]=(time_buf1[1]%100)/10;
- time_buf2[4]=time_buf1[1]%10;
- time_buf2[5]=(time_buf1[2]%100)/10;
- time_buf2[6]=time_buf1[2]%10;
- time_buf2[7]=(time_buf1[3]%100)/10;
- time_buf2[8]=time_buf1[3]%10;
- switch(time_buf1[7])
- {case 1:time_buf2[9]='M'-48;time_buf2[10]='O'-48;time_buf2[11]='N'-48;break;
- case 2:time_buf2[9]='T'-48;time_buf2[10]='U'-48;time_buf2[11]='E'-48;break;
- case 3:time_buf2[9]='W'-48;time_buf2[10]='E'-48;time_buf2[11]='D'-48;break;
- case 4:time_buf2[9]='T'-48;time_buf2[10]='H'-48;time_buf2[11]='U'-48;break;
- case 5:time_buf2[9]='F'-48;time_buf2[10]='R'-48;time_buf2[11]='I'-48;break;
- case 6:time_buf2[9]='S'-48;time_buf2[10]='A'-48;time_buf2[11]='T'-48;break;
- case 7:time_buf2[9]='S'-48;time_buf2[10]='U'-48;time_buf2[11]='N'-48;break;
- }
- time_buf2[18]=time_buf1[7];
- time_buf2[12]=(time_buf1[4]%100)/10;
- time_buf2[13]=time_buf1[4]%10;
- time_buf2[14]=(time_buf1[5]%100)/10;
- time_buf2[15]=time_buf1[5]%10;
- time_buf2[16]=(time_buf1[6]%100)/10;
- time_buf2[17]=time_buf1[6]%10;
- }
- /////////////////////////LCD1602驅動//////////////////////
- void Write_Com_1602(uchar Com_1602)
- {LCD_RS=0;
- LCD_RW=0;
- LCD_E=0;
- delay_1us(3);
- LCD_E=1;
- P0=Com_1602;
- delay_1us(3);
- LCD_E=0;
- }
- void Write_Dat_1602(uchar Dat_1602)
- {LCD_RS=1;
- LCD_RW=0;
- LCD_E=0;
- delay_1us(3);
- LCD_E=1;
- P0=Dat_1602;
- delay_1us(3);
- LCD_E=0;
- }
- void Init_1602()
- {
- Write_Com_1602(0X38);
- delay_1ms(5);
- Write_Com_1602(0X08);
- delay_1ms(5);
- Write_Com_1602(0X01);
- Write_Com_1602(0X06);
- delay_1ms(5);
- Write_Com_1602(0X0C);
- }
- //////////////////////18B20驅動/////////////////////
- void Init_DS18B20(void)
- {
- unsigned char x=0;
- DQ = 1; //DQ復位
- delay(8); //稍做延時
- DQ = 0; //單片機將DQ拉低
- delay(80); //精確延時 大于 480us
- DQ = 1; //拉高總線
- delay(10);
- x=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
- delay(5);
- }
- uchar ReadOneChar(void)
- {
- unsigned char i=0;
- unsigned char dat = 0;
- for (i=8;i>0;i--)
- {
- DQ = 0; // 給脈沖信號
- dat>>=1;
- DQ = 1; // 給脈沖信號
- if(DQ)
- dat|=0x80;
- delay(5);
- }
- return(dat);
- }
- void WriteOneChar(unsigned char dat)
- {
- unsigned char i=0;
- for (i=8; i>0; i--)
- {
- DQ = 0;
- DQ = dat&0x01;
- delay(5);
- DQ = 1;
- dat>>=1;
- }
- delay(5);
- }
- void ChangeTemperature(void)
- {Init_DS18B20();
- WriteOneChar(0xCC); // 跳過讀序號列號的操作
- WriteOneChar(0x44); // 啟動溫度轉換
- }
- uint ReadTemperature(void)
- {
- unsigned char a=0;
- unsigned int b=0;
- unsigned int t=0;
- Init_DS18B20();
- WriteOneChar(0xCC); //跳過讀序號列號的操作
- WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
- a=ReadOneChar(); //低位
- b=ReadOneChar(); //高位
- b<<=8;
- t=a+b;
- return(t);
- }
- void delay_1us(int delay_us)
- {while(delay_us)
- {
- delay_us--;
- }
- }
- void delay_1ms(int delay)
- {int delay1;
- for(;delay;delay--)
- for(delay1=80;delay1;)
- {delay1--;}
- }
- void delay(uint i)//延時函數
- {
- while(i--);
- }
復制代碼 |