資源簡介
PIC單片機 18B20溫度傳感器和六位數碼管顯示溫度結果,其中整數部分2位,小數部分4位

代碼片段和文件信息
//目的:熟悉DS18B20的使用
//六位數碼管顯示溫度結果,其中整數部分2位,小數部分4位
//每次按下RB0鍵后進行一次溫度轉換。
//硬件要求:把DS18B20插在18B20插座上
//??????????撥碼開關S10第1位置ON,其他位置OFF
//??????????撥碼開關S5、S6全部置ON,其他撥碼開關全部置OFF
#include
__CONFIG(0x1832);????????
//芯片配置字,看門狗關,上電延時開,掉電檢測關,低壓編程關,加密,4M晶體HS振蕩
?
#define??uch?unsigned?char?????????????????????//給unsigned?char起別名?uch
#?define?DQ?RA0????????????????????????????????//定義18B20數據端口?
#?define?DQ_DIR?TRISA0?????????????????????????//定義18B20D口方向寄存器?
#?define?DQ_HIGH()?DQ_DIR?=1???????????????????//設置數據口為輸入
#?define?DQ_LOW()?DQ?=?0;?DQ_DIR?=?0???????????//設置數據口為輸出
?unsigned?char??TLV=0?;????????????????????????//采集到的溫度高8位
?unsigned?char??THV=0;?????????????????????????//采集到的溫度低8位
?unsigned?char?TZ=0;???????????????????????????//轉換后的溫度值整數部分
?unsigned?char?TX=0;???????????????????????????//轉換后的溫度值小數部分
?unsigned?int?wd;??????????????????????????????//轉換后的溫度值BCD碼形式
unsigned?char?shi;?????????????????????????????//整數十位
unsigned?char?ge;??????????????????????????????//整數個位
unsigned?char?shifen;??????????????????????????//十分位
unsigned?char?baifen;??????????????????????????//百分位
unsigned?char?qianfen;?????????????????????????//千分位
unsigned?char?wanfen;??????????????????????????//萬分位
unsigned?char?table[]={0xc00xf90xa40xb00x990x920x820xf80x800x90};?
//0-9的顯示代碼
//------------------------------------------------
//延時函數
void?delay(char?xchar?y)?
{
??char?z;
??do{
??????z=y;
??????do{;}while(--z);
?????}while(--x);
?}
//其指令時間為:7+(3*(Y-1)+7)*(X-1)如果再加上函數調用的call?指令、頁面設定、傳遞參數花掉的7?個指令。
//則是:14+(3*(Y-1)+7)*(X-1)。
//--------------------------------------------------
//結果顯示函數
void?display()
{
?TRISA=0X00;????????????????????????????//設置A口全為輸出
?PORTD=table[shi];??????????????????????//顯示整數十位
?PORTA=0x3e;
?delay(1070);
?PORTD=table[ge]&0X7F;??????????????????//顯示整數個位,并點亮小數點
?PORTA=0x3d;
?delay(1070);
?PORTD=table[shifen];???????????????????//顯示小數十分位
?PORTA=0x3b;
?delay(1070);
?PORTD=table[baifen];???????????????????//顯示小數百分位
?PORTA=0x37;
?delay(1070);
?PORTD=table[qianfen];??????????????????//顯示小數千分位
?PORTA=0x2f;
?delay(1070);
?PORTD=table[wanfen];???????????????????//顯示小數萬分位
?PORTA=0x1f;
?delay(1070);
}
//------------------------------------------------
//系統初始化函數
void?init()
{
??ADCON1=0X07;????????????????????????????????//設置A口為普通數字口
??TRISA=0X00;?????????????????????????????????//設置A口方向為輸出
??TRISD=0X00;?????????????????????????????????//設置D口方向為輸出
}
//-----------------------------------------------
//復位DS18B20函數
reset(void)
{
??char?presence=1;
??while(presence)
??{?
????DQ_LOW()?;????????????????????????????????//主機拉至低電平
????delay(270);??????????????????????????????//延時503us
????DQ_HIGH();????????????????????????????????//釋放總線等電阻拉高總線并保持15~60us
????delay(28);???????????????????????????????//延時70us
????if(DQ==1)?presence=1;?????????????????????//沒有接收到應答信號,繼續復位
????else?presence=0;??????????????????????????//接收到應答信號
????delay(260);???????????????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6416??2008-11-03?20:58??ds18b20\ds18b20.c
?????文件???????3205??2007-03-15?22:26??ds18b20\ds18b20.hex
????..AD...?????????0??2008-10-25?22:40??ds18b20
-----------?---------??----------?-----??----
?????????????????9839????????????????????4
- 上一篇:wordpress網站微信\\QQ客服插件
- 下一篇:安全移除u盤小插件強烈推薦
評論
共有 條評論