單片機(jī)水流量檢測(cè)(測(cè)試)設(shè)計(jì)_第1頁(yè)
單片機(jī)水流量檢測(cè)(測(cè)試)設(shè)計(jì)_第2頁(yè)
單片機(jī)水流量檢測(cè)(測(cè)試)設(shè)計(jì)_第3頁(yè)
單片機(jī)水流量檢測(cè)(測(cè)試)設(shè)計(jì)_第4頁(yè)
單片機(jī)水流量檢測(cè)(測(cè)試)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)課程設(shè)計(jì)題 目 水流量顯示器 學(xué) 院 電子工程學(xué)院 專 業(yè) 自動(dòng)化 班 級(jí) 學(xué) 號(hào) 姓 名 組 員 指導(dǎo)教師 2013年 5 月引言31. 任務(wù)設(shè)計(jì)42. 系統(tǒng)硬件電路的設(shè)計(jì)52.1主芯片STC89C5252.1.1主要性能52.1.2芯片功能特性簡(jiǎn)述:52.1.3引腳功能62.2時(shí)鐘電路72.3復(fù)位電路72.4液晶顯示電路82.4.1顯示特性82.4.2引腳說(shuō)明82.4.3接口時(shí)序102.4.4初始化指令:122.5水流量測(cè)量電路142.6按鍵控制電路153. 軟件系統(tǒng)的設(shè)計(jì)163.1軟件設(shè)計(jì)總流程163.2水流量程序模塊163.2.1水流量的讀取程序173.3顯示程序184. 總結(jié)1

2、9參考文獻(xiàn)20附件1. 原理圖21附件3 仿真圖225. 程序23引言隨著現(xiàn)代社會(huì)的進(jìn)步,經(jīng)濟(jì)的發(fā)展,人們對(duì)精神領(lǐng)域的追求更高,對(duì)生活水平的要求更高?,F(xiàn)代的家居生活是一種高品位、高質(zhì)量、個(gè)性化、智能化的方式。本系統(tǒng)就是基于STC89C52單片機(jī)控制的智能家居系統(tǒng),可以實(shí)際監(jiān)控室內(nèi)各種不同的家電設(shè)備,并能通過(guò)液晶屏動(dòng)態(tài)顯示當(dāng)前工作狀態(tài)。該系統(tǒng)與傳統(tǒng)的智能家居系統(tǒng)相比,具有功能多樣化、成本造價(jià)低等優(yōu)點(diǎn),且符合當(dāng)今社會(huì)智能、節(jié)能、環(huán)保的發(fā)展觀念,并在人們享受高品位、高質(zhì)量、個(gè)性化、智能化生活的同時(shí)提高人們的節(jié)約意識(shí)。由于智能家居系統(tǒng)有眾多模塊,本課題只采取其中的水流量模塊進(jìn)行單獨(dú)設(shè)計(jì)。關(guān)鍵詞: 單片

3、機(jī) 水流量傳感器1. 任務(wù)設(shè)計(jì)當(dāng)打開(kāi)水龍頭時(shí),根據(jù)單片機(jī)STC89C52的指令、水流量計(jì)傳感器采集水流量狀態(tài)。當(dāng)單片機(jī)STC89C52掃描到水流量計(jì)傳感器的脈沖數(shù),經(jīng)過(guò)單片機(jī)STC89C52處理,計(jì)算出所采集的水流量后,通過(guò)液晶屏LCD1602能動(dòng)態(tài)顯示當(dāng)前水流量。2. 系統(tǒng)硬件電路的設(shè)計(jì)2.1主芯片STC89C522.1.1主要性能1)與MCS-52單片機(jī)產(chǎn)品兼容 、8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器2)1000次擦寫(xiě)周期3)全靜態(tài)操作:0Hz33Hz 4)三級(jí)加密程序存儲(chǔ)器 5)32個(gè)可編程I/O口線6)三個(gè)16位定時(shí)器/計(jì)數(shù)器八個(gè)中斷源7)全雙工UART串行通道8)低功耗空閑和掉電模式

