基于單片機(jī)的蓄電池容量檢測(cè)系統(tǒng)的設(shè)計(jì)【含程序、電路圖】
基于單片機(jī)的蓄電池容量檢測(cè)系統(tǒng)的設(shè)計(jì)【含程序、電路圖】,含程序、電路圖,基于,單片機(jī),蓄電池,容量,檢測(cè),系統(tǒng),設(shè)計(jì),程序,電路圖
畢 業(yè) 設(shè) 計(jì)(論 文)
設(shè)計(jì)(論文)題目: 基于單片機(jī)的蓄電池容量檢測(cè)系
系統(tǒng)的設(shè)計(jì)
學(xué)生姓名:
二級(jí)學(xué)院:
班 級(jí):
提交日期:
目 錄
摘 要 III
Abstract IV
第一章 緒 論 1
1.1 課題研究的相關(guān)背景 1
1.2 課題研究的意義 1
1.3 國(guó)內(nèi)外研究狀況 1
1.4 本課題主要研究的內(nèi)容 2
第二章 系統(tǒng)硬件的設(shè)計(jì) 3
2.1 系統(tǒng)的方案選擇 3
2.2 系統(tǒng)的總體設(shè)計(jì)方案 4
2.3 單片機(jī)STC89C52的概況 5
2.4 主要元件 7
2.5 蓄電池容量檢測(cè)系統(tǒng)硬件電路設(shè)計(jì) 13
2.6 蓄電池容量算法 15
第三章 系統(tǒng)軟件設(shè)計(jì) 17
3.1 主程序設(shè)計(jì) 17
3.2 子程序設(shè)計(jì) 17
3.3 程序清單 19
第四章 系統(tǒng)實(shí)物制作 20
4.1 系統(tǒng)原理圖 20
4.2 實(shí)物焊接 20
4.3 器件詳細(xì)清單 20
4.4 程序的編譯 20
4.5 系統(tǒng)調(diào)試 21
4.6 實(shí)物演示 21
第五章 總 結(jié) 31
參考文獻(xiàn) 32
附錄1 系統(tǒng)原理圖 34
附錄2 系統(tǒng)程序清單 35
致 謝 43
- IV -
基于單片機(jī)的蓄電池容量檢測(cè)系統(tǒng)的設(shè)計(jì)
摘 要
本課題為基于單片機(jī)的蓄電池容量檢測(cè)系統(tǒng)的設(shè)計(jì)。系統(tǒng)以單片機(jī)為核心,硬件主要包括單片機(jī)、LCD1602的顯示器、PCF8591數(shù)據(jù)采集器、分壓器和TC35通信等。當(dāng)測(cè)量蓄電池容量時(shí),系統(tǒng)會(huì)通過分壓電阻進(jìn)行分壓,PCF8591數(shù)據(jù)獲取器進(jìn)行數(shù)據(jù)采集,由單片機(jī)進(jìn)行轉(zhuǎn)換,通過LCD1602顯示器進(jìn)行顯示。當(dāng)觀察LCD1602顯示器時(shí),可以清楚的看到蓄電池的容量,以此來判斷該蓄電池能否滿足該電力系統(tǒng)。當(dāng)檢測(cè)的蓄電池容量超過14V時(shí)向手機(jī)發(fā)送短信。
為了確保用電設(shè)備在斷電后仍然能正常并且安全的工作,就必須確保蓄電池容量的足夠,所以實(shí)時(shí)的檢測(cè)蓄電池的容量,對(duì)電路安全穩(wěn)定的工作意義重大。在系統(tǒng)的總體設(shè)計(jì)方案出來之后,對(duì)系統(tǒng)的硬件部分進(jìn)行了詳細(xì)的過成設(shè)計(jì),并繪制出相應(yīng)的系統(tǒng)原理圖,并根據(jù)原理圖制作了相應(yīng)的實(shí)物。根據(jù)控制的要求,來繪畫出系統(tǒng)軟件流程圖,并且編寫了相應(yīng)的系統(tǒng)程序。最后對(duì)實(shí)物進(jìn)行整體的調(diào)試,調(diào)試的結(jié)果說明該系統(tǒng)的設(shè)計(jì)滿足了控制的要求。
關(guān)鍵詞:STC89C52單片機(jī);PCF8591數(shù)據(jù)采集器;LCD1602的顯示器;直流穩(wěn)壓電源;容量顯示;TC35通信
Abstract
Design of microcontroller based on battery capacity detection system
Abstract
This topic is the design of the battery capacity detection system based on single chip microcomputer.?System as the core, the hardware mainly includes MCU, LCD1602 display, PCF8591 data collector, voltage divider and TC35 communication.?When measuring the capacity of the battery, the system will be divided by the voltage divider resistance, PCF8591 data acquisition device for data collection, by the microcontroller for conversion, through the LCD1602 display.When observing the LCD1602 display, you can clearly see the battery capacity, in order to determine whether the battery can meet the power system.?Send text messages to mobile phones when the battery capacity is detected by more than 14V.?
In order to ensure that the use of electrical equipment in power after the still can be normal and safe work, it is necessary to ensure that the battery capacity is sufficient, so the real-time detection of the battery capacity, the safety and stability of the circuit is of great significance.After the overall design of the system, the hardware part of the system was designed in detail, and the corresponding system schematic diagram was drawn, and the corresponding objects were made according to the principle diagram.According to the control requirements, to draw the system software flow chart, and the preparation of the corresponding system program. Finally, the overall system debugging, debugging results show that the design of the system to meet the requirements of the control.?
Key words: STC89C52 microcomputer; PCF8591 data acquisition device; LCD1602 Display;DC power supply;Capacity display;TC35 Communications
第一章 緒論
第一章 緒 論
1.1 課題研究的相關(guān)背景
在二十一世紀(jì),電力和通信的系統(tǒng)在現(xiàn)代的經(jīng)濟(jì)的迅速發(fā)展中間發(fā)揮著巨大的作用。目前發(fā)電廠、變電站和通信基站中的直流電路系統(tǒng)中,基本都是由蓄電池組、充電浮充電裝置和熔斷器等器件組成的。在電力系統(tǒng)和通信系統(tǒng)中,保護(hù)裝置以及控制裝置等一系列電路設(shè)備中都需要使用到蓄電池組,所有它性能和狀態(tài)的好壞直接影響到這一系列系統(tǒng)運(yùn)行的安全和可靠性。因此,檢查蓄電池組的性能和運(yùn)行狀態(tài)的正常,就能夠保證這些設(shè)備在沒有交流電源的特殊的情況下依舊能夠安全的運(yùn)行。對(duì)蓄電池實(shí)施監(jiān)測(cè),并重視對(duì)它的日常性維護(hù),才能夠保證蓄電池?fù)碛凶銐虻姆烹娙萘縼響?yīng)付可能會(huì)發(fā)生的特殊事件,比如火電中斷等事件。
蓄電池目前是使用的最廣泛的一種電源。蓄電池利用其中的化學(xué)物質(zhì)可逆的化學(xué)反應(yīng)來實(shí)現(xiàn)再充電,它將化學(xué)能轉(zhuǎn)換成可以直接使用的電能并將其存儲(chǔ)起來的器件。它的工作原理:充電時(shí)它利用化學(xué)反應(yīng),將電能存儲(chǔ)為化學(xué)能,使用時(shí)再將化學(xué)能轉(zhuǎn)換為可用電能對(duì)用電器件進(jìn)行輸出。蓄電池它作為一種性能可靠且循環(huán)利用的化學(xué)電能,它的價(jià)值也與日俱增,它廣泛應(yīng)用在電力、交通、通信等部門的設(shè)備中,已經(jīng)成為其不可缺少的重要組成部分。因此蓄電池的容量的多少對(duì)系統(tǒng)來說非常重要。
1.2 課題研究的意義
在二十一世紀(jì),蓄電池組的性能直接關(guān)系到設(shè)備的正常運(yùn)行是因?yàn)樗呀?jīng)是很多設(shè)備的動(dòng)力源或應(yīng)急電源。需要經(jīng)常通過對(duì)蓄電池參數(shù)進(jìn)行嚴(yán)格測(cè)量,用來保證蓄電池組處于最佳的工作狀態(tài)來提高電池的使用壽命來讓其可靠運(yùn)行。人工測(cè)量,不僅速度慢而且測(cè)量精度也有點(diǎn)低,尤其是其中影響人體健康的有害氣體。通過進(jìn)行自動(dòng)測(cè)量蓄電池參數(shù),它的測(cè)量速度和測(cè)量精度可以得到提高,這是十分重要的。之所以會(huì)一個(gè)電池的故障破壞到整個(gè)系統(tǒng),是因?yàn)橄到y(tǒng)是由多個(gè)單體電池串聯(lián)而成的,因此通過檢測(cè)系統(tǒng)電池的充電和放電過程等各方面的數(shù)據(jù)在線實(shí)時(shí)檢測(cè)。要想來提高整個(gè)電池系統(tǒng)的安全性和穩(wěn)定性,就必須要找到損壞的和性能明顯下降的電池。在受到環(huán)境限制下,為了對(duì)單一電池進(jìn)行維修和日常的維護(hù),單獨(dú)的電壓和電流的變化通過LCD顯示,可以每個(gè)電池用一個(gè)單獨(dú)的系統(tǒng)來確保系統(tǒng)簡(jiǎn)單而且實(shí)用。
1.3 國(guó)內(nèi)外研究狀況
對(duì)單電池電壓的監(jiān)測(cè)在我國(guó)蓄電池監(jiān)測(cè)系統(tǒng)中是主要內(nèi)容。目前,測(cè)量技術(shù)已經(jīng)成熟的方面是關(guān)于溫度和電流的常規(guī)測(cè)量。測(cè)量單個(gè)電壓量的方法在電壓的各種測(cè)量方法上非常簡(jiǎn)單的一種。在電池組中,測(cè)量其中某一個(gè)單電池電壓是其中最為關(guān)鍵的??茖W(xué)家們通過了大量的研究工作來解決如何測(cè)量單電池電壓?jiǎn)栴},其中用繼電器來切換電池組中的每只電池是十分有效的。體積較大、成本較高、壽命短暫、速度太慢、電壓值計(jì)算復(fù)雜是觸點(diǎn)式繼電器切換的缺點(diǎn),因此提出另外一種方法V/F轉(zhuǎn)換器來轉(zhuǎn)換模擬信號(hào)。。存在的問題是用V/F轉(zhuǎn)換作為A/D轉(zhuǎn)換器時(shí),如何讓輸入信號(hào)電壓高于芯片的最大工作電壓。電容上的電壓在A/D轉(zhuǎn)換過程中發(fā)生變化降低了它的測(cè)量精度,測(cè)量器件的動(dòng)作延遲導(dǎo)致采樣時(shí)間過長(zhǎng),使該方法應(yīng)用較少。我國(guó)研制了ZXJ24/2-1型監(jiān)測(cè)儀。
1989年,無人值守場(chǎng)站PBEC鉛酸蓄電池綜合在線狀態(tài)監(jiān)測(cè)系統(tǒng)在美國(guó)電力研究所和國(guó)家電能研究公司合作下成功研發(fā)。1994年,耗資200萬美元的研究完成樣機(jī)的現(xiàn)場(chǎng)試驗(yàn)。在每一只電池上安裝多傳感器電池,每個(gè)電池組監(jiān)測(cè)器可以監(jiān)測(cè)256個(gè)實(shí)時(shí)數(shù)據(jù)。想要監(jiān)測(cè)更多的電池組監(jiān)測(cè)器需要通過MODEMS與公用電話線。該技術(shù)已經(jīng)應(yīng)用于電廠等各個(gè)領(lǐng)域。
韓國(guó)人延長(zhǎng)整個(gè)系統(tǒng)的使用壽命就必須要防止過度充放電,儲(chǔ)存設(shè)備可以使用獨(dú)立光伏系統(tǒng)。該系統(tǒng)可以監(jiān)測(cè)蓄電池組的單電池電壓、通過的電流和電解液的比重等。一個(gè)20個(gè)通道的掃描器、一個(gè)數(shù)字多路選擇器和一個(gè)筆記本電腦可以組成一個(gè)便攜式數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)通過一種“電流中斷技術(shù)”,不僅可以監(jiān)測(cè)以上數(shù)據(jù)還可以算出電池組內(nèi)部電阻。
1.4 本課題主要研究的內(nèi)容
本課題所要研究的主要內(nèi)容總體有以下幾個(gè)方面:
1.了解蓄電池容量檢測(cè)系統(tǒng)的相關(guān)背景,研究該系統(tǒng)的具體需求和功能;
2.設(shè)計(jì)出基于單片機(jī)的蓄電池容量檢測(cè)系統(tǒng)的設(shè)計(jì)方案,并給出硬件連接方案;
3.設(shè)計(jì)出單片機(jī)控制算法,并完成相關(guān)程序的編寫;
4.研究總的電路圖,了解其基本功能,并且能夠掌握住各個(gè)主要功能部分的設(shè)計(jì)方法和原理,總結(jié)出設(shè)計(jì)思想,發(fā)現(xiàn)該設(shè)計(jì)的在現(xiàn)實(shí)中實(shí)用價(jià)值。
5.設(shè)計(jì)蓄電池容量檢測(cè)系統(tǒng)時(shí),能夠利用LCD1602模塊將蓄電池電壓及容量信息顯示出來。
6.當(dāng)待測(cè)蓄電池超過14V時(shí)發(fā)送短信提示。
- 42 -
第二章 系統(tǒng)硬件的設(shè)計(jì)
第二章 系統(tǒng)硬件的設(shè)計(jì)
2.1 系統(tǒng)的方案選擇
2.1.1選擇芯片
方案1:
采用HT46R22系列的單片機(jī)。
這種單片機(jī)是為A/D轉(zhuǎn)換的而設(shè)計(jì)的一種8位高性能精簡(jiǎn)指令集所構(gòu)成的,比如傳感器信號(hào)輸入。引腳和功能相同的就是掩膜版本HT46C22和OTP版本HT46R22。在帶傳感器的A/D轉(zhuǎn)換和工業(yè)控制等系統(tǒng)中需要單片機(jī)可以實(shí)現(xiàn)低的能耗,靈活的使用I/O,在A/D轉(zhuǎn)換的多通道傳輸以及I2C通信暫停和喚醒等方面的功能。
由于它比較復(fù)雜,導(dǎo)致它較貴的價(jià)格,并且它的焊接也不太方便,種種原因?qū)е略撈骷^長(zhǎng)的開發(fā)制作。
方案2:
采用STC89C52單片機(jī)。
多功能保護(hù)器是該單片機(jī)的核心控制單元,十分符合本次課題的系統(tǒng)設(shè)計(jì),它能夠?qū)崿F(xiàn)PCF8591數(shù)據(jù)采集器的信號(hào)處理和控制TC35模塊的報(bào)警短信。STC89C52單片機(jī)控制簡(jiǎn)單和操作方便又可以利用它控制和尋址等方面的功能來實(shí)現(xiàn)本次設(shè)計(jì)。該單片機(jī)擁有8K的存儲(chǔ)空間來保證存儲(chǔ)操作指令,可以按位尋址使用I/O口,最重要的是它的價(jià)格十分低。
通過比較,方案2是本設(shè)計(jì)較理想的方案。
并且從價(jià)格和操作上看,也選擇方案2。
2.1.2蓄電池電壓檢測(cè)模塊的選擇
方案1:
采用PCF8591系列模塊。
1個(gè)串行I2C總線接口接入4個(gè)模擬輸入和1個(gè)模擬輸出可以組成一個(gè)單獨(dú)供電且單片集成PCF8591器件,它的數(shù)據(jù)獲取是8-bit CMOS。8個(gè)PCF8591器件可以同時(shí)連接在同一個(gè)I2C總線上,它的硬件地址編程可以使用它的地址引腳A0, A1和A2。PCF8591的I2C總線可以使用雙線雙向串行來傳輸?shù)刂泛涂刂菩盘?hào)等數(shù)據(jù)。它的模擬量是用多路復(fù)用輸入的,它的模數(shù)和數(shù)模轉(zhuǎn)換都是8位的,因此它的片上可以進(jìn)行跟蹤和保持等方面的功能。I2C總線的最大速度決定了它的最高轉(zhuǎn)換速率。
方案2:
采用DS2438系列模塊。
DS2438智能電池監(jiān)視器是一個(gè)專門為測(cè)試電池組數(shù)據(jù)的器件。它可以存儲(chǔ)各種電池的參數(shù),是精確實(shí)時(shí)測(cè)試蓄電池信息的很好的器件。DS2438和中央微控制器間使用1條連線來接收和發(fā)送信息,這就說明可使用一個(gè)電池電源、地線和1-Wire接口來組成電池組。
通過比較,方案1適合本次的蓄電池容量檢測(cè)系統(tǒng),它性能穩(wěn)定,價(jià)格便宜。
2.1.3顯示器的選擇
方案1:
采用HD44780液晶顯示模塊。
它是一種的字符型的液晶顯示器件,其他公司使用的電路如NOVATEK公司的NT3881,SUNPLUS公司的SPLC78A01,SAMSUNG公司的KS0066等都與它的主控制驅(qū)動(dòng)電路HD44780(HITACHI)相兼容。利用多個(gè)5×7或者5×10點(diǎn)陣塊可以來形成的液晶顯示器,在智能儀表和辦公自動(dòng)化等領(lǐng)域以經(jīng)在使用它。
方案2:
采用LCD1602顯示模塊。
它是一種點(diǎn)陣型液晶顯示,專門用來顯示字母、數(shù)字、符號(hào)等數(shù)據(jù)的。由于它每位和每行之間都有間隔,所有它可以很好的顯示每一個(gè)字符卻不能顯示形象的圖形。即使使用自定義CGRAM,結(jié)果也是一樣的。LCD1602是指顯示的內(nèi)容為16×2,它可以顯示兩行,且每行16個(gè)字符。
通過比較,本設(shè)計(jì)只需采用方案2。
2.1.4 GSM通信模塊選擇
方案1:
采用TC35系列模塊。
TC35可以實(shí)現(xiàn)數(shù)據(jù)傳輸和短消息的服務(wù),是Siemens公司無線通信GSM模塊的主要產(chǎn)品。GSM模塊在900MHz工作時(shí)耗能2W(900M),在1800MHz工作時(shí)耗能為1W(1800M),限制在3.3V-5.5V電壓下工作。TC35I和TC35是同一系列的產(chǎn)品,但是它們外形、體積和電壓等方面是不同的,TC35I比TC35價(jià)格貴的原因是因?yàn)門C35I的使用能耗是十分低的,有利于節(jié)省。
方案2:
采用MC35系列模塊。
西門子公司GPRS模塊MC35不僅擁有方案一的所有功能,還能利用GPRS。MC35I價(jià)格高過TC35是因?yàn)樗膫鬏斔俣纫萒C35快的多。
通過比較,方案1適合本次的短信發(fā)送系統(tǒng),它出貨量大,價(jià)格便宜。
2.2 系統(tǒng)的總體設(shè)計(jì)方案
為了實(shí)現(xiàn)系統(tǒng)對(duì)于蓄電池容量的檢測(cè),設(shè)計(jì)了如圖2.1所示的系統(tǒng)。
本次的設(shè)計(jì)系統(tǒng)主要分為液晶顯示電路、蓄電池電壓檢測(cè)電路、單片機(jī)核心電路和短信發(fā)送電路。系統(tǒng)以STC89C52單片機(jī)為核心,利用電源電路對(duì)被測(cè)蓄電池進(jìn)行5倍的分壓,利用蓄電池電壓檢測(cè)電路進(jìn)行檢測(cè),通過單片機(jī)與LCD1602之間進(jìn)行轉(zhuǎn)換,在液晶顯示屏上顯示被測(cè)蓄電池的電壓以及容量,這樣方便我們了解該蓄電池是否能滿足它所使用的電路系統(tǒng)。當(dāng)蓄電池電壓高于14V是,可以知道該蓄電池電量已經(jīng)充滿,利用TC35向手機(jī)發(fā)送短信。
圖2.1系統(tǒng)總體設(shè)計(jì)框圖
2.3 單片機(jī)STC89C52的概況
STC89C52是一個(gè)擁有8K可編程的Flash存儲(chǔ)器,它的控制器是由8位CMOS,因此它擁有很低的能耗。STC89C52的指令和引腳與工業(yè)上的80C51等系列產(chǎn)品完全相兼容,主要是因?yàn)榇鎯?chǔ)技術(shù)的高密度和不易丟失性造成的。通常使用的編程器可以在它的片上的Flash進(jìn)行編程。十分靈活的控制各種應(yīng)用系統(tǒng)是STC89C52單片機(jī)的主要特點(diǎn),是因?yàn)榭勺灾骶幊痰腇lash和8位的CPU在它的芯片上。在掉電的保護(hù)方式下,RAM的內(nèi)容可以保存,振蕩器被凍結(jié),單片機(jī)的所有工作都停止,一直到下一個(gè)的中斷或者硬件可以復(fù)位為止【1】。通過把程序的代碼燒寫進(jìn)這種單片機(jī),并在它的外圍接上電源電路、晶振電路和復(fù)位電路等各種模塊,就構(gòu)成了一個(gè)獨(dú)立的系統(tǒng)。
1. STC89C52標(biāo)準(zhǔn)功能:
1)8k字節(jié)的Flash。
2)256字節(jié)的RAM。
3)32位的I/O口線。
4)看門狗定時(shí)器。
5)2個(gè)數(shù)據(jù)指針。
6)3個(gè)16位的定時(shí)器/計(jì)數(shù)器。
7)1個(gè)6向量的2級(jí)中斷結(jié)構(gòu)。
8)全雙工的串行口。
9)片內(nèi)晶振和時(shí)鐘電路。
2.STC89C52引腳介紹:
圖2.2 引腳圖
1)Vcc(40腳):+5V電源端;
2)Vss(20腳):接地端。
3)XTAL1(19腳):當(dāng)做外部時(shí)鐘來使用時(shí)必須接地,因?yàn)樗钠瑑?nèi)是晶振電路的反向放大器輸入端。
4)XTAL2(18腳):連接外部的晶體和微調(diào)電容一端。當(dāng)通過示波器來查看這個(gè)端口是否有脈沖信號(hào)的輸出可以判斷STC89C52的晶振電路是否在正常工作。
5)RST(9腳):它高電平時(shí)有效,輸入復(fù)位信號(hào)。想要完成復(fù)位的操作,就需要在這里保持兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘的振蕩周期)高電平。
6)ALE/PROG(30引腳):是地址鎖存允許的信號(hào)端。當(dāng)STC89C52通電正常工作之后,此引腳可以不斷的向外輸出正脈沖信號(hào)。當(dāng)通過示波器來查看這個(gè)端口是否無脈沖信號(hào)的輸出,只有當(dāng)信號(hào)輸出時(shí)才能說明STC89C52的芯片是好的。
7)PSEN(29腳);是程序存儲(chǔ)所允許的輸出信號(hào)引腳。當(dāng)它作為片外存儲(chǔ)器時(shí),就會(huì)定時(shí)的輸出負(fù)脈沖的選通信號(hào)。這個(gè)引腳接的是ERROM的OE端。當(dāng)通過示波器查看PSEN端是否有脈沖輸出,當(dāng)有時(shí)就說明CPU工作正常。
8)/VPP(31腳):是外部程序存儲(chǔ)器地址允許輸入端。CPU訪問片內(nèi)ERROM/ROM就需要EA引腳連接高電平,才能執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。當(dāng)接低電平時(shí),CPU只會(huì)訪問外部ERROM/ROM中的指令。連接沒有芯片的器件時(shí),需要將EA引腳接地并且外擴(kuò)ERROM。
3.I/O(輸入/輸出端口,P0,P1,P2,P3)
P0口:P0口是漏極開路8位準(zhǔn)雙向I/O端口之一;
P1口:是8位準(zhǔn)雙向I/O端口;
P2口:用做普通的I/O,或高8位的地址總線輸出地址(準(zhǔn)雙向口);
P3口:雙功能口:可以做普通的I/O口用,也可以自定義來實(shí)現(xiàn)第二功能的操作。見表2.1。
表2.1 P3口的第二功能表
引腳
第二功能
P3.0
RXD(串行輸入口)
P3.1
TXD(串行輸出口)
P3.2
INT0(外部中斷0)
P3.3
INT1(外部中斷1)
P3.4
T0(定時(shí)器0外部中斷)
P3.5
T1(定時(shí)器1外部中斷)
P3.6
WR(外部存儲(chǔ)器寫選通)
P3.7
RD(外部存儲(chǔ)器讀寫通)
2.4 主要元件
2.4.1PCF8591數(shù)據(jù)采集器
1個(gè)串行I2C總線接口接入4個(gè)模擬輸入和1個(gè)模擬輸出可以組成一個(gè)單獨(dú)供電且單片集成PCF8591器件,它的數(shù)據(jù)獲取是8-bit CMOS。8個(gè)PCF8591器件可以同時(shí)連接在同一個(gè)I2C總線上,它的硬件地址編程可以使用它的地址引腳A0, A1和A2。PCF8591的I2C總線可以使用雙線雙向串行來傳輸?shù)刂泛涂刂菩盘?hào)等數(shù)據(jù)。它的模擬量是用多路復(fù)用輸入的,它的模數(shù)和數(shù)模轉(zhuǎn)換都是8位的,因此它的片上可以進(jìn)行跟蹤和保持等方面的功能。I2C總線的最大速度決定了它的最高轉(zhuǎn)換速率。
1.PCF8591的功能
1)多路模擬輸入。
2)內(nèi)置跟蹤保持。
3)8-bit模數(shù)轉(zhuǎn)換。
4)8-bit數(shù)模轉(zhuǎn)換。
2.引腳及功能
?PCF8591引腳圖如圖2.3所示。
圖2.3外接示意圖
表2.2 PCF8591的引腳和功能表
引腳
名稱
功能
1
AIN0
模擬信號(hào)輸入端
2
AIN1
模擬信號(hào)輸入端
2
AIN2
模擬信號(hào)輸入端
4
AIN3
模擬信號(hào)輸入端
5
A0
引腳地址端
6
A1
引腳地址端
7
A2
引腳地址端
8
VSS
電源端
9
SDA
I2C總線的數(shù)據(jù)線
10
SCL
I2C總線的時(shí)鐘線
11
OSC
時(shí)鐘1)內(nèi)部輸出端;2)外部輸入端
12
EXT
時(shí)鐘選擇線內(nèi)部時(shí)?EXT?接地
13
AGND
信號(hào)地模擬
14
VREF
基準(zhǔn)電源端
15
AOUT
輸出端D/A?轉(zhuǎn)換
16
VDD
電源端
地址:設(shè)置以后數(shù)據(jù)傳輸方向的讀/寫位的是最后一位地址字節(jié)。地址在I2C總線協(xié)議成立后作為第一個(gè)字節(jié)發(fā)送。見下圖2.4
圖2.4地址
3.芯片特點(diǎn):
1)單獨(dú)供電
2)PCF8591的操作電壓范圍2.5V-6V
3)低待機(jī)電流
4)通過I2C總線串行輸入/輸出
5)PCF8591的采樣率由I2C總線速率決定
6)PCF8591通過3個(gè)硬件地址引腳尋址
7)單端或差分可編程4個(gè)模擬輸入
8)自動(dòng)增量頻道選擇
9)PCF8591的模擬電壓范圍從VSS到VDD
10)PCF8591內(nèi)置跟蹤保持電路
11)8-bit逐次逼近A/D轉(zhuǎn)換器
12)通過1路模擬輸出實(shí)現(xiàn)DAC增益
4.PCF8591原理圖:
如下圖2.5
圖2.5 PCF8591原理圖
5.功能特點(diǎn):
控制字: PCF8591控制其它器件時(shí)需要利用存儲(chǔ)在控制寄存器中的第二個(gè)字節(jié)。系統(tǒng)每次A/D轉(zhuǎn)換后通道號(hào)將自動(dòng)增加是因?yàn)樽詣?dòng)增量為1。?
D/A轉(zhuǎn)換:數(shù)字量轉(zhuǎn)換成模擬量。外部電壓和選擇開關(guān)組成D/A轉(zhuǎn)換器,PCF8591的輸出電壓會(huì)被新收到的數(shù)據(jù)來改變。?
A/D轉(zhuǎn)換:檢測(cè)到的模擬量轉(zhuǎn)換成數(shù)字量。當(dāng)PCF8591接收到第一個(gè)有效讀模式的地址后,就開始了一個(gè)A/D轉(zhuǎn)換周期。當(dāng)A/D轉(zhuǎn)換周期開始后,所有的輸入信號(hào)都將轉(zhuǎn)換為對(duì)應(yīng)的8位二進(jìn)制碼并保存進(jìn)芯片。
2.4.2 LCD顯示
1602LCD的基控制器是HD44780,帶背光的比不帶背光的厚,但是兩者在應(yīng)用中是沒有差別的,尺寸如圖2.6所示。
圖2.6 LCD1602結(jié)構(gòu)圖
1. 主要技術(shù)參數(shù):
1)容量:16×2個(gè)字符;
2)芯片工作電壓:4.5—5.5V;
3)工作電流:2.0mA(5.0V);
4)模塊最佳工作電壓:5.0V;
5)字符尺寸:2.95×4.35(W×H)mm。?
2.引腳功能說明:
16引腳1602LCD標(biāo)準(zhǔn)是,如下表2.3所示:
表2.3 引腳接口說明表
編號(hào)
符號(hào)
引腳說明
1
VSS
電源地
2
VDD
電源正極
3
VL
液晶顯示偏壓
4
RS
數(shù)據(jù)/命令選擇
5
R/W
讀/寫選擇
6
E
使能信號(hào)
7
D0
數(shù)據(jù)
8
D1
數(shù)據(jù)
9
D2
數(shù)據(jù)
10
D3
數(shù)據(jù)
11
D4
數(shù)據(jù)
12
D5
數(shù)據(jù)
13
D6
數(shù)據(jù)
14
D7
數(shù)據(jù)
15
BLA
背光源正極
16
BLK
背光源負(fù)極
第1腳:VSS為地電源。
第2腳:VDD接+5V。
第3腳:VL為液晶顯示器對(duì)比度調(diào)整端。接入一個(gè)大小10K的電位器來調(diào)整液晶顯示器的對(duì)比度,因?yàn)楫?dāng)它接正電源時(shí)最弱,接地時(shí)最強(qiáng)。 “鬼影”現(xiàn)象的出現(xiàn)是因?yàn)閷?duì)比高。
第4腳:RS為寄存器選擇。高電平和低電平分別選擇數(shù)據(jù)寄存器、指令寄存器。
第5腳:R/W為讀寫信號(hào)線。高電平和低電平時(shí)分別進(jìn)行讀操作和寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址;當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào);當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)【2】。
第6腳:E端為使能端。當(dāng)其高電平轉(zhuǎn)變成低電平時(shí),顯示器執(zhí)行命令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。
第15腳:背光源正極。
第16腳:背光源負(fù)極。
2.4.3直流穩(wěn)壓電源
直流穩(wěn)壓電源利用它的負(fù)載電阻與為它供電的交流電源發(fā)生變化,來為其它用電器輸出穩(wěn)定的直流電源。目前,用電設(shè)備向著更穩(wěn)定可靠、更詳細(xì)的精度這些方面發(fā)展,因此這些電子設(shè)備的供電電源就需要提高更多的方面。它可以調(diào)節(jié)輸出的電壓和電流值來適應(yīng)各種電路情況。它可以自動(dòng)轉(zhuǎn)換穩(wěn)壓或穩(wěn)流狀態(tài),并能夠準(zhǔn)確的識(shí)別其大小。使用時(shí),需要加入保護(hù)電路以免電路短路時(shí)破壞器件。
特點(diǎn):
1)輸出顯示:輸出電壓電流LED顯示。
2)采用19英寸標(biāo)準(zhǔn)化尺寸。
3)體積小、重量輕、節(jié)能高效。
4)恒壓恒流:自動(dòng)切換輸出恒壓恒流,可調(diào)節(jié)電壓電流值。
5)保護(hù)功能:過壓、過流、過載和欠壓等保護(hù)。
6)短路特性:工作狀態(tài)下長(zhǎng)時(shí)間短路。
7)外接補(bǔ)償:降低因輸出回路較長(zhǎng)等造成的壓降。
8)過壓保護(hù)值:當(dāng)輸出過壓值后切斷輸出并鎖定。
2.4.4 TC35通信
TC35模塊是西門子工業(yè)中支持中文短信息的GSM模塊的重要組成部分。它是一款雙頻900/1800MHZ的模塊。目前,TC35正廣泛應(yīng)用于遠(yuǎn)程監(jiān)控和無線通訊等領(lǐng)域。并且它還擁有GPRS方面的功能。
性能信息:
1)信息傳送內(nèi)容:語音和數(shù)據(jù)。
2)電源:?jiǎn)坞娫?3.3V ~ 5.5V。
3)頻段:雙頻GSM900MHz 和 DCS1800 MHz(Phase 2+)。
4)發(fā)射功率:2W (GSM900MHz Class 4) 1W (DCS1800MHz Class 1)。
5)SIM 卡連接方式:外接。
6)天線:由天線連接器連接外部天線。
7)外型尺寸:54.5 x 36 x 6.7mm。
8)短信息:MT,MO,CB和PDU模式。
9)通訊接口:RS232(指令和數(shù)據(jù)雙向傳送)。
10)模塊復(fù)位:采用AT指令或掉電復(fù)位。
2.5 蓄電池容量檢測(cè)系統(tǒng)硬件電路設(shè)計(jì)
2.5.1單片機(jī)最小系統(tǒng)
圖2.7 單片機(jī)最小系統(tǒng)
單片機(jī)、晶振電路和復(fù)位電路組成的單片機(jī)的最小系統(tǒng),這是任何單片機(jī)系統(tǒng)能夠運(yùn)行程序、正常工作所必不可缺少的重要組成部分。由于STC89C52單片機(jī)的片內(nèi)有程序存儲(chǔ)器,大小為8K,所以該系統(tǒng)只需要外接晶振電路與復(fù)位電路。
2.5.2液晶顯示電路
圖2.8 LCD1602液晶顯示電路
采用LCD1602顯示屏,在電路通電的情況下,可以在顯示屏上看到當(dāng)前的蓄電池容量值;在屏幕的下方還有一位數(shù)值,顯示的是蓄電池電壓。
2.5.3蓄電池電壓檢測(cè)電路
圖2.9 蓄電池電壓檢測(cè)電路
利用PCF8591數(shù)據(jù)采集器對(duì)蓄電池進(jìn)行數(shù)據(jù)采集,對(duì)數(shù)據(jù)進(jìn)行A/D轉(zhuǎn)換,把模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),傳輸進(jìn)單片機(jī)中。
2.5.4電源電路
圖2.10 電源電路
采用5倍的分壓,使待測(cè)的蓄電池電壓進(jìn)入設(shè)計(jì)電路中降低電壓,保證電路中運(yùn)行安全。
2.5.5 TC35通信電路
圖2.11 TC35引腳圖
需要給TC35個(gè)大于3. 3V的穩(wěn)定電源來使其工作,并且要保證給它的IGT信號(hào)是一個(gè)持續(xù)時(shí)間不能超過1ms,且延時(shí)大于100ms的低脈沖信號(hào),這樣才能保證電路安全穩(wěn)定的工作。利用TC35向手機(jī)發(fā)送報(bào)警短信。
2.6 蓄電池容量算法
2.6.1容量換算的算法
蓄電池的容量系數(shù)是由放電終點(diǎn)電壓和事故放電持續(xù)時(shí)間來決定的。蓄電池容量是由它們?nèi)矫婀餐绊憶Q定的。
所有蓄電池的計(jì)算容量:
式中:
CS:事故放電容量(Ah);
KCC:蓄電池容量系數(shù);
KREL:可靠系數(shù),一般取KREL=1.40。
當(dāng)放電期間事故負(fù)荷恒定不變時(shí),事故放電時(shí)間TS(h)和事故放電電流IS(A)的乘機(jī)決定了事故放電容量CS。即
CS=IS*TS
2.6.2恒功率的算法
計(jì)算公式:
W:每節(jié)電池提供的功率;
P:額定功率;
F:負(fù)載功率因數(shù);
η:逆變器效率;
N:電池組額定節(jié)數(shù)。
2.6.3恒電流的算法
計(jì)算公式:
AH:電池安時(shí)數(shù);
P:額定功率;
F:負(fù)載功率因數(shù);
η:逆變器效率;
UMIN:UPS電池關(guān)閉時(shí)瞬時(shí)電壓,一般每單元1.75V。
2.6.4估計(jì)的算法
(1)用于延時(shí)1小時(shí)以下:
(2)用于延時(shí)1小時(shí)以上:
AH:電池安時(shí)數(shù);
P:額定功率;
F:負(fù)載功率因數(shù);
η:逆變器效率;
UMIN:UPS電池關(guān)閉時(shí)瞬時(shí)電壓,一般每單元1.75V;
C(30分鐘)=1.1;
C(60分鐘)=0.6;
第三章 系統(tǒng)軟件設(shè)計(jì)
第三章 系統(tǒng)軟件設(shè)計(jì)
3.1 主程序設(shè)計(jì)
根據(jù)任務(wù)書的要求,設(shè)計(jì)以下系統(tǒng)的軟件程序流程圖:
圖3.1 主程序流程圖
3.2 子程序設(shè)計(jì)
3.2.1蓄電池電壓檢測(cè)流程圖
圖3.2 蓄電池電壓檢測(cè)流程圖
3.2.2 LCD液晶顯示流程圖
圖3.3 LCD液晶顯示流程圖
3.2.3 短信發(fā)送流程圖
圖3.4 短信發(fā)送流程圖
3.3 程序清單
見附錄2
第四章 系統(tǒng)實(shí)物制作
第四章 系統(tǒng)實(shí)物制作
4.1 系統(tǒng)原理圖
見附錄1
4.2 實(shí)物焊接
首先將所用材料按順序的放置在桌面上,接著用萬用表檢查所有元器件的好壞,對(duì)照元器件來判斷各個(gè)引腳的作用,來確保電路焊接的正確性。將各個(gè)元器件合理的放入萬能板中,分步進(jìn)行焊接,并不時(shí)的利用萬用表檢測(cè)焊接狀態(tài)是否正確,焊接完成后對(duì)實(shí)物進(jìn)行整體檢測(cè)。
4.3 器件詳細(xì)清單
表4.1器件選型方案的詳細(xì)清單
器件
代號(hào)
型號(hào)
數(shù)量
單片機(jī)
U1
STC89C52
1
數(shù)據(jù)采集器
U2
PCF8591
1
雙刀雙擲開關(guān)
SW1
1
行程開關(guān)
AJ1
SW-PB
1
極化電容器(徑向)
C1,C4
10uF/25V
2
電容器
C2,C3
30p
2
電容器
C5
0.1uF
1
紅外發(fā)光二極管
D1
RED
1
低電壓電源連接器
J1
DC PORT
1
液晶顯示器
LCD1
LCD1602
1
電阻
R1,R4,R5
10k
3
電阻
R2
40k
1
電阻
R3
10k
1
電阻
R6
1k
1
隔離電阻網(wǎng)絡(luò)
RP1
1
晶體振蕩器
Y1
11.0592M
1
電阻抽頭
W1
1
接線插槽
P1
Header 4
1
端子
P2
Header 2
1
杜邦線
若干
排針
若干
GSM通信
TC35
1
萬能板
1
4.4 程序的編譯
在實(shí)物焊接好之后,就要進(jìn)行軟件的仿真。將寫好的程序利用Keil軟件進(jìn)行編譯,檢查沒有錯(cuò)誤后生成.HEX文件。
將焊接好的實(shí)物與電腦連接,利用Keil軟件,將之前生成.HEX文件寫入STC89C52單片機(jī)中。
4.5 系統(tǒng)調(diào)試
在整個(gè)設(shè)計(jì)完成之后,對(duì)其進(jìn)行整體調(diào)試。在調(diào)試的過程中驗(yàn)證系統(tǒng)的設(shè)計(jì)是否正確,是否達(dá)到預(yù)期的要求,看各個(gè)要求是否達(dá)成。
4.6 實(shí)物演示
4.6.1電路初始狀態(tài)
如圖4.1所示。
圖4.1 電路初始狀態(tài)
4.6.2電路通電
按下電源總開關(guān)時(shí)電路通電,如圖4.2所示。
圖4.2 電路通電
4.6.3穩(wěn)壓電源
不同的直流輸入電壓模擬不同使用的蓄電池
圖4.3 調(diào)節(jié)輸入電壓
4.6.4不同電壓下容量顯示
調(diào)節(jié)穩(wěn)壓電源,模擬蓄電池容量,進(jìn)行測(cè)量。
圖4.4 顯示00%容量(1)
圖4.5 顯示00%容量(2)
圖4.6 顯示10%容量(1)
圖4.7 顯示10%容量(2)
圖4.8 顯示20%容量
圖4.9 顯示30%容量
圖4.10 顯示40%容量
圖4.11 顯示50%容量
圖4.12 顯示60%容量
圖4.13 顯示70%容量
圖4.14 顯示80%容量
圖4.15 顯示99%容量(1)
圖4.16 顯示99%容量(2)
圖4.17 顯示99%容量(3)
圖4.18 顯示99%容量(4)
第五章 總 結(jié)
第五章 總 結(jié)
本次設(shè)計(jì)中,我通過對(duì)STC89C52D單片機(jī)、LCD1602液晶顯示器、PCF8591數(shù)據(jù)采集器和TC35通信的學(xué)習(xí),努力設(shè)計(jì)電路并制作實(shí)物,經(jīng)過不斷調(diào)試,目前已經(jīng)可以使用該系統(tǒng)對(duì)蓄電池容量進(jìn)行檢測(cè),但是由于時(shí)間等原因短信發(fā)送還沒有做到。這次的設(shè)計(jì)讓我學(xué)到了更多的專業(yè)性的知識(shí),通過將大學(xué)四年學(xué)到理論知識(shí)綜合的運(yùn)用起來,使自己對(duì)于原來所學(xué)的知識(shí)有了更進(jìn)一步的理解。
在設(shè)計(jì)的過程中,通過查找各個(gè)方面的資料,再到自己動(dòng)手制作實(shí)物,不斷努力解決自己在設(shè)計(jì)中所遇到的各種問題,從而培養(yǎng)了我獨(dú)立解決問題的能力,同時(shí)加強(qiáng)了自己的動(dòng)手能力并了解自己所存在的問題。
雖然最后設(shè)計(jì)達(dá)到了部分的預(yù)期要求,也實(shí)現(xiàn)了蓄電池容量的測(cè)試。但是,在整個(gè)的設(shè)計(jì)過程中,如果沒有老師與同學(xué)的幫助,我就無法完成這次的設(shè)計(jì)。之后我還需要查詢更多方面的知識(shí),不斷的請(qǐng)教老師,充實(shí)自己的知識(shí)面,才能更好的實(shí)現(xiàn)自己的目標(biāo),使自己更全面發(fā)展。
這次畢業(yè)設(shè)計(jì)的不足之處是利用TC35通信模塊發(fā)送短信給手機(jī)沒有成功。通過這個(gè)問題,我明白做任何事情都需要細(xì)心,仔細(xì)檢查各個(gè)部分,分析問題。
這次的畢業(yè)設(shè)計(jì),雖然說是結(jié)束了,但也是一個(gè)新的開始。它讓我學(xué)到了很多,讓我看清了自己本身存在的不足,相信在未來自己可以不斷奮斗,努力完善自我,讓自己離理想更近一步。
參考文獻(xiàn)
參考文獻(xiàn)
[1] 陳云路,吳欽木.?dāng)?shù)字頻率計(jì)設(shè)計(jì)[J].現(xiàn)代機(jī)械,2015,(3).
[2] 王承林.基于Proteus在LCD1602中漢字顯示系統(tǒng)的設(shè)計(jì)[J].邢臺(tái)學(xué)院學(xué)報(bào).2015,
(4).
[3] 李平等.單片機(jī)入門與開發(fā)[M]. 北京:機(jī)械工業(yè)出版社,2008.
[4] 馬青玉.高壓蓄電池組的計(jì)算機(jī)檢測(cè)設(shè)計(jì)[J].電子工程師,2002,28(1).
[5] 鐘富昭等.8051單片機(jī)典型模塊設(shè)計(jì)與應(yīng)用[M]. 北京:人民郵電出版社,2007.
[6] 陳海宴.51單片機(jī)原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2010.
[7] 李朝青.單片機(jī)&DSP外圍數(shù)字IC技術(shù)手冊(cè)[M]. 北京:北京航空航天大學(xué)出版社,2009.
[8] 龔運(yùn)新,羅慧敏,彭建軍.單片機(jī)接口C語言開發(fā)技術(shù)[M]. 北京:清華大學(xué)出版社,2009.
[9] 陳杰.智能鉛酸蓄電池組性能的監(jiān)控系統(tǒng)[J].機(jī)電工程,1999,(6).
[10] 朱松然.鉛蓄電池技術(shù)[M]. 北京:機(jī)械工業(yè)出版社,2008.
[11] 崔花.單片機(jī)實(shí)用技術(shù)[M]. 北京:清華大學(xué)出版社,2008.
[12] 徐新民.單片機(jī)原理及應(yīng)用[M]. 浙江:浙江大學(xué)出版社,2009.
[13] 劉守義等.單片機(jī)技術(shù)基礎(chǔ)[M]. 西安:西安電子科技大學(xué)出版社,2007.
[14] 江思明.電路工程設(shè)計(jì)-Protel?99實(shí)例演練[M].人民郵電出版社,2009.
[15] 馬淑華,王鳳文,張美金主編.單片機(jī)原理與接口技術(shù)[M]. 北京:北京郵電大學(xué)出版社,2008.
[16] 張曉冬.蓄電池監(jiān)測(cè)系統(tǒng)的現(xiàn)狀及發(fā)展趨勢(shì)[J].農(nóng)機(jī)化研究,2002,(8).
[17] 秦龍.MSP430單片機(jī)常用模塊與綜合系統(tǒng)實(shí)例精講[M]. 北京:電子工業(yè)出版社.2007.
[18] 閏新華.影響鉛酸蓄電池容量的因素[J].UPS應(yīng)用,2004,(1).
[19] 王俊峰,孟令啟.現(xiàn)代傳感器應(yīng)用技術(shù)[M]. 北京:機(jī)械工業(yè)出版社.2007.
[20] 胡漢才.單片機(jī)原理及接口技術(shù)[M]. 北京:清華大學(xué)出版社.1996.
[21] 高稚允,高岳.光電檢測(cè)技術(shù)[M]. 北京:國(guó)防工業(yè)出版社.1983.
[22] 梁森,王侃夫,黃杭美.自動(dòng)檢測(cè)與轉(zhuǎn)換技術(shù)[M]. 北京:機(jī)械工業(yè)出版社.2007.?
[23] Meehan Joanne,Muir Lindsey.SCM in Merseyside SMEs:Benefits and barriers[J].TQM Journal,2008.
[24] Yeager Brent.How to troubleshoot you electronic scale[J].Powder and Bulk Engineering.1995.
[25] 楊清梅,孫建民.傳感器與測(cè)試技術(shù)[M]. 哈爾濱:哈爾濱工程大學(xué)出版社.2005.
[26] 康華光.模擬電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社.2006.
[27] 高吉祥.全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽培訓(xùn)系列教程[M]. 北京:電子工業(yè)出版社.2007.
[28] 李增國(guó).傳感器與檢測(cè)技術(shù)[M]. 北京:北京航空航天大學(xué)出版社.2009.
[29] 吳中明,吳昊.密封鉛酸蓄電池容量快速測(cè)試技術(shù)難點(diǎn)分析[J].通信電源技術(shù),2006,(23).
[30] 宋文緒,楊帆.自動(dòng)檢測(cè)技術(shù)[M]. 北京:高等教育出版社.2000.
[31] 尉廣軍,朱宇虹.采用集成運(yùn)算放大器構(gòu)成的蓄電池恒流放電電路[J].電工技術(shù),2000,(14).
[32] 魏小龍.MSP430系列單片機(jī)接口技術(shù)及系統(tǒng)設(shè)計(jì)實(shí)例[M]. 北京:北京航空航天大學(xué)出版.2002.
[33] 李廣弟.單片機(jī)基礎(chǔ)[M]. 北京:北京航空航天出版社,2001.
[34] 王東峰等.單片機(jī)C語言應(yīng)用100例[M]. 北京:電子工業(yè)出版社,2009.
附錄1
附錄1 系統(tǒng)原理圖
附錄2
附錄2 系統(tǒng)程序清單
#include //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義
#include
#include "1602.h"
#include "delay.h"
#include "sysdefine.h"
char displaytemp[16]; //打印數(shù)組初始化
unsigned long time_20ms=0; //定時(shí)器計(jì)數(shù)
float Volt=0.0; //檢測(cè)電壓
unsigned int BatCap=80; //容量初始化
void Init_Timer0(void);
void uartSendStr(unsigned char *s,unsigned char length);
void UART_Init(void);
void uartSendByte(unsigned char dat);
void main (void)
{
unsigned char midvolt;
Init_Timer0(); //定時(shí)器0初始化
UART_Init();
LCD_Init(); //初始化液晶
DelayMs(20); //延時(shí)有助于穩(wěn)定
LCD_Clear();
sprintf(displaytemp,"The BatCap: %02d%%",BatCap);//打印電池容量值
LCD_Write_String(0,0,displaytemp);//顯示第一行
sprintf(displaytemp,"V:%4.2fv ",Volt);//打印電壓值
LCD_Write_String(0,1,displaytemp);//顯示第二行
uartSendStr("reday ok!!",10);
while (1) //主循環(huán)
{
DelayMs(50); //延時(shí)有助于穩(wěn)定
midvolt=ReadADC(0); //ad轉(zhuǎn)換采集
Volt=(float)midvolt*5.2/255*5; //計(jì)算出電壓 *5表示分壓值
if(Volt<=5.4) //判斷電池容量
{BatCap=0;}
if((Volt>5.4)&&(Volt<=8.4))
{BatCap=10;}
if((Volt>8.4)&&(Volt<=8.9))
{BatCap=20;}
if((Volt>8.9)&&(Volt<=9.4))
{BatCap=30;}
if((Volt>9.4)&&(Volt<=9.9))
{BatCap=40;}
if((Volt>9.9)&&(Volt<=11.4))
{BatCap=50;}
if((Volt>11.4)&&(Volt<=12.9))
{BatCap=60;}
if((Volt>12.9)&&(Volt<=13.5))
{BatCap=70;}
if((Volt>13.5)&&(Volt<=14.0))
{BatCap=80;}
if(Volt>14.0)
{BatCap=99;}
sprintf(displaytemp,"The BatCap: %02d%%",BatCap);//打印電池容量值
LCD_Write_String(0,0,displaytemp);//顯示第一行
sprintf(displaytemp,"V:%4.2fv ",Volt);//打印電壓電流值
LCD_Write_String(0,1,displaytemp);//顯示第二行
DelayMs(200); //延時(shí)有助于穩(wěn)定
}
}
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響
TH0=(65536-20000)/256; //重新賦值 20ms
TL0=(65536-20000)%256;
EA=1; //總中斷打開
ET0=1; //定時(shí)器中斷打開
TR0=1; //定時(shí)器開關(guān)打開
}
void Timer0_isr(void) interrupt 1
{
TH0=(65536-20000)/256; //重新賦值 20ms
TL0=(65536-20000)%256;
time_20ms++;
if(time_20ms%10==0)
{
}
}
void UART_Init(void)
{
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重裝
TH1 = 0xFD; // TH1: 重裝值 9600 波特率 晶振 11.0592MHz
TL1 = TH1;
TR1 = 1; // TR1: timer 1 打開
EA = 1; //打開總中斷
ES = 1; //打開串口中斷
}
void uartSendByte(unsigned char dat)
{
unsigned char time_out;
time_out=0x00;
SBUF = dat;
while((!TI)&&(time_out<10))
{time_out++;DelayMs(1);}
TI = 0;
}
void uartSendStr(unsigned char *s,unsigned char length)
{
unsigned char NUM;
NUM=0x00;
while(NUM?
#define?uint?unsig
收藏