以AT89S52單片機為核心的智能充電器設計與實現項目可行性研究報告_第1頁
以AT89S52單片機為核心的智能充電器設計與實現項目可行性研究報告_第2頁
以AT89S52單片機為核心的智能充電器設計與實現項目可行性研究報告_第3頁
以AT89S52單片機為核心的智能充電器設計與實現項目可行性研究報告_第4頁
以AT89S52單片機為核心的智能充電器設計與實現項目可行性研究報告_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

以AT89S52單片機為核心的智能充電器設計與實現項目可行性研究報告目錄摘要 (.4)..關鍵詞 (.4)..Abstract (.錯誤!未定義書簽。)TOC\o"1-5"\h\zKeywords ..4)前言 ..5.)..緒論 ..5.)..課題研究的背景 ..6.)課題研究的意義 ..6.)1.2課題研究的主要工作 ..Z)2充電技術 .Z...2種電池的充電特性 .⑶2.1.1銳氫/銳鎘電池充電模式 皿.)2.1.2鋰離子電池的特點及充電方式 ..8)2.2智能充電器 ..10)2.3設計的功能模塊 ..1.0)2.3.1單片機模塊 ...10)2.3.2充電過程控制模塊 ..10)2.3.3充電電壓提供模塊 ..11)2.3.4光耦模塊 ..11)2.3.5電壓測試模塊 (.1.3)3設計方案充電過程 ..1.3)預充 (.13.)快充 (.14.)滿充 ..14.)斷電 ..14.)報警 ..14.)4鋰離子電池充電器硬件設計 ..1.5)4.1單片機電路 ..15)4.1.1AT89S52 ..16)4.2充電部分 (.1.9.)TOC\o"1-5"\h\z4.4光耦控制部分 (22)5鋰離子電池充電器軟件設計 .23)5.1程序功能 (23.)5.2程序流程圖 ..23)5.3程序代碼及說明 .25)附錄 ..59)致謝 ..61..)參考文獻 ..62.)摘要:隨著移動電話用戶數量的不斷增長,相應的電池和電池充電器需求也將會有較大的增加。電子技術的快速發(fā)展使得人們對高性能、小尺寸、重量輕的智能電池充電器的需求也越來越大。目前,使用較多的是銳鎘電池( Nicd)、銳氫電池(NiMH)和鋰離子電池。由于不同類型電池的充電特性不同,通常對不同類型,甚至不同容量等級和電壓的電池使用不同充電器,實際使用中會帶來諸多不便。于是設計一種以 AT89S52單片機為核心的智能充電器,較好地解決了上述電池的充電問題。在設計上,選擇了簡潔、高效的系統(tǒng)硬件,包括單片機電路、充電控制電路、電壓轉換及光耦隔離電路。實踐證明,設計的充電器功耗低、成本低、系統(tǒng)工作穩(wěn)定可靠,智能化程度高,具有推廣價值。關鍵詞:智能充電器;AT89S52單片機;硬件構成前言現在社會信息化的不斷加快,人們對自己使用的各種家電設備、儀表以及工業(yè)生產中的數據采集與控制設備要求很高。尤其隨著手機在世界范圍內的普及,手機電池充電器的使用越來越廣泛的時候人們對高性能、小尺寸、重量輕的智能電池充電器的需求也越來越大,所以智能充電器有它的巨大發(fā)展空間。所謂智能充電器是單片機參與處理和控制的充電器, 能根據用戶的需要自主選擇充電方式,并且在充電過程中能對被充電電池進行保護從而防止過電壓、電流和溫度過高的一種智能化充電器。該智能充電器具有檢測鋰離子電池的狀態(tài);自動切換充電模式以滿足充電電池的充電需要;充電器短路保護功能;充電狀態(tài)顯示的功能。在生活中更好的維護了充電電池,延長了它的使用壽命。因此,研究智能充電器的設計及推廣其應用,有著非常現實的意義。?單片機模塊:實現充電器的智能化控制,比如自動斷電、充電完成報警提示等。-充電過程控制模塊:采用專用的電池充電芯片實現對充電過程的控制。?充電電壓提供模塊:采用電壓轉換芯片將外部+12V電壓轉換為需要的+5V電壓該電壓在送給充電控制模塊之前還需經過一個光耦模塊。C52程序:單片機控制電池充電芯片實現充電過程的自動化,并根據充電的狀態(tài)給出有關的輸出指示。本論文從鋰離子電池技術特性、充電技術、充電器電路結構、充電器典型電路和電池保護等方面,多角度地闡述了充電技術發(fā)展和應用的智能化。緒論1.11.1課題研究的背景社會信息化進程的加快對電力、信息系統(tǒng)的安全穩(wěn)定運行提出了更高的要求。而各種用電設備都離不開可靠的電源,如果在工作中間電源中斷,人們的生產和生活都將受到不可估量的經濟損失。對于由交流供電的用電設備,為了避免出現上述不利情況,所以要設計一種電源系統(tǒng),它能不問斷地為人們的生產和生活提供以安全和操作為目的可靠的備用電源。為此,以安全和操作為目的的備用電源設備上都使用可充電池。電池是一種化學電源,是通過能量轉換而獲得電能的器件。二次電池是可多次反復使用的電池,它乂稱為可充電池或蓄電池。二次電池的工作原理:當對二次電池充電時,電能轉變?yōu)榛瘜W能,實現向負荷供電,伴隨吸熱過程。普通充電器多采用大電流的快速充電法,在電池充滿后如果不及時結束會使電池發(fā)燙,過度的充電也會嚴重損害電池的壽命。一些低成本的充電器采用電壓比較法,為了防止過充,一般充電到 90%就停止大電流快充,接著采用小電流涓流補充充電,這樣就使充電時間加長了。好的充電器不但能在短時間內將電量充足,而且對鋰電池起到一定維護作用,修復由于記憶造成的記憶效應。于是設計出的智能充電器是采用單片機控制的,可以檢測出電池充電飽和時發(fā)出的電壓變化信號,比較精確的停止充電工作,通過單片機對充電芯片的控制實現充電過程的智能化,以縮短充電時間,延長電池使用壽命。智能充電器還增加了充電電壓的顯示,讓我們能看到電池的預充、快充、滿充充電階段,從而加強對電池的維護。1.1.1課題研究的意義此課題研究的對象主要是鋰離子電池的充電原理和充電控制。 鋰離子電池的充電設備需要解決的問題有:-通過單片機的控制,簡化外圍電路的復雜性,增加自動化管理設置,減輕充電過程的勞動強度和勞動時間,從而使充電器具有更大的靈活性、更高的可靠性和成本低。-改善充電控制不合理而造成過充、欠充等問題,提高電池的使用性能和使用壽命。-可以進行充電前處理,包括電池充電狀態(tài)的鑒定和預處理。-需解決充電時間長、效率低等問題。研究課題的意義:-掌握鋰離子電池的充放電方式和特點,從中找到最佳充電方式及電池管理途徑。-完善充電設備的適時處理功能和自診斷功能。-實現充電器具備強大的功能擴展性,為智能充電器的功能升級提供平臺。1.2課題研究的主要工作本課題主要研究鋰離子電池的充放電方法,在此基礎上進行硬件設計和軟件設計,并通過調試結果對充電控制方法測試驗證。為了完成智能充電器的設計,我需做如下工作:-了解鋰離子電池的特點和在應用中存在的主要問題從而分析實現電池的充放電方法和智能充電器的實現方法,從而選擇合適的充電電池芯片。?進行硬件電路的設計,繪制充電電路原理圖。?進行軟件設計,以C語言為開發(fā)工具,進行詳細設計和編寫程序代碼。-調試硬件和軟件電路,驗證整個設計。2充電技術2.12種電池的充電特性2.1.1銳氫/銳鎘電池充電模式這2種銳類電池具有相似的充電特性曲線, 因而可以用一樣的充電算法。這2種電池的主要充電控制參數為-世和溫度9.對銳氫/銳鎘電池由預充電到標準充電轉換的判據為:①單節(jié)電池電壓水平 0.6?1V;②電池溫度-5?0oC.電池飽和充電的判據為:①電池電壓跌落或接近零增長-N=6?15mV/節(jié);②電池最高溫度Omax>50C;③電池溫度上升率d9/dt>1.0C/min。由于溫度的變化容易受環(huán)境影響,因而實際用于判別充電各階段的變量主要為-AV、即ax,其中對-國的檢測需要有足夠的A/D分辨率和較高的電流穩(wěn)定度.-ZV的測量與A/D分辨率、充電電流的穩(wěn)定性與電池內阻之間有以下關系:當電池內阻等于50Q(接近飽和充電)時,充電電流=1200mA,電流漂移等于5%,單節(jié)電池的最高充電電壓為1.58V,則此時電流漂移可能引起的電池電壓變化為3mV。2.1.2鋰離子電池的特點及充電方式鋰離子電池的正極材料通常由鋰的活性化合物組成,常見的正極材料主要成分為LiCo02,負極則是特殊分子結構的碳。充電時,加在電池兩級的電勢迫使正極化合物釋出鋰離子,嵌入在負極分子排列呈片層結構的碳中。放電時,鋰離子則從片層結構的碳中析出,重新與正極的化合物結合。于是鋰離子的移動產生了電流。重量方面:鋰離子電池為3.6V,鋰離子電池的電壓是銳氫、銳鎘電池的3倍。但鋰離子電池因端電壓為3.6V,在輸出同電池的情況下,單個電池組合時數目可減少2/3從而使成型后的電池組重量和體積都減小。自放電率:銳鎘電池為15%?30%,銳氫電池為25%?35%,鋰離子電池為2%?5%銳氫電池的自放電率最大,而鋰離子電池的自放電率最小。記憶效率:鋰離子電池很少有銳鎘電池的記憶效應,記憶效應的原理是結晶化,但在鋰電池中幾乎不會出現這種反應。鋰離子電池在幾次充電放電后容量仍然會下降,主要的原因從分子層里來看,正負極材料本身的變化,正負極上容納鋰離子的空穴結構會逐漸塌陷,堵塞;從化學角度來看,是正負極材料活性鈍化,出現副反應生成穩(wěn)定的其他化合物。在物理上還會出現正極材料逐漸剝落等情況,降低了電池中可以自由在充放電過程中移動的鋰離子數目0記憶效應一般認為是長期不正確的充電導致的,它可以使電池早衰,使電池無法進行有效的充電,出現一充就滿、一放就完的現象。嚴格遵循“充足放光”的原則,即在充電前最好將電池內殘余的電量放光,充電時要一次充足,可防止電池出現記憶效應。對于由于記憶效應而引起容量下降的電池,可以通過一次充足再一次性放光的方法反復數次,大部分電池都可以得到修復。充電方式:過度充電和過度放電,將對鋰離子電池的正負極造成永久的損壞,從分子層面看,過度放電導致負極碳過度釋放出鋰離子而使得其片層結構出現塌陷,過度充電將把太多的鋰離子硬塞進負極碳結構里去,而使得其中一些鋰離子再也無法釋放出來。這就是鋰離子電池為什么通常配有充放電的控制電路的原因。鋰離子電池以恒流轉恒壓方式進行充電。采用1C充電速率充電至4.1V時,充電器應立即轉入恒壓充電,充電電流逐漸減?。划旊姵爻渥汶姾?,進入涓流充電過程。為避免過充電或過放電,鋰離子電池不僅在內部設有安全機構,充電器也必須采取安全保護措施,以監(jiān)測鋰離子電池的充放電狀態(tài)2.2智能充電器在人們日常工作和生活中,充電器的使用越來越廣泛。從隨身聽到數碼相機,從手機到筆記本電腦,幾乎所有用到電池的電器設備都需要用到充電器。充電器為人們的外出旅行和出差辦公提供了極大的方便。隨著手機在世界范圍內的普及使用,手機電池充電器的使用也越來越廣泛。所謂智能充電器是單片機參與處理和控制,能根據用戶的需要自主選擇充電方式,并且在充電過程中能對被充電電池進行保護從而防止過電壓、 電流和溫度過高的一種智能化充電器。本課題將通過一個典型實例介紹AT89S52單片機在實現手機電池充電器方面的應用。此次設計所要實現的充電器是一種智能充電器,它在單片機的控制下,具有預充、充電保護、自動斷電、電壓顯小和充電完成報警提小功能。2.3設計的功能模塊2.3.1單片機模塊智能的實現需要利用單片機控制,經過分析后單片機芯片可以選擇 Atmel公司的AT89S52,通過中斷控制光耦器件通電和斷電。2.3.2充電過程控制模塊鋰離子電池一般都具有管理芯片和充電控制芯片。其中管理芯片中有一系歹0的寄存器,用來存儲電容容量、溫度、ID、充電狀態(tài)、放電次數等數值。這些數值在使用中會逐漸變化。充電控制芯片主要控制電池的充電過程。鋰離子電池的充電過程分為兩個階段,恒流快恒流充階段(電池指示燈呈黃色時)和恒壓電流遞減階段(電池指示燈呈綠色閃爍)快充階段,電池電壓逐步升高到電池的標準電壓,隨后在控制芯片下轉入恒壓階段,電恒流壓不再升高以確保不會過充現象,電流則隨著電池電量的上升逐步減弱到 0,而最終完成充電。電量統(tǒng)計芯片通過記錄放電曲線(電壓、電流、時間)可以抽樣計算出電池的電量。而鋰離子電池在多次使用后,放電曲線是會改變的,如果芯片一直沒有機會再次讀出完整的一個放電曲線,其計算出來的電量也就是不準確的。所以我們需要深充放來校準電池的芯片。定時電容C和充電時間Tchg的關系式滿足:C=34.33XTchg最大充電電流Imax和限流電阻Rset的關系式滿足:Imax=1400/Rset2.3.3充電電壓提供模塊由于一般家用電壓是+220V交流電壓,需要設計一個電壓轉換電路將+220V交流電壓轉換成+5V直流電壓。首先用變壓器將220V交流電壓轉換成7V交流電壓,經過橋式整流變成直流電壓,再利用電壓轉換芯片LM7805將7V直流電轉換為5V直流電壓。2.3.4光耦模塊為了在充滿電后能及時關斷充電電源,則需要引入一個光耦模塊芯片 6N137。6N137光耦合器是一款用于單通道的高速光耦合器,其內部由一個 850nm波長AlGaAsLED和一個集成檢測器組成,其檢測器由一個光敏二極管、高增益線性運放及一個肖特基鉗位的集電極開路的三極管組成。具有溫度、電流和電壓補償功能,高的輸入輸出隔離,LSTTL/TTL兼容,高速(典型為10MBd),5mA的極小輸入電流。工作參數:?最大輸入電流,低電平■:250uA?最大輸入電流,高電平■:15mA?最大允許低電平■電壓(輸出高):0.8v?最大允許高電平■電壓:Vcc?最大電源電壓、輸出:5.5V?扇質TL負載):8個(最多)?工作溫度范圍:-40Cto+85C?典型應用:高速數字開關,馬達控制系統(tǒng)和A/D轉換等6N137光耦合器的內部結構、管腳如下圖所示6N137圖16N137光耦合器6N137光耦合器的電源管腳旁應有一個0.1uF的去耦電容。在選擇電容類型時,應盡量選擇高頻特性好的電容器,如陶瓷電容或鑰電容,并且盡量靠近 6N137光耦合器的電源管腳;另外,輸入使能管腳在芯片內部已有上拉電阻,無需再外接上拉電阻。6N137光耦合器的引腳:第6腳Vo輸出電路屆丁集電極開路電路,必須上拉一個電阻;第2腳和第3腳之間是一個LED,必須申接一個限流電阻。6N137光耦合器的真值表如下:6N137光耦合器的真值輸入“+”ENOUTPUT輸入“+”ENOUTPUT1100010111NC01010NC1表16N137光耦合器的真值2.3.5電壓測試模塊該部分采用AD轉換來實現充電電壓的現實。采用中斷觸發(fā),基本原理是將一段時間內的輸入模擬電壓Ui和參考電壓UR通過兩次積分,變換成與輸入電壓平■均值成正比的時間間隔,再變換成正比丁輸入模擬信號的數字量。把模擬信號轉換成數字信號,轉換原理為:場=令(如2土心*+ 2“2。)其中,n為準換后的二進制位數,dn-i—d0為具體二進制位。Ur為參考電壓,Ua為顯示電壓。3設計方案充電過程3.1預充在安裝好電池之后,接通輸入直流電源,當充電其檢測到電池時將定時器復位,從而進入預充過程,在此期間充電器以快充電流的 10%給電池充電,使電壓、溫度恢復到正常狀體,預充電時間由外接電容C9確定,如果在預充時間內電池電壓達到2.5V,且電池溫度正常,則進入快充過程;如果超過預充時間后,電池電壓低于 2.5V,則認為電池不可充電,充電器顯示電池故障,由單片機發(fā)出故障指令, LED指示燈閃爍。3.2快充快充就是以恒定電流對電池充電,恒流充電時,電池的電壓緩慢上升,一旦電池電壓達到所設定的終止電壓時,恒流充電終止,充電電流快速遞減,充電進入滿充過程。3.3滿充在滿充過程中,充電電流逐漸遞減,直到充電速率降到設置值以下,或滿充超時時,轉入頂端截止充電,頂端截止充電時,充電器以極小的充電電流為電池補充能量,由于充電器在檢測電池電壓是否達到終止電壓時有充電電流通過電池電阻, 盡管在滿充和頂端截至充電過程中充電電流逐漸下降,減小了電池內阻和其它申聯電阻對電池端電壓的影響,但申聯在充電回路中的電阻形成的壓降仍然對電池終止電壓的檢測有影響,一股情況下,滿充和頂端截止充電可以延長電池5%?10%的使用時間。3.4斷電當電池充滿后,MAX1898芯片的2腳/CHG發(fā)送的脈沖電平會由低變高,這將會被單片機檢測到,引起單片機的中斷,在中斷中,如果判斷出充電完畢,則單片機將通過P2.O口控制光耦切斷L7805向MAX1898供電,從而保證芯片和電池的安全,同時也減小功耗。3.5報警當電池充滿后,MAX1898芯片的2引腳/CHG發(fā)送。LED燈會閃爍。但是,為了安全起見,單片機在檢測到充滿狀態(tài)的脈沖后,不僅會自動切斷MAX1898芯片的供電,而且會通過蜂鳴器報警,提醒用戶及時取出電池。4鋰離子電池充電器硬件設計4.1單片機電路單片機控制設計,電路如下圖:圖2單片機控制電路電路說明如下:P3.1腳控制發(fā)出報警聲提示。P3.0腳輸出控制光耦器件,在需要的時候可以及時關斷充電電源-外部中斷0由充電芯片MAX1898的充電狀態(tài)輸出信號經過反向后觸發(fā)

