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

正文內(nèi)容

糧食倉庫溫濕度智能檢測_系統(tǒng)軟件設(shè)計畢業(yè)論文(編輯修改稿)

2025-08-20 00:10 本頁面
 

【文章內(nèi)容簡介】 程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到 C 語言,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā) 。 C 語言 是 功的系統(tǒng)描述語言,用 C 語言開發(fā)的 UNIX操作系統(tǒng)就是一個成功的范例 。同時 C 語言又是一種通用的程序設(shè)計語言,在國際上廣泛流行。世界上很多著名的計算公司都成功的開發(fā)了不同版本的 C 語言, 很多優(yōu)秀的應(yīng)用程序也都使用 C 語言開發(fā)的,它是一種很有發(fā)展前途的高級程序設(shè)計語言。 1. C 是中級語言。它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。C 語言可以像匯編語言一樣對位、字節(jié)和地址進(jìn)行操作, 而這三者是計算機(jī)最基本的工作單元。 是結(jié)構(gòu)式語言。結(jié)構(gòu)式語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。 C 語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從 而使程序完全結(jié)構(gòu)化。 語言功能齊全。具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強(qiáng)大,可以實現(xiàn)決策目的的游戲。 4. C 語言適用范圍大。適合于多種操作系統(tǒng),如 Windows、 DOS、 UNIX 等等;也適用于多種機(jī)型。 C 語言對編寫需要硬件進(jìn)行操作的場合,明顯優(yōu)于其它解釋型高級語言,有一些大型應(yīng)用軟件也是用 C 語言編寫的。 C 語言具有較好的可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動畫。它是數(shù)值計算的高級語言 [5]。 匯 編語言是低級語言,在編寫程序的時候會把根據(jù)不同的情況指定使用不同的尋址方式,能夠?qū)?nèi)存和 CPU 里的通 用寄存器直接操縱。不同的計算機(jī)系列會有不同的匯編語言此次課題 選擇了 C 語言進(jìn)行編寫。 3 系統(tǒng)軟件設(shè)計 10 3 系統(tǒng)軟件設(shè)計 系統(tǒng)硬件工作原理 該系統(tǒng)的硬件電路由以下幾部分電路模塊組成:單片機(jī)、溫度傳感器檢測電路、濕度傳感器檢測電路、數(shù)碼管顯示電路、鍵盤開關(guān)電路、蜂鳴器報警電路等部分。系統(tǒng)硬件框圖如圖 所示。 圖 系統(tǒng)硬件框圖 系統(tǒng)軟件設(shè)計概述 本 章在硬件電路設(shè)計的基礎(chǔ)上,全面闡述各部分軟件的設(shè)計思想和具體實現(xiàn)方法。整個軟件采用模塊化設(shè)計結(jié)構(gòu),并利用匯編語言編制。整個程序由主程序、顯示、 報警 、 測量 等子程序模塊組成 [6]。 主程序模塊設(shè)計 主程序框圖如圖 所示。程序初始化包括寄存器設(shè)置、堆棧設(shè)置和相關(guān)單元清零設(shè)置等。主程序存放于 89c52 中,啟動后循環(huán)執(zhí)行,不停地進(jìn)行采樣計算,得出實際溫、濕度值,并與設(shè)定值進(jìn)行比較,實現(xiàn)聲光報警信號。 在 主程序是單片機(jī)程序的主體,整個單片機(jī)端系統(tǒng)軟件的功能的實現(xiàn)都是在其中完成的。 軟件設(shè)計的主要思路是將采集、接 收、顯示燈功能編成獨立的模塊。 S18B20 溫度傳感器 HS1101 濕度傳感器 STC89C52 單片機(jī) 串行 LED 顯示 報警電路 鍵盤 西安工業(yè)大學(xué)北方信息工程學(xué)院畢業(yè)設(shè)計(論文) 11 是 否 是 否 圖 主程序流程圖 /* 主函數(shù) */ /************************************/ void main() { EA=1。 //開總中斷 init_t0()。 //初始化定時器 init_t1()。 TR0=1。 //定時器開始工作 TR1=1。 ET0=1。 lcd_init() 。 //初始化 LCD ok_menu()。 BEEP=0。 while(1) { if(key1==0) Key1 鍵按下? 顯示濕度 Key2 鍵按下? 顯示溫度 開始 結(jié)束 西安工業(yè)大學(xué)北方信息工程學(xué)院畢業(yè)設(shè)計(論文) 12 { lcd_init。 wendu_Menu ()。 do { Read_Temperature() 。 Disp_Temperature() 。 baojing()。 } while(key2) 。 } if(key2==0) { lcd_init。 shidu_Menu()。 do { if(int_flag==1) { disp()。 } } while(key1)。 } } 溫度采集模 塊程序設(shè) 計 根據(jù) DS18B20 的通訊協(xié)議,主機(jī)(單片機(jī))控制 DS18B20 完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟: 每一次讀寫之前都要對 DS18B20 進(jìn)行復(fù)位操作,復(fù)位成功后發(fā)送一條 ROM指令,最后發(fā)送 RAM 指令,這樣才能對 DS18B20 進(jìn)行預(yù)定的操作。復(fù)位要求主 CPU將數(shù)據(jù)線下拉 500 微秒,然后釋放,當(dāng) DS18B20 收到信號后等待 16~ 60 微秒左右,后發(fā)出 60~ 240 微秒的存在低脈沖,主 CPU 收到此信號表示復(fù)位成功 [7]。 西安工業(yè)大學(xué)北方信息工程學(xué)院畢業(yè)設(shè)計(論文) 13 否 是 圖 溫 度檢測程序流程 DS18B20 中的溫度傳感器可完成對溫度的測量,以 12 位轉(zhuǎn)化為例:用 16 位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以 ℃ /LSB 形式表達(dá),其中 S 為符號位 [8]。 圖 DS18B20 溫度值 初始化是否成功 ? 初始化 從 18B20 讀字節(jié) 向 18B20 寫字節(jié) 開始 結(jié)束 讀取溫度 西安工業(yè)大學(xué)北方信息工程學(xué)院畢業(yè)設(shè)計(論文) 14 這是 12 位轉(zhuǎn)化后得到的 12 位數(shù)據(jù),存儲在 18B20 的兩個 8 比特的 RAM 中,二進(jìn)制中的前面 5 位是符號位,如果測得的溫度大于 0,這 5 位為 0,只要將測到的數(shù)值乘于 即可得到實際溫度;如果溫度小于 0,這 5 位為 1,測到的數(shù)值需要取反加 1再乘于 即可得到實際溫度(例如 +125℃ 的數(shù)字輸出為 07D0H, +℃ 的數(shù)字輸出為 ℃ 的數(shù)字輸出為 FF6FH, 55℃ 的數(shù)字輸出為 FC90H) [9]。 /********************************************************** /************溫度測量 ************************************** /********************************************************** / /*初始化 ds1820 */ /*******************************************************************/ Init_DS18B20(void) { DQ = 1 。 //DQ 復(fù)位 Delay(8) 。 //稍做延時 DQ = 0 。 //單片機(jī)將 DQ 拉低 Delay(90) 。 //精確延時 大于 480us DQ = 1 。 //拉高總線 Delay(8) 。 presence = DQ 。 //如果 =0 則初始化成功 =1 則初始化失敗 Delay(100) 。 DQ = 1 。 return(presence) 。 //返回信號, 0=presence,1= no presence } /* 讀一個字節(jié) */ /*******************************************************************/ ReadOneChar(void) { unsigned char i = 0 。 unsigned char dat = 0 。 for (i = 8 。 i 0 。 i) { DQ = 0 。 // 給脈沖信號 dat = 1 。 DQ = 1 。 // 給脈沖信號 if(DQ) 西安工業(yè)大學(xué)北方信息工程學(xué)院畢業(yè)設(shè)計(論文) 15 dat |= 0x80 。 Delay(4) 。 } return (dat) 。 } /* 寫一個字節(jié) */ /*******************************************************************/ WriteOneChar(unsigned char dat) { unsigned char i = 0 。 for (i = 8 。 i 0 。 i) { DQ = 0 。 DQ = datamp。0x01 。 Delay(5) 。 DQ = 1 。 dat=1 。 } } /* 讀取溫度 */ /*******************************************************************/ Read_Temperature(void) { Init_DS18B20() 。 WriteOneChar(0xCC) 。 // 跳過讀序號列號的操作 WriteOneChar(0x44) 。 // 啟動溫度轉(zhuǎn)換 Init_DS18B20() 。 WriteOneChar(0xCC) 。 //跳過讀序號列號的操作 WriteOneChar(0xBE) 。 //讀取溫度寄存器 temp_data[0] = ReadOneChar() 。 //溫度低 8 位 temp_data[1] = ReadOneChar() 。 //溫度高 8 位 } /* 數(shù)據(jù)轉(zhuǎn)換與溫度顯示 */ /*******************************************************************/ Disp_Temperature() { 西安工業(yè)大學(xué)北方信息工程學(xué)院畢業(yè)設(shè)計(論文) 16 display[4]=temp_data[0]amp。0x0f 。 display[0]=ditab[display[4]]+0x30 。 //查表得小數(shù)位的值 display[4]=((temp_data[0]amp。0xf0)4)|((temp_data[1]amp。0x0f)4) 。 display[3]=display[4]/100+0x30 。 display[1]=display[4]%100 。 display[2]=display[1]/10+0x30 。 display[1]=display[1]%10+0x30 。 if(display[3]==
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1