温度传感器DS1820
生活随笔
收集整理的這篇文章主要介紹了
温度传感器DS1820
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、初始化時序:
首先,DSPORT保持低電平480到960微秒之間,然后將其拉高以產(chǎn)生復位脈沖,若產(chǎn)生復位脈沖,則表示初始化成功。復位脈沖:產(chǎn)生60~240微秒的低電平后釋放總線。防止while語句產(chǎn)生死循環(huán),設置當5毫秒后仍然沒有產(chǎn)生低電平(復位脈沖)。則跳出while循環(huán),初始化失敗。2、寫時序:
若寫0時序,則DSPORT一直是低電平若寫1時序,則DSPORT由低電平到高電平因此可以看出應該用“與”邏輯。綜上,思路為先將DSPORT置為低電平,然后寫入數(shù)據(jù)(采用與邏輯),而后需要釋放總線(DSPORT為1)3、讀時序:
根據(jù)寫時序,在寫入時序之前,DSPORT先低后高,所以在讀數(shù)據(jù)之前,也應將其置為先底后高。讀取數(shù)據(jù)之后,需要延時50微秒。4、溫度的讀取過程:
復位(初始化時序)——發(fā)出SKIP ROM(0xcc,具體見ROM指令表)——發(fā)出開始轉(zhuǎn)換命令(0x44,具體見RAM指令表)復位(初始化時序)——發(fā)出SKIP ROM(0xcc,具體見ROM指令表)——發(fā)出開始存儲命令(0xbe,具體見RAM指令表)連續(xù)讀出兩個字節(jié)的命令(即溫度),先讀低8位,后讀高8位。
5、將溫度轉(zhuǎn)換成10進制數(shù),用數(shù)碼管顯示出來
若溫度為負數(shù),則將其轉(zhuǎn)換為補碼,然后進行轉(zhuǎn)換。
uint change_date(int temp) {float tp;if(temp<0){disp_num[0] = 0x40;//負數(shù)符號數(shù)碼管的編碼temp = temp - 1;//轉(zhuǎn)化為補碼temp = ~temp;tp = temp;temp = tp*0.0625*100+0.5;//溫度擴大100倍,0.5則是提高精度,四舍五入法的應用}else{disp_num[0] = 0x00;tp = temp;temp = tp*0.0625*100+0.5;}return temp; }原代碼:
uchar Init() {uchar i;DSPORT = 0;i= 70;while(i--);DSPORT = 1;i = 0;while(DSPORT){i++;delay1ms(1);if(i>5)return 0;}return 1; } void write_byte(uchar date) {uchar i,j;for(i=0;i<8;i++){DSPORT = 0;j++;DSPORT |= date&0x01;j= 6;while(j--);DSPORT = 1;date >>= 1;} } uchar read_byte() {uchar i,j;uchar bi,byte;for(i=0;i<8;i++){DSPORT = 0;//根據(jù)時序圖先將總線拉低10微秒左右j++; //時序圖為最少1微妙,但單片機的一個指令周期最少為10微秒左右DSPORT = 1;//釋放總線j++; //保持數(shù)據(jù)穩(wěn)定bi = DSPORT;byte = (byte>>1)|(bi<<7);j=4; //寫入數(shù)據(jù)后,需要延時50微妙左右while(j--);}return byte; } void ChangeTemp() {Init();delay1ms(1);write_byte(0xcc);//Skip ROM,該命令允許總線64位ROM編碼,而直接訪問存儲空間,從而節(jié)約時間,適合用于單點系統(tǒng)write_byte(0x44); //啟動溫度傳感器 } void ReadTemp_command() {Init();delay1ms(1);write_byte(0xcc);write_byte(0xbe);//讀取溫度傳感器中的溫度 } int ReadTempture() {uchar th,tl;uint date;ChangeTemp();ReadTemp_command();tl = read_byte();//選讀低8位,后讀高8位th = read_byte();date |= th;date<<=8;date = tl;return date; }總結
以上是生活随笔為你收集整理的温度传感器DS1820的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES6 for..in 和 for...
- 下一篇: 半导封装测试流程_江苏半导体封装测试服务