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

正文內(nèi)容

基于at89s52單片機溫度控制系統(tǒng)畢業(yè)設計doc-閱讀頁

2025-07-03 15:28本頁面
  

【正文】 溫度流程圖讀取溫度子程序的主要功能是讀出 RAM 中的 9 個字節(jié),在讀出時需進行 CRC 校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。讀取溫度的主程序如下:void ReadTemperature(void){unsigned char a=0。unsigned char t=0。WriteOneChar(0xCC)。 // 啟動溫度轉(zhuǎn)換delay_18B20(100)。WriteOneChar(0xCC)。 //讀取溫度寄存器等(共可讀 9 個寄存器)前兩個就是溫度delay_18B20(100)。 //讀取溫度值低位b=ReadOneChar()。temp1+=(aamp。temp2=aamp。 temp=((b*256+a)4)。所以先將數(shù)據(jù)提取出來,分為三個部分:小數(shù)部分、整數(shù)部分和符號部分。當數(shù)據(jù)是個負數(shù)的時候,顯示之前要進行數(shù)據(jù)轉(zhuǎn)換,將其整數(shù)部分取反加一。圖 43 為溫度數(shù)據(jù)處理流程圖。溫度高字節(jié)高 5 位是用來保存溫度的正負,高字節(jié)低 3 位和低字節(jié)來保存溫度值。由于本程序采用的是 的精度,小數(shù)部分的值,可以用后四位代表的實際數(shù)值乘以 ,得到真正的數(shù)值,數(shù)值可能帶幾個小數(shù)位,所以采取小數(shù)舍入,保留一位小數(shù)即可。溫度數(shù)據(jù)處理主程序如下:str[0]=TempH/100。 //十位溫度 str[2]=(TempH%100)%10。 if(flag_get==1) //定時讀取當前溫度 { temp=ReadTemperature()。0x8000) { str[0]=0x40。 // 取反加 1 temp +=1。 TempH=temp4。0x0F。//小數(shù)近似處理 flag_get=0。 //數(shù)據(jù)/命令端sbit LCM_RW=P2^1。/***************液晶顯示子函數(shù) 1 正常顯示*****************/void displayfun1(void){WriteCommandLCM(0x0c,1)。DisplayListChar(0,1,str1)。 //液晶上顯示小時DisplayOneChar(4,0,hour%10+0x30)。 //液晶上顯示分DisplayOneChar(7,0,minite%10+0x30)。 //液晶上顯示秒DisplayOneChar(10,0,seconde%10+0x30)。 //液晶上顯示設定的溫度DisplayOneChar(5,1,K%10+0x30)。 //液晶上顯示測得的溫度 DisplayOneChar(12,1,temp1%10+0x30)。if(ON_OFF==0) //若溫控標志為 0{DisplayOneChar(14,0,0x4f)。}else{DisplayOneChar(14,0,0x4f)。if(outflag==1) DisplayOneChar(0,0,0x7c)。}}/************液晶顯示子函數(shù) 2***************/void displayfun2(void){WriteCommandLCM(0x0c,1)。DisplayListChar(0,1,str1)。DisplayOneChar(7,0,minite%10+0x30)。DisplayOneChar(10,0,seconde%10+0x30)。 DisplayOneChar(5,1,K%10+0x30)。 DisplayOneChar(12,1,temp1%10+0x30)。 WriteCommandLCM(0x0f,1)。DisplayOneChar(4,0,hour%10+0x30)。 //顯示屏打開,光標不顯示,不閃爍,檢測忙信號DisplayListChar(0,0,str0)。DisplayOneChar(3,0,hour/10+0x30)。 DisplayOneChar(9,0,seconde/10+0x30)。DisplayOneChar(4,1,K/10+0x30)。 DisplayOneChar(11,1,temp1/10+0x30)。DisplayOneChar(14,1,temp2/10+0x30)。 //顯示屏打開,光標顯示,閃爍,檢測忙信號DisplayOneChar(6,0,minite/10+0x30)。}/**************液晶顯示子函數(shù) 4 *****************/void displayfun4(void){WriteCommandLCM(0x0c,1)。DisplayListChar(0,1,str1)。DisplayOneChar(4,0,hour%10+0x30)。DisplayOneChar(7,0,minite%10+0x30)。DisplayOneChar(10,0,seconde%10+0x30)。 DisplayOneChar(12,1,temp1%10+0x30)。 WriteCommandLCM(0x0f,1)。 DisplayOneChar(5,1,K%10+0x30)。當被測溫度高于系統(tǒng)設定溫度值時, 角的輸出信號為 0,馬達開始轉(zhuǎn)動。OUT=0。if(temp1K){outflag=0。} //}}else{outflag=0。} 第 5 章 系統(tǒng)調(diào)試第 5 章 系統(tǒng)調(diào)試在 Keil 軟件中調(diào)試程序,生成 Hex 文件。點擊按鈕能夠隨意調(diào)試時間和設定系統(tǒng)溫度值。圖 51 為系統(tǒng)調(diào)試成功圖。 總結(jié)通過這次對大棚溫度自動控制的設計與制作,讓我自主完成了一個完整的設計,雖然這次的實習做的溫度顯示以及馬達的控制都相對比較簡單,但是也給將來進入硬件開發(fā)有了一個起點的基礎。幸好有幾個星期的時間來準備。畫電路圖,自己學習焊接電路板,電路板焊接完成后,硬件調(diào)試過程中芯片被燒壞了。常常有解決不了的問題,就上網(wǎng)查詢,或者閱覽資料書。因為常會碰到很難解決的問題,所以要堅持不懈。這次設計是一個鞏固加深所學課本理論知識的過程,它培養(yǎng)了我們綜合運用知識的能力,獨立思考和解決問題的能力。對我來說,這次畢業(yè)設計是非常有意義的。該智能溫度控制器只是 DS18B20 在溫度控制領域的一個簡單實例,還是許多需要完善的地方,例如可以將測得的溫度通過單片機與通訊模塊相連接,以手機短消息的方式發(fā)送給用戶,使用戶能夠隨時對溫度進行監(jiān)控。此外,還能廣泛地應用于其他一些工業(yè)生產(chǎn)領域。近兩年,國內(nèi)也出現(xiàn)了許多高精度的溫度控制產(chǎn)品,但相對于用戶來說,價格還是偏高。尋求性能可靠、價格低廉,應用廣泛的元器件是生產(chǎn)過程的首先要考慮的問題。在這里我要感謝所有的任課老師,你們誨人不倦的精神讓我非常感動。特別感謝我的導師 XXX,他在我完成這次畢業(yè)設計的過程中,給予了我很大的幫助。 此外,此系統(tǒng)能順利完成,也得到了同學們的幫忙。在此,我深表感謝。是他們一直在背后默默的支持我,教我在困難面前永不低頭,讓我在漫長的人生旅途中找到了前進的方向。不辜負父母對我的期望。 該實驗可以應用于對溫度控制精度要求不是很高的場合,例如,糧倉, 電冰箱,空調(diào),電飯鍋等。具有極強的擴展性。 //紅色指示燈sbit WRITE_ALARM=P1^1。 //綠色指示燈sbit BLUE_ALARM=P1^3。 //時鐘調(diào)整sbit P1_5=P1^5。 //時鐘減sbit DQ = P1^7。 //數(shù)據(jù)/命令端sbit LCM_RW=P2^1。sbit sda=P2^3。 //LCD 使能信號sbit ad_busy=P3^2。 //ISD1420 放音結(jié)束查詢標志sbit OUT=P3^7。 //ad 采樣值存儲uchar seconde。uchar hour。uchar temp1,temp2,temp。uchar K。bit outflag。uchar code str0[]={ : : }。void delay_LCM(uint)。 //LCD 初始化子程序void lcd_wait(void)。 //寫指令到 ICM 子函數(shù)void WriteDataLCM(uchar WDLCM)。 //顯示指定坐標的一個字符子函數(shù)void DisplayListChar(uchar X,uchar Y,uchar code *DData)。 //定時器初始化void displayfun1(void)。void displayfun3(void)。void keyscan(void )。void inc_key(void)。void delay_18B20(unsigned int i)。uchar ReadOneChar(void)。void ReadTemperature(void)。void playalarm(void)。 for(i=0。i++) { for(j=0。j++) {。DATAPORT=WCLCM。 // 選中指令寄存器 LCM_RW=0。 _nop_()。_nop_()。 }/**********寫數(shù)據(jù)到 LCM 子函數(shù)************/void WriteDataLCM(uchar WDLCM){ lcd_wait( )。 LCM_RS=1。 // 寫模式 LCM_EN=1。_nop_()。 LCM_EN=0。 LCM_EN=1。 LCM_RW=1。 while(DATAPORTamp。 _nop_()。 LCM_EN=1。 _nop_()。}/**********LCM 初始化子函數(shù) ***********/void initLCM( ){ DATAPORT=0。WriteCommandLCM(0x38,0)。 WriteCommandLCM(0x38,0)。 WriteCommandLCM(0x38,0)。 WriteCommandLCM(0x38,1)。 //關閉顯示,檢測忙信號 WriteCommandLCM(0x01,1)。 //顯示光標右移設置,檢測忙信號 WriteCommandLCM(0x0c,1)。=1。=15。 //若 y 為 1(顯示第二行) ,地址碼+0X40 X|=0x80。 WriteDataLCM(DData)。 Yamp。 Xamp。 while(X16) { DisplayOneChar(X,Y,DData[ListLength])。 X++。}/**********ds18b20 初始化函數(shù) **********************/void Init_DS18B20(void) { unsigned char x=0。 //DQ 復位 delay_18B20(8)。 //單片機將 DQ 拉低 delay_18B20(80)。 //拉高總線 delay_18B20(14)。 //稍做延時后 如果 x=0 則初始化成功 x=1 則初始化失敗 delay_18B20(20)。uchar dat = 0。i0。 // 給脈沖信號 dat=1。 // 給脈沖信號 if(DQ) dat|=0x80。 } return(dat)。 for (i=8。 i) { DQ = 0。0x01。 DQ = 1。 }}/**************讀取 ds18b20 當前溫度************/void ReadTemperature(void){unsigned char a=0。unsigned char t=0。WriteOneChar(0xCC)。 // 啟動溫度轉(zhuǎn)換delay_18B20(100)。WriteOneChar(0xCC)。 //讀取溫度寄存器等(共可讀 9 個寄存器) 前兩個就是溫度delay_18B20(100)。 //讀取溫度值低位b=ReadOneChar()。temp1+=(aamp。temp2=aamp。 temp=((b*256+a)4)。 //顯示屏打開,光標不顯示,不閃爍,檢測忙信號DisplayListChar(0,0,str0)。 DisplayOneChar(3,0,hour/10+0x30)。DisplayOneChar(6,0,minite/10+0x30
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1