資源簡介
用stc89c52單片機控制液晶1602顯示溫度(溫度傳感器ds18b20)和時間,不同溫度段有不同的指示燈亮,四個按鍵進行調時,有原理圖

代碼片段和文件信息
#include
#define?uchar?unsigned?char
#define?uint??unsigned?int
#include?
sbit?YLED=P1^6;
sbit?GLED=P1^5;
sbit?RLED=P1^4;??
sbit?dq=P1^3;//18b20
sbit?rs=P1^2;//1602??????
sbit?rw=P1^1;//1602
sbit?ep=P1^0;//1602
sbit?k3=P2^3;?
sbit?k2=P2^1;??????
sbit?k1=P2^2;
sbit?k0=P2^0;?
int?temp;
unsigned?char?datas[10];
uchar?tt;
uchar?hou=12min=30sec=0
???????????????nh=20nl=11 //2011年
???????????????y=6r=12; //6月12日
void?delay(uint?z) ???//?延時程序
{
uint?xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void?write_com(uchar?com) //?寫入指令數據到LCD
{
rs=0;
ep=0; ?????
P0=com;
delay(5);
ep=1;
delay(5);
ep=0;
}
void?write_data(uchar?date) ???//?寫入字符顯示數據到LCD?
{
rs=1;
P0=date;
delay(5);
ep=1;
delay(5);
ep=0;
}
void?init() ?// LCD初始化?
{?? tt=0;
rw=0;????
write_com(0x38);?//?顯示模式設置
write_com(0x0c);?//?顯示開關及光標設置
write_com(0x06);?//?顯示光標設置
write_com(0x01);?//?顯示清屏設置
????TMOD=0X01;
????TH0=(65536-50000)/256;?
????TL0=(65536-50000)%256;
????TR0=1;
????ET0=1;?
????EA=1;
}
/*數據處理顯示*/
void?lcd_sfm(uchar?adduchar?aa)?//時分秒
{
??uchar?hl;
??h=aa/10;
??l=aa%10;?
??write_com(0xc0+add);
??write_data(0x30+h);
??write_data(0x30+l);?
}
void?lcd_nh(uchar?adduchar?aa)?// 年h
{
??uchar?hl;
??h=aa/10; ?// ?2
??l=aa%10; ????// ?0
??write_com(0x80+add);
??write_data(0x30+h);
??write_data(0x30+l);
}
void?lcd_nl(uchar?adduchar?aa)?// 年l
{
??uchar?hl;
??h=aa/10; ????????//1 ?
??l=aa%10;? ????? //1
??write_com(0x80+add);
??write_data(0x30+h);
??write_data(0x30+l);
}
void?lcd_yr(uchar?adduchar?aa)?// 月日
{
??uchar?hl;
??h=aa/10;
??l=aa%10;?
??write_com(0x80+add);
??write_data(0x30+h);
??write_data(0x30+l);?
}
void?changetime() ?
{??int?s=0t=1;
???while(t)
??{ if(k2==0)
???{delay(10);
????if(k2==0)
{
?while(k2==0);
?s++;
}
???}
??if(s==1)
??{write_com(0xc0+0x0b);?write_com(0xc0+0x0c); ?// ?調分
???write_com(0x0f);
???if(k1==0)
?{?delay(10);?
???if(k1==0)
???{while(k1==0);?
?????min++;
????if(min==60)
?min=0;
?lcd_sfm(0x0bmin);
???} ?
?}
???????if(k3==0)
?{?delay(10);?
???if(k3==0)
???{while(k3==0);?
?????min--;
????if(min==-1)
?????min=59;
?lcd_sfm(0x0bmin);
???} ?
?}
? ???}
??if(s==2)
??????{write_com(0xc0+0x08);?write_com(0xc0+0x09); // ???調時
???if(k1==0)
???{delay(10);?
????if(k1==0)
?????{while(k1==0);
??hou++;
??if(hou==24)
??????hou=0;?
??lcd_sfm(0x08hou);
?????} ?
???}
??if(k3==0)
???{delay(10);?
????if(k3==0)
?????{while(k3==0);
??hou--;
??if(hou==-1)??
??????hou=23;
??lcd_sfm(0x08hou);
?????} ?
???}
? ??????} ???
??if(s==3) ???// 調日
??????{write_com(0x80+0x0b);?write_com(0x80+0x0c);
???if(k1==0)
???{delay(10);?
????if(k1==0)
?????{?while(k1==0);
???r++;
???if(r==32)
???????r=1;?
???lcd_yr(0x0br);
?????} ?
???}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-08-02?14:44??lcd1602?ds18b20??at89c51\
?????文件???????20519??2011-07-17?08:55??lcd1602?ds18b20??at89c51\l
?????文件????????6628??2011-07-17?08:55??lcd1602?ds18b20??at89c51\l.c
?????文件????????7074??2011-07-17?08:55??lcd1602?ds18b20??at89c51\l.hex
?????文件??????????50??2011-07-17?08:55??lcd1602?ds18b20??at89c51\l.lnp
?????文件???????16277??2011-07-17?08:55??lcd1602?ds18b20??at89c51\l.LST
?????文件???????29025??2011-07-17?08:55??lcd1602?ds18b20??at89c51\l.M51
?????文件???????22211??2011-07-17?08:55??lcd1602?ds18b20??at89c51\l.OBJ
?????文件????????1239??2011-07-17?11:26??lcd1602?ds18b20??at89c51\l.Opt
?????文件????????1231??2011-06-13?19:48??lcd1602?ds18b20??at89c51\l.opt.bak
?????文件?????????356??2011-07-17?11:26??lcd1602?ds18b20??at89c51\l.plg
?????文件????????2026??2011-06-12?19:54??lcd1602?ds18b20??at89c51\l.Uv2
?????文件????????2026??2011-06-12?19:54??lcd1602?ds18b20??at89c51\l.Uv2.bak
?????文件???????56614??2011-06-15?22:56??lcd1602?ds18b20??at89c51\l.uvopt
?????文件???????13388??2011-06-13?22:54??lcd1602?ds18b20??at89c51\l.uvproj
?????文件??????174853??2011-07-02?11:31??lcd1602?ds18b20??at89c51\Last?Loaded?LCD1602.DBK
?????文件??????175466??2011-07-17?08:50??lcd1602?ds18b20??at89c51\LCD1602.DSN
?????文件????????1054??2011-07-17?11:27??lcd1602?ds18b20??at89c51\LCD1602.PWI
?????文件????????1237??2011-07-13?16:30??lcd1602?ds18b20??at89c51\l_Opt.Bak
?????文件???????56614??2011-06-13?22:54??lcd1602?ds18b20??at89c51\l_uvopt.bak
?????文件????????5115??2002-04-16?14:32??lcd1602?ds18b20??at89c51\STARTUP.A51
?????文件???????11665??2011-07-17?08:55??lcd1602?ds18b20??at89c51\STARTUP.LST
?????文件?????????749??2011-07-17?08:55??lcd1602?ds18b20??at89c51\STARTUP.OBJ
- 上一篇:基于smtp協議的郵件發送程序
- 下一篇:hmc5883l 與51單片機接線圖
評論
共有 條評論