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

正文內(nèi)容

基于單片機(jī)液位控制系統(tǒng)設(shè)計畢業(yè)論文-資料下載頁

2025-06-27 19:59本頁面
  

【正文】 804U9ADC0804R410kR61kR71kVCCR510kC4150pFAD_WRAD_RDVCCAD0AD1AD2AD3AD4AD5AD6AD712JP2JPR810kVCCS2SWSPDT圖 311 A/D 轉(zhuǎn)換單元電路圖 通信單元硬件設(shè)計MAX485僅有8個管腳,電路設(shè)計比較簡單。RO 引腳接到單片機(jī)串口接收引腳 RXD() ,DI 引腳接到單片機(jī)串口發(fā)送引腳TXD( ) 。由于 MAX485 為半雙工通信方式,不能同時發(fā)送和接收數(shù)據(jù),只能通過圖 312 MAX485 引腳圖控制 RE 和 DE 引腳的狀態(tài)來進(jìn)行發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的轉(zhuǎn)換。為了節(jié)省單片機(jī) I/O 口資源,將 RE 和 DE 引腳連在一起,輸入低電平時, MAX485 處于接收狀態(tài);輸入高電平時,其處于發(fā)送數(shù)據(jù)狀態(tài)。定義 RE 和 DE 連接在一起的網(wǎng)絡(luò)標(biāo)號為 E,接入單片機(jī)P1 口,用于發(fā)送與接收的轉(zhuǎn)換。A,B 端為發(fā)送接收差分信號端,一般需在 A,B 端之間加匹配電阻,匹配電阻為 120Ω。硬件電路如圖313:圖 313 串行通信模塊電路圖 其他外圍電路的設(shè)計繼電器電路設(shè)計。由于使用單片機(jī)I/O口的驅(qū)動電流較弱,不滿足繼電器吸合電流參數(shù)的要求,所以需使用三極管驅(qū)動繼電器吸合。設(shè)計電路如圖314。為了防止電源尖峰脈沖引發(fā)的噪聲干擾以及高頻信號線間的耦合干擾,在電源入口處及芯片頂端或底端,接入去耦電容,以增強(qiáng)系統(tǒng)的穩(wěn)定性。電源指示燈設(shè)計如圖315。圖 314 繼電器部分電路圖圖 315 電源指示燈電路圖第 4 章 系統(tǒng)軟件設(shè)計 系統(tǒng)軟件 系統(tǒng)軟件編譯開發(fā)環(huán)境8051系類單片機(jī)共擁有111條系統(tǒng)指令,可實現(xiàn)51種基本操作。然而匯編語言指令卻有程序的可讀性低,程序開發(fā)人員的開發(fā)時間長與開發(fā)難度大,程序移植性差等缺點(diǎn)。C語言是一種編譯型程序設(shè)計語言。它兼顧了多種高級語言的特點(diǎn),并具備匯編語言的功能。用C語言來編寫目標(biāo)系統(tǒng)軟件,會大大縮短開發(fā)周期,增加軟件的可讀性,便于改進(jìn)和擴(kuò)充。用C語言進(jìn)行51系列單片機(jī)程序設(shè)計是單片機(jī)開發(fā)與應(yīng)用的必然趨勢。KEIL C51開發(fā)工具套件可用于匯編C語言程序、匯編源程序,鏈接和定位目標(biāo)文件和庫,創(chuàng)建HEX文件以及調(diào)試目標(biāo)程序。本設(shè)計使用KEIL C51 μVision3為開發(fā)編譯環(huán)境,使用 C語言編寫程序,實現(xiàn)各模塊功能設(shè)計。 系統(tǒng)主程序流程圖系統(tǒng)主程序的功能主要是完成對單片機(jī)的初始化,設(shè)置警戒液位的上下限,實時顯示液位值以及鍵盤掃描等工作。主程序流程圖如圖41所示。 系統(tǒng)初始化該模塊在系統(tǒng)上電開機(jī)時將系統(tǒng)端口、數(shù)據(jù)存儲區(qū)、標(biāo)志位、指針、地址等賦予有含義的值。具體分為以下幾個模塊列表描述。表41 初始化參數(shù)及含義模塊 變量/端口 初始值 功能adRD/ 1 A/D轉(zhuǎn)換芯片數(shù)據(jù)讀入控制,初始為不讀入adWR/ 0 A/D轉(zhuǎn)換芯片轉(zhuǎn)換控制,初始為停止E/ 0 通信接收發(fā)送控制,初始為接收DIS/ 0 顯示數(shù)據(jù)鎖存控制,初始為保持控制端口初始化 RELAY/ 1 繼電器控制,初始狀態(tài)為斷開TMOD 0x22 單片機(jī)片內(nèi)定時/計數(shù)器工作在方式二SCON 0x40 串行口為 8位UART工作方式TH1 0xf4TL1 0xf4 波特率設(shè)置為4800bps波特率發(fā)生器初始化 IE 0 禁止定時器中斷TR1 1 啟動定時器REN 1 允許串行口接收數(shù)據(jù)sec 0x00min 0x00hr 0x00date 0x01mon 0x01day 0x06時間初始化year 0x11初始化系統(tǒng)時間為2022年1月1日0時0分0秒星期六其中sec,min,hr,date,mon,day,year依次為秒、分、時、日、月、星期、年xmark 0x7531 數(shù)據(jù)存儲狀態(tài)標(biāo)志字節(jié)指針numtab 0x0001 數(shù)據(jù)存儲區(qū)指針uplq 0xCF 高液位警戒高度,初始值數(shù)據(jù)參數(shù)初始化 downlq 0x10 低液位警戒高度,初始值初始化過程中,調(diào)用A/D轉(zhuǎn)換模塊獲得首次液位數(shù)據(jù),同時將其顯示,完成初始化工作開始CPU 初始化參數(shù)設(shè)定是否有按鍵采樣子程序顯示實時液位數(shù)據(jù)處理子程序控制電機(jī)啟停按鍵處理是否圖 41 主程序流程圖 顯示與A/D轉(zhuǎn)換的數(shù)據(jù)處理系統(tǒng)中,顯示輸出的要求為壓縮BCD碼,而A/D轉(zhuǎn)換輸入的數(shù)據(jù)是8位16進(jìn)制碼,因此在實現(xiàn)顯示之前需要編碼的轉(zhuǎn)換。對8位A/D轉(zhuǎn)換器而言,其十六進(jìn)制、相對滿偏電壓比率、相對電壓幅值的關(guān)系對應(yīng)如表42:表42 A/D轉(zhuǎn)換幅值數(shù)據(jù)關(guān)系對照表滿刻度比率 相對電壓幅值Vref= 二進(jìn)制高四位 低四位 高四位電壓 低四位電壓F 1111 15/16 15/256 E 1110 14/16 14/256 D 1101 13/16 13/256 C 1100 12/16 12/256 B 1011 11/16 11/256 A 1010 10/16 10/256 9 1001 9/16 9/256 0 1000 8/16 8/256 7 0111 7/16 7/256 6 0110 6/16 6/256 5 0101 5/16 5/256 4 0100 4/16 4/256 3 0011 3/16 3/256 2 0010 2/16 2/256 1 0001 1/16 1/256 0 0000 0/16 0/256 綜上,電壓幅值與液位高度在數(shù)值上是相等的。為了通過LED直觀顯示液位高度,進(jìn)行轉(zhuǎn)換的思路如下:設(shè)輸入8位二進(jìn)制數(shù)據(jù)為 , 的商即為以分米為單位的液位高度數(shù)據(jù),余數(shù)為n5/以厘米為單位的數(shù)據(jù),由于顯示位數(shù)僅為2位,最低位為分米,固使用“二舍三入”的辦法保留分米單位的整數(shù)倍數(shù)據(jù) 。為了將這個數(shù)據(jù)轉(zhuǎn)換為為壓縮BCD碼,再將 ,1 10/n得到的商左移四位(相當(dāng)于乘以16)為壓縮BCD碼高四位,余數(shù)為壓縮BCD 碼低四位,二者相加,就是最終的結(jié)果。顯示轉(zhuǎn)換部分程序簡略如下:uchar dis_transform(uchar num){uchar ac, quotient, play, mid 。ac = num%5。quotient = (numac)/5。if(ac2)quotient++。ac=quotient%10。mid=(quotientac)/10。play=ac+mid*16。return play。} 按鍵部分軟件設(shè)計由于使用的按鍵較少,所以本文采用了獨(dú)立式鍵盤,即每個按鍵單獨(dú)占用一根口線。在程序查詢方式下,通過I/O端口讀入按鍵狀態(tài),當(dāng)有按鍵按下時,相應(yīng)的端口變?yōu)榈碗娖?,這樣通過讀入I/O口狀態(tài)判斷是否有按鍵按下。查詢式鍵盤的程序流程圖如下:鍵盤管理程序入口下面給出鍵盤掃描的主程序,其分支程序省略。void judge_key(void){uchar Key_value=0。Key_value=P3amp。0x3c。 /*讀取鍵值*/switch(Key_value ){case 0x38:delay(30000)。 /*調(diào)用延時子程序*/if(Key_value==(P3amp。0x3c)) /*進(jìn)行判斷按鍵是否為干擾*/{manage_key2()。break。} /*調(diào)用子函數(shù)*/else break。……case 0x1c:delay(30000)。if(Key_value==(P3amp。0x3c)){manage_key5()。break。}else break。default:break。}} 顯示模塊的軟件設(shè)計由于使用了靜態(tài)鎖存顯示,需要對顯示數(shù)據(jù)進(jìn)行處理后進(jìn)行鎖存控制。硬件設(shè)計中使用了74LS273鎖存數(shù)據(jù)。它的特點(diǎn)是在ALE輸入信號的下降沿到來時鎖存信號,因Key_value=P3amp。0x3c是否有按鍵按下調(diào)用延時程序Key_value==P3amp。0x3c調(diào)用相應(yīng)子程序是否圖 42 鍵盤程序流程圖此首先置控制引腳高電平,延遲幾個時鐘周期待信號穩(wěn)定,P0口輸出處理后的數(shù)據(jù),同樣延遲幾個時鐘周期待信號穩(wěn)定,控制引腳置低電平,數(shù)據(jù)鎖存,顯示輸出。液位顯示部分程序簡略如下:display(){DIS=0。_nop_()。_nop_()。_nop_()。P0=dis_transform(prelq)。_nop_()。_nop_()。_nop_()。DIS=1。} A/D轉(zhuǎn)換模塊軟件設(shè)計A/D轉(zhuǎn)換的控制變量有兩個,即adWR與adRD ;上文中已說明了它的功能,故不再重復(fù)。該模塊分為兩個階段,第一階段是為A/D轉(zhuǎn)換啟動控制,通過 adWR復(fù)位→延遲→置位完成。第二階段是數(shù)據(jù)的提取過程,由于P0 口做輸入時的特性,首先軟件上將P0口寄存器置為 0xFF,延遲適當(dāng)時間后adRD復(fù)位,輸出A/D 轉(zhuǎn)換結(jié)果,隨之通過P0口讀入數(shù)據(jù),還原adRD為高,該階段結(jié)束。兩個階段中可加如適當(dāng)?shù)难舆t,以滿足ADC0804 100ns的轉(zhuǎn)換時間。 電機(jī)控制模塊軟件設(shè)計本設(shè)計采用單片機(jī)主控芯片控制繼電器外圍電路,用于驅(qū)動電機(jī)的啟動與關(guān)停。其程序流程圖如圖43所示。以下是液位檢測與電機(jī)控制部分源程序代碼:check_lq(){ad_start()。_nop_()。_nop_()。_nop_()。ad_read()。if(prelq=uplq amp。amp。 key==1){RELAY=1。key=0。makemark(1)。}else if(prelq=downlq amp。amp。 key==0){RELAY=0。key=1。makemark(0)。}} 通信協(xié)議及通信模塊軟件設(shè)計1) 通信協(xié)議為了使PC上位機(jī)與設(shè)備實現(xiàn)有意義的通信,設(shè)計了簡單的通信協(xié)議。通信波特率設(shè)計為4800bps,過高的波特率在沒有檢糾錯方式的情況下易發(fā)生數(shù)據(jù)的丟失,過低的波特率會使傳輸變慢;8位有效數(shù)據(jù)位;無奇偶校驗位;1位停止位。傳送以字節(jié)為單位,發(fā)送命令與數(shù)據(jù)。通信協(xié)議命令控制字如表43。軟件設(shè)計上,系統(tǒng)以查詢的方式檢測上位機(jī)的命令控制字,并及時進(jìn)入各響應(yīng)函數(shù)予以響應(yīng)。通信檢測流程如圖44所示。表43 通信協(xié)議上位機(jī)命令控制字 含 義下位機(jī)命令控制字 含 義0x00 請求聯(lián)機(jī)檢測 0xF0 響應(yīng)聯(lián)機(jī)檢測成功0x01 讀系統(tǒng)時間 0xF1 響應(yīng)寫時間指令,發(fā)送7字節(jié)時間數(shù)據(jù)0x02 設(shè)置系統(tǒng)時間 0xF2 響應(yīng)度時間指令,接收7字節(jié)時間數(shù)據(jù)0x03 讀當(dāng)前液位 0xF3 響應(yīng)讀當(dāng)前液位指令,發(fā)送1字節(jié)液位數(shù)據(jù)啟動 A/D 轉(zhuǎn)換讀取液位數(shù)據(jù) 開始實際液位≥高警戒液位且電機(jī)已啟動關(guān)閉電機(jī)記錄數(shù)據(jù)實際液位≤低警戒液位且電機(jī)關(guān)閉返回 啟動電機(jī)記錄數(shù)據(jù)是否 是否圖 43 液位檢測流程圖0x04 讀記錄數(shù)據(jù) 0xF4 響應(yīng)讀記錄數(shù)據(jù)指令,發(fā)送2字節(jié)數(shù)據(jù)量及 相應(yīng)數(shù)據(jù)0x05 讀液位上下限 0xF5 響應(yīng)讀液位上下限指令,發(fā)送2字節(jié)液位上 下限數(shù)據(jù)0x06 設(shè)置液位上下限 0xF6 響應(yīng)設(shè)置液位上下限指令,接收2字節(jié)液位 上下限數(shù)據(jù)0x07 讀當(dāng)前液位及電機(jī) 狀態(tài) 0xF7 響應(yīng)讀當(dāng)前液位及電機(jī)狀態(tài)指令,發(fā)送2字 節(jié)液位數(shù)據(jù)及電機(jī)狀態(tài)開始判斷是否有通信請求通信響應(yīng)處理 返回判斷請求信息是否滿足條件 1 滿足條件 n響應(yīng)處理 1 響應(yīng)處理 n… …圖 44 通信檢測流程圖2)通信模塊的控制該模塊在控制上設(shè)計兩個函數(shù),一個是發(fā)送函數(shù),另一個是接收函數(shù)。由于采用半雙工的通信方式,需要控制變量E的置位與復(fù)位轉(zhuǎn)換發(fā)送與接收的狀態(tài)。發(fā)送的過程:置E為1,使系統(tǒng)處于發(fā)送數(shù)據(jù)狀態(tài);將數(shù)據(jù)寫入串行通信緩沖區(qū)SBUF;等待,直到發(fā)送完畢,將E清0,返回接收狀態(tài)。接收過程:清零E,使系統(tǒng)處于接收狀態(tài);等待,直到接收完畢,讀串行通信緩沖區(qū)SBUF ;繼續(xù)保持接收狀態(tài)。這兩個子程序在其他函數(shù)需要進(jìn)行串口通信時調(diào)用即可實現(xiàn)與上位機(jī)的串行通信。 時間模塊軟件設(shè)計DS1302內(nèi)部寄存器的定義直接影響著軟件的設(shè)計,大概可分為時間控制寄存器和內(nèi)部RAM寄存器。其中:? CH: 時鐘停止位寄存器2的第7位12/24小時標(biāo)志CH=0 振蕩器工作允許bit7=1 ,12小時模式CH=1 振蕩器停止bit7=0 ,24小時模式? WP: 寫保護(hù)位寄存器2的第5位:AM/PM定義WP=0 寄存器數(shù)據(jù)能夠?qū)懭?AP=1 下午模式WP=1 寄存器數(shù)據(jù)不能寫入 AP=0 上午模式? TCS: 涓流充電選擇DS :二極管選擇位TCS=1010 使能涓流充電 DS=01 選擇一個二極管TCS=其它 禁止涓流充電 DS=10 選擇兩個二極管DS=00 或11, 即使TCS=1010, 充電功能也被禁止? RS: 涓流充電電阻選擇位表44 RS狀態(tài)標(biāo)志及含義由于DS1302數(shù)據(jù)傳輸方式為串行移位輸入輸出。地址、數(shù)據(jù)的寫操作流程是相同的。地址沒有讀操作。無論是讀還是寫,二者結(jié)構(gòu)類似。讀寫的核心是產(chǎn)生SCLK移位信號與移位,讀操作是將數(shù)據(jù)從DS1302的I/O口移入單片機(jī),寫
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1