4、 9)掉電后中斷可喚醒 10)看門(mén)狗定時(shí)器11)雙數(shù)據(jù)指針12)掉電標(biāo)識(shí)符 2.1.2芯片功能特性簡(jiǎn)述:STC89C52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在線系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 STC89C52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門(mén)狗定時(shí)器,2

5、個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,STC89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。8 位微控制器 8K字節(jié)在系統(tǒng)可編程 Flash。 圖2-1 單片機(jī)引腳 2.1.3引腳功能表2-1 STC89C52引腳介紹說(shuō)明引腳功能介紹VCC+5V電源電壓VSS電路接地端P0.0P0.78位漏極開(kāi)路的雙向I/O通道P2.0P2.78位擬雙向

6、I/O通道P3.0RXD,串行輸入口P3.1TXD,串行輸出口P3.2INT0,外部中斷輸入口P3.3INT1,外部中斷輸入口P3.4定時(shí)器/計(jì)數(shù)器外部事件脈沖輸入端P3.5定時(shí)器/計(jì)數(shù)器外部事件脈沖輸入端P3.6外部數(shù)據(jù)存貯器寫(xiě)脈沖P3.7外部數(shù)據(jù)存貯器讀脈沖RST/VpD復(fù)位輸入信號(hào)ALE/PROG地址鎖存有效信號(hào)PSEN程序選通有效信號(hào)EA/VPP當(dāng)保持TTL高電平,執(zhí)行內(nèi)部EPROM的指令,當(dāng)使TTL為低電平, 從外部程序存貯器取出所有指令,在內(nèi)的EPROM編程時(shí),此端為21編程電源輸入端XTAL1內(nèi)部振蕩器外接晶振的一個(gè)輸入端XTAL2內(nèi)部振蕩器外接晶振的一個(gè)輸入端2.2時(shí)鐘電路單片

7、機(jī)的最小系統(tǒng)有三部分組成,即電源,時(shí)鐘電路和復(fù)位電路。其中單片機(jī)的電源引腳與5V電源連通即可,而時(shí)鐘電路和復(fù)位電路還需接口擴(kuò)展,這也是單片機(jī)的基本電路操作。時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需的時(shí)鐘信號(hào),時(shí)序是指令執(zhí)行中各信號(hào)之間的相互關(guān)系。單片機(jī)本身就如同一個(gè)復(fù)雜的同步時(shí)序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時(shí)鐘信號(hào)控制下嚴(yán)格地按時(shí)序進(jìn)行工作。在STC89C52單片機(jī)內(nèi)部帶有時(shí)鐘電路,因此,只需要在片外通過(guò)XTAL1和XTAL2引腳接入定時(shí)控制元件(晶體振蕩器和電容),即可構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。在STC89C52芯片內(nèi)部有一個(gè)高增益反相放大器,而在芯片的外部,XTAL1和XTAL2

8、之間跨接晶體振蕩器和微調(diào)電容。在單片機(jī)的XTAL1腳和XTAL2腳之間并接一個(gè)晶體振蕩器就構(gòu)成了內(nèi)部振蕩方式。STC89C52單片機(jī)內(nèi)部有一個(gè)高增益的反相放大器,XTAL1為內(nèi)部反相放大器的輸入端,XTAL2為內(nèi)部反相放大器的輸出端,在其兩端接上晶振后,就構(gòu)成了自激振蕩電路,并產(chǎn)生振蕩脈沖,振蕩電路輸出的脈沖信號(hào)的頻率就是晶振的固有頻率。在實(shí)際應(yīng)用中通常還需要在晶振的兩端和地之間各并上一個(gè)小電容。圖2-2 時(shí)鐘電路用晶振和電容構(gòu)成諧振電路。電容大小與晶振頻率和工作電壓有關(guān)。但電容的大小影響振蕩器的穩(wěn)定性和起振的快速性,為了提高精度,本實(shí)驗(yàn)板采用20pF的電容作為微調(diào)電容。在設(shè)計(jì)電路板時(shí),晶振、