4.1.1AT89S52I124.1.1AT89S52I12345673910111213U14u1516s17uu181920apiorrVccpi.izrPl.2POOPl.3P0.1Pl.4P02Pl5P0.3Pl6P04P1?ATB9S5XP05RST/VPDP0.6P07P35RXDEA/7PPP3.irrxDP3.2HHT0P3.3/INTTPSENP3.4/T0P2.7P36/WRP&P3.7/KDP25XTAL2P2.4P23STALLP22GidP21P2040393837363534■:331302E27262524232221~圖3AT89S52AT89S52是一個低電壓,高性能CMOS8位單片機,片內含8kbytes的可反復擦寫的Flash只讀程序存儲器和256bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準 MCS-51指令系統(tǒng),片內置通用8位中央處理器和Flash存儲單元,AT89S52單片機在電子行業(yè)中有著廣泛的應用。主要功能特性:?兼汕CS51指令系統(tǒng)8kB可反復擦寫(大丁1000次)FlashROM32個雙向I/O口256x8bit內部RAM3個16位可編程定時/計數器中斷?時鐘頻率0-24MHz2個申行中斷,可編程UART申行通道2個外部中斷源,共8個中斷源2個讀寫中斷口線,3級加密位?低功耗空閑和掉電模式,軟件設置睡眠和喚醒功能-仟DIP、PQFP、TQFP及PLCC等幾種封裝形式,以適應不同產品的需求管腳說明:VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“T時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。 P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數據存儲器進行讀

