單片機(jī)數(shù)控部分的總體電路圖
3.4 單片機(jī)軟件部分的設(shè)計(jì)
單片機(jī)軟件部分的編寫是實(shí)現(xiàn)設(shè)計(jì)的重要組成部分,此部分的要求主要是實(shí)現(xiàn)數(shù)字控制的程序編寫,人機(jī)接口部分程序的編寫,串行通信的編程實(shí)現(xiàn)等。單片機(jī)軟件部分的編程主要包括鍵盤掃描,LED顯示,AD采樣控制,DA輸出控制,上位機(jī)控制,采樣數(shù)據(jù)處理等函數(shù)編寫。
考慮到上述因素,還有程序的結(jié)構(gòu)清晰明了等要求,軟件部分具體需要編寫下列函數(shù):
void keydelay(uint);//消除鍵盤抖動(dòng)用延時(shí)函數(shù)
void delay(uint);//一般延時(shí)用函數(shù),通過入口參數(shù)改變延時(shí)長(zhǎng)短
uchar kbscan(void);//鍵盤掃描函數(shù)
void display(void);//LED顯示函數(shù)
void dispsel(void);//顯示內(nèi)容選擇函數(shù)
void keyprocess(void);//鍵盤處理函數(shù)
void manage_key(void);//一般鍵盤處理函數(shù)
void manage_number(void);//數(shù)字鍵處理函數(shù)
void manage_key10(void);//10號(hào)功能鍵處理函數(shù)
void manage_key11(void);// 11號(hào)功能鍵處理函數(shù)
void manage_key12(void);// 12號(hào)功能鍵處理函數(shù)
void manage_key13(void);// 13號(hào)功能鍵處理函數(shù)
void manage_key14(void);// 14號(hào)功能鍵處理函數(shù)
void manage_key15(void);// 15號(hào)功能鍵處理函數(shù)
void control(void);//DA0832輸出控制函數(shù)
void adc0809(void);//ADC0809芯片控制函數(shù)
void dac0832(void);//DA0832輸出
void caculate(void);//采樣數(shù)據(jù)處理計(jì)算函數(shù)
void send(void);//串口發(fā)送函數(shù)
void receive(void) interrupt 4 using 1//串口接收數(shù)據(jù)處理函數(shù)
4 系統(tǒng)詳細(xì)設(shè)計(jì)
4.1 開關(guān)電源主回路設(shè)計(jì)
如前所述開關(guān)電源主回路采用非隔離式并聯(lián)電路,即采用典型的BOOST電路。下面就BOOST電路各個(gè)電路參數(shù)進(jìn)行設(shè)計(jì)。
4.1.1主回路控制芯片選擇
在實(shí)際應(yīng)用中經(jīng)常會(huì)涉及到升壓電路的設(shè)計(jì),對(duì)于較大的功率輸出,如70W以上的DC/DC升壓電路,由于專用升壓芯片內(nèi)部開關(guān)管的限制,難于做到大功率升 壓變換,而且芯片的價(jià)格昂貴,在實(shí)際應(yīng)用時(shí)受到很大限制�?紤]到Boost升壓結(jié)構(gòu)外接開關(guān)管選擇余地很大,選擇合適的控制芯片,便可設(shè)計(jì)出大功率輸出的 DC/DC升壓電路。
開關(guān)電源控制芯片UC3842是一種電流型脈寬調(diào)制電源芯片,價(jià)格低廉,廣泛應(yīng)用于電子信息設(shè)備的電源電路設(shè)計(jì),常用作隔離回掃式開關(guān)電源的控制電路,根據(jù)UC3842的 功能特點(diǎn),結(jié)合Boost拓?fù)浣Y(jié)構(gòu),完全可設(shè)計(jì)成電流型控制的升壓DC/DC電路,且外接元器件少,控制靈活,成本低,輸出功率容易做到100W以上,具有其他專用芯片難以實(shí)現(xiàn)的功能。
UC3842芯片的特點(diǎn) UC3842工作電壓為16-30V,工作電流約15mA。芯片內(nèi)有一個(gè)頻率可設(shè)置的振蕩器;一個(gè)能夠源出和吸入大電流的圖騰式輸出結(jié)構(gòu),特別適用于 MOSFET的驅(qū)動(dòng);一個(gè)固定溫度補(bǔ)償?shù)幕鶞?zhǔn)電壓和高增益誤差放大器、電流傳感器;具有鎖存功能的邏輯電路和能提供逐個(gè)脈沖限流控制的PWM比較器,最大占空比可達(dá)100%。另外,具有內(nèi)部保護(hù)功能,如滯后式欠壓鎖定、可控制的輸出死區(qū)時(shí)間等。
由UC3842設(shè)計(jì)的DC/DC升壓電路屬于電流型控制,電路中直接用誤差信號(hào)控制電感峰值電流,然后間接地控制PWM脈沖寬度。這種電流型控制電路的主要特點(diǎn)是: 1)輸入電壓的變化引起電感電流斜坡的變化,電感電流自動(dòng)調(diào)整而不需要誤差放大器輸出變化,改善了瞬態(tài)電壓調(diào)整率; 2)電流型控制檢測(cè)電感電流和開關(guān)電流,并在逐個(gè)脈沖的基礎(chǔ)上同誤差放大器的輸出比較,控制PWM脈寬,由于電感電流隨誤差信號(hào)的變化而變化,從而更容易 設(shè)置控制環(huán)路,改善了線性調(diào)整率; 3)簡(jiǎn)化了限流電路,在保證電源工作可靠性的同時(shí),電流限制使電感和開關(guān)管更有效地工作; 4)電流型控制電路中需要對(duì)電感電流的斜坡進(jìn)行補(bǔ)償,因?yàn)�,平均電感電流大小是決定輸出大小的因素,在占空比不同的情況下,峰值電感電流的變化不能與平均電感電流變化相對(duì)應(yīng),特別是占空比,50%的不穩(wěn)定性,存在難以校正的峰值電流與平均電流的誤差,即使占空比<50%,也可能發(fā)生高頻次諧波振蕩, 因而需要斜坡補(bǔ)償,使峰值電感電流與平均電感電流變化相一致,但是,同步不失真的斜坡補(bǔ)償技術(shù)實(shí)現(xiàn)上有一定的難度。
Unitrode公司的UC3842作為一種高性能固定頻率電流型控制器,包含誤差放大器、PWM比較器、PWM鎖存器、振蕩器、內(nèi)部基準(zhǔn)電源和欠壓鎖定等單元,其結(jié)構(gòu)圖如下所示:
1.013.jpg (39.19 KB, 下載次數(shù): 67)
下載附件
2017-3-1 23:11 上傳
各管腳功能簡(jiǎn)介如下。
---1腳COMP是內(nèi)部誤差放大器的輸出端,通常此腳與2腳之間接有反饋網(wǎng)絡(luò),以確定誤差放大器的增益和頻響。
---2腳FEED BACK是反饋電壓輸入端,此腳與內(nèi)部誤差放大器同向輸入端的基準(zhǔn)電壓(一般為+2.5V)進(jìn)行比較,產(chǎn)生控制電壓,控制脈沖的寬度。
---3 腳ISENSE是電流傳感端。在外圍電路中,在功率開關(guān)管(如VMos管)的源極串接一個(gè)小阻值的取樣電阻,將脈沖變壓器的電流轉(zhuǎn)換成電壓,此電壓送入3 腳,控制脈寬。此外,當(dāng)電源電壓異常時(shí),功率開關(guān)管的電流增大,當(dāng)取樣電阻上的電壓超過1V時(shí),UC3842就停止輸出,有效地保護(hù)了功率開關(guān)管。
---4腳RT/CT是定時(shí)端。鋸齒波振蕩器外接定時(shí)電容C和定時(shí)電阻R的公共端。
---5腳GND是接地。
---6腳OUT是輸出端,此腳為圖騰柱式輸出,驅(qū)動(dòng)能力是±lA。這種圖騰柱結(jié)構(gòu)對(duì)被驅(qū)動(dòng)的功率管的關(guān)斷有利,因?yàn)楫?dāng)三極管VTl截止時(shí),VT2導(dǎo)通,為功率管關(guān)斷時(shí)提供了低阻抗的反向抽取電流回路,加速功率管的關(guān)斷。
---7腳Vcc是電源。當(dāng)供電電壓低于 +16V時(shí),UC3824不工作,此時(shí)耗電在1mA以下。輸入電壓可以通過一個(gè)大阻值電阻從高壓降壓獲得。芯片工作后,輸入電壓可在+10~+30V之間波動(dòng),低于+10V停止工作。工作時(shí)耗電約為15mA,此電流可通過反饋電阻提供。
---8腳VREF是基準(zhǔn)電壓輸出,可輸出精確的+5V基準(zhǔn)電壓,電流可達(dá)50mA。
---UV3842的電壓調(diào)整率可達(dá)0.01%,工作頻率為500kHz,啟動(dòng)電流小于1mA,輸入電壓為10~30V,基準(zhǔn)電壓為4.9~5.1V,工作溫度為0~70℃,輸出電流為1A。
4.1.2 boost電路主要參數(shù)選擇
一 Boost電路結(jié)構(gòu)及特性分析
由UC3842控制的Boost拓?fù)浣Y(jié)構(gòu)及電路分別下圖所:
1.014.jpg (17.92 KB, 下載次數(shù): 68)
下載附件
2017-3-1 23:11 上傳
UC3842控制的Boost拓?fù)浣Y(jié)構(gòu)
1.015.jpg (22.74 KB, 下載次數(shù): 74)
下載附件
2017-3-1 23:11 上傳
UC3842控制的Boost電路結(jié)構(gòu)
UC3842控制的Boost電路中輸入電壓Vi=16-20V,既供給芯片,又供給升壓變換。開關(guān)管以UC3842設(shè)定的頻率周期開閉,使電感L儲(chǔ)存能量并釋放能量。當(dāng)開關(guān)管導(dǎo)通 時(shí),電感以V1/L的速度充電,把能量?jī)?chǔ)存在L中。當(dāng)開關(guān)截止時(shí),L產(chǎn)生反向感應(yīng)電壓,通過二極管D把儲(chǔ)存的電能以(Vo-Vi)/L的速度釋放到輸出電 容器C2中。輸出電壓由傳遞的能量多少來控制,而傳遞能量的多少,通過電感電流的峰值來控制。 整個(gè)穩(wěn)壓過程由二個(gè)閉環(huán)來控制,即 閉環(huán)1 輸出電壓通過取樣后反饋給誤差放大器,用于同放大器內(nèi)部的2.5V基準(zhǔn)電壓比較后產(chǎn)生誤差電壓,誤差放大器控制由于負(fù)載變化造成的輸出電壓的變化。 閉環(huán)2 Rs為開關(guān)管源極到公共端間的電流檢測(cè)電阻,開關(guān)管導(dǎo)通期間流經(jīng)電感L的電流在Rs上產(chǎn)生的電壓送至PWM比較器同相輸入端,與誤差電壓進(jìn)行比較后控制調(diào) 制脈沖的脈寬,從而保持穩(wěn)定的輸出電壓。誤差信號(hào)實(shí)際控制著峰值電感電流。
二 Boost升壓結(jié)構(gòu)特性分析
Boost升壓電路,可以工作在電流斷續(xù)工作模式(DCM)和電流連續(xù)工作模式(CCM)。CCM工作模式適合大功率輸出電路,考慮到負(fù)載達(dá)到10%以上時(shí),電感電流需保持連續(xù)狀態(tài),因此,按CCM工作模式來進(jìn)行特性分析。 Boost拓?fù)浣Y(jié)構(gòu)升壓電路基本波形如圖3所示。
1.016.jpg (23.62 KB, 下載次數(shù): 67)
下載附件
2017-3-1 23:11 上傳
Boost升壓電路基本波形
ton時(shí),開關(guān)管S為導(dǎo)通狀態(tài),二極管D處于截止?fàn)顟B(tài),流經(jīng)電感L和開關(guān)管的電流逐漸增大,電感L兩端的電壓為Vi,考慮到開關(guān)管S漏極對(duì)公共端的導(dǎo)通壓降Vs,即為Vi-Vs。ton時(shí)通過L的電流增加部分△ILon滿足式(1)。
1.017.jpg (2.56 KB, 下載次數(shù): 75)
下載附件
2017-3-1 23:11 上傳
(1) 式中:Vs為開關(guān)管導(dǎo)通時(shí)的壓降和電流取樣電阻Rs上的壓降之和,約0.6-0.9V。
toff時(shí),開關(guān)管S截止,二極管D處于導(dǎo)通狀態(tài),儲(chǔ)存在電感L中的能量提供給輸出,流經(jīng)電感L和二極管D的電流處于減少狀態(tài),設(shè)二極管D的正向電壓為Vf,toff時(shí),電感L兩端的電壓為Vo+Vf-Vi,電流的減少部分△ILoff滿足式(2)。
1.018.jpg (3.6 KB, 下載次數(shù): 73)
下載附件
2017-3-1 23:11 上傳
(2) 式中:Vf為整流二極管正向壓降,快恢復(fù)二極管約0.8V,肖特基二極管約0.5V。 在電路穩(wěn)定狀態(tài)下,即從電流連續(xù)后到最大輸出時(shí),△ILon=△ILoFf,由式(1)和(2)可得
1.019.jpg (3.52 KB, 下載次數(shù): 79)
下載附件
2017-3-1 23:11 上傳
(3) 因占空比D=
1.020.jpg (860 Bytes, 下載次數(shù): 76)
下載附件
2017-3-1 23:11 上傳
/T,即最大占空比
1.021.jpg (964 Bytes, 下載次數(shù): 72)
下載附件
2017-3-1 23:11 上傳
1.022.jpg (4.79 KB, 下載次數(shù): 70)
下載附件
2017-3-1 23:11 上傳
(4) 如果忽略電感損耗,電感輸入功率等于輸出功率,即
1.023.jpg (2.58 KB, 下載次數(shù): 72)
下載附件
2017-3-1 23:11 上傳
(5) 由式(4)和式(5)得電感器平均電流
1.024.jpg (2.21 KB, 下載次數(shù): 75)
下載附件
2017-3-1 23:11 上傳
(6) 同時(shí)由式(1)得電感器電流紋波
1.025.jpg (2.61 KB, 下載次數(shù): 70)
下載附件
2017-3-1 23:11 上傳
(7) 式中:f為開關(guān)頻率。 為保證電流連續(xù),電感電流應(yīng)滿足
1.026.jpg (2.26 KB, 下載次數(shù): 65)
下載附件
2017-3-1 23:11 上傳
(8) 考慮到式(6)、式(7)和式(8),可得到滿足電流連續(xù)情況下的電感值為
1.027.jpg (2.98 KB, 下載次數(shù): 72)
下載附件
2017-3-1 23:11 上傳
(9) 另外,由Boost升壓電路結(jié)構(gòu)可知,開關(guān)管電流峰值Is(max)=二極管電流峰值Id(max)=電感器電流峰值ILP,
1.028.jpg (2.02 KB, 下載次數(shù): 73)
下載附件
2017-3-1 23:11 上傳
(10) 開關(guān)管耐壓
1.029.jpg (1.72 KB, 下載次數(shù): 79)
下載附件
2017-3-1 23:11 上傳
(11) 二極管反向耐壓
1.030.jpg (1.35 KB, 下載次數(shù): 78)
下載附件
2017-3-1 23:11 上傳
(12) 三 電路參數(shù)的確定
基于UC3842控制的升壓式DC/DC變換器,電路的技術(shù)指標(biāo)為:輸出電壓UO可調(diào)范圍:30V~36V;
最大輸出電流Iomax:2A;
U2從15V變到21V時(shí),電壓調(diào)整率SU≤2%(Io=2A);
IO從0變到2A時(shí),負(fù)載調(diào)整率SI≤5%(U2=18V);
輸出噪聲紋波電壓峰-峰值UOPP≤1V(U2=18V,Uo=36V,Io=2A);
DC-DC變換器的效率
1.031.jpg (876 Bytes, 下載次數(shù): 68)
下載附件
2017-3-1 23:11 上傳
≥70%(U2=18V,Uo=36V,Io=2A); 具有過流保護(hù)功能,動(dòng)作電流Io(th)=2.5±0.2A;
考慮到輸出電壓可調(diào),并考慮一定的裕量,系統(tǒng)的設(shè)計(jì)時(shí)可按如下指標(biāo)設(shè)計(jì)輸入Vi=18V,輸出Vo=40V、Io=2A,頻率f≈49 kHz,輸出紋波噪聲1%。 根據(jù)技術(shù)指標(biāo)要求,結(jié)合Boost電路結(jié)構(gòu)的定性分析,設(shè)計(jì)電路的參數(shù)如下:
1 儲(chǔ)能電感L 根據(jù)輸入電壓和輸出電壓確定最大占空比。由式(4)得
1.032.jpg (3.54 KB, 下載次數(shù): 81)
下載附件
2017-3-1 23:11 上傳
當(dāng)輸出最大負(fù)載時(shí)至少應(yīng)滿足電路工作在CCM模式下,即必須滿足式(9),
1.033.jpg (7.1 KB, 下載次數(shù): 75)
下載附件
2017-3-1 23:11 上傳
同時(shí)考慮在10%額定負(fù)載以上電流連續(xù)的情況,實(shí)際設(shè)計(jì)時(shí)可以假設(shè)電路在額定輸出時(shí),電感紋波電流為平均電流的20%"30%,因增加△IL可以減小電感L,但為不增加輸出紋波電壓而須增大輸出電容C2,取30%為平衡點(diǎn),即
1.034.jpg (5.8 KB, 下載次數(shù): 89)
下載附件
2017-3-1 23:11 上傳
(13) 由式(7)、式(13)可得
1.035.jpg (5.6 KB, 下載次數(shù): 73)
下載附件
2017-3-1 23:11 上傳
流過電感L的峰值電流由式(10)得
1.036.jpg (5.7 KB, 下載次數(shù): 78)
下載附件
2017-3-1 23:11 上傳
L可選用電感量為140"200μH且通過5A以上電流不會(huì)飽和的電感器。電感的設(shè)計(jì)包括磁芯材料、尺寸、型號(hào)選擇及繞組匝數(shù)計(jì)算、線徑選用等。電路工作 時(shí)重要的是避免電感飽和、溫升過高。磁芯和線徑的選擇對(duì)電感性能和溫升影響很大,材質(zhì)好的磁芯如環(huán)形鐵粉磁芯,承受峰值電流能力較強(qiáng),EMI低。而選用線 徑大的導(dǎo)線繞制電感,能有效降低電感的溫升。
2 輸出電壓取樣電阻R1、R2 因UC3842的腳2為誤差放大器反向輸入端,芯片內(nèi)正向輸入端為基準(zhǔn)2.5v,可知輸出電壓Vo=2.5(1+R1/R2),根據(jù)輸出電壓可確定取樣電 阻R1、R2的取值。 由于儲(chǔ)能電感的作用,在開關(guān)管開啟和關(guān)閉時(shí)會(huì)形成大的尖峰電流,在檢測(cè)電阻Rs上產(chǎn)生一個(gè)尖峰脈沖,為防止造成UC3842的誤動(dòng)作,在Rs取樣點(diǎn)到 UC3842的腳3間加入R、C濾波電路,R、C時(shí)間常數(shù)約等于電流尖峰的持續(xù)時(shí)間。
3 開關(guān)管S 開關(guān)管的電流峰值由式(10)得 Iv(max)=ILP=5.11A 開關(guān)管的耐壓由式(11)得 Vds(off)=Vo+Vf=40+0.8=40.8V 按20%的余量,可選用6A/50V以上的開關(guān)管。為使溫升較低,應(yīng)選用Rds較小的MOS開關(guān)管,要考慮的是通態(tài)電阻Rds會(huì)隨PN結(jié)溫度T1的升高而增大。
4 輸出二極管D和輸出電容器C2 升壓電路中輸出二極管D必須承受和輸出電壓值相等的反向電壓,并傳導(dǎo)負(fù)載所需的最大電流。二極管的峰值電流Id(max)=ILP=5.11A,本電路可選用6A/50V以上的快恢復(fù)二極管,若采用正向壓降低的肖特基二極管,整個(gè)電路的效率將得到提高。 輸出電容C2的選定取決于對(duì)輸出紋波電壓的要求,紋波電壓與電容的等效串聯(lián)電阻ESR有關(guān),電容器的容許紋波電流要大于電路中的紋波電流。 電容的ESR<△Vo/△IL=40x1%/1.33=O.3Ω。 另外,為滿足輸出紋波電壓相對(duì)值的要求,濾波電容量應(yīng)滿足
1.037.jpg (5.96 KB, 下載次數(shù): 67)
下載附件
2017-3-1 23:11 上傳
(14) 根據(jù)計(jì)算出的ESR值和容量值選擇電容器,由于低溫時(shí)ESR值增大,故應(yīng)按低溫下的ESR來選擇電容,因此,選用560μF/50V以上頻率特性好的電解電容可滿足要求。
5 外補(bǔ)償網(wǎng)絡(luò) UC3842誤差放大器的輸出端腳l與反相輸入端腳2之間外接補(bǔ)償網(wǎng)絡(luò)Rf、Cf。 Rf、Cf的取值取決于UC3842環(huán)路電壓增益、額定輸出電流和輸出電容,通過改變Rf、Cf的值可改變放大器閉環(huán)增益和頻響。為使環(huán)路得到最佳補(bǔ)償, 可測(cè)試環(huán)路的穩(wěn)定度,測(cè)量Io脈動(dòng)時(shí)輸出電壓Vo的瞬態(tài)響應(yīng)來加以判斷。
6 斜坡補(bǔ)償 在實(shí)用電路中,增加斜坡補(bǔ)償網(wǎng)絡(luò),一般有二種方法,一是從斜坡端腳4接補(bǔ)償網(wǎng)絡(luò)Rx、Cx至誤差放大器反相輸入端腳2,使誤差放大器輸出為斜坡狀,再與 Rs上感應(yīng)的電壓比較。二是從斜坡端腳4接補(bǔ)償網(wǎng)絡(luò)Rx、Cx到電流感應(yīng)端腳3,將在Rs的感應(yīng)電壓上增加斜坡的斜率,再與平滑的誤差電壓進(jìn)行比較,作用 是防止諧波振蕩現(xiàn)象,避免UC3842工作不穩(wěn)定,同時(shí)改善電流型控制開關(guān)電壓的噪聲特性。本設(shè)計(jì)采用方法二。
7 保護(hù)電路 當(dāng)UC3842的腳3電壓升高超過1V或腳1電壓降到1V以下,都可使PWM比較器輸出高電平,造成PWM鎖存器復(fù)位。根據(jù)UC3842關(guān)閉特性,可以很 容易在電路中設(shè)置過壓保護(hù)和過流保護(hù)。本電路中Rs上感應(yīng)出的峰值電流形成逐個(gè)脈沖限流電路,當(dāng)腳3達(dá)到1V時(shí)就會(huì)出現(xiàn)限流現(xiàn)象,所以,整個(gè)電路中的電感 磁性元件和功率開關(guān)管不必設(shè)計(jì)較大的余量,就能保證穩(wěn)壓電路工作可靠,降低成本。
4.2 單片機(jī)控制硬件電路部分參數(shù)選擇
單片機(jī)控制部分硬件,主要是電壓電流的采樣,及單片機(jī)的接口。
4.2.1電壓采樣
考慮到設(shè)計(jì)的時(shí)間及設(shè)計(jì)要求,輸出電壓取樣電路采用簡(jiǎn)單的電阻分壓取樣,具體電路實(shí)現(xiàn)如下:
1.038.jpg (22.02 KB, 下載次數(shù): 77)
下載附件
2017-3-1 23:11 上傳
4.2.2電流采樣
電流取樣采用分流器,由于采用的分流器電阻很小3.75毫歐,因此必須采用精密的差分放大器進(jìn)行放大,采用的電路如下:
1.039.jpg (29.54 KB, 下載次數(shù): 67)
下載附件
2017-3-1 23:11 上傳
4.2.3 2.5V基準(zhǔn)源采樣
考慮到輔助電源電壓波動(dòng)對(duì)AD0809的影響,選取2.5V的基準(zhǔn)源,對(duì)采樣的數(shù)據(jù)進(jìn)行修正。2.5V基準(zhǔn)電壓的實(shí)現(xiàn)采用TL431來實(shí)現(xiàn),其中電阻R=4.7k電路如下:
1.040.jpg (5.35 KB, 下載次數(shù): 53)
下載附件
2017-3-1 23:11 上傳
4.2.4反饋部分參數(shù)確定
Vo電壓為輸出電阻取樣后電壓,Vc為DA0809輸出的控制電壓,電路圖如下:
1.041.jpg (42.96 KB, 下載次數(shù): 75)
下載附件
2017-3-1 23:11 上傳
V2=VO*(R2//R3)/(R1+R2//R3)+Vc*(R1//R2)/(R3+R1//R2)=2.5
可以選取R3=50K左右,可以實(shí)現(xiàn)設(shè)計(jì)要求。
4.3 單片機(jī)部分軟件的具體編程與實(shí)現(xiàn)
單片機(jī)部分是本次設(shè)計(jì)設(shè)計(jì)的核心,是實(shí)現(xiàn)數(shù)字控制的關(guān)鍵部分,單片機(jī)各個(gè)部分功能的實(shí)現(xiàn)的具體編程如下:
4.3.1鍵盤顯示部分
本設(shè)計(jì)采用4*4鍵盤和四位LED顯示,達(dá)到較好的人際交互,并能盡量節(jié)省成本,達(dá)到了較好的目的。
具體程序如下:
鍵盤掃描子程序:
- //---------------------------------------------------------------------------------------
- // 函數(shù)名稱: kbscan 鍵盤掃描子程序
- // 函數(shù)功能: 判斷是否有鍵按下,有返回鍵值,沒有返回0
- // p2的高四位為列,低四位為行
- P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
- //
- 列4 列3 列2 列1 行4 行3 行2 行1
- // 過程:先根據(jù)列判斷是否有鍵按下,沒有返回0,有,則逐行掃描以確定按鍵所在的行,再確定按鍵所在列
- // 從而最終確定該按鍵。
- //---------------------------------------------------------------------------------------
- uchar kbscan(void)
- {
- uchar sccode,recode;
- P2=0xf0; //置所有行為低電平,行掃描,列線輸入(此時(shí))
- if((P2&0xf0)!=0xf0) //判斷是否有有鍵按下(讀取列的真實(shí)狀態(tài),若第
- //4列有鍵按下則P1的值會(huì)變成0111 0000),有往下執(zhí)行
- {
- keydelay(200); //延時(shí)去抖動(dòng)(10ms)
- if((P2&0xf0)!=0xf0) //再次判斷列中是否是干擾信號(hào),
- //不是則向下執(zhí)行
- {
- sccode=0xFE; //逐行掃描初值(即先掃描第1行)
- while((sccode&0x10)!=0) //行掃描完成時(shí)(即4行已經(jīng)全部掃
- //描完成)
- //sccode為1110 1111 停止while程序
- {
- P2=sccode; //輸出行掃描碼
- if ((P2&0xf0)!=0xf0) //本行有鍵按下(即P2(真實(shí)的狀
- //態(tài))的高四位不全為1)
- {
- recode=(P2&0xf0)|0x0f; //列
- return(sccode&recode); //返回行和列
- }
- else //所掃描的行沒有鍵按下,則掃描下一行,
- //直到4行都掃描,
- //此時(shí)sccode值為1110 1111 退出while程序
- {
- sccode=(sccode<<1)|0x01;//行掃描碼左移一位
- }
- }
- }
- }
- else
- {
- return 0; //無鍵按下,返回0
- }
- }
-
- 顯示子程序:
- void display(void)//顯示程序,因p0口復(fù)用,故先送字位后送字形
- {uchar i,j;
- j=0x01;
- for(i=0;i<=3;i++)//四個(gè)數(shù)碼管顯示用循環(huán)
- {
- P0=0x00; //P0口送數(shù)據(jù)顯示前清一下p0口
- P0=leddisp[i]; //送字形碼
- leddata=1;
- leddata=0;
- P0=j; //送字位碼
- ledselect=1;
- j=(j<<1);
- ledselect=0;
- delay(3);
- P0=0x00; //字位口送0x00,去除花屏
- ledselect=1;
- ledselect=0;
- }
- }
復(fù)制代碼
4.3.2串行通信部分
串行通信部分初步實(shí)現(xiàn)了上位機(jī)與單片機(jī)之間的通信,其中單片機(jī)與上位機(jī)串行通信部分的程序如下:
單片機(jī)串行通信設(shè)置如下:
TMOD =0x20;//定時(shí)器1工作于方式二自動(dòng)裝入8位定時(shí)器
PCON =0X80;//串行口波特率加倍
TH1=0xf3;//6MHZ波特率2.4K
TL1=0xf3;//
TR1=1;//啟動(dòng)定時(shí)器1
SCON=0x50;//串行口方式110位異步收入,允許串行口接收
EA = 0;//開機(jī)時(shí)不接受上位機(jī)控制
ES = 1;//串行口開中斷
串行口發(fā)送子程序:
void send(void)
{ if(EA==1)
{
SBUF=0x0f;//傳送電壓量前握手信號(hào)0x0f,0xf0
while(TI==0)
;
TI=0;//清除發(fā)送結(jié)束中斷標(biāo)志位
SBUF=0xf0;
while(TI==0)
;
TI=0;
SBUF=tserial1;
while(TI==0)
;
TI=0;
SBUF=0xf0;//傳送電流量前握手信號(hào)0xf0,0x0f
while(TI==0)
;
TI=0;
SBUF=0x0f;
while(TI==0)
;
TI=0;
SBUF=tserial2;
while(TI==0)
;
TI=0;
}
}
串口接收中斷服務(wù)子程序:
void receive(void) interrupt 4 using 1
{
if(RI)
{
rserial=SBUF;
RI=0;
}
}
4.3.3單片機(jī)采樣數(shù)據(jù)的處理
對(duì)采樣數(shù)據(jù)進(jìn)行均值濾波,達(dá)到較準(zhǔn)確的顯示,同時(shí)可以消除直接顯示帶來的屏閃,顯示效果也較佳。
程序如下:
void caculate(void)
{
uchar i;
uint tvolt=0,tcurr=0,tstdv=0,tv=0,tc=0;
for(i=0;i<=7;i++)//均值濾波程序
{tvolt=tvolt+advo;
tcurr=tcurr+adcu;
tstdv=tstdv+std;}
stdv=tstdv/8;
tv=tvolt/8*stdv/128;
tserial1=tv;//發(fā)送到上位機(jī)電壓數(shù)據(jù)
volt[2]=tv/51; //顯示位數(shù)據(jù)計(jì)算
volt[1]=tv*10/51%10+16;
volt[0]=tv*100/51%10;
tc=tcurr/8*stdv/128;//加入修正系數(shù)。。。。。。。。。。。。。。。
tserial2=tcurr/8*stdv/128;//發(fā)送到上位機(jī)電壓數(shù)據(jù)
curr[2]=tc/51;
curr[1]=tc*10/51%10+16;
curr[0]=tc*100/51%10;
}
4.4 系統(tǒng)集成
4.4.1硬件部分連接圖
開關(guān)電源主電路連接圖如下:
1.042.jpg (34.74 KB, 下載次數(shù): 61)
下載附件
2017-3-1 23:11 上傳
單片機(jī)控制部分電路圖如下:
1.043.jpg (65.62 KB, 下載次數(shù): 57)
下載附件
2017-3-1 23:11 上傳
4.4.2軟件部分集成
軟件部分的集成主要是考慮主函數(shù)的編寫,主函數(shù)內(nèi)實(shí)現(xiàn)系統(tǒng)的初始化及各個(gè)子函數(shù)的調(diào)用和邏輯組合,以達(dá)到設(shè)計(jì)目的:
void main(void)
{uchar n;
for(n=0;n<=3;n++) //數(shù)據(jù)區(qū)初始化
{
leddisp[n]=0;
keypress[n]=0;
}
for(n=0;n<=7;n++)
{
advo[n]=0;
adcu[n]=0;
std[n]=128;
}
stdv=0;
advolt=0x00;
adcurr=0x00;
davolt=0x00;
tserial1=0x00;
tserial2=0x00;
rserial=0x00;
key=0;
flag=2;//開機(jī)首先顯示輸出電壓值
TMOD =0x20;//定時(shí)器1工作于方式二自動(dòng)裝入8位定時(shí)器
PCON =0X80;//串行口波特率加倍
TH1=0xf3;//6MHZ波特率2.4K
TL1=0xf3;//
TR1=1;//啟動(dòng)定時(shí)器1
SCON=0x50;//串行口方式110位異步收入,允許串行口接收
EA = 0;//開機(jī)時(shí)不接受上位機(jī)控制
ES = 1;//串行口開中斷
while(1)
{
dac0832();//DA數(shù)據(jù)送出
key=kbscan();//鍵盤掃描
keyprocess();//鍵盤處理程序
dispsel();//顯示電壓電流選擇
display();//LED顯示
control();//DA輸出控制電壓計(jì)算
adc0809();//AD輸入電壓電流采樣
caculate();
send();//串行口數(shù)據(jù)發(fā)送
}
}
5 測(cè)試
5.1 各功能部分測(cè)試
測(cè)試時(shí)根據(jù)各個(gè)部分功能的劃分,對(duì)各個(gè)功能部分進(jìn)行單獨(dú)測(cè)試,可以達(dá)到事半功倍的效果。具體的測(cè)試分為以下各個(gè)部分:
一 開關(guān)電源主電路的測(cè)試
測(cè)試中遇到的錯(cuò)誤主要有以下幾個(gè)方面:
電路虛焊導(dǎo)致的錯(cuò)誤,解決方法是對(duì)電路測(cè)試,檢查電路焊接情況,進(jìn)行仔細(xì)查找,然后更正錯(cuò)誤;
電阻選擇不當(dāng)導(dǎo)致的錯(cuò)誤,解決方法是采用可變電阻進(jìn)行調(diào)試,然后根據(jù)調(diào)節(jié)好的可變電阻值進(jìn)行安裝;
二 單片機(jī)控制接口電路的測(cè)試
1 單片機(jī)最小系統(tǒng)的測(cè)試
主要檢查單片機(jī)復(fù)位電路,晶振工作情況,可以采用P1口亮燈試驗(yàn)來檢查單片機(jī)最小系統(tǒng)的工作情況。
2 ADC0809的調(diào)試
在確保單片機(jī)正常工作的情況下,主要檢查ADC0809的接線是否正確,時(shí)鐘信號(hào)選擇是否合適,然后測(cè)試AD在單通道的情況下的工作情況。
3 DAC0809的調(diào)試
在確保接線正確的情況下,采用直通的工作方式時(shí),主要是考慮輸出的運(yùn)算放大器的工作情況。
4 鍵盤和數(shù)碼管的調(diào)試
鍵盤的調(diào)試,主要是調(diào)節(jié)去抖動(dòng)延時(shí)的長(zhǎng)短,使去抖動(dòng)效果達(dá)到最佳,并且符合一般人的按鍵的接觸時(shí)間。
顯示部分?jǐn)?shù)碼管的調(diào)試,主要是通過合理安排程序使數(shù)碼管顯示亮度適宜。在調(diào)試中曾出現(xiàn)花屏的情況,原因在于送字位口數(shù)據(jù)時(shí),字形口數(shù)據(jù)仍然是上次的數(shù)據(jù),解決方法是在送字位口數(shù)據(jù)之前,先將字形口數(shù)據(jù)全部清零。
5.2 系統(tǒng)測(cè)試
在各個(gè)功能部分正常工作的條件下,整個(gè)系統(tǒng)的調(diào)試主要是系統(tǒng)總體的控制邏輯,消除各個(gè)功能部分之間可能存在的相互影響,在系統(tǒng)組裝完成后,進(jìn)行細(xì)致調(diào)試,修改這個(gè)系統(tǒng)中隱藏的問題。
5.3 測(cè)試結(jié)論
通過測(cè)試和不斷的調(diào)試,最終使系統(tǒng)達(dá)到了設(shè)計(jì)的目的和要求,較好的實(shí)現(xiàn)了最初的設(shè)想,但是系統(tǒng)在單片機(jī)通信部分仍有提高的余地,可以進(jìn)一步完善。
結(jié)束語
緊張而充實(shí)的畢業(yè)設(shè)計(jì)即將結(jié)束了�;仡欉@十個(gè)周的工作,感慨頗多。畢業(yè)設(shè)計(jì)是對(duì)我們每名學(xué)生智力、毅力的一次艱巨考驗(yàn),是對(duì)我們每名學(xué)生知識(shí)體系的一次豐富升華,是對(duì)我們每名學(xué)生整個(gè)大學(xué)的學(xué)習(xí)成果的一次檢驗(yàn)。
在畢業(yè)設(shè)計(jì)過程中,既有成功的喜悅,也有失敗的苦惱;既學(xué)習(xí)了大量新知識(shí),又對(duì)很多舊知識(shí)進(jìn)行了提煉升華;既有個(gè)人努力,又有團(tuán)隊(duì)協(xié)作;既得到了同學(xué)們的幫助,又得到了老師的指導(dǎo)。這種經(jīng)歷彌足珍貴。
在本次畢業(yè)設(shè)計(jì)過程中,我主要完成了單片機(jī)數(shù)字控制開關(guān)電源部分的設(shè)計(jì)與實(shí)現(xiàn),加深了開關(guān)電源的深層次理解,熟練了單片機(jī)的C語言編程。設(shè)計(jì)過程中,我閱讀了大量開關(guān)電源和單片方面的數(shù)據(jù),查找了大量相關(guān)資料,無論在認(rèn)識(shí)層次還是在編程技巧上又有了很大提高。
因時(shí)間關(guān)系,本次畢業(yè)設(shè)計(jì)還有很多不足之處。主要是單片機(jī)與PC通信部份上位機(jī)的程序沒有能夠編寫完善,開關(guān)電源與單片機(jī)信息處理電路之間由于時(shí)間倉促也沒有加入保護(hù)。希望以后能夠加以完善。