|
在這路分享一下新學(xué)的一個(gè)程序——串口測(cè)溫電腦顯示。單片機(jī)用的是STC89C52。文件來(lái)自單片機(jī)開(kāi)發(fā)板共享資料。
以下是溫度傳感器部分的程序。
/*-----------------------------------------------
名稱(chēng):18B20溫度傳感器
內(nèi)容:18B20單線(xiàn)溫度檢測(cè)的應(yīng)用樣例程序
------------------------------------------------*/
#include"delay.h"
#include"18b20.h"
/*------------------------------------------------
18b20初始化
------------------------------------------------*/
bit Init_DS18B20(void)
{
bit dat=0;
DQ = 1; //DQ復(fù)位
DelayUs2x(5); //稍做延時(shí)
DQ = 0; //單片機(jī)將DQ拉低
DelayUs2x(200); //精確延時(shí) 大于 480us 小于960us
DelayUs2x(200);
DQ = 1; //拉高總線(xiàn)
DelayUs2x(50); //15~60us 后 接收60-240us的存在脈沖
dat=DQ; //如果x=0則初始化成功, x=1則初始化失敗
DelayUs2x(25); //稍作延時(shí)返回
return dat;
}
/*------------------------------------------------
讀取一個(gè)字節(jié)
------------------------------------------------*/
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 給脈沖信號(hào)
dat>>=1;
DQ = 1; // 給脈沖信號(hào)
if(DQ)
dat|=0x80;
DelayUs2x(25);
}
return(dat);
}
/*------------------------------------------------
寫(xiě)入一個(gè)字節(jié)
------------------------------------------------*/
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
DelayUs2x(25);
DQ = 1;
dat>>=1;
}
DelayUs2x(25);
}
/*------------------------------------------------
讀取溫度
------------------------------------------------*/
unsigned int ReadTemperature(void)
{
unsigned char a=0;
unsigned int b=0;
unsigned int t=0;
while(Init_DS18B20()); //檢測(cè)初始化是否成功
WriteOneChar(0xCC); // 跳過(guò)讀序號(hào)列號(hào)的操作
WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
DelayMs(10);
Init_DS18B20();
WriteOneChar(0xCC); //跳過(guò)讀序號(hào)列號(hào)的操作
WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度
a=ReadOneChar(); //低位
b=ReadOneChar(); //高位
b<<=8;
t=a+b;
return(t);
}
|
-
-
146-串口測(cè)溫電腦顯示.rar
2019-4-20 13:23 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
28.02 KB, 下載次數(shù): 86, 下載積分: 黑幣 -5
評(píng)分
-
查看全部評(píng)分
|