寫時,P2寫時,P2口輸出其特殊功能寄存器的內容P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由丁外部下拉為低電平,P3口將輸出電流(ILL)這是由丁上拉的緣故。P3口也可作為AT89S52的一些特殊功能口,如下表2所示:管腳備選功能P3.0/RXD(申行輸入口)P3.1/TXD(申行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時器0外部輸入)P3.5T1(記時器1外部輸入)P3.6/WR(外部數據存儲器與選通)P3.7/RD(外部數據存儲器讀選通)表2P3口P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平■時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平■用丁鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用丁輸入編程脈沖。在平時, ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用丁定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。EA/VPP:當EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,EA將內部鎖定為RESET;當EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用丁施加12V編程電源(VPP)。PSEN:夕卜部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次PSEN有效。但在訪問外部數據存儲器時,這兩次有效的PSEN信號將不出現。XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。4.2充電部分該部分為設計的主核心部分,電路圖如下:

220VTRANS1J?TOUTW—GNDC77&L05nR【9C.l4VLI頒R1(C楹皆L21k|T~-p220uF/5(iV'HOOOuFfiQV220VTRANS1J?TOUTW—GNDC77&L05nR【9C.l4VLI頒R1(C楹皆L21k|T~-p220uF/5(iV'HOOOuFfiQV圖4智能充電器的主核心電路4.3充電電壓轉換,實現電路模塊如下:

圖6充電電壓轉換電路首先用變壓器將220V交流電壓轉換成7V交流電,經過橋式整流變成直流電,再利用電壓轉換芯片LM7805將7V直流電壓轉換為5V直流電壓4.4光耦控制部分,實現電路如下:圖76N137光耦控制電路充電電壓顯示,該部分其實就是一個AD轉換,原理圖如下:圖85鋰離子電池充電器軟件設計5.1程序功能單片機AT89S2052和LM7805的智能電池充電器的程序需要完成以下的功能:?通WHG信號引起INT0外中斷。?在兩次中斷中使用T0計數,判斷是否充電完畢。?如果充電完畢,則控制P1.2和P1.3引腳,輸出低電平。5.2程序流程圖智能充電器的程序流程圖簡介:外部中斷0設為邊沿觸發(fā);中斷—第一個下降沿—T0開始計數一第二次下降沿一停止T0計數—讀取T0計數器—中斷返回

開始e圖9等待外部信號輸入圖10外部中斷程序

圖11圖11定時程序5.3程序代碼及說明#include<reg52.h>相關控制#include<lcd12864.h>//lcd12864相關控制#include<DS18B20.h>#include<math.h>sbitCTRL_UP=P2A0;sbitCTRL_DOWN=P2A1;sbitADCOE=P2A6;sbitADCSTART=P2A7;sbitADCALE=P2A5;sbitADCA=P2A4;sbitADCB=P2A3;sbitPOWERKK=P1A4;#defineADCDATEP0sbitKEY1=P3A7;sbitKEY2=P3A5;sbitKEY3=P3A6;voidInitSys();//初始化系統(tǒng)voidInitInt();//初始化外部中斷voidInitTimer();// 初始化定時器,申口中斷voidSendSerialData();// 啟動并發(fā)送一組申口數據voidStartADC();//選擇通道n,開始轉換voidShowAllTime();// 顯示完整的時間unsignedcharg_myPar[15],g_CurSend;//g_t10,g_t11,g_t20,g_t21,g_t30,g_t31,g_n,g_U0,g_U1p,g_U1f,g_U2,g_U3,g_Th,g_Tm,g_Ts;參數順序bitbSerialSending;unsignedcharg_time[6];unsignedcharg_CurIn;unsignedcharcodeg_adda[]=(0,1,1,0,1};unsignedcharcodeg_addb[]={1,0,0,0,1};unsignedcharcodeg_ctrlu[]={1,1,1,0,0};unsignedcharcodeg_ctrld[]={0,1,0,1,1};unsignedcharg_tt10,g_tt11,g_tt20,g_tt21,g_tt30,g_tt31;unsignedcharCutState;bitCurTR0,Curctrlu,Curctrld;floatSqrtDuty;unsignedcharg_Percent;voidmain(){//DelayMs(10);//Delay4us(10);InitSys();DelayMs(1200);InitLCD();InitLCDshow(0);InitInt();//初始化外部中斷0InitTimer();//初始化定時器0,申口中斷bSerialSending=0;//bLinking=0;//WriteLCD(0,0x80);//DspNumber(123);StartADC();while(1)(if(KEY1==0)//充電(TR1=0;CutState=0;POWERKK=1;InitLCDshow(0);TR0=1;g_myPar[0]=g_tt10;g_myPar[1]=g_tt11;g_myPar[2]=g_tt20;g_myPar[3]=g_tt21;g_myPar[4]=g_tt10;g_myPar[5]=g_tt11;//SqrtDuty=sqrt((float)g_myPar[1]/(g_myPar[0]+g_myPar[1]));//Duty=g_myPar[0]*100/(g_myPar[0]+g_myPar[1]);TR1=1;StartADC();ShowAllTime();DelayMs(100);}elseif(KEY2==0)//放電(TR1=0;CutState=1;POWERKK=1;InitLCDshow(1);TR0=0;g_CurIn=0;CTRL_UP=1;CTRL_DOWN=0;TR1=1;StartADC();ShowAllTime();DelayMs(100);}elseif(KEY3==0)//維護(TR1=0;POWERKK=0;CutState=2;InitLCDshow(2);TR0=1;g_myPar[0]=0xff;g_myPar[1]=0xf0;g_myPar[2]=0xfe;g_myPar[3]=0x74;g_myPar[4]=0xff;g_myPar[5]=0xf2;//SqrtDuty=sqrt((float)g_myPar[1]/(g_myPar[0]+g_myPar[1]));//Duty=g_myPar[0]*100/(g_myPar[0]+g_myPar[1]);TR1=1;StartADC();ShowAllTime();DelayMs(100);}}}//初始化系統(tǒng)voidInitSys(){unsignedchari;for(i=0;i<6;i++)g_time[i]=;}ADCOE=1;ADCALE=0;ADCSTART=0;POWERKK=1;g_myPar[0]=0xff;//0x30g_myPar[1]=0x30;g_myPar[2]=0xff;g_myPar[3]=0x30;//0x30g_myPar[4]=0xff;g_myPar[5]=0x30;g_tt10=0xff;g_tt11=0x30;g_tt20=0xff;g_tt21=0x30;/*g_myPar[0]=0x80;//g_TH1g_myPar[1]=0x00;//g_TH2g_myPar[2]=0x00;//g_TH3*/g_myPar[6]=6;SqrtDuty=sqrt(0.5);//Duty=g_myPar[0]*100/(g_myPar[0]+g_myPar[1]);//初始化外部中斷voidInitInt()(IT0=1;//0/1 低電平7下跳變PX0=1;//中斷優(yōu)先級//EX0=1;//EA=1;}〃初始化定時器,申口中斷voidInitTimer()(TMOD=0x11;//使用高4位0/1/2/313位/16位/8位自動重載/雙8位TH0=(65536-49235)/256;TL0=(65536-49235)%256;PT0=1;TR0=1;//開啟定時器0ET0=1;TH1=(65536-49235)/256;TL1=(65536-49235)%256;TR1=1;//開啟定時器1ET1=1;TCLK=1;RCLK=1;TH2=0xFF;//19200bps22.1184MHz的時鐘頻率TL2=0xDC;RCAP2H=0xFF;//方式1和方式3的波特率=fosc/(32-(65535-(RCAP2H,RCAP2L))RCAP2L=0xDC;TR2=1;//ET2=1;SCON=0x50;//申口方式1,允許接收PCON=0x00;//關閉波特率加倍PS=1;//設置申口中斷為高優(yōu)先級ES=1;//開申口中斷//TH1=0xfd;// 申口通信使用定時器1,設定波特率9600//TH1=0xf3;//申口通信使用定時器1,設定波特率2400EA=1;}//開始發(fā)送申口數據voidSendSerialData(){if(!bSerialSending)bSerialSending=1;g_CurSend=0;SBUF=g_myPar[g_CurSend];g_CurSend++;}}//開始ADC轉換voidStartADC(){CurTR0=TR0;TR0=0;g_CurIn=0;ADCA=g_adda[g_CurIn];ADCB=g_addb[g_CurIn];CTRL_UP=g_ctrlu[g_CurIn];CTRL_DOWN=g_ctrld[g_CurIn];Curctrlu=CTRL_UP;Curctrld=CTRL_DOWN;ADCALE=1;ADCALE=0;ADCSTART=1;ADCSTART=0;EX0=1;}//倒序轉換unsignedcharReverse(unsignedcharnum)(unsignedchari,rtTmp;rtTmp=0x00;for(i=0;i<8;i++)(rtTmp<<=1;rtTmp|=num&0x01;num>>=1;}returnrtTmp;}//顯示完整的時間voidShowAllTime()(WriteLCD(0,0x98+4);WriteLCD(1,g_time[0]);//時WriteLCD(1,g_time[1]);WriteLCD(1,:);WriteLCD(1,g_time[2]);//分WriteLCD(1,g_time[3]);WriteLCD(1,:);WriteLCD(1,g_time[4]);WriteLCD(1,g_time[5]);}〃外部中斷0服務程序voidInt0()interrupt0{g_myPar[7+g_CurIn]=ADCDATE;g_CurIn++;if(g_CurIn<5){ADCA=g_adda[g_CurIn];ADCB=g_addb[g_CurIn];CTRL_UP=g_ctrlu[g_CurIn];CTRL_DOWN=g_ctrld[g_CurIn];ADCALE=1;ADCALE=0;ADCSTART=1;ADCSTART=0;}else(TR0=CurTR0;EX0=0;CTRL_UP=Curctrlu;CTRL_DOWN=Curctrld;}}//定時器0中斷服務程序voidTimer0()interrupt1(staticunsignedchari;staticbitj;if(j)(j=0;i++;if(i>g_myPar[6])(i=0;CTRL_UP=1;CTRL_DOWN=0;TH0=g_myPar[4];TL0=g_myPar[5];}else(CTRL_UP=1;CTRL_DOWN=1;TH0=g_myPar[2];TL0=g_myPar[3];}}else(j=1;CTRL_UP=0;CTRL_DOWN=1;TH0=g_myPar[0];TL0=g_myPar[1];}}〃定時器1中斷服務程序voidTimer1()interrupt3staticunsignedchari,j;unsignedchartemp_data[2];unsignedcharpresence,k;TH1=(65536-60730)/256;TL1=(65536-60730)%256;i++;if(i>24)//時間顯示(i=0;g_time[5]++;g_myPar[14]++;if(g_time[5]>0x39)//秒個位(g_time[5]=0x30;g_time[4]++;if(g_time[4]>0x35)//秒十位(g_time[4]=0x30;g_time[3]++;g_myPar[14]=0;g_myPar[13]++;if(g_time[3]>0x39)//分個位(g_time[3]=0x30;g_time[2]++;if(g_time[2]>0x35)//分十位(g_time[2]=0x30;g_time[1]++;g_myPar[13]=0;g_myPar[12]++;if(g_time[1]>0x33)//時個位(g_time[1]=0x30;g_time[0]++;if(g_time[0]>0x39)//時十位(g_time[0]=0x30;g_myPar[12]=0;}//時十位}//時個位WriteLCD(0,0x98+4);WriteLCD(1,g_time[0]);WriteLCD(1,g_time[1]);}//分十位WriteLCD(0,0x98+5);WriteLCD(1,:);WriteLCD(1,g_time[2]);}//分個位WriteLCD(0,0x98+6);WriteLCD(1,g_time[3]);}//秒十位}//秒個位WriteLCD(0,0x98+7);WriteLCD(1,g_time[4]);WriteLCD(1,g_time[5]);//顯示充/放電狀態(tài)j++;switch(j){case1:WriteLCD(0,0x98+2);WriteLCD(1,);WriteLCD(1,);if(presence==0)if(presence==0)WriteLCD(1,);StartADC();break;case2:WriteLCD(0,0x98+2);WriteLCD(1,.);break;case3:WriteLCD(0,0x98+2);WriteLCD(1,.);WriteLCD(1,.);break;case4:WriteLCD(0,0x98+3);WriteLCD(1,.);j=0;break;default:j=0;}presence=Init_DS18B20();WriteOneChar(0xCC);//跳過ROM匹配操作Delay4us(10);WriteOneChar(0x44);// 啟動溫度轉換}presence=Init_DS18B20();if(presence==0)(WriteOneChar(0xCC);//跳過ROM匹配操作Delay4us(10);WriteOneChar(0xBE);//讀取溫度寄存器Delay4us(10);temp_data[0]=ReadOneChar();//溫度低8位Delay4us(10);temp_data[1]=ReadOneChar();//溫度高8位if(presence==0)(if(temp_data[1]==0xff)presence=1;}}if(g_CurIn==5)(for(k=0;k<5;k++)(g_myPar[7+k]=Reverse(g_myPar[7+k]);}g_Percent=g_myPar[7+2]*1.56-48;//(U1f-4.8)/10*100if(g_Percent>100)g_Percent=0;if(CutState==0)//充電模式(g_tt10=(65536-5*(105-g_Percent))/256;g_tt11=(65536-5*(105-g_Percent))%256;g_tt20=(65536-5*(5+g_Percent))/256;g_tt21=(65536-5*(5+g_Percent))%256;g_myPar[0]=g_tt10;g_myPar[1]=g_tt11;g_myPar[2]=g_tt20;g_myPar[3]=g_tt21;g_myPar[4]=g_tt10;g_myPar[5]=g_tt11;}SqrtDuty=sqrt(1-g_Percent/100.0);//Duty=g_myPar[0]*100/(g_myPar[0]+g_myPar[1]);g_CurIn=0;}if(CutState==2)//維護(WriteLCD(0,0x90);DspNumber(g_myPar[7+2

溫馨提示

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

評論

0/150

提交評論