資源簡介
包括DS18B20的lcd1602顯示和LED顯示,分別放在兩個文件夾里,包括Proteus仿真圖和c源代碼及hex文件,可以直接使用,也可修改其中的數據顯示函數

代碼片段和文件信息
#include
#include??//包含_nop_()函數定義的頭文件
#define?uint?unsigned?int
#define?DATA?P0?
sbit?DQ=P1^0; ?//數據線
sbit?rs?=?P2^0;
sbit?rw?=?P2^1;
sbit?en?=?P2^2;
unsigned?char?time_DS18B20;???//設置全局變量,專門用于嚴格延時
unsigned?char?baishige;
unsigned?char?TL;?????//儲存暫存器的溫度低位
unsigned?char?TH;????//儲存暫存器的溫度高位
unsigned?char?TN;??????//儲存溫度的整數部分
unsigned?int?TD;???????//儲存溫度的小數部分
void?delay(unsigned?int?num)
{
unsigned?int?xy;
for?(x=num;?x>0;?x--)
for(y=110;?y>0;?y--);
}
void?write_cmd?(unsigned?char?cmd)
{
rs?=?0;
rw?=?0;
DATA?=?cmd;
delay(5);
en?=?1;
delay(5);
en?=?0;
}
void?write_data?(unsigned?char?dat)
{
rs?=?1;
rw?=?0;
DATA?=?dat;
delay(5);
en?=?1;
delay(5);
en?=?0;
}
void?lcd_init?(void)
{
rw?=?0;
rs?=?0;
en?=?0;
write_cmd(0x02);
write_cmd(0x06);
write_cmd(0x0c);
write_cmd(0x38);
write_cmd(0x01);
}?????
void?delay1ms()
{
???unsigned?char?ij;
?for(i=0;i<10;i++)
??for(j=0;j<33;j++)
???;
?}
?void?delaynms(int?n)
?{
???unsigned?char?i;
for(i=0;i ???delay1ms();
}
bit?Init_DS18B20(void)
{
?bit?flag_DS18B20;?????????//儲存DS18B20是否存在的標志,flag=0,表示存在;flag=1,表示不存在
?DQ?=?1;???????????//先將數據線拉高
?for(time_DS18B20=0;time_DS18B20<2;time_DS18B20++)?//略微延時約6微秒
?????;
?DQ?=?0;???????????//再將數據線從高拉低,要求保持480~960us
?for(time_DS18B20=0;time_DS18B20<200;time_DS18B20++)??//略微延時約600微秒
?????;?????????//以向DS18B20發出一持續480~960us的低電平復位脈沖
?DQ?=?1;???????????//釋放數據線(將數據線拉高)
??for(time_DS18B20=0;time_DS18B20<10;time_DS18B20++)
?????;??//延時約30us(釋放總線后需等待15~60us讓DS18B20輸出存在脈沖)
?flag_DS18B20=DQ;??????????//讓單片機檢測是否輸出了存在脈沖(DQ=0表示存在)
?for(time_DS18B20=0;time_DS18B20<200;time_DS18B20++)??//延時足夠長時間,等待存在脈沖輸出完畢
??????;
?return?(flag_DS18B20);????//返回檢測成功標志
}
unsigned?char?ReadOneChar(??)
?{
unsigned?char?i=0;
unsigned?char?dat;??//儲存讀出的一個字節數據
for?(i=0;i<8;i++)
?{
???DQ?=1;???????//?先將數據線拉高
???_nop_(); ????//等待一個機器周期
???DQ?=?0;??????//單片機從DS18B20讀書據時將數據線從高拉低即啟動讀時序
??????????dat>>=1;
???_nop_();?????//等待一個機器周期
???DQ?=?1;?????//將數據線“人為“拉高為單片機檢測DS18B20的輸出電平作準備
???for(time_DS18B20=0;time_DS18B20<3;time_DS18B20++);??????//延時約6us,使主機在15us內采樣
???if(DQ==1)
??????dat|=0x80;??//如果讀到的數據是1,則將1存入dat
else
dat|=0x00;//如果讀到的數據是0,則將0存入dat
?????//將單片機檢測到的電平信號DQ存入r[i]
???for(time_DS18B20=0;time_DS18B20<8;time_DS18B20++)
?????? ;??????????????//延時3us兩個讀時序之間必須有大于1us的恢復期
????}
?return(dat);????//返回讀出的十進制數據
}
void?WriteOneChar(unsigned?char?dat)
{
unsigned?char?i=0;
for?(i=0;?i<8;?i++)
?{
??DQ?=1;?????????//?先將數據線拉高
??_nop_(); ?????//等待一個機器周期
??DQ=0;??????????//將數據線從高拉低時即啟動寫時序
??DQ=dat&0x01;???//利用與運算取出要寫的某位二進制數據
???????????????????????//并將其送到數據線上等待DS18B20采樣
?for(time_DS18B20=0;time_DS18B20<10;time_DS18B20++)
?????;//延時約30us,DS18B20在拉低后的約15~60us期間從數據線上采樣
??DQ=1;??????????//釋放數據線
??for(time_DS18B20=0;time_DS18B20<1;time_DS18B20++)
??;//延時3us兩個寫時序間至少需要1us的恢復期
??dat>>
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5822??2018-12-17?15:55??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\Main.c
?????文件??????10299??2018-12-11?17:05??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\Main.LST
?????文件??????11511??2018-12-11?17:05??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\Main.OBJ
?????文件???????6376??2009-05-07?14:37??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\STARTUP.A51
?????文件??????14048??2018-12-11?17:05??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\STARTUP.LST
?????文件????????749??2018-12-11?17:05??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\STARTUP.OBJ
?????文件??????10319??2018-12-11?17:05??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\Temp
?????文件???????2219??2018-12-11?17:05??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\Temp.hex
?????文件?????????41??2018-12-11?17:05??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\Temp.lnp
?????文件??????16005??2018-12-11?17:05??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\Temp.M51
?????文件????????163??2018-12-17?15:28??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\Temp.plg
?????文件??????55657??2018-12-17?15:56??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\Temp.uvopt
?????文件??????13395??2018-11-25?18:11??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\Temp.uvproj
?????文件??????55651??2018-12-11?17:05??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\Temp_uvopt.bak
?????文件??????13396??2018-11-23?17:44??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil\Temp_uvproj.bak
?????文件??????15742??2018-11-25?18:05??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Proteus仿真圖\Backup?Of?溫顯工程.pdsbak
?????文件??????26844??2018-11-25?18:12??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Proteus仿真圖\Last?Loaded?溫顯工程.pdsbak
?????文件??????27105??2018-11-25?18:22??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Proteus仿真圖\溫顯工程.pdsprj
?????文件???????2945??2018-11-27?22:27??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Proteus仿真圖\溫顯工程.pdsprj.DESKTOP-G525MQ4.cheng.workspace
?????文件???????6341??2010-09-09?13:26??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LED\wenduji.c
?????文件???????3155??2010-09-09?13:26??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LED\wenduji.hex
?????文件?????101981??2010-09-09?13:28??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LED\溫度計.DSN
?????目錄??????????0??2018-12-17?15:59??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Keil
?????目錄??????????0??2018-12-17?15:59??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602\Proteus仿真圖
?????目錄??????????0??2018-12-17?15:59??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LCD1602
?????目錄??????????0??2018-12-17?15:58??DS18B20+lcd1602顯示+LED數碼管顯示\DS18B20+LED
?????目錄??????????0??2018-12-17?15:58??DS18B20+lcd1602顯示+LED數碼管顯示
-----------?---------??----------?-----??----
???????????????399764????????????????????27
............此處省略0個文件信息
- 上一篇:Bosch CAN總線協議-中文版
- 下一篇:網頁設計課程設計
評論
共有 條評論