9、電容等均應(yīng)盡可能靠近芯片,減小分布電容,以保證振蕩器振蕩的穩(wěn)定性。2.3復(fù)位電路復(fù)位是單片機(jī)的初始化操作,其目的是使CPU和系統(tǒng)中各部分處于一個(gè)確定的狀態(tài),并從這一狀態(tài)開(kāi)始工作。系統(tǒng)上電路或死機(jī)后都要進(jìn)行復(fù)位操作。單片機(jī)的RST引腳為復(fù)位引腳,振蕩電路正常工作后,RST端加上持續(xù)兩個(gè)機(jī)器周期的高電平后,單片機(jī)就被復(fù)位。復(fù)位電路有3種基本方式:上電復(fù)位,開(kāi)關(guān)復(fù)位和看門(mén)狗復(fù)位。圖2-3 復(fù)位電路本課題采用按鍵開(kāi)關(guān)復(fù)位是指通過(guò)接通按鈕開(kāi)關(guān),使單片機(jī)進(jìn)入復(fù)位狀態(tài)。開(kāi)關(guān)復(fù)位電路一般不單獨(dú)使用。在應(yīng)用系統(tǒng)設(shè)計(jì)中,若需使用開(kāi)關(guān)復(fù)位電路,一般的做法是將開(kāi)關(guān)復(fù)位與上電復(fù)位組合在一起形成組合復(fù)位電路,上電復(fù)位電路

