




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
太陽能充放電控制器設計摘要太陽能光伏發(fā)電現(xiàn)已成為新能源和可再生能源的重要組成局部,也被認為是當前世界最有開展前景的新能源技術(shù)。目前太陽能光伏發(fā)電裝置已廣泛應用于通訊,交通,電力等各個方面,其核心局部就是充電控制器。本設計針對目前市場上傳統(tǒng)充電控制器對蓄電池的充放電控制不合理,同時保護也不夠充分,使得蓄電池的壽命縮短這種情況,研究確定了一種基于單片機的太陽能充電控制器的方案。在太陽能對蓄電池的充放電方式、控制器的功能要求和實際應用方面做了一定分析,完成了硬件電路設計和軟件編制,實現(xiàn)了對蓄電池的高效率管理。在總體方案的指導下,本設計使用低功耗、高性能,超強抗干擾的STC89C52單片機作為核心器件對整個電路進行控制。系統(tǒng)硬件電路由太陽能電池充放電電路,電壓采集和顯示電路,單片機控制電路和RS232串口通信電路組成,主要實現(xiàn)對蓄電池電壓的采集和顯示。軟件局部依據(jù)PWM〔PulseWidthModulation〕脈寬調(diào)制控制策略,編制程序使單片機輸出PWM控制信號,通過控制光電耦合器通斷進而控制MOSFET管開啟和關(guān)閉,到達控制蓄電池充放電的目的,同時按照功能要求實現(xiàn)了對蓄電池過充、過放保護和短路保護。實驗說明,該控制器性能優(yōu)良,可靠性高,可以時刻監(jiān)視太陽能電池板和蓄電池狀態(tài),實現(xiàn)控制蓄電池最優(yōu)充放電,到達延長蓄電池的使用壽命。關(guān)鍵詞:充電控制器;太陽能光伏發(fā)電;PWM脈寬調(diào)制;AbstractSolarphotovoltaicpowergenerationhasbecomeanimportantpartofnewenergyandrenewableenergy,itisconsideredthecurrentworld'smostpromisingnewenergytechnologies.Atpresentsolarphotovoltaicdevicehasbeenwidelyusedincommunications,transport,electricityandotheraspects,thecorepartisthechargecontroller.Theconventionalchargecontrolleronthemarkettodayonthebatterychargeanddischargecontrolisunreasonable,anditsprotectionisalsoinadequate,whichsmakesthebatterylifetoshorten.Tosolvethisproblem,thedesignidentifiesasolarchargecontrollerbasedonsinglechipsolution.Inthesolarenergytobatterychargeanddischargemeans,thecontrollerofthefunctionalrequirementsandthepracticalapplicationaspects,makingsomeanalysis,completedthehardwarecircuitdesignandsoftwaredevelopment,toachievethehighefficiencyofthebatterymanagement.Undertheguidanceoftheoverallprogram,thedesignuseslow-power,highperformance,superanti-jammingSTC89C52microcontrollerasacoredevicetocontroltheentirecircuit.Hardwarecircuitconsistsofasolarbatterycharginganddischargingcircuit,voltageacquisitionanddisplaycircuit,theMCUcontrolcircuitandRS232serialcommunicationcircuit,themainachievementoftheacquisitionanddisplaybatteryvoltage.SoftwareisbasedinpartonPWM(PulseWidthModulation)pulsewidthmodulationcontrolstrategy,programmingthemicrocontrolleroutputPWMcontrolsignal,bycontrollingthephotocoupleron-offthecontrolMOSFETopeningandclosing,tocontrolbatterycharginganddischargingpurposes,andinaccordancewiththefunctionalrequirementsimplementedthebatteryovercharge,overdischargeprotectionandshortcircuitprotection.Experimentsshowthatthecontrollerperformance,highreliability,canalwaysmonitorthestateofsolarpanelsandbatteriestoachieveoptimalcontrolofbatterychargeanddischarge,toprolongbatterylife.Keywords:chargecontroller;solarphotovoltaic;PWMpulsewidthmodulation;目錄1緒論圖3-2STC89C52引腳圖這里僅詳細介紹編程引腳:〔1〕RST:復位輸入。晶振工作時,RST引腳持續(xù)2個機器周期高電平將使單片機復位。看門狗計時完成后,RST腳輸出96個晶振周期的高電平。特殊存放器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認狀態(tài)下,復位高電平有效?!?〕ALE/:地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。在flash編程時,此引腳()也用作編程輸入脈沖。在一般情況下,ALE以晶振六分之一的振蕩頻率輸出脈沖,可作為外部定時器或時鐘使用。如果需要,通過將地址為8EH的SFR的第0位置“1〞,ALE操作將無效。這一位置“1〞,ALE僅在執(zhí)行MOVX或MOVC指令時有效。否那么,ALE將被微弱拉高。這個ALE使能標志位(地址為8EH的SFR的第0位)的設置對微控制器處于外部執(zhí)行模式下無效?!?〕:外部程序存儲器選通信號()是外部程序存儲器選通信號。當STC89C52從外部程序存儲器執(zhí)行外部代碼時,在每個機器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時,將不被激活。〔4〕/VPP:訪問外部程序存儲器控制信號。為使能從0000H到FFFFH的外部程序存儲器指令,必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應該接VCC。在flash編程期間,也接收12伏Vpp電壓。單片機的最小系統(tǒng)及擴展電路單片機是系統(tǒng)的主控芯片,為了使整個電路得到很好的控制,首先必須構(gòu)建最小系統(tǒng)是單片機可以工作起來。本設計單片機最小系統(tǒng)擴展電路包括上電復位電路,時鐘電路,工作指示燈和蜂鳴器報警電路等?!?〕時鐘電路單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,此放大器的輸入端和輸出端分別是引腳XTAL1和XTAL2,在XTAL1和XTAL2上外接時鐘源即可構(gòu)成時鐘電路,CPU的所有操作均在時鐘脈沖同步下進行。片內(nèi)振蕩器的振蕩頻率非常接近晶振頻率,一般多在1.2MHz~12MHz之間選取。時鐘電路如圖3-3所示。電路中C6、C7是反響電容,其值在5pF~30pF之間選取,本電路選用的電容為30pF,晶振頻率為11.0952MHz。圖3-3時鐘電路 圖3-4復位電路〔2〕復位電路復位是單片機的初始化操作。其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當由于程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需按復位鍵重新啟動。單片機的復位電路如圖3-4所示。本系統(tǒng)采用的是上電+電平按鈕復位,上電復位是通過外部復位電路的電容充電來實現(xiàn)的。按鈕復位是當按鈕按下后,電源通過電阻R14施加到復位端上,實現(xiàn)單片機復位。復位電路雖然簡單,但其作用非常重要。一個單片機系統(tǒng)能否正常運行,首先要檢查是否能復位成功。初步檢查可用示波器探頭監(jiān)視RST引腳,按下復位鍵,觀察是否有足夠幅度的波形輸出(瞬時的),還可以通過改變復位電路電阻和電容值進行實驗?!?〕工作狀態(tài)指示燈電路本設計可以時刻檢測蓄電池電壓,為了更好的進行監(jiān)控,要對整個電路的工作狀態(tài)進行指示,這是很有必要的。工作狀態(tài)指示燈電路如圖3-5所示。其中LED1為正常充電指示燈,LED2為過壓指示燈,LED3為欠壓指示燈。串聯(lián)的電阻的目的是為了限制通過發(fā)光二極管的電流太大而將其燒毀。圖3-5工作狀態(tài)指示燈電路 圖3-6蜂鳴器報警電路〔4〕蜂鳴器報警電路報警電路采用蜂鳴器來發(fā)出報警聲音,由于STC89C52輸出引腳的驅(qū)動能力較弱,所以蜂鳴器要加三極管進行驅(qū)動。在對蓄電池電壓實時監(jiān)測的過程中,一旦發(fā)現(xiàn)檢測電壓值連續(xù)超出閾值范圍,便啟動自身報警電路,即當電壓超過程序設定的最高值或最低值時,單片機的P2.6引腳(beep端)輸出低電平,三極管隨之導通,驅(qū)動蜂鳴器發(fā)出報警信號。蜂鳴器報警電路圖如圖3-6所示。3.3充放電電路充放電電路如圖3-7所示,電路由防反充二極管D1、濾波電容C4和C5、穩(wěn)壓管D2、續(xù)流二極管D3、MOSFET管Q1和Q2等構(gòu)成。二極管D1是為了防止反充,當陰天或晚上蓄電池的電壓高于太陽能電池板的電壓時,D1就生效,可以防止蓄電池電流流向太陽能電池板。分析可知,通過控制MOSFET管閉合和斷開的時間〔即PWM—脈沖寬度調(diào)制〕,就可以控制輸出電壓。所使用的MOSFET是電壓控制單極性金屬氧化物半導體場效應晶體管,所需驅(qū)動功率較小。而且MOSFET只有多數(shù)載流子參與導電,不存在少數(shù)載流子的復合時間,因而開關(guān)頻率可以很高,非常適合作控制充放電開關(guān)。設計中采用IRL2703-N溝道MOSFET管,N溝道MOSFET的導通電壓Vth>0。當光耦U2斷開時,由于Q1的G極電壓接近蓄電池電壓,S極是接地,使得Vgs>0,當G極電壓到達一定值時,Q1導通。電容C4是太陽能電池板輸出電壓濾波,使得更穩(wěn)定地給蓄電池充電。電容C5是對蓄電池輸出電壓進行濾波,以保證負載供電電路的穩(wěn)定性。圖中穩(wěn)壓管D2用來對蓄電池進行穩(wěn)壓作用。當用戶將蓄電池反接至控制器時,續(xù)流二極管D3可以進行續(xù)流,從而保護控制器不被毀壞。圖3-7充放電電路按程序設計當檢測到蓄電池的電壓低于12V,充電模式為均充,Q1為完全導通狀態(tài),也就是導通的脈沖占空比最大;當檢測到蓄電池的電壓在12V-14.5V,充電模式為浮充,Q1導通與不導通的占空比例變小,;當檢測到蓄電池的電壓等于15V左右,Q1截止使充電停止,同時Q2也關(guān)閉來關(guān)斷負載。當檢測到蓄電池的電壓低于10.8V,Q2關(guān)閉停止放電,關(guān)斷負載來實現(xiàn)欠壓關(guān)斷。3.4光耦驅(qū)動電路為了增加系統(tǒng)的可靠性,本設計用光電耦合器實現(xiàn)單片機控制電路和充放電電路的隔離。光耦驅(qū)動電路如圖3-8所示。M0S管Q1控制著充電電路,當充電控制信號PWM為低電平時,光耦內(nèi)部的發(fā)光二極管的電流近似為零,右側(cè)三極管不導通,輸出端兩管腳間的電阻很大,相當于開關(guān)“斷開〞,輸出端K1被抬高,電阻R9右側(cè)被穩(wěn)壓管D2穩(wěn)壓到12V左右,MOSEFT的Vgs>0,MOS管Q1開啟,太陽能極板開始對蓄電池充電;當充電控制器信號為高電平時,光耦內(nèi)部的發(fā)光二極管發(fā)光,三極管導通,輸出端兩管腳間的電阻變小,相當于開關(guān)“接通〞,此時從U2輸入的電壓經(jīng)光耦流向接地端,K1處的電壓接近為零,MOSEFT的Vgs<0,Q1截止,充電電路關(guān)斷。這就是充電電路原理。M0S管Q2控制著放電電路,其原理與Q1相似。圖3-8光耦驅(qū)動電路3.5A/D轉(zhuǎn)換電路本系統(tǒng)設計的STC89C52單片機沒有內(nèi)置的A/D轉(zhuǎn)換模塊,因此需要先采集蓄電池的電壓,然后經(jīng)A/D轉(zhuǎn)換才可接入單片機。市場中集成的A/D轉(zhuǎn)換器品種很多,選用時需要綜合考慮各種因素進行選取。一般逐次比較型A/D轉(zhuǎn)換器用到較多,本設計采用8位并行A/D轉(zhuǎn)換器芯片ADC0804。因為蓄電池電壓的采集轉(zhuǎn)換在系統(tǒng)中極為重要,所以下面對所選ADC0804芯片及在本系統(tǒng)中是典型連接電路予以介紹。3.5.1AD轉(zhuǎn)換就是模數(shù)轉(zhuǎn)換,顧名思義,就是把模擬信號轉(zhuǎn)換成數(shù)字信號。AD轉(zhuǎn)換器最主要的技術(shù)參數(shù)是轉(zhuǎn)換速度和轉(zhuǎn)換精度,由于逐次比較型兼有并行A/D轉(zhuǎn)換器轉(zhuǎn)換速度高和雙積分型轉(zhuǎn)換精度高的優(yōu)點,所以得到普遍應用。ADC0804就是這類集成A/D轉(zhuǎn)換器。ADC0804為一只具有20引腳并行8位CMOS工藝逐次比較型的集成A/D轉(zhuǎn)換器,其規(guī)格如下:(1)高阻抗狀態(tài)輸出,分辨率:8位(0~255)(2)存取時間:135us;轉(zhuǎn)換時間:100us(3)總誤差:正負1LSB(4)工作溫度:0度~70度;(5)模擬輸入電壓范圍:0V~5V(6)參考電壓:2.5V;工作電壓:5V(7)輸出為三態(tài)結(jié)構(gòu),可直接連接在數(shù)據(jù)總線上。ADC0804引腳圖如圖3-9所示,其各個引腳的功能:—芯片片選信號輸入端,低電平有效,一旦有效,說明A/D轉(zhuǎn)換器別選中,可啟開工作?!獠孔x取轉(zhuǎn)換結(jié)果的控制輸出信號。為1時,DB0~DB7處理高阻抗:為0時,數(shù)字數(shù)據(jù)才會輸出?!脕韱愚D(zhuǎn)換的控制輸入,相當于ADC的轉(zhuǎn)換開始〔=0時〕,當由1變?yōu)?時,轉(zhuǎn)換器被去除:當回到1時,轉(zhuǎn)換正式開始。圖3-9ADC0804引腳圖CLKIN—時鐘信號輸入端CLKR:內(nèi)部時鐘發(fā)生器的外接電阻端,與CLK配合可有芯片自身產(chǎn)生時鐘脈沖,其振蕩頻率為1/〔1.1RC〕—中斷請求信號輸出,端,低地平動作.,說明本次轉(zhuǎn)換已完成。VIN(+)VIN(-)——差動模擬電壓輸入。輸入單端正電壓時,VIN(-)接地:而差動輸入時,直接參加VIN(+)VIN(-).AGND,DGND——模擬信號以及數(shù)字信號的接地.VREF/2—參考電平輸入,決定量化單位。DB0~DB7—三態(tài)特性數(shù)字信號輸出端.VCC:電源供給以及作為電路的參考電壓.ADC0804外圍接線電路〔1〕電壓采集電路如圖3-10所示,電壓采集電路使用兩個串聯(lián)的電阻,大小比例為2:1,然后并聯(lián)在需要檢測的電壓兩端,從兩個電阻中間采集電壓。由分壓公式得出采集的電壓為ADIN,當蓄電池充滿電時電壓大概為14.5V,計算出采集到的電壓為4.8V,符合A/D轉(zhuǎn)換芯片的ADC0804的輸入值。圖3-10電壓采集電路〔2〕ADC0804構(gòu)成的典型A/D轉(zhuǎn)換電路圖3-11按照芯片手冊中ADC0804的典型接法,系統(tǒng)中設計的A/D轉(zhuǎn)換電路如3-11所示。單片機的P2.7引腳,用來實現(xiàn)片選;、分別接單片機的P3.6和P3.7引腳,進行讀寫控制;CLK、CLKR、GND之間用電阻和電容構(gòu)成RC振蕩電路,用來給ADC0804提供工作所需的脈沖。蓄電池的電壓采集信號ADIN從6腳引入,在內(nèi)部采集轉(zhuǎn)換后,從數(shù)字輸出端輸出到單片機的P1口,通過讀P1口數(shù)據(jù),便可以得到蓄電池的電壓,實現(xiàn)實時在線檢測。3.6LCD顯示電路液晶具有體積小、功耗低,顯示清晰的優(yōu)點,所以比較適合作顯示使用。為了更好的顯示電壓值,同時擴展自己學習芯片的能力,本設計用液晶1602來顯示蓄電池的電壓值。在使用1602之前,我們首先查閱其使用手冊,對其進行一定的了解。從芯片手冊中,可以得到1602液晶的主要技術(shù)資料,如表3-1所示,通過此表我們可以知道1602工作電壓和顯示容量,可以驗證設計選擇的是否適宜。表3-11602的主要技術(shù)參數(shù)顯示容量162個字符芯片工作電壓4.5~5.5V工作電流2.0mA〔5.0V〕模塊最正確工作電壓5.0V字符尺寸2.954.35〔WH〕mm顯然,1602液晶可以滿足要求,接下來介紹其各個引腳的功能,為后面設計電壓顯示電路做準備。1602引腳功能如表3-2所示。表3-21602引腳功能表引腳符號名稱功能1Vss接地0V2VDD電路電源5V±10%3VO液晶顯示比照度調(diào)節(jié)端用于調(diào)節(jié)比照度4RS存放器選擇信號H:數(shù)據(jù)存放器L:指令存放器5R/W讀/寫信號H:讀
L:寫6E片選信號下降沿觸發(fā),鎖存數(shù)據(jù)7-14DB0-DB7數(shù)據(jù)線數(shù)據(jù)傳輸圖3-12電壓顯示電路根據(jù)1602的技術(shù)參數(shù)和引腳功能,1602與單片機連接構(gòu)成的電壓顯示電路如圖3-12所示。EN使能端接單片機的P2.2引腳,用來實現(xiàn)片選;RS接單片機P2.0引腳,進行數(shù)據(jù)和命令選擇;R/W接單片機P2.1引腳,進行讀寫控制;為防止直接加5V電壓燒壞背光燈,在15腳串接一個10的電阻用于限流。液晶3端通過接一個10K電位器接地來調(diào)節(jié)顯示比照度。數(shù)據(jù)輸入端D0-D7接單片機的P0口用于電壓數(shù)據(jù)的傳送。3.7E2PROM數(shù)據(jù)存儲電路為了把電路發(fā)生異常時的蓄電池電壓記錄下來,需要用存儲芯片進行數(shù)據(jù)保存。假設采用普通存儲器,在掉電時需要備用電池供電,并需要在硬件上增加掉電檢測電路,但存在電池不可靠及擴展芯片占用單片機過多口線的缺點。為了解決這一難題,本設計采用具有I2C總線接口的串行E2PROM器件,這里選擇AT24C02芯片。AT24CAT24C02是一個2K位串行CMOSE2PROM,內(nèi)部含有256個字節(jié),采用先進CMOS技術(shù)實質(zhì)上減少了器件的功耗。AT24C02內(nèi)部有一個8字節(jié)頁寫入數(shù)據(jù)緩沖器。該器件通過I2C總線接口進行操作,有一個專門的寫保護功能。為了更好的使用AT24C02,首先來介紹其各個引腳功能,如表3-3所示表3-3AT24C02管腳描述管腳名稱功能A0A1A可編程地址輸入端SDA串行數(shù)據(jù)/地址SCL串行時鐘WP寫保護Vcc電源端,+1.8V~6.0V工作電壓GND地I2C串行總線一般有兩根信號線,一根是雙向的數(shù)據(jù)線SDA,另一根是時鐘線SCL。所有接到I2C總線設備上的串行數(shù)據(jù)SDA都接到總線的SDA上,各設備的時鐘線SCL接到總線的SCL上。根據(jù)各引腳的功能,依據(jù)總線系統(tǒng)的典型硬件連接圖,AT24C02與單片機連接構(gòu)成的數(shù)據(jù)存儲電路如圖3-13所示。圖3-13數(shù)據(jù)存儲電路3.8串口通信電路隨著單片機系統(tǒng)的廣泛應用和計算機網(wǎng)路技術(shù)的普及,單片機的通信功能愈來愈顯得重要。單片機通信是指單片機與計算機或單片機與單片機之間的信息交換,不過通常使用的是單片機與計算機之間的通信。通信有并行和串行兩種方式。由于并行通信存在使用傳輸線較多,長距離傳送本錢高且收、發(fā)方的各位同時接受存在困難等諸多問題,所以在現(xiàn)代單片機測控系統(tǒng)中,信息的交換多采用串行通信方式。本設計中參加串行通信電路的目的主要有三個:一是方便給單片機下載程序;二是使控制器具有遠程通信或遠程監(jiān)控的功能;三是將控制器每天采集到數(shù)據(jù)的極限值和發(fā)生異常狀態(tài)時的數(shù)據(jù)記錄下來,供用戶查看。由于單片機的電平和計算機電平不兼容,設計中采用MAX232芯片進行TTL電平和RS-232電平之間的轉(zhuǎn)換。而且系統(tǒng)采用易于實現(xiàn)的異步串行通信方式,用最簡單也最實用的奇偶校驗作為串行通信錯誤校驗方式。MAX232芯片是專門為電腦的RS-232標準串口設計的單電源電平轉(zhuǎn)換芯片,使用+5v單電源供電。其主要特點:〔1〕符合所有的RS-232C技術(shù)標準〔2〕只需要單一+5V電源供電〔3〕片載電荷泵具有升壓、電壓極性反轉(zhuǎn)能力,能夠產(chǎn)生+10V和-10V電壓V+、V-〔4〕功耗低,典型供電電流5mA〔5〕內(nèi)部集成2個RS-232C驅(qū)動器〔6〕內(nèi)部集成兩個RS-232C接收器〔7〕高集成度,片外最低只需4個電容即可工作。了解芯片的主要特點之后,接下來我們來認識MAX232它的各個引腳的功能,即有什么作用,以更好地設計串口通信電路。其引腳圖如圖3-14所示。第一局部是電荷泵電路。由1、2、3、4、5、6腳和4只電容構(gòu)成。功能是產(chǎn)生+12v和-12v兩個電源,提供給RS-232串口電平的需要。第二局部是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個數(shù)據(jù)通道。其中13腳〔R1IN〕、12腳〔R1OUT〕、11腳〔T1IN〕、14腳〔T1OUT〕為第一數(shù)據(jù)通道。8腳〔R2IN〕、9腳〔R2OUT〕、10腳〔T2IN〕、7腳〔T2OUT〕為第二數(shù)據(jù)通道。TTL/CMOS電平從T1IN、T2IN輸入轉(zhuǎn)換成RS-232電平從T1OUT、T2OUT送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。第三局部是供電。15腳GND、16腳VCC〔+5v〕圖3-14MAX232的引腳圖按照串行通信原理,根據(jù)RS-232串口協(xié)議和MAX232芯片的引腳功能,結(jié)合STC89C52單片機串行中斷方式,本設計采用串口方式1〔10位數(shù)據(jù)的異步通信〕來構(gòu)建串口通信電路。電路如下列圖3-15所示。設計中T1IN連接CMOS電平的單片機的串行發(fā)送端;T1OUT連接電腦的RS-232C串口的接收端PCRXD;同理,R1IN連接電腦的RS-232C串口的發(fā)送端PCTXD;R1OUT連接CMOS電平的單片機的串行接收端。當然單片機和DB9要共地,這是實現(xiàn)串行通信的前提條件。圖3-15串口通信電路本章對充放電控制器的原理以及具體的硬件實現(xiàn)電路進行了詳細的介紹,并對電路中使用到的芯片也予以描述,使讀者通過閱讀可以清晰的明白控制器的設計思路和實現(xiàn)過程。4太陽能充電控制器的軟件設計軟件設計采用C語言來實現(xiàn),受C語言模塊化編程設計思想的啟發(fā),本系統(tǒng)軟件設計采用模塊化設計思路,即整個控制軟件由許多獨立的子程序〔子函數(shù)〕模塊組成,它們之間通過函數(shù)調(diào)用實現(xiàn)連接。既便于調(diào)試,連接,又便于移植、修改。系統(tǒng)軟件主要完成蓄電池電壓采集轉(zhuǎn)換,PWM脈沖充電控制、實時LCD顯示,異常報警等。包括以下幾局部:系統(tǒng)主程序設計,電壓采集轉(zhuǎn)換模塊,顯示模塊和異常數(shù)據(jù)存儲模塊。4.1系統(tǒng)主程序設計系統(tǒng)主程序流程圖如圖4-1所示。圖4-1系統(tǒng)主程序流程圖系統(tǒng)主程序是整個電壓測控系統(tǒng)中最重要的程序,是一個順序執(zhí)行的無限循環(huán)程序。蓄電池電壓的采集、轉(zhuǎn)換顯示和異常數(shù)據(jù)的存儲都在測控子程序中進行,系統(tǒng)應用主程序采用模塊化結(jié)構(gòu),首先完成初始化,然后就開始按順序調(diào)用各個模塊子程序,通過系統(tǒng)自檢和控制指令來實現(xiàn)數(shù)據(jù)處理和電路控制,有效的控制蓄電池充放電。4.2電壓采集轉(zhuǎn)換模塊為了更好理解模數(shù)轉(zhuǎn)換器的對蓄電池電壓采集轉(zhuǎn)換過程,下面首先對ADC0804的啟動和讀取時序圖予以介紹。時序圖如圖4-2所示。圖4-2ADC804時序圖如圖,當CS與WR同時置低,為低電平時,A/D轉(zhuǎn)換器被啟動,且在WR上升沿后,經(jīng)過約100uS后,模數(shù)完成轉(zhuǎn)換,轉(zhuǎn)換結(jié)果存入數(shù)據(jù)鎖存器,同時,INTR自動變?yōu)榈碗娖?,表示本次轉(zhuǎn)換已結(jié)束。在INTR變?yōu)榈碗娖胶?,假設CS、RD同時來低電平,那么數(shù)據(jù)鎖存器的三態(tài)門翻開,把數(shù)字信號送出,此時直接讀取數(shù)字端口數(shù)據(jù),便可得到轉(zhuǎn)換后的數(shù)字信號。反之,假設RD為高電平,三態(tài)門處于高阻狀態(tài),數(shù)據(jù)被鎖存。芯片的時序圖是對芯片的操作的關(guān)鍵依據(jù)。按照ADC0804芯片的時序圖,此模塊通過對其進行啟動和讀取操作,主要來完成對蓄電池電壓的采集轉(zhuǎn)換,并對結(jié)果進行數(shù)據(jù)處理,送給后面的顯示模塊予以顯示。由于ADC0804的轉(zhuǎn)換時間很短,本設計未用中斷讀取A/D的數(shù)據(jù),而是在啟動A/D轉(zhuǎn)換后,稍等一會時間〔程序中用延時函數(shù)實現(xiàn)〕,直接讀取A/D的數(shù)字輸出口即可。軟件設計中AD轉(zhuǎn)換模塊的流程圖如圖4-3所示。圖4-3A4.3顯示模塊通過電壓采集轉(zhuǎn)換子程序,通過單片機處理就可以得到蓄電池的實際電壓值,本設計用液晶1602作顯示器來進行顯示。液晶1602通常用并行操作,作為一款顯示芯片,為了使其能夠正常的工作,首先必須對其進行初始化,然后按照其時序圖進行正確操作,才能夠得到滿意的顯示效果,這就是軟件設計中顯示模塊的任務。下面就1602的初始化指令和操作時序進行介紹。液晶1602的初始化,是讓其正確顯示的前提,其初始化通常如下:EN=0;首先關(guān)閉使能,防止開始時顯示亂碼,同時為以后高脈沖寫入數(shù)據(jù)做準備。write_com(0x38);//設置16X2顯示,5X7點陣,8位數(shù)據(jù)接口write_com(0x0c);//設置開顯示,不顯示光標write_com(0x06);//寫一個字符后地址指針加1write_com(0x01);//顯示清零,數(shù)據(jù)指針清零了解液晶1602的根本操作時序,讀懂其操作時序圖,是對其讀寫操作的關(guān)鍵。1602的根本時序如下:讀狀態(tài)輸入:RS=L, =H,E=H 輸出:DO~D7=狀態(tài)字讀數(shù)據(jù)輸入:RS=H, =H,E=H 輸出:無寫指令輸入:RS=L,=L,DO~D7=指令碼,E=H高脈沖輸出:DO~D7=狀態(tài)字寫數(shù)據(jù)輸入:RS=H,=L,DO~D7=數(shù)據(jù),E=H高脈沖 輸出:無作為顯示用的芯片,通常對其進行寫操作,1602液晶寫操作時序圖如圖4-4所示。圖4-41602液晶寫操作時序圖分析時序圖可知,對1602液晶進行寫操作的流程如下:〔1〕通過RS確定是寫數(shù)據(jù)還是寫操作,寫命令包括使液晶的光標顯示/不顯示、光標是否閃爍、需/不需要移屏、在液晶的什么位置顯示,等等。寫數(shù)據(jù)是指要顯示什么內(nèi)容?!?〕讀/寫控制端設置為寫模式,即低電平?!?〕將數(shù)據(jù)或命令送到達數(shù)據(jù)線上?!?〕給使能端E一個高脈沖將數(shù)據(jù)送入到液晶控制器,完成寫操作。關(guān)于時序圖中的各個延時,不同廠家生產(chǎn)的液晶延時不同,不過大多數(shù)根本為納秒級,而單片機操作最小單位為微秒級,因此在寫程序是可不做延時,不過為了使液晶運行穩(wěn)定,最好做簡短延時即可。本設計采用C51庫中自帶的延時函數(shù)_nop_〔〕〔延時一個機器周期的意思〕來實現(xiàn)簡短延時。按照1602液晶的寫操作時序圖,結(jié)合硬件連接電路,軟件設計中電壓顯示模塊的流程圖如圖4-5所示。圖4-5電壓顯示流程圖4.4數(shù)據(jù)存儲模塊在對蓄電池充放電控制過程中,會出現(xiàn)電壓值過高或過低的異常情況,很有必要對其進行存儲,作為以后分析優(yōu)化使用;同時我們可以按一定周期間隔性的對蓄電池電壓進行采集,然后求取電壓的平均值,通過分析每天的平均值情況,可以大致了解蓄電池的充電情況,這對以后優(yōu)化充放電很有用。本設計用常見E2PROM器件AT24C02作為存儲器對數(shù)據(jù)進行保存記錄。AT24C02芯片的優(yōu)點:采用總線標準,串行操作,可以簡化硬件電路;同時具有很好的掉電保護功能。由于STC89C52單片機沒有總線接口,所以使用時要先通過軟件模擬總線的工作時序,正確的調(diào)用函數(shù)就可方便的擴展總線接口部件??偩€模擬時序圖如圖4-6所示。圖4-6總線模擬時序圖按照時序圖,設計中為了模擬總線通信,寫出了幾個關(guān)鍵局部的程序:總線初始化、啟動信號、應答信號、停止信號等。下面以啟動信號為例進行介紹。啟動信號的程序如下:在SCL為高電平期間,SDA一個下降沿為啟動信號。voidstart()//啟動信號{ sda=1;delay1(); scl=1;delay1(); sda=0;delay1();}作為存儲芯片最重要的是對其進行寫操作,下面將給出總線發(fā)送一個字節(jié)的流程圖如圖4-7所示。并根據(jù)AT24C02字節(jié)寫入方式,結(jié)合總線時序圖,軟件中實現(xiàn)異常數(shù)據(jù)存儲的流程圖如圖4-8所示。圖4-7發(fā)送字節(jié)流程圖圖4-8異常數(shù)據(jù)存儲流程圖當檢測蓄電池充電使電壓值超過14.5v造成過充電時,首先蜂鳴器報警,標志位置1,然后調(diào)用數(shù)據(jù)存儲函數(shù)把此時刻的電壓值保存下來;當發(fā)生過放電時,同理如此。由于單片機的處理速度很快,因此很容易實現(xiàn)循環(huán)檢測,做到對蓄電池狀態(tài)的實時監(jiān)控。4.5軟件調(diào)試和仿真為了檢驗自己設計的單片機系統(tǒng)是否可以正常工作以及設計合理性,很有必要對系統(tǒng)進行模擬仿真。通過仿真可以看出系統(tǒng)硬件設計的不合理局部,以方便改善使得系統(tǒng)更加合理;同時更重要的是驗證自己編寫的軟件程序是否已經(jīng)實現(xiàn)其功能,完成了相應的設計要求和設計任務。軟件調(diào)試的過程:首先根據(jù)太陽能充電控制器軟件設計要完成的設計任務,然后按照C語言模塊化設計的編程方法,設計出各個子模塊和主程序的算法流程圖,最后在KEILC51中去編寫相應的程序去實現(xiàn)。當然在編寫程序進行軟件實現(xiàn)過程中,遇到的第一個問題就是:程序的調(diào)試。程序編寫后,進行編譯,一開始發(fā)現(xiàn)了很多錯誤,一下子把自己卡住了;后來通過查看相關(guān)資料,同時咨詢指導老師和同學的經(jīng)驗,,在軟件的提示下,慢慢地修改,最終把出現(xiàn)的錯誤都改正過來了。最終在顯示輸出信息窗口出現(xiàn)了一下信息:Buildtarget'Target1' //創(chuàng)立目標'Target1'compiling控制器移屏.c... //編譯文件控制器移屏.c…linking...//鏈接….ProgramSize:data=21.1xdata=0code=1572//工程大?。捍鎯臻gRAM和ROM的數(shù)據(jù)存儲量creatinghexfilefrom"充放電控制器"...//創(chuàng)立了十六進制的目標文件"充放電控制器"-0Error(s),0Warning(s).//工程“充放電控制器〞,編譯結(jié)果-0個錯誤,0個警告。當看到這個信息時,我很沖動,知道自己編寫的程序終于調(diào)試成功了。通過編寫和調(diào)試程序,深深的體會到了程序編寫的不易和艱辛,同時積累了很多的經(jīng)驗,收益匪淺。更十分地感謝我的同學和指導老師的無私幫助,是在他們的指導下,我才把程序調(diào)試無誤完成了軟件調(diào)試工作。程序調(diào)試成功后,下一步就是軟件仿真,是檢驗程序運行是否正確的關(guān)鍵所在,更是優(yōu)化系統(tǒng)所必須的。Proteus軟件為單片機系統(tǒng)提供了良好的仿真環(huán)境,所以程序調(diào)試完成后,把在KEIL中生成的目標文件HEX文件,下載在仿真系統(tǒng)的單片機中,進行KEIL和proteus聯(lián)合調(diào)試,看系統(tǒng)是否能正常工作。和自己當初預料的一樣,在剛開始仿真時,遇到了許多的問題,如1602液晶不顯示,系統(tǒng)工作狀態(tài)指示燈指示狀態(tài)不正確等等,調(diào)試很久找不到關(guān)鍵所在。無奈之下,最后去咨詢指導老師該怎么辦,老師說可以在模擬的電池板和蓄電池附近并聯(lián)虛擬的電壓表,通過電壓表的示數(shù),用以時刻監(jiān)測蓄電池的充放電狀態(tài)。果然加上虛擬電壓表,通過監(jiān)測后發(fā)現(xiàn)蓄電池兩端電壓表的示數(shù)一直顯示為零,明白是AD轉(zhuǎn)換局部出現(xiàn)問題,然后通過修改AD轉(zhuǎn)換模塊的子程序,同時調(diào)整硬件引腳局部與軟件相一致,慢慢的調(diào)試,最終蓄電池兩端電壓表有了示數(shù),液晶1602也正確的顯示了。然后再慢慢調(diào)試主程序,修改控制指令,最終三個工作狀態(tài)指示燈也正確指示了。系統(tǒng)共三種狀態(tài):正常充電、過充、過放。這里僅列出系統(tǒng)在正常工作狀態(tài)下的仿真圖,如下列圖4-9所示,以便更形象的看出充電控制器內(nèi)部結(jié)構(gòu)設計和實現(xiàn)功能。正常工作時的狀態(tài):〔此時電壓13.4V〕圖4-9正常工作狀態(tài)仿真其工作原理如下,單片機在軟件程序控制下,控制著各個局部硬件電路有序工作,把從模數(shù)轉(zhuǎn)換器得到的蓄電池的電壓值,用1602液晶去顯示,同時綠燈亮起表示系統(tǒng)正在充電。〔注:這里為了得到更加逼真效果,仿真時采用直流電機作為負載〕。由于利用C語言開發(fā)單片機與匯編語言相比,具有易于操作、標準性好、適合模塊化處理且容易移植的優(yōu)點,所以本設計采用C語言作為編程語言。按照C語言模塊化程序設計方法,論文編制了系統(tǒng)主程序和各個子程序模塊來實現(xiàn)PWM脈寬調(diào)制控制策略和各種保護,完成了軟件設計任務。5總結(jié)與展望5.1設計總結(jié)通過復習以前學過的專業(yè)知識,同時對相關(guān)的資料和論文進行解讀與綜合分析、研究加上參與課題的實踐,在導師的指導和同學的幫助下,最后根本完成了開題報告中確定的設計任務。太陽能已經(jīng)成為21世紀非常重要的新能源之一。在光伏發(fā)電系統(tǒng)中,太陽能充電控制器起著樞紐作用,其性能優(yōu)劣直接影響實際應用的效率。為了克服市場上常見充電控制器存在的對蓄電池保護不夠充分的缺點,本設計基于太陽能充電控制器要實現(xiàn)的具體功能,加上實際工業(yè)應用嚴格要求,從模塊化的思想出發(fā)具體開展各方面的設計工作,把硬件電路和軟件編程有效結(jié)合在一起來完成設計任務。具體來講,論文主要做了下面一些工作:〔1〕對鉛酸蓄電池的充放電原理、影響蓄電池使用壽命的各種因素作了一定的分析,提出了改良的充、放電方式,確定了太陽能充電控制器的總體設計方案。〔2〕論述了基于單片機的太陽能充放電控制系統(tǒng)的硬件電路組成及其工作原理,并詳細分析了各組成單元電路的性能及其工作原理,完成了充電控制器的硬件電路設計。控制器以STC89C52單片機為主控芯片,在軟件程序控制下輸出PWM控制信號,系統(tǒng)硬件電路設計包括單片機及外圍電路設計、充放電電路設計、光耦驅(qū)動電路設計、電壓顯示電路設計、數(shù)據(jù)存儲電路設計、串口通信電路設計等。整個系統(tǒng)的硬件設計采用了模塊化設計結(jié)構(gòu),可以根據(jù)實際需要靈活配置,從而有利于實際應用的推廣。所涉及的相關(guān)模塊的電路設計,有的采用的是常見的經(jīng)典電路的結(jié)構(gòu),有些是在原有結(jié)構(gòu)的根底上,采用了集成度更高的現(xiàn)代芯片,從而使電路變得更加簡單、可靠。不管怎樣說,硬件電路設計,其實是一個對自己所學的專業(yè)知識吸收、分析、理解、掌握同時再創(chuàng)新的過程,能夠靈活使用,遇到新問題能夠解決目的也就到達了〔3〕在硬件設計的根底上,對太陽能充放電控制器進行了算法分析并編制了程序,軟件編程實現(xiàn)對蓄電池的過充、過放、反接等保護。在軟件設計過程中,深刻體會到了軟件設計的靈活和多樣性,在確定整體布局方案的思路指導下,先確定每個程序的結(jié)構(gòu)框架即流程圖,然后按照自頂向下的層次逐漸完成程序的模塊化設計。設計要求是從實際應用需求中抽取而來,由于實際需求往往很復雜,因而一定要把設計要求層次化,首先實現(xiàn)最低要求,解決根本問題,然后再去完善、提高,這就是總結(jié)出來的軟件開發(fā)思路。本設計針對太陽能充放電控制系統(tǒng)的研究,是對單片機技術(shù)、通信技術(shù)、電子技術(shù)和自動化等專業(yè)知識的綜合運用。在設計和開發(fā)的過程中,緊密結(jié)合充電控制器的實際情況,綜合了目前一些先進的充電控制策略。5.1展望由于實踐經(jīng)驗缺乏,以及技術(shù)水平和實驗條件的限制,本系統(tǒng)局部功能尚未完成,需要進一步完善,主要表現(xiàn)在以下幾個方面:〔1〕對系統(tǒng)中的單片機控制功能需要進一步研究,以便找到功能更加強大的主控芯片去代替,從而更好更快的實現(xiàn)設計要求?!?〕對蓄電池電壓的采集方式過于簡單,精度較低,需要探索采集精度更加精準的經(jīng)典電路,使得對蓄電池的充電控制更加準確。(3)系統(tǒng)軟件設計可增加串行中斷控制方式,從而方便用上位機(如微機)通過串行通信進行有效的監(jiān)控,增強對系統(tǒng)的在線檢測和控制功能。參考文獻[1]余發(fā)山,王福忠.單片機原理及應用技術(shù).徐州:中國礦業(yè)大學出版社,2023.6[2]何立民.單片機高級教程.北京:航空航天大學出版社,2001[3]艾永樂,付子義.模擬電子技術(shù)根底.北京:中國電力出版社,2023.11[4]郭天祥.新概念51單片機C語言教程—入門、提高、開發(fā)、拓展全攻略.北京:電子工業(yè)出版社,2023.1[5]談世哲.ProtelDXP2004電路設計根底與典型范例.北京:電子工業(yè)出版社,2007.9[6]馬忠梅,張凱等.單片機的C語言應用程序設計〔第四版〕.北京:北京航空航天大學出版社,2007.1[7]侯玉寶,陳忠平,李成群等編著.基于Proteus的51系列單片機設計與仿真.北京:電子工業(yè)出版社,2023.9[8]楊金煥.太陽能光伏發(fā)電應用技術(shù).北京:電子工業(yè)出版社,2023.1[9]周志敏,紀愛華.太陽能光伏發(fā)電系統(tǒng)設計與應用實例.北京:電子工業(yè)出版社,2023.7[10]魏學業(yè)等.太陽能充電控制器研究.新能源,2023.[11]何朝陽,戴君,吳立琴.基于STCl2C54lOAD的太陽能路燈控制器設計.電子設計工程報,2007:27—30.[12]馮垛生.太陽能發(fā)電原理與應用[M].人民郵電出版社,2007[13]鐘勇等.風光互補發(fā)電系統(tǒng)中蓄電池充放電控制器的研究.合肥:合肥工業(yè)大學,2006.11[14]張艷紅等.一種新型光伏發(fā)電充放電控制器.可再生能源,2006.5[15]劉文剛等.基于單片機的新型太陽能控制器研究.廣州:華南理工大學2023.11致謝回憶大學的四年學習生涯,有很多收獲但也存在缺乏,在學習生涯即將結(jié)束之際,對四年來關(guān)心、指導、幫助和鼓勵過我的老師、同學們表示衷心的感謝。本畢業(yè)論文是在高慶華老師的悉心指導下進行的。從最初的定題,到資料收集,到寫作、修改,直至論文定稿,高老師都給了我耐心的指導和無私的幫助,使得我的畢業(yè)設計課題能夠深入地進行下去,從而使我接觸到了許多新知識和實際應用的新問題,使我做了許多有益的思考,加深了對本專業(yè)核心知識的認識和對工程設計的思考。在此首先對高老師表示誠摯的感謝和由衷的敬意!還要非常地感謝大學學習期間的授課老師和同學在學習中給我的教導和幫助,謝謝!最后,自己之所以能順利完成,更要感謝自己的父母,如果沒有他們每日辛苦的勞動與從小對我學習嚴格的要求,而且培養(yǎng)我認真做事的態(tài)度,也沒有今天的我,可以說正是他們的養(yǎng)育和教導,才使我有了現(xiàn)在的成績。附錄Ⅰ源程序系統(tǒng)主程序代碼controller.c:#include<reg52.h> #include<intrins.h> //庫函數(shù)頭文件,代碼中引用了_nop_()函數(shù)#include"define.h" //變量定義和函數(shù)的聲明#include"init.h" //初始化模塊#include"AD.h" //AD轉(zhuǎn)換模塊#include"yj1602.h" //液晶1602顯示模塊#include"AT24C02.h" //數(shù)據(jù)存儲模塊/*主函數(shù)*/voidmain(){ init(); init1602(); init24c02(); battery_v=get_ad(); yj1602(); if(battery_v<108)PWM=0;//首次要直接充電 elsePWM=1; while(1) { delay(5000); battery_v=get_ad(); yj1602(); if(battery_v<0)//蓄電池反接,立刻關(guān)閉充放電電路,蜂鳴器報警 { PWM=1;FuZai=1;buzzer(); } if(battery_v>=108)//蓄電池電壓大于10.8V { if(145<=battery_v) {LED1=0;//開啟過電壓指示燈 LED=1; LED2=1; PWM=1;//停止充電 buzzer(); //蜂鳴器報警 write=1; AT24c02(); } elseif(120<=battery_v<145)//蓄電池電壓大于12v而且小于13.5v { LED=0;LED1=1;LED2=1; TR0=1; //開啟固定PWM充電 if(count==4) { PWM=0; } if(count==12) { count=0; PWM=1; } } elseif(battery_v<120) { LED=0;LED1=1;LED2=1; TR0=0; PWM=0; } } else { LED=1;//開啟欠壓指示燈 LED1=1; LED2=0; FuZai=1;//關(guān)閉負載 PWM=0; buzzer(); write=1; AT24c02(); } }}/*****定時中斷函數(shù)*****/voidtimer0()interrupt1{ TH0=(65536-50000)/256; TL0=(65536-50000)%256;//定時時間為50ms,每50ms中斷一次 count++;} 以下代碼為define.h //變量定義和函數(shù)的聲明#defineucharunsignedchar#defineuintunsignedint//定義控制信號端口//充放電控制端口sbitPWM=P3^2;//蓄電池開關(guān)sbitFuZai=P3^3;//負載開關(guān)sbitLED=P2^3;//充電指示燈sbitLED1=P2^4;//充電指示燈sbitLED2=P2^5;//欠壓指示燈sbitbeep=P2^6;//蜂鳴器控制位ucharcount,battery_v;//AD轉(zhuǎn)換sbitcsad=P2^7; //定義AD的片選位sbitadwr=P3^6; //定義AD的WR端口sbitadrd=P3^7; //定義AD的RD端口unsignedcharV1,V2,V3,adval,ad_vo; //1602液晶顯示sbitRS=P2^0;//P2.0sbitRW=P2^1;//P2.1sbitEN=P2^2;//P2.2unsignedcharcodetable1[]="TYNCFDKZQXTSJ";unsignedcharcodetable2[]="D:12.0N:";unsignedcharcodelcdd[]="0123456789";ucharxs_vo,num;//AT24c02保存數(shù)據(jù)bitwrite=0;//寫24C02的標志;sbitscl=P2^4;sbitsda=P2^5;ucharp=2,a1;RS232串口通信sbitRXD=P3^0;sbitTXD=P3^1;/*聲明調(diào)用函數(shù)*/voidinit();//初始化主函數(shù)voiddelay(unsignedintt);//可控延時函數(shù)voiddelay1();//軟件實現(xiàn)延時函數(shù),5個機器周期voidbuzzer();ucharget_ad(); // AD程序//1602液晶顯示局部voidwrite_com(ucharcom);voidwrite_data(uchardate);voidinit1602();voidyj1602();//AT24c02保存數(shù)據(jù)voidinit24c02();voidstart();//啟動voidstop();//停止voidrespons();//應答voidwrite_byte(uchardate);//ucharread_byte();voidwrite_add(ucharaddress,uchardate);//ucharread_add(ucharaddress);voidAT24c02();以下代碼為init.h //初始化模塊voidinit()//初始化主函數(shù){ TMOD=0x01; TH0=(65536-50)/256; TL0=(65536-50)%256;//定時時間為50ms,每50ms中斷一次 EA=1; ET0=1; PWM=1;//初始化時先關(guān)閉充電 LED=0;//開啟正常工作指示燈 LED1=1;//關(guān)閉異常指示燈 LED2=1; beep=1; write=0; }/*延時函數(shù)*/voiddelay(unsignedintt){unsignedintj,i;for(i=0;i<t;i++)for(j=0;j<110;j++);}/*延時函數(shù)1*/voiddelay1(){_nop_();_nop_();_nop_();_nop_();_nop_();}//蜂鳴器報警函數(shù)voidbuzzer(){ beep=0; delay(10); beep=1;}以下代碼為AD.h //AD轉(zhuǎn)換模塊//ad轉(zhuǎn)換程序ucharget_ad() // AD程序{ csad=0;//置CSAD為0, adwr=1; _nop_(); adwr=0; //啟動AD轉(zhuǎn)換 _nop_(); adwr=1;delay(2);//AD轉(zhuǎn)換時間 P1=0xff;//讀取P1口之前先給其寫全1adrd=1;//選通ADCS _nop_(); adrd=0;//AD讀使能 _nop_(); adval=P1; //AD數(shù)據(jù)讀取賦給P1口,得到ad轉(zhuǎn)換的結(jié)果 adrd=1;ad_vo=(float)adval*150.0/256.0;//得到蓄電池的電壓 return(ad_vo); }以下代碼為yj1602.h //液晶1602顯示模塊/*LCD1602顯示局部子函數(shù)*/voidinit1602()//LCD初始化函數(shù){ EN=0; write_com(0x38);//設置16X2顯示,5X7點陣,8位數(shù)據(jù)接口 write_com(0x0c);//設置開顯示,不顯示光標 write_com(0x06);//寫一個字符后地址指針加1 write_com(0x01);//顯示清零,數(shù)據(jù)指針清零}voidwrite_com(ucharcom)//1602寫命令函數(shù){ RW=0; delay1(); RS=0;//RW=0,RS=0,寫LCD命令字 delay1(); EN=1;//E端時序 delay1(); P0=com;//將com中的命令字寫入LCD數(shù)據(jù)口 delay1(); EN=0;delay1(); delay(5); }voidwrite_data(uc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020英語試卷小學
- 統(tǒng)編版(2024)七年級上冊道德與法治《探究與分享+運用你的經(jīng)驗+單元思考與行動》 參考答案
- 熱力管網(wǎng)施工方案
- 廣西北流市2025屆中考生物考試模擬沖刺卷含解析
- 臨時施工便道合同范本
- 廠家采購原料合同范本
- 前臺文員的跨文化溝通能力提升計劃
- 加強市場定位與品牌策略的計劃
- 行業(yè)變化對團隊的影響計劃
- 提升企業(yè)安全管理水平的措施計劃
- 2024年度供應商管理培訓課件
- 6、水平四+田徑18課時大單元計劃-《雙手頭上前擲實心球》
- 電梯維保員服務用語培訓
- 2024-2030年中國寫字樓行業(yè)發(fā)展態(tài)勢規(guī)劃分析報告版
- 《管理信息系統(tǒng)》考試復習題庫(含答案)
- 2024年9月抖音短視頻及直播電商月報
- 人教版初中全部英語單詞表
- 2024年浙江省中考社會試卷真題(含標準答案及評分標準)
- 期末復習《《認識100以內(nèi)的數(shù)》復習》(教案)2023-2024學年數(shù)學一年級下冊
- 2024年醫(yī)師定期考核必刷題庫附含參考答案
- 神經(jīng)外科護理病例討論-腦膜瘤課件
評論
0/150
提交評論