資源簡介
基于LCD1602讀取DS18B20序列號proteus仿真有圖有代碼,代碼可能有點亂,但是測試通過,可自行修改。

代碼片段和文件信息
/*******************************************************************************
*??描述:???????????????????????????????????????????????????????????????????????*
*?????????1602字符型LCD顯示演示程序????????????????????????????????????????????*
*?????????在第一行顯示??welcome????????????????????????????????????????????????*
*?????????在第二行顯示??www.PRECHIN.com?????????????????????????????????????????*
*??????????????????????????????????????????????????????????????????????????????*
********************************************************************************/
#include?
#include?
typedef?unsigned?char?BYTE;
typedef?unsigned?int?WORD;
#define?uchar?unsigned?char
#define?uint?unsigned?int
typedef?bit?BOOL?;?
uint?tempflag1;
int??LedOut[4];
int?temper;
sbit?DQ=P3^7;
sbit?rs =?P2^4; //
sbit?rw?=?P2^5;
sbit?ep?=?P2^6;
uchar?sn[8];?
BYTE?code?dis1[]?=?{“XQL“};
BYTE?code?dis2[]?=?{“CC“};
uchar?code?table[]={0x3f0x060x5b0x4f
0x660x6d0x7d0x07
0x7f0x6f0x770x7c
0x390x5e0x790x71};
sbit????LS138A=P2^0;???????//管腳定義
sbit????LS138B=P2^1;
sbit????LS138C=P2^2;?
/*--------- DS18B20-----------*/
void?delay1(unsigned?char?i)?
{
while(i--);?
}
void?initionds18b20()
{
DQ=0;
delay1(128);??//900us
DQ=1;
delay1(1);?
while(DQ);??//檢測到應答脈沖
????//i=103;while(i>0)?i--;//等待870us
delay1(100);
}
uchar?readds18b20()
{??uchar?i???=?0;
uchar?dat?=?0;
for(i=8;i>0;i--)
{
???DQ?=?0;??????????????????//將總線拉低,要在1us之后釋放總線
???????????????????????????//單片機要在此下降沿后的15us內讀數據才會有效。
???_nop_();?????????????????//至少維持了1us表示讀時序開始
???dat?>>=?1;???????????????//讓從總線上讀到的位數據,依次從高位移動到低位。
???DQ?=?1;??????????????????//釋放總線,此后DS18B20會控制總線把數據傳輸到總線上
???delay1(1);?????????????????//延時7us此處參照推薦的讀時序圖,盡量把控制器采樣時間放到讀時序后的15us內的最后部分
???if(DQ)???????????????????//控制器進行采樣
???{
????dat?|=?0x80;????????????//若總線為1即DQ為1那就把dat的最高位置1;若為0則不進行處理保持為0
???}????????
???delay1(10);???????????????//此延時不能少,確保讀時序的長度60us。
}
return?(dat);
}
void?writeds18b20(uchar?dat)
{
uchar?i?=?0;
for(i=8;i>0;i--)
{
???DQ?=?0;????????????????????????//拉低總線
???_nop_();???????????????????????//至少維持了1us表示寫時序(包括寫0時序或寫1時序)開始
???DQ?=?dat&0x01;?????????????????//從字節的最低位開始傳輸
?????????????????????????????????//指令dat的最低位賦予給總線必須在拉低總線后的15us內
?????????????????????????????????//因為15us后DS18B20會對總線采樣。
???delay1(10);?????????????????????//必須讓寫時序持續至少60us
???DQ?=?1;????????????????????????//寫完后必須釋放總線
???dat?>>=?1;
???delay1(1);
}
}
void?tmpchange()
{
// uint?i;
initionds18b20();
//dsWait();
//delay(1);
writeds18b20(0xcc);//跳過序列號命令
writeds18b20(0x44);//發轉換命令
//DQ=1;i++;i++;
}
?uint?tmp()
{
uchar?ab;
float?tt;
initionds18b20();
writeds18b20(0xcc);
writeds18b20(0xbe);//發送讀取命令
a=readds18b20();//讀溫度低位
b=readds18b20();//讀溫度高位
temp=b;
temp<<=8;
temp|=a;
tt=temp*0.0625;
temp=tt;
return?(temp);
}
void?rom()?//讀取序列號
{?
uchar?i;
int?j;
initionds18b20();?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1340??2012-03-09?17:22??基于LCD1602與LED的proteus仿真溫度測量\防真圖\LCD1602-DS18B20.PWI
?????文件??????38000??2012-03-08?23:48??基于LCD1602與LED的proteus仿真溫度測量\防真圖\Last?Loaded?LCD1602-DS18B20.DBK
?????文件??????36915??2012-03-09?17:19??基于LCD1602與LED的proteus仿真溫度測量\防真圖\LCD1602-DS18B20.DSN
?????文件???????5828??2012-03-09?17:22??基于LCD1602與LED的proteus仿真溫度測量\代碼\lcd1602.c
?????文件???????3078??2012-03-09?17:22??基于LCD1602與LED的proteus仿真溫度測量\代碼\lcd1602.hex
?????文件?????????46??2012-03-09?17:22??基于LCD1602與LED的proteus仿真溫度測量\代碼\lcd1602.lnp
?????文件??????17668??2012-03-09?17:22??基于LCD1602與LED的proteus仿真溫度測量\代碼\lcd1602.M51
?????文件???????1664??2012-03-09?17:22??基于LCD1602與LED的proteus仿真溫度測量\代碼\lcd1602.plg
?????文件???????1996??2012-03-08?22:19??基于LCD1602與LED的proteus仿真溫度測量\代碼\lcd1602.Uv2
?????文件??????????0??2012-03-08?14:57??基于LCD1602與LED的proteus仿真溫度測量\代碼\lcd1602_Uv2.Bak
?????文件??????13453??2012-03-09?17:22??基于LCD1602與LED的proteus仿真溫度測量\代碼\lcd1602.LST
?????文件??????14546??2012-03-09?17:22??基于LCD1602與LED的proteus仿真溫度測量\代碼\lcd1602.OBJ
?????文件??????13296??2012-03-09?17:22??基于LCD1602與LED的proteus仿真溫度測量\代碼\lcd1602
????.......??????1012??2012-03-09?17:19??基于LCD1602與LED的proteus仿真溫度測量\代碼\lcd1602_Opt.Bak
?????文件???????1016??2012-03-09?17:22??基于LCD1602與LED的proteus仿真溫度測量\代碼\lcd1602.Opt
?????目錄??????????0??2012-03-08?22:36??基于LCD1602與LED的proteus仿真溫度測量\防真圖
?????目錄??????????0??2012-03-08?22:36??基于LCD1602與LED的proteus仿真溫度測量\代碼
?????目錄??????????0??2012-03-08?22:36??基于LCD1602與LED的proteus仿真溫度測量
-----------?---------??----------?-----??----
???????????????149858????????????????????18
評論
共有 條評論