10、完成上電復(fù)位功能,開(kāi)關(guān)復(fù)位電路完成人工復(fù)位。圖2-3中C7與R1構(gòu)成了上電復(fù)位電路。上電復(fù)位后,電源經(jīng)R1對(duì)C7充滿電源,C7等效于開(kāi)路,RST端為低電平;單片機(jī)正常工作。按開(kāi)關(guān)K1后,C7兩端電荷經(jīng)R1迅速放電,K1斷開(kāi)后,由C7、R1及電源完成對(duì)單片機(jī)的復(fù)位操作。在上述電路中C7、R1按上電復(fù)位電路的設(shè)計(jì)而取值。 復(fù)位電路的作用非常重要,能否成功復(fù)位關(guān)系但單片機(jī)系統(tǒng)能否正常運(yùn)行的問(wèn)題。如果振蕩電路正常而單片機(jī)系統(tǒng)不能正常運(yùn)行,其主要原因是單片機(jī)沒(méi)有完成正常復(fù)位,程序計(jì)數(shù)器的值沒(méi)有回0,特殊功能寄存器沒(méi)有回到初始狀態(tài)。這時(shí)可以適當(dāng)?shù)卣{(diào)整上電復(fù)位電路的阻容值,增加其充電時(shí)間常數(shù)來(lái)解決問(wèn)題。2.

11、4液晶顯示電路課題任務(wù)要求以LCD1602芯片顯示單片機(jī)處理后的溫度、水費(fèi)和水流量,在此有必要詳盡的介紹LCD1602的特性和用法。2.4.1顯示特性 只需5V 電源電壓,低功耗、長(zhǎng)壽命、高可靠性 內(nèi)置 192 種字符(160個(gè) 57 點(diǎn)陣字符和 32 個(gè)510 點(diǎn)陣字符) 具有 64 個(gè)字節(jié)的自定義字符 RAM 顯示方式:STN、半透、正顯 驅(qū)動(dòng)方式:1/16DUTY,1/5BIAS 視角方向:6點(diǎn) 背光方式:底部 LED 通訊方式:4位或 8 位并口可選 標(biāo)準(zhǔn)的接口特性:適配 MC51 和M6800 系列 MPU的操作時(shí)序。2.4.2引腳說(shuō)明表2-2 液晶1602引腳說(shuō)明管腳號(hào) 符號(hào)功 能

12、1Vss電源地(GND)2Vdd電源電壓(+5V)3V0LCD驅(qū)動(dòng)電壓(可調(diào)) 寄存器選擇輸入端,輸入MPU 選擇模塊內(nèi)部寄存器類型信號(hào):RS=0,當(dāng)MPU 進(jìn)行寫(xiě)模塊操作,指向指令寄存器;4RS當(dāng)MPU 進(jìn)行讀模塊操作,指向地址計(jì)數(shù)器;RS=1,無(wú)論MPU 讀操作還是寫(xiě)操作,均指向數(shù)據(jù)寄存器5R/WR/W=0 讀操作;R/W=1 寫(xiě)操作6E使能信號(hào)輸入端,輸入MPU 讀/寫(xiě)模塊操作使能信號(hào):4位方式通訊時(shí),不使用DB0-DB37DB0數(shù)據(jù)輸入/輸出口,MPU 與模塊之間的數(shù)據(jù)傳送通道8DB1數(shù)據(jù)輸入/輸出口,MPU 與模塊之間的數(shù)據(jù)傳送通道9DB2數(shù)據(jù)輸入/輸出口,MPU 與模塊之間的數(shù)據(jù)傳

13、送通道10DB3數(shù)據(jù)輸入/輸出口,MPU 與模塊之間的數(shù)據(jù)傳送通道11DB4數(shù)據(jù)輸入/輸出口,MPU 與模塊之間的數(shù)據(jù)傳送通道12DB5數(shù)據(jù)輸入/輸出口,MPU 與模塊之間的數(shù)據(jù)傳送通道13DB6數(shù)據(jù)輸入/輸出口,MPU 與模塊之間的數(shù)據(jù)傳送通道14DB7數(shù)據(jù)輸入/輸出口,MPU 與模塊之間的數(shù)據(jù)傳送通道15A背光的正端+5V16K 背光的負(fù)端0V16K 背光的負(fù)端0V2.4.3接口時(shí)序圖2-5 時(shí)序圖表2-3 液晶1602時(shí)序圖標(biāo)號(hào)說(shuō)明時(shí)序參數(shù)符號(hào)極限值單位測(cè)試條件最小值典型值最大值E信號(hào)周期tc400ns引腳EE脈沖寬度Tpm150nsE上升沿/下降沿時(shí)間Tr,tf25ns地址建立時(shí)間Ts

14、p130ns引腳E、RS、RW地址保持時(shí)間Thd110ns數(shù)據(jù)建立時(shí)間(讀操作)Td100ns引腳DB0DB7數(shù)據(jù)保持時(shí)間(讀操作)Thd220ns數(shù)據(jù)建立時(shí)間(寫(xiě)操作)Tsp240ns數(shù)據(jù)保持時(shí)間(寫(xiě)操作)Thd210ns程序?qū)崿F(xiàn)如下:/*寫(xiě)指令程序*/void wr_com(unsigned char com) /寫(xiě)指令 delay(1); /延時(shí)1ms RS=0; /寫(xiě)命令設(shè)置 RW=0; /并行數(shù)據(jù)的讀寫(xiě) EN=0; /使能為0 P2=com; /輸入命令 delay(1); /延時(shí)1ms EN=1; /使能為1 delay(1); /延時(shí)1ms EN=0; /使能為0 /*寫(xiě)數(shù)據(jù)程序

15、*/void wr_dat(unsigned char dat)/ 寫(xiě)數(shù)據(jù) delay(1); /延時(shí)1ms RS=1; /寫(xiě)數(shù)據(jù)設(shè)置 RW=0; /并行數(shù)據(jù)的讀寫(xiě) EN=0; /使能為0 P2=dat; /輸入數(shù)據(jù) delay(1); /延時(shí)1ms EN=1; /使能為1 delay(1); /延時(shí)1ms EN=0; /使能為02.4.4初始化指令:表2-4 清屏指令指令功能指令編碼執(zhí)行時(shí)間/msRSR/WDB7DB6DB5DB4DB3DB2DB1DB0清屏00000000011.64功能:清除液晶顯示器,即將DDRAM的內(nèi)容全部填入空白的ASCII碼20H; 光標(biāo)歸位,即將光標(biāo)撤回液晶顯示

