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

正文內(nèi)容

畢業(yè)設(shè)計-基于單片機的家庭水族箱控制系統(tǒng)的研究與開發(fā)(已改無錯字)

2023-01-13 17:50:21 本頁面
  

【正文】 端口連接,當水位在上下限時, D D4導(dǎo)通發(fā)光,提示水位已經(jīng)到了極限。 2021 屆 本科生畢業(yè)論文 - 17 - 蜂鳴器與三極管 E3相連,當 P10低電平時, E3 導(dǎo)通,蜂鳴器報警。當 P10 高電平時,三極管截止,蜂鳴器沒有接通電源,不響。 第三章 系統(tǒng)軟件 的研究與開發(fā) 系統(tǒng)的軟件設(shè)計是控制系統(tǒng)設(shè)計的主要內(nèi)容和重點,應(yīng)該根據(jù)系統(tǒng)硬件電路為基礎(chǔ)進行系統(tǒng)的軟件設(shè)計。軟件設(shè)計要求功能準確,閱讀調(diào) 試方便,所有一般采用結(jié)構(gòu)化的程序設(shè)計方法。它包括:自頂向下的設(shè)計、模塊化編程和結(jié)構(gòu)化編程。 水族箱控制系統(tǒng)程序的設(shè)計采用單片機 C語言編程進行開發(fā),系統(tǒng)程序可以分為以下 幾大 模塊:主程序模塊、 1602顯示 處理 模塊、 DS18B20溫度 采集模塊 、延時模塊、定時器設(shè)置程序模塊 。 軟件設(shè)計方法 模塊化設(shè)計,就是把軟件按照規(guī)定的原則分為一個個較小的、相對獨立但又相關(guān)的模塊。分解、信息隱藏和模塊獨立性,是實現(xiàn)模塊化設(shè)計的重要指導(dǎo)思想。 對于一個軟件系統(tǒng),可以把它分解成幾個小模塊,各組成模塊之間是相互關(guān)聯(lián)的。但模塊也 多,模塊的接口工作量也隨著模塊數(shù)的增加而增大。 因此把模塊數(shù)控制在一個范圍內(nèi),可以使總的開發(fā)工 作量保持最小。 本系統(tǒng)的軟件設(shè)計采用 Keil C51集成環(huán)境開發(fā)軟件部分, Keil C51是美國 Keil Software公司出品的 51系列兼容單片機 C語言軟件開發(fā)系統(tǒng),與匯編相比, C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢。 Keil C51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到 Keil C51生成的目標代碼效率非 常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。 本文系統(tǒng)的程序有:主程序、 1602顯示處理程序 、 延時處理程序 、 溫度采集處理程序 、 EEPROM程序。下面就將逐一介紹各程序模塊的設(shè)計和編寫。 主程序 模塊 主程序是檢測水族箱內(nèi)各種環(huán)境參數(shù),從而進行智能控制的主監(jiān)控程序,根據(jù)模塊化設(shè)計的根本思想,可以將系統(tǒng)功能劃分為多個子任務(wù),每個子任務(wù)由對應(yīng)的子程序運行來實現(xiàn)。整合起每個子程序,就可以實現(xiàn)溫度、水位、定時充氧等 參數(shù)的采集。 系統(tǒng)監(jiān)控主程序的流程圖 如 。 2021 屆 本科生畢業(yè)論文 - 18 - 圖 主程序流程圖 主程序主要完成以下工作 ( 1)預(yù)處理設(shè)置 在主程序中首先要對系統(tǒng)進行預(yù)處理命令的 包含。它們既包括有 ANSIC統(tǒng)一規(guī)定的預(yù)處理命令,也有本文設(shè)計的包含預(yù)處理文件。它們包括宏定義、 51 單片機包含文件、 DS18B20 讀寫函數(shù)、 1602液晶驅(qū)動函數(shù)等 , ( 2)初始化和聲明部分 這部分對系統(tǒng)進行初始化編程。硬件部分有按鍵與單片機接口定義、傳感器數(shù)據(jù)傳輸接口設(shè)置:軟件方面有各種數(shù)據(jù)的聲明和定義、溫度數(shù)據(jù)的初值設(shè)定、 EEPROM的判斷初值。 ( 3)環(huán)境參數(shù)的采集 獲取各種環(huán)境參數(shù)的 變化情況和工作狀態(tài)。環(huán)境參數(shù)的變化包括系統(tǒng)溫度,高、低水位等,工作狀態(tài)包括溫度控制狀態(tài)、定時充氧控制狀態(tài)等。 ( 4)調(diào)用控制程序 根據(jù)當前的環(huán)境參數(shù),單片機做出判斷,調(diào)用控制程序?qū)ο到y(tǒng)進行智能控制。實現(xiàn)對加熱器的開與關(guān)、定時充氧電機的開與關(guān)、還有水閥的控制。 (5) 顯示處理 根據(jù) DS18B20傳回的溫度數(shù)據(jù),在 1602液晶上實時的進行水族箱溫度的顯示 。直觀的呈現(xiàn)給飼主,讓她了解控制系統(tǒng)的工作。 而還有另外的水位燈顯示程序,在水位到達設(shè)定的上下限時,水位燈會亮。 ( 6)主程序代碼 主程序的 主要 代碼如下 所示 : define uint unsigned int //定義縮寫 define uchar unsigned char //定義縮寫 開始 預(yù)處理設(shè)置 初始化 和聲明 主程序的 主函數(shù) 各種環(huán)境參數(shù)的采集 調(diào)用控制程 序 顯示處理 結(jié)束 2021 屆 本科生畢業(yè)論文 - 19 - include include include //包含 ds18b20讀寫函數(shù) include //包含 1602液晶驅(qū)動函數(shù) include sbit butt1=P1^1。 //定義減小下限按鈕(按鈕 1) sbit butt2=P1^2。 //定義增加下限按鈕(按鈕 2) sbit butt3=P1^3。 //按鈕 3 sbit butt4=P1^4。 //按鈕 4 sbit beeper=P1^0。 //蜂鳴 sbit water_high=P3^5。 //水位開關(guān) 1 (上 ) sbit water_low=P3^4。 //水位開關(guān) 2 (下 ) sbit o2=P3^7。 //氧氣 sbit hot=P3^6。 //加熱 sbit addwater=P2^5。 unsigned char num1=0。//存放實時溫度數(shù)據(jù) unsigned int limit_high。//上限 1變量聲明 unsigned int limit_low。//下限 1變量聲明 sbit led1=P2^4。 //水位高燈 sbit led2=P2^3。 //水位低燈 void delay_50mms(unsigned int t)//簡單延時函數(shù) { unsigned int j。 for(。t0。t) for(j=6245。j0。j)。 } main() { LCD_Initial()。 //lcd初始化 2021 屆 本科生畢業(yè)論文 - 20 - limit_high=ReData(20)。 //讀取上次保存的上限 limit_low=ReData(21)。 //讀取上次保存的上限 if(limit_high==255)//防止 eeprom數(shù)據(jù)丟牛 { WrData(20,60)。 WrData(21,15)。 //恢復(fù)下限到 30; eepromflag=0。//將 eeprom寫入標志清零 } timer0init()。//初始化定時器 while(1) { num1=ReadTemp()。 //讀取溫度,賦值到 num1 if(num1=limit_high)beeper=0。else beeper=1 。//如果溫度到達上限 蜂鳴報警 if(num1limit_low)hot=0。else hot=1。//如果溫度小于下限則加熱,否則停止加熱 if(butt1==0)//按鈕 1 { delay_50mms(3)。//按鍵消抖,數(shù)值越大消抖效應(yīng)越強 if(butt1==0amp。amp。limit_high0)limit_high。//消抖延時后,如果按鍵還是按下,就將上限減少 1176。 } if(butt2==0)// 按鈕 2 { delay_50mms(3)。//按鍵消抖,數(shù)值越大消抖效應(yīng)越強 if(butt2==0amp。amp。limit_high255)limit_high++。//消抖延時后,如果按鍵還是按下,就將上限增加 1176。 } 2021 屆 本科生畢業(yè)論文 - 21 - if(butt3==0)//按鈕 3 { delay_50mms(3)。//按鍵消抖,數(shù)值越大 消抖效應(yīng)越強 if(butt3==0amp。amp。limit_low0)limit_low。//消抖延時后,如果按鍵還是按下,就將上限減少1176。 } if(butt4==0)// 按鈕 4 { delay_50mms(3)。//按鍵消抖,數(shù)值越大消抖效應(yīng)越強 if(butt4==0amp。amp。limit_low255)limit_low++。//消抖延時后,如果按鍵還是按下,就將上限增加 1176。 } if((butt1==0)||(butt2==0)||(butt3==0)||(butt4==0) )eepromflag=0。//如果 2 個按鍵任意一個按下,就將 eeprom操作標志清零 if( (butt1==1)amp。amp。(butt2==1)amp。amp。(butt3==1)amp。amp。(butt4==1)amp。amp。(eepromflag==0) ) //松開所有按鍵后,并且 eeprom操作標志等于 0,就往 21的 eeprom地址里存入下限數(shù)據(jù),實現(xiàn)斷電也保存數(shù)據(jù) { WrData(20,limit_high)。 //寫入上限數(shù)據(jù) WrData(21,limit_low)。 //寫入下限數(shù)據(jù) } PrintXY(0,0,T:)。 DisplayThree(2,0,num1)。 DisplayOneChar(5,0,0xdf)。 PrintXY(6,0,C)。 //顯示溫度 PrintXY(0,1,Hi:)。 DisplayThree(3,1,limit_high)。 //顯示上限 PrintXY(7,1,Lo:)。 DisplayThree(10,1,limit_low)。 DisplayOneChar(14,1,0xdf)。 PrintXY(15,1,C)。 //顯示下限 if(water_high==1)led1=0。 else led1=1。 //水位高燈操作 2021 屆 本科生畢業(yè)論文 - 22 - if(water_low==1)led2=0。 else led2=1。 //水位低燈操作 if(timer_state==0) o2=0。else o2=1。//定時開氧氣 if(water_low==1)addwater=0。else addwater=1。 //如果水位低 , 就加水 } } 1602 液晶顯示處理程序 顯示程序模塊是水族箱控制系統(tǒng)中很重要的人機交互窗口,主要顯示系統(tǒng) 的實時溫度,提供了一個良好的人機交互界面,讓人更好的了解水族箱中的環(huán)境參數(shù)。 顯示處理程序包括了:液晶內(nèi)部等待函數(shù)、寫入命令或數(shù)據(jù)、顯示模塊設(shè)置、 設(shè)置輸入模式模塊、初始化液晶 LCD、液晶字符輸入的位置、字符輸出到液晶顯示。 程序代碼如下 : 內(nèi) 部 等 待 函 數(shù)************************************************************************** unsigned char LCD_Wait(void) { LcdRs=0。 LcdRw=1。 _nop_()。 _nop_()。_nop_()。_nop_()。 LcdEn=1。 _nop_()。 _nop_()。_nop_()。_nop_()。 LcdEn=0。 return DBPort。 } ************************************************************ define LCD_COMMAND 0 // Command define LCD_DATA 1 // Data define LCD_CLEAR_SCREEN 0x01 // 清屏 define LCD_HOMING 0x02 // 光標返回原點 void LCD_Write(bit style, unsigned char input) { LcdEn=0。 LcdRs=style。 LcdRw=0。 _nop_()。_nop_()。_nop_()。 DBPort=input。_nop_()。_nop_()。_nop_()。//注意順序 LcdEn=1。 _nop_()。_nop_()。_nop_()。//注意順序 2021 屆 本科生畢業(yè)論文 - 23 - LcdEn=0。 _nop_()。_nop_()。_nop_()。 LCD_Wait()。 } //設(shè)置顯示模式 ************************************************************ define LCD_SHOW 0x04 //顯示開 define LCD_HIDE 0x00 //顯 示關(guān) define LCD_CURSOR 0x02 //顯示光標 define LCD_NO_CURSOR 0x00 //無光標 define LCD_FLASH 0x01 //光標閃動 define LCD_NO_FLASH 0x00
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1