資源簡介
使用STC89C51單片機制作了一款電子溫度計,可以通過LCD1602實時顯示溫度

代碼片段和文件信息
#include?“DS18B20.h“
bit?DQ_Err_Flag?=?0;
unsigned?char??DS18B20_ID[DS18B20_MAXNUM][8]=?{0};
unsigned?char?xdata?DS18B20_zhan[(DS18B20_MAXNUM?+?1)]=?{0};
/**************************************
由于DS18B20延時均以15us為單位,故編寫了延時單位為15us的延時函數,
注意:以下延時函數晶振為12MHz
參數:n?延時的微妙數
返回值:空
**************************************/
void?DS18B20_Delay5us()? //@11.0592MHz
{
}
void?DS18B20_Delay10us() //@11.0592MHz
{
????unsigned?char?i;
????i?=?2;
????while?(--i);
}
void?DS18B20_Delay30us() //@11.0592MHz
{
????unsigned?char?i;
????i?=?11;
????while?(--i);
}
void?DS18B20_Delay40us() //@11.0592MHz
{
????unsigned?char?i;
????_nop_();
????i?=?15;
????while?(--i);
}
void?DS18B20_Delay60us()
{
????unsigned?char?i;
????i?=?25;
????while?(--i);
}
void?DS18B20_Delay240us() //@11.0592MHz
{
????unsigned?char?i;
????i?=?108;
????while?(--i);
}
/**************************************
復位DS18B20并檢測設備是否存在
參數:空
返回值:空
**************************************/
void?DS18B20_Reset()
{
????unsigned?char?i?=?0;
????CY?=?1;
????while?(CY)
????{
????????DQ_Pin?=?0;?????????????????????//送出低電平復位信號
????????DS18B20_Delay240us();
DS18B20_Delay240us();//延時至少480us
????????DQ_Pin?=?1;?????????????????????//釋放數據線
????????DS18B20_Delay60us();???????//等待60us
????????CY?=?DQ_Pin;????????????????????//檢測存在脈沖
????????DS18B20_Delay240us();??????//等待設備釋放數據線
????????if?(CY?==?1?&&?i?++?>?15)
????????{
????????????DQ_Err_Flag?=?1;
????????????break;
????????}
????}
}
/**************************************
從DS18B20讀1字節數據
參數:空
返回值:返回從傳感讀到的數據
**************************************/
unsigned?char?DS18B20_ReadByte()
{
????unsigned?char?i;
????unsigned?char?dat?=?0;
????for?(i=0;?i<8;?i++)?????????????//8位計數器
????{
????????dat?>>=?1;
????????DQ_Pin?=?0;?????????????????????//開始時間片
????????_nop_();????????????????//延時等待
????????DQ_Pin?=?1;?????????????????????//準備接收
????????_nop_();????????????????//接收延時
????????if?(DQ_Pin)?dat?|=?0x80;????????//讀取數據
????????DS18B20_Delay60us();???????????????//等待時間片結束
????}
????return?dat;
}
/**************************************
*函數????????:????unsigned?char?DS18B20_ReadBit(void)
*功能????????:????讀取DS18B20?1bit數據
*參數????????:????無
*返回????????:????數據最低位有效
*說明????????:無
**************************************/
unsigned?char?DS18B20_ReadBit(void)
{
????unsigned?char?dat?=?0;
????DQ_Pin?=?0;????//拉低總線10-15us
????DS18B20_Delay10us();
????DQ_Pin?=?1;????//釋放總線
????DS18B20_Delay10us();
????dat?=?DQ_Pin;
????DS18B20_Delay40us();
????return?dat;
}
/**************************************
*函數????????:????unsigned?char?DS18B20_Read2Bit(void)
*功能????????:????讀取DS18B20?2bit數據
*參數????????:????無
*返回????????:????數據
*說明????????:無
**************************************/
unsigned?char?DS18B20_Read2Bit(void)
{
????unsigned?char?idat?=?0;
????for(i?=?0;?i?2;?i?++)
????{
????????dat?<<=?1;
????????if(DS18B20_ReadBit())
????????????dat?|=?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-09-06?19:31??電子溫度計\
?????目錄???????????0??2017-09-06?19:31??電子溫度計\PCB\
?????文件??????692736??2017-03-06?13:59??電子溫度計\PCB\PCB1.PcbDoc
?????文件???????39357??2017-03-05?12:54??電子溫度計\PCB\PCB_Project1.PrjPCB
?????文件???????80896??2017-03-02?21:06??電子溫度計\PCB\Sheet1.SchDoc
?????目錄???????????0??2017-09-06?19:30??電子溫度計\程序\
?????文件????????8536??2017-03-05?14:30??電子溫度計\程序\DS18B20.c
?????文件?????????773??2017-03-04?16:12??電子溫度計\程序\DS18B20.h
?????文件????????3627??2014-08-26?10:17??電子溫度計\程序\lcd.c
?????文件????????1068??2017-03-02?14:48??電子溫度計\程序\lcd.h
?????文件????????6605??2017-03-02?14:48??電子溫度計\程序\lcd.LST
?????文件????????4083??2017-03-02?14:48??電子溫度計\程序\lcd.OBJ
?????文件??????????61??2017-03-02?14:48??電子溫度計\程序\lcd.__i
?????文件????????5062??2017-03-06?17:23??電子溫度計\程序\LCD1602.c
?????文件?????????959??2017-03-06?18:17??電子溫度計\程序\LCD1602.h
?????文件????????9214??2017-03-06?21:29??電子溫度計\程序\LCD1602.LST
?????文件????????6783??2017-03-06?21:29??電子溫度計\程序\LCD1602.OBJ
?????文件????????2174??2017-03-06?21:29??電子溫度計\程序\main.c
?????文件????????4423??2017-03-06?21:29??電子溫度計\程序\main.LST
?????文件????????6221??2017-03-06?21:29??電子溫度計\程序\main.OBJ
?????文件???????17512??2017-03-06?21:29??電子溫度計\程序\pro
?????文件?????????989??2017-03-06?21:29??電子溫度計\程序\pro.build_log.htm
?????文件????????5243??2017-03-06?21:29??電子溫度計\程序\pro.hex
?????文件??????????69??2017-03-06?21:29??電子溫度計\程序\pro.lnp
?????文件???????22222??2017-03-06?21:29??電子溫度計\程序\pro.M51
?????文件???????72219??2017-04-11?16:42??電子溫度計\程序\pro.uvgui.eryi1
?????文件????????6463??2017-03-06?18:24??電子溫度計\程序\pro.uvopt
?????文件???????14269??2017-03-06?18:24??電子溫度計\程序\pro.uvproj
?????文件????????6376??2014-08-26?10:17??電子溫度計\程序\STARTUP.A51
?????文件???????14052??2017-03-06?21:29??電子溫度計\程序\STARTUP.LST
?????文件?????????749??2017-03-06?21:29??電子溫度計\程序\STARTUP.OBJ
............此處省略4個文件信息
- 上一篇:jdk8直接可以用的
- 下一篇:Windows下最好用的批量端口轉發工具
評論
共有 條評論