16、屏的左上方;將地址計(jì)數(shù)器(AC)的值設(shè)為0。表2-5 光標(biāo)歸位指令指令功能指令編碼執(zhí)行時(shí)間/msRSR/WDB7DB6DB5DB4DB3DB2DB1DB0光標(biāo)歸位000000001X1.64功能:把光標(biāo)撤回到顯示器的左上方; 把地址計(jì)數(shù)器(AC)的值設(shè)置為0; 保持DDRAM的內(nèi)容不變表2-6 進(jìn)入模式設(shè)置指令指令功能指令編碼執(zhí)行時(shí)間/msRSR/WDB7DB6DB5DB4DB3DB2DB1DB0進(jìn)入模式設(shè)置00000001I/DS1.64功能:設(shè)定每次定入1位數(shù)據(jù)后光標(biāo)的移位方向,并且設(shè)定每次寫(xiě)入的一個(gè)字符是否移動(dòng)。表2-7 顯示開(kāi)關(guān)控制指令指令功能指令編碼執(zhí)行時(shí)間/sRSR/WDB7DB6

17、DB5DB4DB3DB2DB1DB0顯示開(kāi)關(guān)控制0000001DCB功能:控制顯示器開(kāi)/關(guān)、光標(biāo)顯示/關(guān)閉以及光標(biāo)是否閃爍。表2-8 設(shè)定顯示屏或光標(biāo)移動(dòng)方向指令指令功能指令編碼執(zhí)行時(shí)間/sRSR/WDB7DB6DB5DB4DB3DB2DB1DB0設(shè)定顯示屏或光標(biāo)移動(dòng)方向00000/功能:使光標(biāo)移位或使整個(gè)顯示屏幕移位。表2-9 功能設(shè)定指令指令功能指令編碼執(zhí)行時(shí)間/sRSR/WDB7DB6DB5DB4DB3DB2DB1DB0功能設(shè)定0000/功能:設(shè)定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。參數(shù)設(shè)定的情況如下:表2-10 設(shè)定CGRAM地址指令指令功能指令編碼執(zhí)行時(shí)間/sRSR/WDB7DB6DB5

18、DB4DB3DB2DB1DB0設(shè)定CGRAM地址000CGRAM的地址(位)功能:設(shè)定下一個(gè)要存入數(shù)據(jù)的CGRAM的地址。表2-11 設(shè)定DDRAM地址指令指令功能指令編碼執(zhí)行時(shí)間/sRSR/WDB7DB6DB5DB4DB3DB2DB1DB0設(shè)定RAM地址00CGRAM的地址(位)40功能:設(shè)定下一個(gè)要存入數(shù)據(jù)的CGRAM的地址。 (注意這里我們送地址的時(shí)候應(yīng)該是0x80+Address,這也是前面說(shuō)到寫(xiě)地址命令的時(shí)候要加上0x80的原因) 表2-12 讀取忙信號(hào)或AC地址指令指令功能指令編碼執(zhí)行時(shí)間/sRSR/WDB7DB6DB5DB4DB3DB2DB1DB0讀取忙碌信號(hào)或AC地址0FBAC

19、內(nèi)容(位)40功能:讀取忙碌信號(hào)BF的內(nèi)容,BF=1表示液晶顯示器忙,暫時(shí)無(wú)法接收單片機(jī)送來(lái)的數(shù)據(jù)或指令;當(dāng)BF=0時(shí),液晶顯示器可以接收單片機(jī)送來(lái)的數(shù)據(jù)或指令;讀取地址計(jì)數(shù)器(AC)的內(nèi)容。表2-13 數(shù)據(jù)寫(xiě)入DDRAM或CGRAM指令一覽指令功能指令編碼執(zhí)行時(shí)間/sRSR/WDB7DB6DB5DB4DB3DB2DB1DB0寫(xiě)數(shù)據(jù)到DDRAM或CGRAM10要寫(xiě)的數(shù)據(jù)D7D040功能:將字符碼寫(xiě)入DDRAM,以使液晶顯示屏顯示出相對(duì)應(yīng)的字符;將使用者自己設(shè)計(jì)的圖形存入CGRAM。表2-14 從CGRAM或DDRAM讀出數(shù)據(jù)的指令一覽指令功能指令編碼執(zhí)行時(shí)間/sRSR/WDB7DB6DB5DB

