對於藍橋杯比賽,很多人對於比賽官方給出的三個驅動不知道怎麼具體使用。其實官方給出的驅動是在原有的晶元基礎上做出的驅動,但是後來比賽官方對比賽專用版ct107d上使用了iap1f2k61s2轉接板,驅動的一些位置都相應的做出了該變。
首先對於驅動,我們的看法是去建立乙個存在主函式的c 檔案去呼叫這個驅動的c檔案和**件。而不是在給出的驅動上直接書寫程式,因為那樣的程式設計思想是會使編譯很亂,不方便除錯。
首先我們先對ct107d板上的溫度感測器進行分析,首先它應用的是單匯流排協議,三條線兩條電源線--vcc與gnd,另一條是進行訊號傳輸。
一、 首先我們需要對官方給出的c檔案驅動進行修改編譯。
#include "onewire.h"
void delay_onewire(unsigned int t) //單匯流排延時函式
}//通過單匯流排向ds18b20寫乙個位元組
void write_ds18b20(unsigned char dat)
delay_onewire(5);
}//從ds18b20讀取乙個位元組
unsigned char read_ds18b20(void)
delay_onewire(5);
}return dat;
}//ds18b20裝置初始化
bit init_ds18b20(void)
/*************************以下需要自己去寫的函式****************************************/
float rd_temperature(void)
二、接下來我們需要對官方給出的**件驅動進行修改編譯。
#ifndef __onewire_h
#define __onewire_h
#include "reg52.h"
sbit dq = p1^4; //定義單匯流排介面
void delay_onewire(unsigned int t);
void write_ds18b20(unsigned char dat);
unsigned char read_ds18b20(void);
bit init_ds18b20(void);
float rd_temperature(void);
/*****************主要是對驅動c檔案的函式進行宣告,對介面進行宣告*****************/
#endif
三、現在開始使用主程式和定時器進行顯示了。
//主呼叫程式是使用了定時器0進行數字顯示,
//想進行其他功能可以再自行新增,本文只是做出最簡單的顯示,方便初學者理解
#include "reg52.h"
#include "onewire.h"
#include "intrins.h"
#define fosc 11059200l
#define t1ms (65536-fosc/12/1000)
sbit buzzer=p0^6;
unsigned char fanhuizhi;
unsigned int count; //中斷標誌位
unsigned char code sum=;
unsigned char code was=;
unsigned char xs[2]; //顯示陣列
void gb_eupument()
void tm0_init()
void main()
}/* timer0 interrupt routine */
void tm0_isr() interrupt 1 using 1
}
以上便是對ct107d版上的ds18b20溫度感測器基於單匯流排協議的呼叫,希望多多練習。 DS18B20溫度測量
1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入開始轉換的功能命令,0x44。4.延遲大約 750 900 毫秒 1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入讀暫存的功能命令,0xbe。4.讀入第 0 個位元組 ls byte,轉換...
DS18B20溫度換算
dsi8b20接收到溫度轉換命令後,開始啟動轉換。轉換完成後的溫度值就以16位帶符號擴充套件的二進位制補碼形式儲存在高速暫存儲存器的0,1位元組。微控制器可通過單線介面讀到該資料,讀取時低位在前,高位在後,資料格式以0 062 5 lsb形式表示。溫度值格式如表2.2.1所示,其中 s 為標誌位,對...
藍橋杯DS18B20官方驅動的修改
雖然我還沒有參加藍橋杯的比賽,但是聽很多人說比賽的時候官方會給出一些晶元的驅動程式,有ds18b20 ds1302 iic。藍橋杯官方給出的驅動可以用是可以但是並不是那麼完善,還是需要我們稍加修改的。下面我們看一下官方給的ds18b20的驅動程式 程式說明 單匯流排驅動程式 軟體環境 keil uv...