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

正文內容

主從式溫度監(jiān)測報警與控制系統(tǒng)電子課程設計(編輯修改稿)

2025-09-30 17:45 本頁面
 

【文章內容簡介】 傳感器 DS18B20 復位和讀寫操作。對溫度進行采集,按時序直接從溫度傳感器讀入溫度值的數字信號(這就是所測的溫度值,因為 DS18B20 是最新單線數字溫度傳感器),最后存入內存。由于精度準確、分辨率高、抗干擾性好、無需校驗。由于所讀出的數據 格式為二進制數的補碼,所以求出溫度值的原碼(當然正數是不必轉換)。在顯示溫度值時,還需要進行十進制的轉換,字符代碼的轉換。其溫度采集流程圖如圖 所示。 主從式溫度監(jiān)測報警與控制系統(tǒng) 圖 S18B20 溫度采集流程圖 LCD1602 顯示模塊程序設計 1) D1602 初始化 LCD1602 初始化流程圖如圖 所示 圖 位總線借口模式初始化流程圖 2)溫度顯示 LCD1602 溫度顯示流程圖如圖 所示 主從式溫度監(jiān)測報警與控制系統(tǒng) 圖 LCD1602 溫度顯示流程圖 RS232 串口通信模塊程序設計 1)機端通信程序設計 AT89C52 單片機串行口是全雙工串行通信口,有 4種工作方式,即:方式 0作移位寄存器使用;方式 1 是波特率可變的 8 位 UART;方式 2 是波特率固定為兩種的 9位 UART;方式 3 是波特率可變的 9 位 UART。在與 PC機通信時我們選用方式 1來循環(huán)。向 PC 機發(fā)送數據,在電平轉換的過程中用到 MAX232 這一核心芯片。 MAX232 芯片通過 DS18B20 溫度傳感器進行采集溫度放入單片機內存,采集到的溫度將以二進制補碼的形式出現,然后通過編寫程序將二進制補碼的形式轉換為字符的形式,通過字符型液晶顯示模塊將溫度顯示出來,最后利用 MAX232內部電荷汞電壓轉換器,完成電壓轉換,使溫度在 PC 機界面顯示出來。 2) PC 端通信程序設計 為方便進行遠程控制可將采集到的溫度數據發(fā)送到電腦,以便實時監(jiān)測。通過 RS_232 將數據發(fā)送至終端設備,采用 VC++ 作為開發(fā)平臺。 五、設計方案電路圖 主從式溫度監(jiān)測報警與控制系統(tǒng) 將 T89C52 單片機最小系統(tǒng) 、溫度采集電路、溫度顯示報警電路、 PC 機與單片機通信接口電路等各子模塊電路組合起來,就得到了最終的設計方案電路圖如下所示: 圖 5 主從式溫度監(jiān)測報警與控制系 統(tǒng)電路圖 六、程序主要內容與流程圖 程序主要包括 主程序設計、 DS18B20 模塊程序設計、 LCD1602 顯示模塊程序設計、 RS232 串口通信模塊程序設計等主要內容,具體參見《 系統(tǒng)的軟件設計》這部分內容,程序設計的總體流程圖如下所示: 主從式溫度監(jiān)測報警與控制系統(tǒng) 圖 6 MCU 設計流程圖 七、課程設計開展情況及總結 本次課程設計從 4 月中旬一直進行到 6月 20 日。期間,也遇到過不少困難:元器件選擇錯誤,不得不多次跑到賽格去重新買元器件;焊接出現錯誤,對著電路圖苦苦尋找焊接錯誤的地方,通過仔細研究才發(fā)現是單片機引腳焊錯, 但再次測試時還是不行,最終運用萬用表才發(fā)現:即使是接了電源,單片機除了直接接電源的管腳外其他都是低電平,百思不得其解;程序運行錯誤,最終不得不通過翻閱大量資料來參考以及增補知識,改寫程序,燒寫程序也是歷盡苦心,由于是買了 AT 的芯片,而大部分同學只有燒寫 SAT,最終在電信同學的幫忙下才燒寫成功。雖然歷盡千辛萬苦,但很遺憾最終電路還是不能運行,估計有以下原因:模擬仿真的時候很成功,但焊接出來就實現不了,應該是模擬跟實際的有差主從式溫度監(jiān)測報警與控制系統(tǒng) 別造成,也有可能是焊接時還是出現了問題; 焊接是沒有考慮液晶顯示器的對比問題,因此 造成液晶顯示器只能點亮不能顯示數字。下面再總結下我們的軟硬件設計。 在硬件方面,前面已經詳細介紹,這里就不再贅述。展示下焊接好的電路板,如下圖所示。 圖 7 主從式溫度監(jiān)測報警與控制系統(tǒng)實物電路圖 在軟件方面,除了在 系統(tǒng)的軟件設計部分提到的利用 c 編寫程序外,我們還使用了 PROTUES 軟件對電路進行了模擬仿真,經過多次模擬調試以后,模擬仿真的結果正確,也大大增強了我們完成電子設計的信心。 八、課程設計總結 本課程設計設計了一單片機 /PC 控制的測溫 /傳輸系統(tǒng)。前臺由 DS18B20傳感器將溫度直接轉 變成數字信號送入單片機中進行實時采集,通過 LCD1602液晶顯示模塊將結果在前臺顯示出來;另外,采集結果又通過 RS232,接口送入 PC 機后臺中以便進行顯示、存儲或后續(xù)處理。該系統(tǒng)體現了 數字化控制,智能化控制的特點, 實現了對溫度的監(jiān)測、報警和控制功能。 九、單片機系統(tǒng)源程序 主從式溫度監(jiān)測報警與控制系統(tǒng) include main() { setds18b20(TH,TL,RS)。 //設置上下限報警溫度和分辨率 UART_init()。 delay(100)。 while(1) { pt=ReadTemperature()。 //測溫函數返回這個數組的頭地址 //讀取溫度 ,溫度值存放在一個兩個字節(jié)的數組中 , temper_LCD()。 //實測溫度轉化為 ACSII 碼 ,并送液晶顯示緩沖區(qū) alarm_LCD(TH,TL)。 //上下限報警溫度轉化為 ASCII碼 ,并送液晶顯示緩沖區(qū) LCD_Initial()。 //第一個 參數列號 ,第二個為行號 ,為 0 表示第一行 //為 1表示第二行 ,第三個參數為顯示數據的首地址 LCD_Print(0,0,TempBuffer0)。 LCD_Print(0,1,TempBuffer1)。 warning()。 //溫度檢測和報警 key_mand()。 COM_send()。 //發(fā)送實時溫度 } } include include //測溫頭文件 include //液晶顯示頭文件 主從式溫度監(jiān)測報警與控制系統(tǒng) include //鍵盤掃描頭文件 sbit alarm=P2^6。 //報警信號 bit flag。 //溫度正負號標志位 unsigned char warning_key。 //PC 報警標志位 unsigned char key_value。 //存放鍵盤掃描值 unsigned char temper1,temper2。 unsigned char TH=100,TL=0,RS=0x3f。 //上限溫度 100,下限 20,分辨率 10 位 ,也就是 unsigned char t[2],*pt。 //用來存放溫度值 ,測溫程序就是通過這個數組與主函數通信的 unsigned char point。 //定義發(fā)送數據個數指示變量 unsigned char TempBuffer1[17]={0x2b,0x20,0x60,0x30,0x2e,0x30,0x30,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,39。\039。}。 //顯示實時溫度 ,上電時顯示 + unsigned char TempBuffer0[17]={0x54,0x48,0x3a,0x2b,0x20,0x30,0x30,0x20, 0x54,0x4c,0x3a,0x2b,0x20,0x30,0x30,0x43,39。\039。}。 //顯示溫度上下限 ,上電時顯示 TH:+ 100 TL:+ 00C unsigned char code dotcode[4]={0,25,50,75}。 /***因顯示分辨率為 ,但小數運算比較麻煩 ,故采用查表的方法 ******* 再將表值分離出十位和個位后送到十分位和百分位 ********************/ /***************溫度上下限轉換為 LCD 顯示數據 ************ *功能 :將上下限報警溫度 ,分離出符號位 ,百、十、個位 并將它們轉化為 ACSII 碼 ,送到液晶顯示緩沖區(qū) ******************************************************/ void alarm_LCD( unsigned char TH, unsigned char TL) { TempBuffer0[3]=0x2b。 //0x2B 為 +的 ASCII 碼 TempBuffer0[11]=0x2b。 TempBuffer0[4]=TH/100+0x30。 //分離出 TH 的百十個位 if(TempBuffer0[4]==0x30) TempBuffer0[4]=0xfe。 //百位數消隱 TempBuffer0[5]=(TH%100)/10+0x30。 //分離出十位 TempBuffer0[6]=(TH%100)%10+0x30。 //分離出個位 TempBuffer0[12]=TL/100+0x30。 //分離出 TL 的百十個位 if(TempBuffer0[12]==0x30) TempBuffer0[12]=0xfe。 //百位數消隱 主從式溫度監(jiān)測報警與控制系統(tǒng) TempBuffer0[13]=(TL%100)/10+0x30。 //分離出十位 TempBuffer0[14]=(TL%100)%10+0x30。 //分離出個位 } /**********溫度轉換為 LCD 顯示數據 **************** *功能 :將兩個字節(jié)的溫度值 ,分離出符號位 ,整數及小數 并將它們轉化為 ACSII 碼 ,送到液晶顯示緩沖區(qū) ************************************************/ void temper_LCD(void) { unsigned char x=0x00,y=0x00。 t[0]=*pt。 pt++。 t[1]=*pt。 if(t[1]0x07) //判斷正負溫度 { flag=1。 TempBuffer1[0]=0x2d。 //0x2d 為 的 ASCII 碼 t[1]=~t[1]。 /*下面幾句把負數的補碼 */ t[0]=~t[0]。 /* 換算成絕對值 *********/ x=t[0]+1。 /***********************/ t[0]=x。 /***********************/ if(x255) /**********************/ t[1]++。 /*********************/ } else { flag=0。 TempBuffer1[0]=0x2b。 //0xfe 為變 +的 ASCII 碼 } t[1]=4。 //將高字節(jié)左移 4 位 t[1]=t[1]amp。0x70。 //取出高字節(jié)的 3個有效數字位 x=t[0]。 //將 t[0]暫存到 X,因為取小數部分還要 用到它 x=4。 //右移 4位 x=xamp。0x0f。 //和前面兩句就是取出 t[0]的高四位 t[1]=t[1]|x。 //將高低字節(jié)的有效值的整數部分拼成一個字節(jié) temper1=t[1]。 TempBuffer1[1]=t[1]/100+0x30。 //+0x30 為變 0~9 ASCII 碼 if( TempBuffer1[1]==0x30) TempBuffer1[1]=0xfe。 //百位數消隱 TempBuffer1[2]=(t[1]%100)/10+0x30。 //分離出十位 TempBuffer1[3]=(t[1]%100)%10+0x30。 //分離出個位 t[0]=t[0]amp。0x0c。 //取有效的兩位小數 主從式溫度監(jiān)測報警與控制系統(tǒng) t[0]=2。 //左移兩位 ,以便查表 x=t[0]。 temper2=x。 y=dotcode[x]。 //查表換算成實際的小數 TempBuffer1[5]=y/10+0x30。 //分離出十分位 TempBuffer1[6]=y%10+0x30。 //分離出百分位 } //
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1