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

正文內容

基于單片機的無線遠程溫度監(jiān)控系統(tǒng)設計(編輯修改稿)

2025-07-17 12:42 本頁面
 

【文章內容簡介】 管。多諧振蕩器由晶體管或集成電路構成。當接通電源后(~15V直流工作電壓),多諧振蕩器起振,~,阻抗匹配器推動壓電蜂鳴片發(fā)聲。電磁式蜂鳴器:電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產生的音頻信號電流通過電磁線圈,使電磁線圈產生磁場。振動膜片在電磁線圈和磁鐵的相互纏繞。本設計應用三極管驅動蜂鳴器同時點亮發(fā)光二極管實現報警,其應用電路如圖39所示。圖39 報警電路 電路原理及說明將以上各個電路模塊連接起來,即構成無線遠程監(jiān)控系統(tǒng),總系統(tǒng)工作原理如下:溫度傳感器對實驗現場的溫度進行采集,副控芯片AT89S51對采集溫度數據進行處理,將有用數據送給發(fā)射模塊NRF24L01,主系統(tǒng)的接受模塊NRF24L01接受數據送給主控芯片AT89S51,AT89S51對數據進行分析處理,對現場實際溫度進行顯示;另外,可以人工通過獨立鍵盤對所測溫度進行監(jiān)控,先設定好規(guī)定的溫度范圍,當采集的溫度超過此范圍時,蜂鳴器響,同時點亮發(fā)光二極管,通過按鍵選擇,可以獨立實現聲音報警、發(fā)光報警及聲光同時報警;當檢測溫度不在設定范圍內時,系統(tǒng)正常運行,時刻顯示著現場的溫度值。系統(tǒng)程序的設計4 系統(tǒng)程序的設計 主程序的設計主程序包括主系統(tǒng)程序設計,子系統(tǒng)程序設計和報警程序設計。主系統(tǒng)程序負責鍵盤設定值的檢測,上下門限設定值的顯示,通過無線模塊接收子系統(tǒng)發(fā)送來的數據并顯示在LCD上,并且判斷接收的溫度是否超出門限值,如果超出就進行報警操作。主系統(tǒng)流程圖如圖41所示。鍵盤設定值檢測設定值顯示實際值顯示接收副系統(tǒng)數據返回主程序溫度超出范圍否?報警YN圖41 主系統(tǒng)程序流程圖子系統(tǒng)負責對溫度的數據采集,經過處理后通過無線模塊發(fā)送出去。子系統(tǒng)程序流程圖如圖42所示。溫度采集數據處理實際值發(fā)送主程序返回圖42 子系統(tǒng)程序流程圖報警程序通過對接收到的實際值與設定值進行比較,當溫度小于報警下限值時,進行報警下限處理,當溫度大于報警上限值時,進行報警上限處理。報警程序流程圖如圖43所示。設定值與實際值比較溫度小于報警下限?溫度大于報警上限?報警上限處理NYYN報警下限處理報警子程序返回圖43 溫度報警子程序流程圖主程序首先對LCD進行初始化,然后進行按鍵掃描,設定溫度上下限值,接著初始化無線接收模塊,然后溫度數據,并判斷是否超出設定范圍,超過即啟動報警程序,不超過則繼續(xù)判斷,如此循環(huán)。系統(tǒng)程序的設計main(){ delay_ms(500)。 // 上電延時 LCD1602_init()。 // LCD初始化 wireless_init()。 while (1) { Count++。 // 超時計數 if (Count = 140000) w_string(0x00, No Signal!!! )。 //顯示無信號 k_val = scan_key()。 //掃描按鍵 key_action(k_val)。 //按鍵操作內容 if (IRQ == 0) //是否接收到數據 { read_chip_state()。//讀芯片狀態(tài) tra[0] = 0x27。 tra[1] = 0x70。 write_more_byte(tra,2)。 read_more_bytes(Rev_dat,16)。 // 讀數據 if ((Rev_dat[0]+Rev_dat[1]) == 0xFF) //和校驗 { Count = 0。 //清零計數器 w_string(0x00, Real Wen du: C)。 //顯示當前溫度 if (Rev_dat[0] 0) //負溫度顯示 { Rev_dat[0] = Rev_dat[0]。 w_string(0x0C, )。 w_data(0x0D, Rev_dat[0])。} else // 正溫度顯示 { w_string(0x0C, +)。 w_data(0x0D, Rev_dat[0])。} } } }} 發(fā)射系統(tǒng)程序的設計發(fā)射程序首先點亮信號燈并且初始化無線發(fā)射模塊,接著讀取溫度數據并校驗數據,然后發(fā)射溫度數據并重置信號燈,數據正常發(fā)送,則信號燈穩(wěn)定閃爍。main(){ int8 dataout[16]。 LED = 0。 // 上電LED亮 Wireless_init()。 //初始化無線模塊 while (1) { start_temp_sensor()。 // 初始化18B20 delay_ms(1000)。 // 延時1秒 dataout[0] = read_temp()。 //讀溫度 dataout[1] = 0xFF dataout[0]。 //反轉數據 作為校驗 LED = ~LED。 // 重置LED指示燈 Send_16Bytes_Data(dataout)。 // 發(fā)送數據 }} 傳輸程序的設計傳輸程序包括發(fā)送數據和接收數據,即無線收發(fā)模塊之間進行數據通信,設定好對應的通信地址和通信協(xié)議,即可實現數據的正確傳送。// 發(fā)送數據// 輸入值:addr:輸入數據地址void Send_16Bytes_Data(unsigned char *addr){ unsigned char *p = addr,tra1[2],i。 CLR_SCN()。 Write_one_byte(0xA0)。 for (i=0。i16。i++) { Write_one_byte(*p++)。 } SET_SCN()。 SET_CE()。 for (i=0。i60。i++)。 CLR_CE()。 while (READ_IRQ() == 1)。 tra1[0] = 0x27。 tra1[1] = 0x70。 Write_more_byte(tra1,2)。 tra1[0] = 0xE1。 Write_more_byte(tra1,1)。}/* 接收數據*/// 寫一個字節(jié)到芯片// 輸入參數:dat:數據void write_one_byte(unsigned char dat){ unsigned char i,dd=dat。 for (i=0。i8。i++) { if (dd amp。 0x80) // 發(fā)送數據 { SET_MOSI()。} else { CLR_MOSI()。 } SET_SCK()。 // 發(fā)時鐘 CLR_SCK()。 dd = 1。 }} 溫度采集程序的設計溫度采集程序主要是對溫度傳感器DS18B20編程,向1線總線上寫字節(jié),傳送字節(jié)和讀字節(jié),然后將采集的數據交給單片機進行處理。/* 18B20寫1個字節(jié)函數 向1WIRE總線上寫一個字節(jié)*/void write_byte(uint8 val){ uint8 i。 for (i=0。 i8。 i++) { DQ = 1。 _nop_()。 DQ = 0。 nops()。 //4us DQ = val amp。 0x01。 //最低位移出 delay(6)。 //66us val = 1。 //右移一位 } DQ = 1。 delay(1)。 }/*18B20讀1個字節(jié)函數 從1WIRE總線上讀取一個字節(jié)*/uint8 read_byte(void){ uint8 i, value=0。 for (i=0。 i8。 i++) { DQ=1。 _nop_()。 value = 1。 DQ = 0。 nops()。 //4us DQ = 1。 nops()。 //4us if (DQ) value|=0x80。 delay(6)。 //66us } DQ=1。 return(value)。} 顯示程序的設計系統(tǒng)程序的設計LCD1602顯示程序,首先進行1602的初始化,然后就是執(zhí)行寫命令和寫數據這兩個子函數,實現溫度數據的實時顯示和按鍵操作的動態(tài)顯示。/* 初始化1602*/void LCD1602_init(void){ w_cmd(0x38)。 // 16*2顯示,5*7點陣,8位數據接口 w_cmd(0x0C)。 // 顯示器開 w_cmd(0x06)。 // 文字不動,光標自動右移 w_cmd(0x01)。 // 清屏}/*等待繁忙標志*/void wait(void){ P0 = 0xFF。 do { RS = 0。 RW = 1。 EN = 0。 EN = 1。 }while (BUSY == 1)。 EN = 0。 }/*寫數據*/void w_dat(uint8 dat){ wait()。 EN = 0。 P0 = dat。 RS = 1。 RW = 0。 EN = 1。 EN = 0。 }/* 寫命令*/void w_cmd(uint8 cmd){ wait()。 EN = 0。 P0 = cmd。 RS = 0。 RW = 0。 EN = 1。 EN = 0。 }/*發(fā)送字符串到LCD*/void w_string(uint8 addr_start, uint8 *p){ w_cmd(addr_start | 0x80)。 while (*p != 39。\039。) { w_dat(*p++)。} }/*發(fā)送數字到LCD(00~99)*/void w_data(uint8 addr_start, uint8 dat){ w_cmd(addr_start | 0x80)。w_dat(dat%100/10 + 39。039。)。 w_dat(dat%10 + 39。039。)。}仿真與調試 5 仿真與調試由于無線模塊NRF24L01在模擬仿真中無法實現,所以采用的是雙機通信原理實現部分仿真。當溫度低于最低門限值時,紅燈亮,報警器報警,LCD顯示當前溫度;當溫度在設置范圍類時,LCD顯示當前溫度;當溫度超過最高門限時,黃燈亮,報警器報警。仿真原理圖如圖61所示,仿真結果如圖663
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1