?? 123.txt
字號:
unsigned char b=0;
unsigned int t=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳過讀序號列號的操作
WriteOneChar(0x44); // 啟動溫度轉換
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0xBE); //讀取溫度寄存器
a=ReadOneChar(); //讀低8位
b=ReadOneChar(); //讀高8位
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;
t= tt*10+0.5; //放大10倍輸出并四舍五入
return(t);
}
/******************************************************************************/
//1302驅動程序
/******************************************************************************/
void Init_1302(void)//設置1302的初始時間
{
K1=1; K2=1; K3=1; K4=1; K5=1;
K6=1; K7=1; KT=0; n=0;
Timer0_Init();//新更改
}
clock_out(void)
{
unsigned char i;
for(i=8; i>0; i--)
{
ACC = ACC >>1;
ACC7 = IO;
CLK = 1; //上升沿讀出數據//
CLK = 0;
}
return(ACC);
}
/******************************************************************************/
void clock_in(unsigned char dat)
{
unsigned char i;
ACC = dat;
for(i=8; i>0; i--)
{
IO = ACC0;
CLK = 1; //下降沿寫入數據//
CLK = 0;
ACC = ACC >> 1;
}
}
/******************************************************************************/
unsigned char read_clock(unsigned char Add)
{
unsigned char Date;
RST2 = 0;
CLK = 0;
RST2 = 1;
clock_in(Add); // 先給地址,命令 //
Date = clock_out(); // 再讀一字節數據 //
CLK = 1;
RST2 =0;
return(Date);
}
/******************************************************************************/
void write_clock(unsigned char Addr,unsigned char Date)
{
RST2 = 0;
CLK = 0;
RST2 = 1;
clock_in(Addr); // 先給地址,命令 //
clock_in(Date); // 再寫入一字節數據 //
CLK = 1;
RST2 =0;
}
/******************************************************************************/
void Disp(void)//顯示和閃爍函數!
{
unsigned int i=0;
unsigned char a=0,b=0,c=0,f=0;
i=ReadTemperature();//讀溫度并送顯
a=i/100;
Mcs=1;Scs=0;
Disp_Digit(5,40,zero+a*16);
b=i/10-a*10;
Mcs=1;Scs=0;
Disp_Digit(5,48,zero+b*16);
c=i-a*100-b*10;
Mcs=0;Scs=1;
Disp_Digit(5,0,zero+c*16);
if(sec==1) //秒閃爍標志位
{
if(flag==1)
{
d=read_clock(0x81);//讀秒
e=d;
d=d>>4;
e=e&0x0f;
Mcs=0;Scs=1;
Disp_Digit(3,40,zero+d*16);//送顯示
Disp_Digit(3,48,zero+e*16);
}
else
{
Mcs=0;Scs=1;
Disp_Digit(3,40,space); //顯示空格
Disp_Digit(3,48,space);
}
}
else
{
d=read_clock(0x81);//讀秒
e=d;
d=d>>4;
e=e&0x0f;
Mcs=0;Scs=1;
/********************************************************************************/
if(d == 0 && e == 0)
{
flag_sec = 1;//秒標志位設定
}
/********************************************************************************/
Disp_Digit(3,40,zero+d*16);
Disp_Digit(3,48,zero+e*16);
}
if(min==1) //分鐘閃爍標志位
{
if(flag==1)
{
d=read_clock(0x83);//讀分鐘
e=d;
d=d>>4;
e=e&0x0f;
Mcs=0;Scs=1;
Disp_Digit(3,16,zero+d*16);
Disp_Digit(3,24,zero+e*16);
}
else
{
Mcs=0;Scs=1;
Disp_Digit(3,16,space); //顯示空格
Disp_Digit(3,24,space);
}
}
else
{
d=read_clock(0x83);//讀分鐘
e=d;
d=d>>4;
e=e&0x0f;
Mcs=0;Scs=1;
/******************************************************************************/
if(d == 0 && e == 0)
{
flag_min = 1;//分標志位設定
}
/******************************************************************************/
Disp_Digit(3,16,zero+d*16);
Disp_Digit(3,24,zero+e*16);
}
if(flag_sec == 1 && flag_min == 1)
{
Beep();//整點報警
flag_sec = 0;//清除標志位
flag_min = 0;
}
if(hour==1) //小時閃爍標志位
{
if(flag==1)
{
d=read_clock(0x85);//讀小時
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(3,56,zero+d*16);
Mcs=0;Scs=1;
Disp_Digit(3,0,zero+e*16);
}
else
{
Mcs=1;Scs=0;
Disp_Digit(3,56,space); //顯示空格
Mcs=0;Scs=1;
Disp_Digit(3,0,space);
}
}
else
{
d=read_clock(0x85);//讀小時
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(3,56,zero+d*16);
Mcs=0;Scs=1;
Disp_Digit(3,0,zero+e*16);
}
if(year==1) //年閃爍標志位
{
if(flag==1)
{
d=read_clock(0x8d);//讀年
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(1,8,two);
Disp_Digit(1,16,zero);
Disp_Digit(1,24,zero+d*16);
Disp_Digit(1,32,zero+e*16);
}
else
{
Mcs=1;Scs=0;
Disp_Digit(1,24,space); //顯示空格
Disp_Digit(1,32,space);
}
}
else
{
d=read_clock(0x8d);//讀年
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(1,8,two);
Disp_Digit(1,16,zero);
Disp_Digit(1,24,zero+d*16);
Disp_Digit(1,32,zero+e*16);
}
if(mon==1) //月閃爍標志位
{
if(flag==1)
{
d=read_clock(0x89);//讀月
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(1,56,zero+d*16);
Mcs=0;Scs=1;
Disp_Digit(1,0,zero+e*16);
Disp_Chinese(1,8,yue);
}
else
{
Mcs=1;Scs=0;
Disp_Digit(1,56,space); //顯示空格
Mcs=0;Scs=1;
Disp_Digit(1,0,space);
}
}
else
{
d=read_clock(0x89);//讀月
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(1,56,zero+d*16);
Mcs=0;Scs=1;
Disp_Digit(1,0,zero+e*16);
Disp_Chinese(1,8,yue);
}
if(day==1) //日閃爍標志位
{
if(flag==1)
{
d=read_clock(0x87);//讀日
e=d;
d=d>>4;
e=e&0x0f;
Mcs=0;Scs=1;
Disp_Digit(1,24,zero+d*16);
Disp_Digit(1,32,zero+e*16);
Disp_Chinese(1,40,ri);
}
else
{
Mcs=0;Scs=1;
Disp_Digit(1,24,space); //顯示空格
Disp_Digit(1,32,space);
}
}
else
{
d=read_clock(0x87);//讀日
e=d;
d=d>>4;
e=e&0x0f;
Mcs=0;Scs=1;
Disp_Digit(1,24,zero+d*16);
Disp_Digit(1,32,zero+e*16);
Disp_Chinese(1,40,ri);
}
if(weekk==1) //星期閃爍標志位
{
if(flag==1)
{
d=read_clock(0x8b);//讀星期
Mcs=1;Scs=0;
Disp_Chinese(3,40,cone+(d-1)*32);//寫入星期的漢字
}
else
{
Mcs=1;Scs=0;
Disp_Chinese(3,40,spaces); //顯示空格
}
}
else
{
d=read_clock(0x8b);//讀星期
Mcs=1;Scs=0;
Disp_Chinese(3,40,cone+(d-1)*32);//寫入星期的漢字
}
}
/******************************************************************************/
void Disp2(void)//顯示和閃爍函數
{
if(Kgb==1) //開關閃爍標志位
{
if(flag==1)
{
if(Bell_Swh == 0)//0為關
{
Mcs=0;Scs=1;
Disp_Chinese(2,32,guan);//顯示關
}
else
{
Mcs=0;Scs=1;
Disp_Chinese(2,32,kai);//顯示開
}
}
else
{
Mcs=0;Scs=1;
Disp_Chinese(2,32,spaces); //顯示空格
}
}
else
{
if(Bell_Swh == 0)//關
{
Mcs=0;Scs=1;
Disp_Chinese(2,32,guan);
}
else
{
Mcs=0;Scs=1;
Disp_Chinese(2,32,kai);
}
}
if(Hourb==1) //時閃爍標志位
{
if(flag==1)
{
d=read_clock(0xc3);//讀鬧鐘小時的數值
e=d;
d=d>>4;
e=e&0x0f;
Mcs=1;Scs=0;
Disp_Digit(4,48,zero+d*16);
Disp_Digit(4,56,zero+e*16);
}
else
{
Mcs=1;Scs=0;
Disp_Digit(4,48,space); //顯示空格
Disp_Digit(4,56,space);
}
}
else
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -