資源簡介
采用DS1302時鐘芯片用1602液晶顯示具有顯示時間,日期,溫度功能,支持多組鬧鈴

代碼片段和文件信息
//*******Designed?By?FF********
#include
#define?ui?unsigned?int?
#define?uc?unsigned?char?
sbit?clk=P1^0;//?ds1302?端口
sbit?io=P1^1;
sbit?rst=P1^2;
sbit?rs=P2^3;//1602液晶?端口
sbit?en=P2^1;
sbit?rw=P2^2;
sbit?DQ=P2^0;//ds18b20?端口
sbit?key1=P3^3;?//按鍵定義
sbit?key2=P3^2;
sbit?key3=P3^1;
sbit?key4=P3^0;
sbit?feng=P1^4;?//蜂鳴器控制端
uc?code?table[]=?“20??-??-“;
uc?code?table1[]=“??:??:??????.??c“;
uc?shifenmiaoshi1shi2fen1fen2nianyuericountflagflag1;
uc?abcdemnsnumnlingcount;
int?t1t2;?
float?tt;
///////////////////**延時部分**////////////////////
void?delay1(ui?i)?//us延時函數
{
?while(i--);
}
void?delay(ui?z)?//ms延時函數
{
???ui?xy;
???for(x=z;x>0;x--)
?????for(y=110;y>0;y--);
}
///////////////////**1602液晶**////////////////////
void?write_1602(uc?duc?date)?
{?
???rs=d;??????//d=0寫命令?d=1寫數據
???P0=date;
???delay(2);
???en=1;
???delay(2);
???en=0;
}
void?wadd_1602s(uc?adduc?date)//往lcd指定地址寫兩位數據
{
uc?shige;
shi=date/10;
ge=date%10;
write_1602(0add);
write_1602(10x30+shi);
write_1602(10x30+ge);
}
void?wadd_1602z(uc?add1uc?date1uc?date2uc?date3)??//?指定地址寫三位字符
{
???write_1602(0add1);
???write_1602(1date1);
???write_1602(1date2);
???write_1602(1date3);
}
void?init_1602()?//1602初始化
{
????uc?a;
????rw=0;
????write_1602(00x38);
????write_1602(00x0c);
????write_1602(00x06);
????write_1602(00x01);
????for(a=0;a<=7;a++)
???????{?
?????????write_1602(1table[a]);
???????}
????write_1602(00x80+0x40);
????for(a=0;a<=16;a++)
???????{
?????????write_1602(1table1[a]);
???????}
}
////////////////////**ds1302時鐘**////////////////////
void?write_1302(uc?date)??//寫數據
{
??ui?ik;
??k=date;
??for(i=0;i<8;i++)
?????{
???????io=k&0x01;
???????clk=1;
???????clk=0;
???????k=k>>1;
?????}
}
uc?read_1302()??//讀數據
{
??ui?ik;
??for(i=0;i<8;i++)
?????{
???????k=k>>1;
???????if(io==1)k=k+0x80;
???????clk=1;
???????clk=0;
?????}
??return?k;
}
void?wadd_1302(uc?adduc?date)??//指定地址寫數據
{?
??rst=0;
??clk=0;
??rst=1;
??write_1302(add);
??write_1302(date);
??clk=1;
??rst=0;
}
uc?radd_1302(uc?add)??//指定地址讀數據
{??
??uc?d;
??rst=0;
??clk=0;
??rst=1;
??write_1302(add|0x01);
??d=read_1302();
??clk=1;
??rst=0;
??return?d;
}
////////////////////**18b20測溫**//////////////////
void?init_ds18b20()???//18b20初始化函數
{
?uc?x=0;
?DQ?=?1;????//DQ復位
?delay1(8);??//稍做延時
?DQ?=?0;????//單片機將DQ拉低
?delay1(80);?//精確延時?大于?480us
?DQ?=?1;????//拉高總線
?delay1(10);
?x=DQ;??????//稍做延時后?如果x=0則初始化成功?x=1則初始化失敗
?delay1(5);
}
uc?ReadOneChar()?//讀一個字節
{
uc?i;
uc?dat=0;
for?(i=8;i>0;i--)
?{
??DQ?=?0;?//?給脈沖信號
??dat>>=1;
??DQ?=?1;?//?給脈沖信號
??if(DQ)
??dat|=0x80;
??delay1(5);
?}
?return(dat);
}
void?WriteOneChar(uc?dat)//寫一個字節
{
?uc?i;
?for?(i=8;?i>0;?i--)
?{
??DQ?=?0;
??DQ?=?dat&0x01;
??delay1(5);
??DQ?=?1;
??dat>>=1;
?}
delay1(5);
}
void?ReadTem()//讀取溫度
{
??init_ds18b20();
??WriteOneCha
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????121710??2010-01-25?22:51??DS1302+1602液晶+測溫(多組鬧鈴)\ds1302+測溫+液晶顯示.DSN
?????文件??????????0??2010-01-25?00:02??DS1302+1602液晶+測溫(多組鬧鈴)\keil\1302_Uv2.Bak
?????文件??????29968??2010-01-28?01:04??DS1302+1602液晶+測溫(多組鬧鈴)\keil\1302
?????文件??????14780??2010-01-28?01:04??DS1302+1602液晶+測溫(多組鬧鈴)\keil\1302.c
?????文件???????9942??2010-01-28?01:04??DS1302+1602液晶+測溫(多組鬧鈴)\keil\1302.hex
?????文件??????31220??2010-01-28?01:04??DS1302+1602液晶+測溫(多組鬧鈴)\keil\1302.LST
?????文件??????40938??2010-01-28?01:04??DS1302+1602液晶+測溫(多組鬧鈴)\keil\1302.M51
?????文件??????34899??2010-01-28?01:04??DS1302+1602液晶+測溫(多組鬧鈴)\keil\1302.OBJ
?????文件???????1005??2010-01-28?01:04??DS1302+1602液晶+測溫(多組鬧鈴)\keil\1302.Opt
?????文件????????508??2010-01-28?01:04??DS1302+1602液晶+測溫(多組鬧鈴)\keil\1302.plg
?????文件???????1979??2010-01-25?00:09??DS1302+1602液晶+測溫(多組鬧鈴)\keil\1302.Uv2
?????文件???????1015??2010-01-25?00:09??DS1302+1602液晶+測溫(多組鬧鈴)\keil\1302_Opt.Bak
?????目錄??????????0??2010-01-28?01:06??DS1302+1602液晶+測溫(多組鬧鈴)\keil
?????目錄??????????0??2010-01-28?01:06??DS1302+1602液晶+測溫(多組鬧鈴)
-----------?---------??----------?-----??----
???????????????287964????????????????????14
- 上一篇:JPG圖片偽裝器,任意文件偽裝為圖片
- 下一篇:正弦波信號發生器的設計
評論
共有 條評論