20、4DB3DB2DB1DB0從CGRAM或DDRAM中讀數(shù)據(jù)11要讀的數(shù)據(jù)D7D040功能:讀取DDRAM或CGRAM中的內(nèi)容。單片機(jī)和LCD液晶顯示器的連接圖2-6 液晶顯示電路2.5水流量測(cè)量電路課題任務(wù)中最重要的是水流量的測(cè)量。通過(guò)水流量傳感器的數(shù)據(jù)采集,根據(jù)商家的水流量傳感器的參數(shù)可以得出單片機(jī)在運(yùn)算時(shí)的數(shù)據(jù)。水流量傳感器參數(shù):環(huán)境溫度:-1055流量計(jì)算在流量為:0.20.4L/Min時(shí),1L=2100次;0.50.8L/Min時(shí),1L=2280次;0.91.2L/Min時(shí),1L=2350次;1.22.5L/Min時(shí),1L=2460次;(脈沖次數(shù)在流量變化時(shí)有一定程度的變動(dòng))接線方法白

21、線:信號(hào)輸出;黑線:電源負(fù)(也可按客戶要求定做)測(cè)量精度:5%(在流量穩(wěn)定的系統(tǒng),精度可達(dá)2%)工作電壓:DC024V工作壓力:100PSI(7kg/cm)耐濕性能:在環(huán)境濕度為90%以下時(shí)性能保持穩(wěn)定壽命測(cè)試:本產(chǎn)品用進(jìn)口干簧管作感應(yīng)元件,在負(fù)荷小于24V 1mA前提下, 開(kāi)關(guān)壽命大于3億次。 圖2-15 水流量測(cè)量電路 2.6按鍵控制電路課題設(shè)計(jì)之初,要求基本實(shí)現(xiàn)的功能有水流量的控制、水價(jià)的改變。由于液晶顯示屏不能夠完全實(shí)現(xiàn)其顯示,故又增加了換頁(yè)功能,共三個(gè)控制鍵。圖2-16 按鍵電路3. 軟件系統(tǒng)的設(shè)計(jì)3.1軟件設(shè)計(jì)總流程程序要求液晶顯示有當(dāng)前水流量,總流量。水流量的測(cè)量由開(kāi)關(guān)控制。由于

22、LCD1602的顯示屏幕有限,所以又把程序設(shè)計(jì)成可以翻頁(yè)的形式。翻頁(yè)也用開(kāi)關(guān)控制。由于在兩個(gè)界面里面都顯示水溫,故在顯示程序里加入測(cè)量水溫程序也未嘗不可。整個(gè)程序中結(jié)構(gòu)較為簡(jiǎn)單,但其中也有幾個(gè)重要而且比較費(fèi)腦筋的子程序,包括水測(cè)量程序、水流量數(shù)據(jù)的計(jì)算轉(zhuǎn)換程序。在程序中可以分為2個(gè)主要模塊:水流量模塊,顯示模塊如圖3-1所示:圖3-1 總流程圖3.2水流量程序模塊水流量的測(cè)量主要依靠對(duì)得到的頻率處理,由流量計(jì)在一段時(shí)間下產(chǎn)生高電平的個(gè)數(shù)決定,即Q(流量)=F(頻率)/R(商家設(shè)定值)所以只要在單片機(jī)中設(shè)定一定的時(shí)間,并在該時(shí)間之下計(jì)算出得到的高電平即可。在本程序中STC89C52的兩個(gè)定時(shí)器T

23、0為計(jì)數(shù)狀態(tài),T1 為計(jì)時(shí)狀態(tài),這樣方可測(cè)量流量。3.2.1水流量的讀取程序中斷程序運(yùn)行的時(shí)間到,就可以讀取計(jì)數(shù)器中的數(shù)值,將下數(shù)值讀出后把計(jì)數(shù)器賦值為0,等待下一次的取出,然后進(jìn)入對(duì)讀出數(shù)據(jù)的處理程序。如圖3-4所示:圖3-2 水流量數(shù)據(jù)的處理程序在預(yù)定時(shí)間到,即已經(jīng)取出了定時(shí)器的數(shù)值。我們計(jì)算的水流量最大是以每噸來(lái)計(jì)算并顯示的,故一個(gè)整形或長(zhǎng)整型的數(shù)不夠,故先把它放在了一個(gè)int變量的存儲(chǔ)空間內(nèi),做水流量的前三位,在定義一個(gè)長(zhǎng)整型的數(shù),把它作為水流量的后六位,這樣計(jì)算起來(lái)也比較容易,數(shù)據(jù)也不會(huì)起沖突,也是為將要計(jì)算水價(jià)做準(zhǔn)備。設(shè)定該水流量的最大計(jì)數(shù)為250噸,超過(guò)了定值,則會(huì)從0開(kāi)始。如圖

