【正文】
使用 C 語(yǔ)言進(jìn)行程序的編寫(xiě),同時(shí)在 MPLAB IDE 集成開(kāi)發(fā)環(huán)境中程序的編譯和調(diào)試對(duì)整個(gè)系統(tǒng)進(jìn)行描述和設(shè)計(jì)。 本設(shè)計(jì)所使用的 PIC18F4520 單片機(jī)是采用 10 位 A/D 及納瓦技術(shù)的鄭州大學(xué) 本科畢業(yè)論文 3 40 腳的增強(qiáng)型閃存單片機(jī),如圖 22 所示。 212 PIC18F4520 DPIP 封裝的引腳圖 此單片機(jī)具有高 性能的 RISC(Reduced Instruction Set Computer)結(jié)構(gòu)CPU,有較寬的工作電壓范圍: ,同時(shí)驅(qū)動(dòng)能力強(qiáng),驅(qū)動(dòng)電流高達(dá)25mA,還具有超低的功耗,多級(jí)的中斷。 由單片機(jī)來(lái)完成 PID 算法處理得到電壓的偏差信號(hào),再根據(jù)偏差信號(hào)的大小改變單片機(jī) ECCP 模塊所產(chǎn)生兩路推挽的 PWM 波的占空比 , 從而改變半控橋電路中兩個(gè) MOS 管通斷時(shí)間的大小,從而起到穩(wěn)壓的作用。 在本設(shè)計(jì)中主要使用的是單片機(jī)的 ECCP 模塊(增強(qiáng)型捕捉 /比較/PWM 模塊), 10 位輸出的 A/D 轉(zhuǎn)換模塊,同時(shí)加上外圍 的鍵盤(pán)輸入模塊,以及 LCD 顯示模塊。 半橋輸出的 PWM 波產(chǎn)生電路 由于原先在選擇單片機(jī)時(shí)選擇的是 PIC18F4520,其內(nèi)部本身就具有ECCP模塊 ,所以只需要單片機(jī)的最小系統(tǒng)就可以實(shí)現(xiàn)兩路推挽的 PWM波的輸出,無(wú)需外加其他電路。 鄭州大學(xué) 本科畢業(yè)論文 4 A/D 采樣及調(diào)理電路 本系統(tǒng)主要對(duì)輸出的電壓以及電流進(jìn)行采樣,通過(guò)分壓或者信號(hào)調(diào)理電路進(jìn)行整形和放大送至 A/D 轉(zhuǎn)換器,由于 PIC 單片機(jī)本身就內(nèi)置有A/D 轉(zhuǎn)換模塊,所以不必外擴(kuò)展 A/D 轉(zhuǎn)換器,使得整個(gè)系統(tǒng)的硬件電路變得更為簡(jiǎn)捷。 圖 23 PIC18F4520各管腳電路圖 圖 24 電壓分壓采樣電路 電壓采樣電路 單片機(jī)的 A/D 轉(zhuǎn)換器所能接受的輸入轉(zhuǎn)換電壓為 05V,而從開(kāi)關(guān)電源的輸出端所輸出的電壓在 24V36V之間,要將其轉(zhuǎn)換成相應(yīng)的數(shù)量值就必須將輸出端的電壓進(jìn)行降壓處理,故采用了分壓電路,將輸出電壓的值降到 24V 之間,考慮到電阻的功耗問(wèn)題,兩個(gè)分壓電阻不宜太小,同時(shí)考慮到電阻的阻值越大越容易受干擾,阻值又不宜取太大,因此,我們最終選定 100k 和 10k 這兩個(gè)電阻分壓以便單片機(jī)的 A/D 轉(zhuǎn)換器進(jìn)行模數(shù)的轉(zhuǎn)換。具體的分壓電路較 為簡(jiǎn)單,如圖 24所示。 電流采樣調(diào)理電路 本系統(tǒng)采用康銅絲 [6]進(jìn)行電流的采樣。用康銅絲是考慮到功率損耗的問(wèn)題,是因?yàn)榭点~絲的阻值很小,一般在 左右,電流流經(jīng)康銅絲后的電壓很小,最大值不會(huì)超過(guò) 50mV,信號(hào)比較微弱。因此,在進(jìn)行采樣的時(shí)候,我們需要將此電壓信號(hào)放大到 PIC 單片機(jī)的 A/D 模塊能夠接受的 05V 之間的范圍。本系統(tǒng)根據(jù)實(shí)際的需要將該電壓進(jìn)行大約 100 倍的放大,這一模塊的電路圖 如 25所示。 直接用提供的公式計(jì)算, 當(dāng)U1=U2=Uf 時(shí), 滿足輸出 Uo=(U1+U2),當(dāng)然如果要求說(shuō)滿足一個(gè)確定的關(guān)鄭州大學(xué) 本科畢業(yè)論文 5 系式時(shí),可以通過(guò)改變兩個(gè)電阻與 Rf的比值得到 所需要的比例關(guān)系。 從運(yùn)算放大器輸出的電壓 Vout=[1+(R31+R33)/R32]V current,放大倍數(shù)由(R31+R33)/R32決定。 1 2 3 4 5 6ABCD654321DCBAT i t l eN u m b e r R e v i s i o nS i z eBD a t e : 1 0 M a y 2 0 1 0 S h e e t o f F i l e : C : \ D o c u m e n t s a n d S e t t i n g s \ A d m i n i s t r a t o r \桌面 \畢業(yè)設(shè)計(jì) . d d bD r a w n B y :A R 1O P A M PVCC5VR 3 3100kR 3 21kC u r r e n tA m pR 3 11k 圖 25 電流采樣信號(hào)調(diào)理電路 矩陣鍵盤(pán)電路 通過(guò)鍵盤(pán)的輸入值對(duì)開(kāi)關(guān)電源在 20V36V 的輸出控制,而對(duì)其進(jìn)行恒壓的控制是根據(jù)設(shè)置的電壓值與采集到的電壓值的偏差進(jìn)行比較 。 如圖 26 所 示為 33 的矩陣式鍵盤(pán),這一鍵盤(pán)的電路設(shè)計(jì)是采用電阻分壓式設(shè)計(jì),配合 A/D 轉(zhuǎn)換器一查表得方式做按鍵的判斷,所以只要使用一個(gè)具有 A/D功能的輸入口即可完成對(duì) 33 的矩陣式鍵盤(pán)的掃描操作,圖中的 AnJian 端口與圖 23的 AN0 相連接,為 A/D 功能的輸入口。 此外,一般的按鍵所用開(kāi)關(guān)都是機(jī)械彈性開(kāi)關(guān),由于機(jī)械觸點(diǎn)的彈性作用,按鍵開(kāi)關(guān)在閉合時(shí)不會(huì)馬上穩(wěn)定地連接,在斷開(kāi)時(shí)也不會(huì)馬上完全的斷開(kāi),在閉合和斷開(kāi)的瞬間均有一連串的抖動(dòng),所以一般在程序中會(huì)加按鍵的去抖動(dòng)的部分。按鍵按下的電壓信號(hào)波形圖如圖 27所示,從圖中可以看出按鍵按下和松開(kāi)的時(shí)候都存在著抖動(dòng)。抖動(dòng)時(shí)間的長(zhǎng)短因按鍵的機(jī)械特性不同而有所不同,一般為 5ms~ 10ms。 如果不處理鍵抖動(dòng),則有可能引起一次按鍵被誤讀成多次,所以為了確保鄭州大學(xué) 本科畢業(yè)論文 6 能夠正確地讀到按鍵,必須去除鍵抖動(dòng),確保在按鍵的穩(wěn)定閉合和穩(wěn)定斷開(kāi)的時(shí)候來(lái)判斷按鍵狀態(tài),判斷后再做處理。 1 2 3 4 5 6ABCD654321DCBAT i t l eN u m b e r R e v i s i o nS i z eBD a t e : 7 M a y 2 0 1 0 S h e e t o f F i l e : C : \ D o c u m e n t s a n d S e t t i n g s \ A d m i n i s t r a t o r \ 桌面 \ 畢業(yè)設(shè)計(jì) . d d bD r a w n B y :S1K1S2K2S3K3S4K4S7k7S5K5S8K8S6K6S9K9R 2 410kR 2 54 . 7 kR 2 62 . 2 kVCC5VR 2 720kR 2 810kR 2 920kR 3 0 K30kA n J i a nA m p 圖 26 33 矩陣式鍵盤(pán) 在本系統(tǒng)的按鍵去抖動(dòng)設(shè)計(jì)中,主要是判斷按鍵是否抬起。如果此法效果不是很好,那就可以采用延時(shí)再判斷的方法,如前所述,機(jī)械按鍵的抖動(dòng)時(shí)間一般在 10ms20ms 之間。在程序中首先 A/D 采樣進(jìn)來(lái)的電壓值與延時(shí) 10ms 后的電壓值進(jìn)行比較,若相等,則說(shuō)明按鍵已經(jīng)確定按下,按鍵的抖動(dòng)已經(jīng)消除。假若不相等,則按鍵不確定已經(jīng)按下,需要重新再掃描。實(shí)驗(yàn)證明,本系統(tǒng)中只需要采用判斷按鍵是否抬起的方法已經(jīng)可以很好的去抖動(dòng)滿足要求了。 按 鍵 按 下前 抖 動(dòng) 穩(wěn) 定 閉 合 后 抖 動(dòng)按 鍵 松 開(kāi) 圖 17 按鍵抖動(dòng) 鄭州大學(xué) 本科畢業(yè)論文 7 液晶 LCD 顯示電路 液晶 1602 顯示器介紹 液 晶顯示器以其微功耗、體積小、顯示內(nèi)容豐富 以及 超薄輕的諸多優(yōu)點(diǎn),在各類(lèi)儀表和低功耗系統(tǒng)中得到廣泛的應(yīng)用 [78]。 根據(jù)顯示內(nèi)容可以分為字符型液晶,圖形液晶。根據(jù)顯示容量又可分為單行 16 字, 2行 16 字,兩 20 字等等。 本系統(tǒng)中采用的是一款應(yīng)用相當(dāng)廣泛,功能精簡(jiǎn)但完全可以滿足要求的 1602 液晶模塊。它是 16 字 2 行的字符型液晶模塊,是一種通用模塊,與數(shù)碼管相比該模塊主要有如下優(yōu)點(diǎn): 1)位數(shù)多,可顯示 32位,而 32 個(gè)數(shù)碼管體積相當(dāng)龐大了。 2)顯示內(nèi)容豐富,可顯示所有數(shù)字和大、小寫(xiě)字母。 3)程序簡(jiǎn)單, 如果用數(shù)碼管動(dòng)態(tài)顯示,會(huì)占用很多時(shí)間來(lái)刷新顯示,而 1602 自動(dòng)完成此功能。 1602 采用標(biāo)準(zhǔn)的 16腳接口,各管腳功能如表 21所示。 管腳序號(hào) 名稱(chēng) 功能 1 VSS 電源地端 2 VDD 電源+ 5V 端 3 VEE 液晶顯示器對(duì)比度調(diào)整端 4 RS 寄存器選擇,高選數(shù)據(jù)寄存器、低選指令寄存器 5 R/W 讀寫(xiě)信號(hào),高為讀、低為寫(xiě) 6 E 使能端,高電平跳變?yōu)榈碗娖綍r(shí)有效 7~ 14 D0~ D7 雙向數(shù)據(jù)口 鄭州大學(xué) 本科畢業(yè)論文 8 表 21 1602 各管腳及其功能 本系統(tǒng)中 1602 的應(yīng)用 根據(jù)系統(tǒng)設(shè)計(jì)的實(shí)際需要, 液晶模塊主要是顯示設(shè)定電壓值, AD 采集得到的時(shí)間電壓值,電流值。 1602 的各管腳和單片機(jī)各端口的連接如圖 28 所示,實(shí)物圖如圖 29 所示。液晶顯示器 1602 的 D0D3 分別與PIC18F4520 的 RD0RD3 相連接,使能端 E 則與單片機(jī)的 Vref+端相連, RS端與 RD4 連接, R/W 端則與 RD6 相連,具體可以把圖 23 與圖 28這兩幅圖聯(lián)合起來(lái)看。 1 16 腳是用來(lái)調(diào)節(jié)背光,達(dá)到即使黑暗的地方也能看清液晶屏上顯示的字符,但它有損于液晶屏的壽命。 123456A B C D654321DCBATitleNumberRevisionSizeBDate:1May2010 Sheet of File:D:\PROGRAM FILES\EXAMPLES\BACKUP~11.DDBDrawn By:V C C5 VRSRWED0D1D2D3V C C5 VS1K1S2K2S3K3S4K4S7k7S5K5S8K8S6K6S9K9R2410KR254.7KR262.2KV C C5 VR2720KR2810KR2920KR30K30KAnJianG N D1V C C2VO 3RS 4RW 5E6D B 07D B 18D B 29D B 3 10D B 4 11D B 5 12D B 6 13D B 7 14BG V C C15BG G N D16L CD 16 02U4LCD1602 圖 28 1602 與單片機(jī)引腳連接圖 1 16 LED+、 LED 調(diào)節(jié)液晶背光 鄭州大學(xué) 本科畢業(yè)論文 1 第三 章 系統(tǒng)軟件設(shè)計(jì) 單片機(jī)傳統(tǒng)的開(kāi)發(fā)語(yǔ)言是匯編語(yǔ)言,因?yàn)閰R編語(yǔ)言是最接近機(jī)器碼的一種語(yǔ)言。其主要優(yōu)點(diǎn)是占用資源少、程序執(zhí)行效率高。但是不同的 CPU,其匯編語(yǔ)言可能有所差異,所以不易移植。 作為一種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言, C 語(yǔ)言的特點(diǎn)就是可以使你盡量少地對(duì)硬件進(jìn)行操作,具有很強(qiáng)的功能性、結(jié)構(gòu)性和可移植性,因此常常被優(yōu)選作為單片機(jī)系統(tǒng)的編程語(yǔ)言。用 C 編寫(xiě)程序比匯編更符合人們的 思考習(xí)慣,開(kāi)發(fā)者可以擺脫與硬件無(wú)必要的接觸,更專(zhuān)心的考慮功能和算法而不是考慮一些細(xì)節(jié)問(wèn)題,這樣就減少了開(kāi)發(fā)和調(diào)試的時(shí)間。 C 語(yǔ)言具有良好的程序結(jié)構(gòu) ,適用于模塊化程序設(shè)計(jì),因此采用 C 語(yǔ)言設(shè)計(jì)單片機(jī)應(yīng)用系統(tǒng)程序時(shí),首先要盡可能地采用結(jié)構(gòu)化的程序設(shè)計(jì)方法,將功能模塊化,由不同的模塊完成不同的功能,這樣可使整個(gè)應(yīng)用系統(tǒng)程序結(jié)構(gòu)清晰,易于調(diào)試和維護(hù)。不同的功能模塊,分別指定相應(yīng)的入口參數(shù)和出口參數(shù),對(duì)于一些要重復(fù)調(diào)用的程序一般把其編成函數(shù),這樣可以減少程序代碼的長(zhǎng)度,又便于整個(gè)程序的管理,還可增強(qiáng)可讀性和移植性。 綜上, C 語(yǔ)言具有很強(qiáng)的功能性和結(jié)構(gòu)性,可以縮短單片機(jī)控制系統(tǒng)的開(kāi)發(fā)周期,而且易于調(diào)試和維護(hù),已經(jīng)成為目前單片機(jī)語(yǔ)言中最流行的編程語(yǔ)言。本程序設(shè)計(jì)正是將每一功能模塊化,一個(gè)一個(gè)模塊進(jìn)行 C 語(yǔ)言的編寫(xiě),再一塊一塊調(diào)試,從整個(gè)設(shè)計(jì)下來(lái)的結(jié)果看,用 C 語(yǔ)言編寫(xiě)程序達(dá)到了很好的效果。 本設(shè)計(jì)使用單片機(jī)對(duì)開(kāi)關(guān)電源進(jìn)行數(shù)字的控制,代替原來(lái)的 PWM 控制芯片 KA7500[9]。原先的 KA7500 所實(shí)現(xiàn)的功能是對(duì)輸出的電壓以及電流進(jìn)鄭州大學(xué) 本科畢業(yè)論文 2 行反饋采樣,通過(guò)誤差放大器之后對(duì)輸出的 PWM 波的占空比進(jìn)行相應(yīng)的調(diào)節(jié),起到了穩(wěn)壓恒流的作用。改 用 PIC18F4520 后,采取雙通道 A/D 采樣,分別為電壓采