freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的多路無線溫度檢測裝置-資料下載頁

2024-11-16 20:01本頁面

【導(dǎo)讀】度進(jìn)行檢測和監(jiān)控,采用微型機(jī)進(jìn)行溫度檢測、數(shù)字顯示、信息存儲及實時控制,對于提高生產(chǎn)效率和產(chǎn)品質(zhì)量、節(jié)約能源等都有重要的作用。伴隨工業(yè)科技、農(nóng)。業(yè)科技的發(fā)展,溫度測量需求越來越多,也越來越重要。但是在一些特定環(huán)境溫。度監(jiān)測環(huán)境范圍大,測點(diǎn)距離遠(yuǎn),布線很不方便。目前有些設(shè)計能夠?qū)崿F(xiàn)無線溫度采集,但是功耗過高是它最大的缺點(diǎn)。所以解決實際操作中功耗高等問題便成為設(shè)。本文提出一種采用單片機(jī)AT89S52控制、該系統(tǒng)操作簡單,功耗低,實時性非常強(qiáng),是一種無限傳輸良好的解決方案。

  

【正文】 unsigned char a。 for (a = 0。 a 18。 a++)。 } //延時 480us 子函數(shù) void Delay480us() { unsigned char a。 for (a = 0。 a 158。 a++)。 } //延時 240us 子函數(shù) void Delay240us() { unsigned char a。 for (a = 0。 a 78。 a++)。 } //延時 500ms 子函數(shù) void Delay500ms() { unsigned char a, b, c。 46 for (a = 0。 a a++) for (b = 0。 b 3。 b++) for (c = 0。 c 220。 c++)。 } //溫度顯示函數(shù) void DisplayTemperture(uchar chl,uint temp) { P0=Code[chl]。 BCD4 = 0。 DS18B20_mDelay(10)。 BCD4 = 1; P0 = 0xff。 BCD3 = 0。 DS18B20_mDelay(10)。 BCD3 = 1。 P0 = Code[temp/10%10]。 BCD2 = 0。 DS18B20_mDelay(10)。 BCD2 = 1。 P0 = Code[temp%10]。 BCD1 = 0。 DS18B20_mDelay(10)。 BCD1 = 1。 } 47 //SPI 寫函數(shù) void SpiWrite(unsigned char send) { unsigned char i。 DATA_BUF=send。 for (i=0。i8。i++) { if (DATA7) //總是發(fā)送最高位 { MOSI=1。 } else { MOSI=0。 } SCK=1。 DATA_BUF=DATA_BUF1。 SCK=0。 } } //初始化 nRF905 狀態(tài) void nRF905Init(void) { CSN=1。 // Spi disable 48 SCK=0。 // Spi clock line init low DR=1。 // Init DR for input AM=1。 // Init AM for input CD=1。 // Init CD for input PWR=1。 // nRF905 power on TRX_CE=0。 // Set nRF905 in standby mode TXEN=0。 // set radio in Rx mode } //NRF905 初始化寄存器 void Config905(void) { uchar i。 CSN=0。 // Spi enable for write a spi mand //SpiWrite(WC)。 // Write config mand寫放配置命令 for (i=0。i11。i++) // Write configration words 寫放配置字 { SpiWrite(RFConf[i])。 } CSN=1。 // Disable Spi } 49 //打包待發(fā)送的數(shù)據(jù) void TxPacket(void) { uchar i。 //Config905()。 CSN=0。 SpiWrite(WTP)。 // Write payload mand for (i=0。i4。i++) { SpiWrite(TxRxBuf[i])。 // Write 32 bytes Tx data }// Spi enable for write a spi mand CSN=1。 delay(1)。 // Spi disable CSN=0。 // Spi enable for write a spi mand SpiWrite(WTA)。 // Write address mand for (i=0。i4。i++) // Write 4 bytes address { SpiWrite(TxAddress[i])。 } CSN=1。 // Spi disable 50 TRX_CE=1。 // Set TRX_CE high,start Tx data transmission delay(1)。 // while (DR!=1)。 TRX_CE=0。 // Set TRX_CE low } //設(shè)置發(fā)送模式 void SetTxMode(void) { TRX_CE=0。 TXEN=1。 delay(1)。 // delay1 for mode change(=650us) } unsigned char CheckCD(void) //Pin檢查是否 已存在 同頻率載波 { if (CD==1) { return 1。 } else { return 0。 } } 51 //數(shù)據(jù)發(fā)送 void TX(void) { SetTxMode()。// Set nRF905 in Tx mode TxPacket()。// Send data by nRF905 //CheckCD()。 // 返回 CD的當(dāng)前電平 } //數(shù)據(jù)發(fā)送 //芯片初始化 void Initialization() { DQ = 0。 Delay480us()。 //延時 480us DQ = 1。 Delay60us()。 //延時 60us Delay60us()。 //延時 60us if(!DQ) //收到 ds18b20 的應(yīng)答信號 { DQ = 1。 Delay240us()。 //延時 240us Delay60us()。 //延時 60us } } //寫一個字節(jié) (從低位開始寫 ) 52 void WriteByte(unsigned char btData) { unsigned char i, btBuffer。 for (i = 0。 i 8。 i++) { btBuffer = btData i。 if (btBuffer amp。 1) { DQ = 0。 _nop_()。 _nop_()。 DQ = 1。 Delay60us()。 } else { DQ = 0。 Delay60us()。 DQ = 1。 } } } //讀一個字節(jié) (從低位開始讀 ) unsigned char ReadByte() 53 { unsigned char i, btDest。 for (i = 0。 i 8。 i++) { btDest = 1。 DQ = 0。 _nop_()。 _nop_()。 DQ = 1。 Delay16us()。 if (DQ) btDest |= 0x80。 Delay60us()。 } return btDest。 } //序列號匹配 void MatchROM(const unsigned char *pMatchData) { unsigned char i。 Initialization()。 WriteByte(MATCH_ROM)。 for (i = 0。 i 8。 i++) WriteByte(*(pMatchData + i))。 } 54 //讀取溫度值 void ReadTemperature() { unsigned int iTempDataH。 unsigned int j。 unsigned char btDot, iTempDataL。 static unsigned char i = 0。 i++。 if (i == 3) i = 1。 Initialization()。 WriteByte(SKIP_ROM)。 //跳過 ROM 匹配 WriteByte(TEMP_SWITCH)。 //啟動轉(zhuǎn)換 switch (i) { case 1 : MatchROM(ROMData1)。 break。 //匹配 1 case 2 : MatchROM(ROMData2)。 break。 //匹配 2 } WriteByte(READ_MEMORY)。 //讀數(shù)據(jù) iTempDataL = ReadByte()。 55 iTempDataH = ReadByte()。 iTempDataH = 8。 iTempDataH |= iTempDataL。 //為了省去浮點(diǎn)運(yùn)算帶來的開銷,而采用整數(shù)和小數(shù)部分分開處理的方法(沒有四舍五入 ) btDot = (unsigned char)(iTempDataH amp。 0x000F)。 //得到小數(shù)部分 iTempDataH = 4。 //得到整數(shù)部分 btDot *= 5。 //btDot*10/16 得到轉(zhuǎn)換后的小數(shù)數(shù)據(jù) btDot = 3。 //數(shù)據(jù)處理 TxRxBuf[0] = i。 TxRxBuf[1] = (unsigned char)iTempDataH % 100 / 10。 TxRxBuf[2] = (unsigned char)iTempDataH % 10。 TxRxBuf[3] = btDot。 for(j=0。j500。j++) { DisplayTemperture(i,iTempDataH)。 } } //數(shù)據(jù)發(fā)送 56 void main(void) { nRF905Init()。 Config905()。 delay(500)。 while(1) { ReadTemperature()。 //delay(500)。 TX()。 } } 接收端程序 include include include include define uint unsigned int //0 ~ 255 define uchar unsigned char define BYTE_BIT0 0x01 define BYTE_BIT1 0x02 define BYTE_BIT2 0x04 define BYTE_BIT3 0x08 57 define BYTE_BIT4 0x10 define BYTE_BIT5 0x20 define BYTE_BIT6 0x40 define BYTE_BIT7 0x80 bdata unsigned char DATA_BUF。 define DATA7 ((DATA_BUFamp。BYTE_BIT7) != 0) define DATA0 ((DATA_BUFamp。BYTE_BIT0) != 0) sbit flag =DATA_BUF^7。 sbit flag1 =DATA_BUF^0。 define TxRxBuf_Len 4 unsigned char TxRxBuffer[TxRx
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1