24、3-5所示:圖3-3 水流量數(shù)據(jù)處理流程圖3.3顯示程序在程序中只是計(jì)算出流量值,溫度值以及和資源分配的情況,一些字母的顯示,都要另加,這樣才能盡善盡美的表達(dá)出顯示出來(lái)的意思。所以在主程序中不必再測(cè)量溫度。在第一頁(yè)主要顯示的是總水流量的后三位,最后以t結(jié)尾。第二頁(yè)主要當(dāng)前水流量的前三位,最后以kg結(jié)尾。4. 總結(jié)在為期兩周的實(shí)訓(xùn)中,我學(xué)到了很多,在整個(gè)過(guò)程中,包括最開(kāi)始的課題設(shè)計(jì)、焊接、程序編寫(xiě),到最后的調(diào)試我都參與其中。可以這么說(shuō),在這兩個(gè)星期中學(xué)到的東西比我兩個(gè)月學(xué)到的還要多。在最開(kāi)始設(shè)計(jì)課題時(shí),查了很多資料,經(jīng)過(guò)組員的討論,最終確定了現(xiàn)在這個(gè)方案。在焊接的過(guò)程中,基本上沒(méi)出什么問(wèn)題,一切

25、都很順利的進(jìn)行著。在編寫(xiě)程序以及調(diào)試的過(guò)程中出現(xiàn)了一些問(wèn)題,比如:當(dāng)有水流過(guò)時(shí),傳感器多計(jì)數(shù)的脈沖達(dá)不到我們?cè)O(shè)計(jì)時(shí)的要求,所以經(jīng)過(guò)了多次修改,最終實(shí)現(xiàn)了功能。在整個(gè)過(guò)程中要特別感謝丁文斌老師的指導(dǎo),沒(méi)有他耐心的指導(dǎo),我們是不會(huì)做的這么好的。參考文獻(xiàn)1 張菁,基于單片機(jī)水流量控制系統(tǒng)方案的研究。2007(9)。2 樓然苗,51系列單片機(jī)設(shè)計(jì)實(shí)例. 北京航空航天大學(xué)出版社,2003。3 蘇鐵力、關(guān)振海等.傳感器及其接口技術(shù)M.中國(guó)石化出版社,1998.4 肖晴,液晶顯示流量的控制,2005(2)。5 譚浩強(qiáng),C程序設(shè)計(jì)(第二版). 清華大學(xué)出版社. 1999年12月第2版附件1. 原理圖附件2 實(shí)

26、物圖附件3 仿真圖附件4 元器件清單元器件名稱型號(hào)數(shù)量(個(gè))單片機(jī)STC89C511水流傳感器探頭DS18B201液晶顯示器LCD16021晶振11.0596MHZ1電阻500歐2電阻1K1電阻4.7K1電阻10K1瓷片電容22pF2瓷片電容0.1uF2電解電容20uF2電解電容100uF1發(fā)光二極管紅色1發(fā)光二極管黃色2發(fā)光二極管綠色1電源接口5V1撥頭開(kāi)關(guān)1按鍵3總計(jì)255. 程序#include#define uchar unsigned char#define uint unsigned intsbit DQ=P10; /ds18b20與單片機(jī)連接口sbit RS=P11;sbit R

27、W=P12;sbit EN=P13;sbit p37=P36; /流量正常運(yùn)行接口sbit p36=P37; /溫度報(bào)警接口sbit p14=P14; /功能按鍵接口sbit p15=P15;sbit p16=P16;uchar code table=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x20; /0-9數(shù)字和顯示無(wú) unsigned long int a;float f,zong;uint tvalue;uchar n1,n2,n3,n4,n5,n6,n7,n8,n9;uchar tflag,d,g,kai,j,j1,j2,b

