久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
求大神教教怎么接線
[打印本頁(yè)]
作者:
1438147623
時(shí)間:
2018-6-23 21:23
標(biāo)題:
求大神教教怎么接線
#include<reg51.h>
typedef unsigned char uchar;
typedef unsigned int uint;
uchar i;
sbit RS=P2^7;
sbit RW=P2^6;
sbit E=P2^5;
sbit D1=P1^0;
sbit D2=P1^1;
sbit k1=P2^1;//加按鍵
sbit k2=P2^2;//減按鍵
sbit k3=P2^0;//設(shè)置按鍵
uint th=360;//設(shè)定 高溫
uint tl=350;//設(shè)定 低溫
uint ta;//實(shí)際溫度
uchar code t0[]="WD= . ";
uchar code t1[]="TH= . TL= . ";
uchar code wendu[]="0123456789"; //利用一個(gè)溫度表解決溫度顯示亂碼
sbit DQ=P2^3;//定義DS18B20總線IO
uchar position;//設(shè)置的位置
//延時(shí)子函數(shù)
void delay(uint z)
{
uint x,y;
for(x=100;x>1;x--)
for(y=z;y>1;y--);
}
//LCD1602液晶寫命令子函數(shù)
void write_com(uchar com)
{
RS=0;
P0=com;
delay(5);
E=1;
delay(5);
E=0;
}
//LCD1602液晶寫數(shù)據(jù)子函數(shù)
void write_date(uchar date)
{
RS=1;
P0=date;
delay(5);
E=1;
delay(5);
E=0;
}
//LCD1602液晶初始化子函數(shù)
void LCD1602_init()
{
E=0;
RW=0;
write_com(0x38);
write_com(0x01);
write_com(0x0c);
write_com(0x06);
write_com(0x80);
for(i=0;i<16;i++)
{
write_date(t0[i]);
delay(0);
}
write_com(0x80+0x40);
for(i=0;i<16;i++)
{
write_date(t1[i]);
delay(0);
}
}
//延時(shí)子函數(shù)
void tmpDelay(int num)
{
while(num--);
}
//DS18B20溫度傳感器初始化子函數(shù)
void DS18B20_init()
{
uchar x=0;
DQ=1; //DQ復(fù)位
tmpDelay(8); //稍做延時(shí)
DQ=0; //單片機(jī)將DQ拉低
tmpDelay(80); //精確延時(shí) 大于 480us
DQ=1; //拉高總線
tmpDelay(14);
x=DQ; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗
tmpDelay(20);
}
//DS18B20溫度傳感器讀一個(gè)字節(jié)子函數(shù)
uchar ReadOneChar()
{
uchar i=0;
uchar dat=0;
for(i=8;i>0;i--)
{
DQ=0; // 給脈沖信號(hào)
dat>>=1;
DQ=1; // 給脈沖信號(hào)
if(DQ)
dat|=0x80;
tmpDelay(4);
}
return(dat);
}
//DS18B20溫度傳感器寫一個(gè)字節(jié)子函數(shù)
void WriteOneChar(uchar dat)
{
uchar i=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
tmpDelay(5);
DQ=1;
dat>>=1;
}
}
//讀取溫度子函數(shù)
uint Readtemp()
{
uchar a=0;
uchar b=0;
uint t=0;
float tt=0;
DS18B20_init();
WriteOneChar(0xCC); // 跳過(guò)讀序號(hào)列號(hào)的操作
WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
DS18B20_init();
WriteOneChar(0xCC); //跳過(guò)讀序號(hào)列號(hào)的操作
WriteOneChar(0xBE); //讀取溫度寄存器
a=ReadOneChar(); //連續(xù)讀兩個(gè)字節(jié)數(shù)據(jù) //讀低8位
b=ReadOneChar(); //讀高8位
t=b;
t<<=8;
t=t|a; //兩字節(jié)合成一個(gè)整型變量。
tt=t*0.0625; //得到真實(shí)十進(jìn)制溫度值,因?yàn)镈S18B20可以精確到0.0625度,所以讀回?cái)?shù)據(jù)的最低位代表的是0.0625度
t=tt*10+0.5; //放大十倍,這樣做的目的將小數(shù)點(diǎn)后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時(shí)進(jìn)行一個(gè)四舍五入操作。
return(t);
}
//LCD1602液晶顯示子函數(shù)
void display()
{
uint shi,ge,xiaoshu; //這里的num,shi,ge,xiaoshu 必須用unsigned int無(wú)符號(hào)整數(shù)來(lái)表示,用unshigned char 字符型則顯示錯(cuò)誤
shi=th/100; //顯示 最高溫度 Th
ge=th/10%10;
xiaoshu=th%10;
write_com(0x80+0x40+3);
write_date(wendu[shi]);
write_com(0x80+0x40+4);
write_date(wendu[ge]);
write_com(0x80+0x40+6);
write_date(wendu[xiaoshu]);
shi=tl/100; //顯示 最低文帝 Tl
ge=tl/10%10;
xiaoshu=tl%10;
write_com(0x80+0x40+11);
write_date(wendu[shi]);
write_com(0x80+0x40+12);
write_date(wendu[ge]);
write_com(0x80+0x40+14);
write_date(wendu[xiaoshu]);
}
//報(bào)警子函數(shù)
void temp_check()
{
uint shi,ge,xiaoshu; //這里的num,shi,ge,xiaoshu 必須用unsigned int無(wú)符號(hào)整數(shù)來(lái)表示,用unshigned char 字符型則顯示錯(cuò)誤
ta=Readtemp();
if(ta>th)
{
D1=0;
D2=1;
}
else if(ta<tl)
{
D1=1;
D2=0;
}
else
{
D1=1;
D2=1;
}
shi=ta/100; //顯示 實(shí)際溫度
ge=ta/10%10;
xiaoshu=ta%10;
write_com(0x80+3);
write_date(wendu[shi]);
write_com(0x80+4);
write_date(wendu[ge]);
write_com(0x80+6);
write_date(wendu[xiaoshu]);
}
//按鍵掃描子函數(shù)
void key()
{
if(k3==0) //set 按鍵 按下
{
delay(1);
if(k3==0)
{ //設(shè)置位置設(shè)定
position++;
if(position>2)
position=0;
if(position==0) // 無(wú)設(shè)置位置
{
write_com(0x80+0x40+7);
write_date(' ');
write_com(0x80+0x40+15);
write_date(' ');
}
if(position==1) //設(shè)置TH 在th后顯示< 標(biāo)識(shí)當(dāng)前位置
{
write_com(0x80+0x40+7);
write_date('<');
write_com(0x80+0x40+15);
write_date(' ');
}
if(position==2) //設(shè)置Tl 在tl后顯示< 標(biāo)識(shí)當(dāng)前位置
{
write_com(0x80+0x40+7);
write_date(' ');
write_com(0x80+0x40+15);
write_date('<');
}
while(k3==0);
}
}
if(k1==0)
{
delay(1);
if(k1==0)
{
if(position==1)
{
th+=5;
if(th>1000)
th=990;
}
if(position==2)
{
tl+=5; //tl>th時(shí) 是個(gè)錯(cuò)誤,這里避免此情況發(fā)生
if(tl>=th)
tl=th-5;
}
display();
}
while(k1==0);
}
if(k2==0)
{
delay(1);
if(k2==0)
{
if(position==1)
{
th-=5; //th<tl時(shí) 是個(gè)錯(cuò)誤,這里避免此情況發(fā)生
if(th<=tl)
th=tl+5;
}
if(position==2)
{
if(tl<10)
tl=10;
else
tl-=5;
}
display();
}
while(k2==0);
}
}
//主函數(shù)
void main()
{
uint i;
LCD1602_init();
display();
while(1)
{
delay(1);
if((++i)>500) //500ms 檢測(cè)一次溫度
{
temp_check();
i=0;
}
key();
}
}
復(fù)制代碼
AZ.jpg
(375.98 KB, 下載次數(shù): 12)
下載附件
2018-6-23 21:22 上傳
有線 但是不懂怎么接 求大神指點(diǎn)指點(diǎn)
作者:
zhb2004xp
時(shí)間:
2018-6-23 23:26
這個(gè)好像普中科技的學(xué)習(xí)板,程序的上面改一下
sbit RS=P2^6;
sbit RW=P2^5;
sbit E=P2^7;
USB右邊好像只插了紅外接收管,上面溫度那里要插DS18B20,不知道你有沒有?再右邊靠近兩排黑色按鍵的排針接P2口,左上led矩陣右邊的排針接P1。
給你個(gè)原理圖你自己再看看吧
作者:
led種子
時(shí)間:
2018-6-27 22:50
P2^1用杜邦線加按鍵
P2^2用杜邦線減按鍵
P2^0用杜邦線設(shè)置按鍵
注意接獨(dú)立按鍵
ds18b20插上
看一下整板關(guān)于2^5,6,7的跳帽,按說(shuō)明走。
作者:
水墨無(wú)塵
時(shí)間:
2018-6-27 23:58
P2^1用杜邦線加按鍵 P2^2用杜邦線減按鍵 P2^0用杜邦線設(shè)置按鍵 注意接獨(dú)立按鍵 ds18b20插上 看一下整板關(guān)于2^5,6,7的跳帽,一步一步試試看
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
性网站免费
|
欧美精品综合
|
亚洲欧美一区在线
|
中文字幕一区二区三区在线观看
|
一区二区视频免费观看
|
久久国产婷婷国产香蕉
|
久久99深爱久久99精品
|
久久久久国产一区二区三区
|
欧美精品一区在线
|
亚州av
|
国产精品3区
|
亚洲精品视频免费看
|
亚洲精品免费视频
|
亚洲成人av在线播放
|
看羞羞视频免费
|
久久com
|
av天天操
|
亚洲一区二区在线视频
|
成人在线视频免费看
|
久久一区二区三区四区五区
|
国产高清一区二区三区
|
欧美国产精品一区二区
|
久久网国产
|
祝你幸福电影在线观看
|
天天澡天天狠天天天做
|
99久久婷婷国产综合精品首页
|
国产91精品久久久久久久网曝门
|
亚洲国产精品一区二区久久
|
久久福利
|
日韩精品一区二区三区视频播放
|
精品一区国产
|
一区二区三区日本
|
午夜激情一区
|
国产精品1区2区3区 国产在线观看一区
|
欧洲妇女成人淫片aaa视频
|
精品国产乱码一区二区三区
|
精品国产乱码久久久久久88av
|
欧美激情免费在线
|
亚洲成人免费视频在线观看
|
久久久久国产成人精品亚洲午夜
|
久久久精选
|