28、; /*延時(shí)子程序*/void delay(uint z) int x,y; for(x=z;x0;x-)for(y=120;y0;y-); /*延時(shí)1us子程序*/ void delay_18B20(unsigned int i)/延時(shí)1微秒 while(i-); /*液晶顯示寫(xiě)指令*/ void wr_com(unsigned char com) /寫(xiě)指令 delay(1); /延時(shí)1ms RS=0; /寫(xiě)命令設(shè)置 RW=0; /并行數(shù)據(jù)的讀寫(xiě) EN=0; /使能為0 P2=com; /輸入命令 delay(1); /延時(shí)1ms EN=1; /使能為1 delay(1); /延時(shí)1ms E

29、N=0; /使能為0 /*液晶顯示寫(xiě)數(shù)據(jù)*/void wr_dat(unsigned char dat)/寫(xiě)數(shù)據(jù) delay(1); /延時(shí)1ms RS=1; /寫(xiě)數(shù)據(jù)設(shè)置 RW=0; /并行數(shù)據(jù)的讀寫(xiě) EN=0; /使能為0 P2=dat; /輸入數(shù)據(jù) delay(1); /延時(shí)1ms EN=1; /使能為1 delay(1); /延時(shí)1ms EN=0; /使能為0/*水流量計(jì)算程序與數(shù)據(jù)轉(zhuǎn)換程序*/void loop () uint zong1; if(g=0) /判斷時(shí)間是否到 zong=(b/0.1)+zong; /得出總流量的后三位 g=1; /將標(biāo)志為為1if(zong=1000)

30、 /判斷總流量后三位是否大于1000a+; /總流量前六位加1zong=0; /后三位清零 if(a=1000000) /總流量前六位大于1百萬(wàn)a=0; /總流量前六位清零zong1=(int)zong ; /總流量后三位轉(zhuǎn)換為整形 n9=a/100000; /總流量9位全部分配n8=a%100000/10000;n7=a%10000/1000;n6=a%1000/100;n5=a%100/10;n4=a%10;n3=zong1%1000/100;n2=zong1%100/10;n1=zong1%10; /*流量程序*/ void liuliang() while(d=2) /時(shí)間到? d=0

31、; /d清零 b=TH0*256+TL0; /讀取頻率 TH0=0x00; /計(jì)數(shù)器清零 TL0=0x00; g=0; /時(shí)間標(biāo)志位 loop(); /水流量計(jì)算程序與數(shù)據(jù)轉(zhuǎn)換程序 /*第一頁(yè)顯示子程序*/ void display1() wr_dat(0x3a); /顯示: wr_com(0x80+0x40); /水流量(t)顯示 wr_dat(0x46); wr_dat(0x4c); wr_dat(0x4f); wr_dat(0x57); wr_dat(0x3a); wr_dat(0x20); wr_dat(tablen9); wr_dat(tablen8); wr_dat(tablen7

32、); wr_dat(0x2e); /顯示小數(shù)點(diǎn) wr_dat(tablen6); wr_dat(tablen5); wr_dat(tablen4); wr_dat(0x20); /顯示小數(shù)點(diǎn) wr_dat(0x74); wr_dat(0x20); /*第二頁(yè)顯示子程序*/ void display2() wr_dat(0x3a); /顯示: wr_dat(tablej2);wr_dat(0x2e);wr_dat(tablej1);wr_dat(0x5c);wr_dat(0x2f);wr_dat(0x74);wr_dat(0x20);wr_com(0x80+0x40+5);/水流量(kg)顯示wr_dat(0x20);wr_dat(0x20);wr_dat(tablen4);wr_dat(0x2e); /顯示小數(shù)點(diǎn) wr_dat(tablen3);wr_dat(tablen2);wr_dat(tablen1);wr_dat(0x20);wr_dat(0x6b);wr_dat(0x67); /*控制流量測(cè)量的開(kāi)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論