版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 本科畢業(yè)設計(論文)</p><p> 題目:基于單片機控制的4~20mA直流電流源的設計與制作</p><p><b> 摘 要</b></p><p> 直流電流源作為穩(wěn)定電源的分支,在工程技術和測量領域中有著重要的實用價值。當今社會,數(shù)控恒壓技術已經(jīng)很成熟,但是恒流源方面特別是數(shù)控恒流源的技術還有待發(fā)展,高性能的
2、數(shù)控恒流器件的開發(fā)和應用存在巨大的發(fā)展空間。</p><p> 本設計直流電流源是以STC12C2052AD單片機為核心控制芯片,設計的直流電流源可以實時、準確的輸出4~20mA范圍的穩(wěn)定直流電流。</p><p> 本直流電流源的硬件部分主要由中央控制模塊、人機界面模塊、濾波和電壓電流轉換模塊、恒流源模塊和采樣電路模塊組成。中央控制模塊以STC12C2052AD單片機為核心,該單片機
3、有很好的抗干擾能力、響應速度快,基于此單片機的PWM脈寬調制技術控制實現(xiàn)高精度數(shù)控恒流源的設計,通過改變其內部PWM控制寄存器的數(shù)值來實現(xiàn)占空比的相應變化,實現(xiàn)核心控制作用。產(chǎn)生的PWM波經(jīng)濾波采樣電路輸出穩(wěn)定的直流電壓,經(jīng)過負載電阻轉化為直流電流。人機界面模塊以ZLG7289b芯片為核心,由鍵盤、數(shù)碼管電路實現(xiàn)電流數(shù)值設定和顯示功能。軟件部分采用C語言,編程特點簡潔緊湊、靈活方便。</p><p> 關鍵詞:
4、脈寬調制技術 ;STC12C2052AD單片機 ;ZLG7289b ;電壓電流轉換 </p><p><b> 目錄</b></p><p> 1緒論(設計背景)1</p><p> 1.1直流電流源1</p><p> 1.2脈沖寬度調制(PWM)概述1</p><p> 1
5、.3單片機概述2</p><p> 2系統(tǒng)方案的選擇與論證4</p><p><b> 2.1功能要求4</b></p><p> 2.2系統(tǒng)總體方案選擇與論證4</p><p> 2.3系統(tǒng)各模塊方案選擇與論證6</p><p> 3系統(tǒng)的硬件電路設計與實現(xiàn)8</p&
6、gt;<p> 3.1系統(tǒng)的硬件組成部分8</p><p> 3.2 主要電路模塊設計9</p><p> 3.2.1中央控制模塊9</p><p> 3.2.2人機界面模塊11</p><p> 3.2.3低通濾波電路與電壓電流轉化電路模塊15</p><p> 3.2.4恒流源模
7、塊17</p><p> 4系統(tǒng)的軟件設計及實現(xiàn)17</p><p> 4.1系統(tǒng)的總體流程圖19</p><p> 4.2數(shù)碼管正常顯示子程序流程圖20</p><p> 4.3按鍵掃描子程序流程圖21</p><p> 4.4 PWM輸出子程序流程圖22</p><p>
8、; 5數(shù)據(jù)測試及分析23</p><p><b> 6結束語24</b></p><p> 7致謝錯誤!未定義書簽。</p><p><b> 參考文獻24</b></p><p><b> 附錄25</b></p><p><
9、b> 1緒論(設計背景)</b></p><p><b> 1.1直流電流源</b></p><p> 直流電流源作為穩(wěn)定電源的分支,在工程技術和測量領域中有著重要的實用價值。基于模擬電路的電流源雖然可以實現(xiàn)高精度、寬電流范圍輸出,但其結構復雜, 調整困難,指示不直觀。隨著單片機技術的發(fā)展,數(shù)字控制電流源開始出現(xiàn),其以控制靈活、調節(jié)方便等特點
10、展示了良好的應用前景。當今社會,數(shù)控恒壓技術已經(jīng)很成熟,但是恒流源方面特別是數(shù)控恒流源的技術還有待發(fā)展,高性能的數(shù)控恒流器件的開發(fā)和應用存在巨大的發(fā)展空間。數(shù)控的目的是要用微處理器來代替?zhèn)鹘y(tǒng)直流穩(wěn)流電源中手動旋轉電位器,實現(xiàn)輸出電流的預置,精度要求高。數(shù)控直流恒流源要實現(xiàn)電流的鍵盤化輸入控制,同時具有顯示功能。</p><p> 1.2脈沖寬度調制(PWM)概述</p><p> 脈沖
11、寬度調制(PWM)是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。脈寬調制是開關型穩(wěn)壓電源中的術語。這是按穩(wěn)壓的控制方式分類的,除了PWM型,還有PFM型和PWM、PFM混合型。脈寬調制式開關型穩(wěn)壓電路是在控制電路輸出頻率不變的情況下,通過電壓反饋調整其占空比,從而達到穩(wěn)定輸出電壓的目的。</p><p> PWM是一種模擬控制方式,根據(jù)
12、相應載荷的變化來調制晶體管柵極或基極的偏置,來實現(xiàn)開關穩(wěn)壓電源輸出晶 體管或晶體管導通時間的改變,這種方式能使電源的輸出電壓在工作條件變化時保持恒定。</p><p> PWM是一種對模擬信號電平進行數(shù)字編碼的方法。通過高分辨率計數(shù)器的使用,方波的占空比被調制用來對一個具體模擬信號的電平進行編碼。PWM信號仍然是數(shù)字的,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓或
13、電流源是以一種通(ON)或斷(OFF)的重復脈沖序列被加到模擬負載上去的。通的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM進行編碼。 </p><p> 多數(shù)負載(無論是電感性負載還是電容性負載)需要的調制頻率高于10Hz,通常調制頻率為1kHz到200kHz之間。 </p><p> 許多微控制器內部都包含有PWM
14、控制器。占空比是接通時間與周期之比;調制頻率為周期的倒數(shù)。執(zhí)行PWM操作之前,這種微處理器要求在軟件中完成以下工作: </p><p> 設置提供調制方波的片上定時器/計數(shù)器的周期 </p><p> 在PWM控制寄存器中設置接通時間 </p><p> 設置PWM輸出的方向,這個輸出是一個通用I/O管腳 </p><p>&
15、lt;b> 啟動定時器 </b></p><p> 使能PWM控制器 </p><p> PWM的一個優(yōu)點是從處理器到被控系統(tǒng)信號都是數(shù)字形式的,無需進行數(shù)模轉換。讓信號保持為數(shù)字形式可將噪聲影響降到最小。噪聲只有在強到足以將邏輯1改變?yōu)檫壿?或將邏輯0改變?yōu)檫壿?時,也才能對數(shù)字信號產(chǎn)生影響。對噪聲抵抗能力的增強是PWM相對于模擬控制的另外一個優(yōu)點,而且這也
16、是在某些時候將PWM用于通信的主要原因。從模擬信號轉向PWM可以極大地延長通信距離。在接收端,通過適當?shù)腞C或LC網(wǎng)絡可以濾除調制高頻方波并將信號還原為模擬形式。 </p><p> 總之,PWM既經(jīng)濟、節(jié)約空間、抗噪性能強,是一種值得廣大工程師在許多設計應用中使用的有效技術。</p><p><b> 1.3單片機概述</b></p><
17、p> 自1946年第一臺電子計算機誕生以來,經(jīng)過50多年的發(fā)展,計算機能夠對信息進行加工處理,并得到了各行各業(yè)的廣泛應用。計算機對人類社會的發(fā)展起到了極大的推動作用。然而,使計算機的應用能夠真正深入社會生活各個方面,促使人類社會大步跨入電腦時代的一個重要原因,是微型計算機和單片微型計算機的產(chǎn)生和發(fā)展。單片微型計算機(Single Chip Microcomputer)簡稱單片機,是指在一片芯片體上集成了中央處理器CPU、隨機存儲
18、器ROM或EPROM、定時器/計數(shù)器、中斷控制器及串行和并行I/O接口等部件,構成一個完整的微型計算機。目前,新型單片機內還有A/D及D/A轉換器、高速輸入/輸出部件、DMA通道、浮點運算等特殊功能部件。由于它的結構和指令都是按工業(yè)控制要求設計的,特別適用與工業(yè)控制及數(shù)據(jù)處理場合。因此,確切的稱謂應該是微控制器,單片機只是其習慣稱呼。</p><p><b> 單片機的特點和應用</b>&
19、lt;/p><p> ?。?)單片機的特點:</p><p> 體積小、使用靈活、成本低、易于產(chǎn)業(yè)化。它能方便地嵌入到各種智能式測控設備及各種智能儀器儀表中;</p><p> 可靠性好,適應溫度范圍寬。由于單片機的生產(chǎn)廠商不斷地提高產(chǎn)品的抗干擾能力,單片機芯片本身也是按照工業(yè)測控設計的,能適應各種惡劣的環(huán)境,其抗工業(yè)噪聲干擾的能力優(yōu)于一般通用的CPU;</p
20、><p> 易擴展,很容易構成各種規(guī)模的應用系統(tǒng),控制功能強。I/O接口多,指令系統(tǒng)豐富,易于單片機的邏輯控制功能的實現(xiàn);</p><p> 系統(tǒng)內無監(jiān)控或系統(tǒng)管理程序。單片機系統(tǒng)內部一般無監(jiān)控或系統(tǒng)管理程序,使用簡單,只有用戶設計和調試好的應用程序;</p><p> ?。?)其主要應用領域有:</p><p> 測控系統(tǒng)。 用單片機可構
21、成各種工業(yè)控制系統(tǒng)、自適應系統(tǒng)、數(shù)據(jù)采集系統(tǒng)等。例如,溫度人工氣候控制、水閘自動控制、電鍍生產(chǎn)線控制、汽輪機電調節(jié)系統(tǒng)、車輛檢測系統(tǒng)、機器人軸處理器等;</p><p> 智能儀表。 用單片機改造原有的測量、控制儀表,能促進儀表向數(shù)字化、智能化、多功能化、綜合化、柔性化發(fā)展。如溫度、壓力、流量、濃度等的測量、顯示及儀表控制。通過采用單片機軟件編程技術,使測量儀表中長期存在的誤差修正、線性化處理等難題迎刃而解;&
22、lt;/p><p> 機電一體化產(chǎn)品。 單片機與傳統(tǒng)的機械產(chǎn)品結合。是傳統(tǒng)機械產(chǎn)品結構簡化,控制智能化。這類產(chǎn)品如:簡易數(shù)控機床,電腦繡花機,醫(yī)療器械等;</p><p> 智能接口。 在計算機控制系統(tǒng)(特別是較大型的工業(yè)測控系統(tǒng))中,普遍采用單片機進行接口的控制與管理,因單片機與主機是并行工作,故大大提高了系統(tǒng)的運行速度。例如:在大型數(shù)據(jù)采集系統(tǒng)中,用單片機對ADC接口進行控制不僅可提高
23、采集速度,而且還能對數(shù)據(jù)進行預處理,如數(shù)字濾波,線性化處理,誤差修正等;</p><p> 智能民用產(chǎn)品。 在家用電器、玩具、游戲機、聲響設備、電子稱、收銀機、辦公設備、廚房設備等產(chǎn)品中引入單片機,不僅使產(chǎn)品的功能大大加強,而且獲得了良好的使用效果;</p><p> 多機應用系統(tǒng)。A、功能集散系統(tǒng)。多功能集散系統(tǒng)是為了滿足工程系統(tǒng)多種外圍功能的要求而設置的多機系統(tǒng)。例如:一個加工中心
24、的計算機系統(tǒng)除了完成機床加工運行控制外,還要控制對刀系統(tǒng)、坐標系統(tǒng)、狀態(tài)監(jiān)視、伺服驅動等工程應用系統(tǒng)的快速問題,以便構成大型實時工程應用系統(tǒng)。典型的有快速并行數(shù)據(jù)采集、處理系統(tǒng)、實時圖象處理系統(tǒng)等;</p><p> 2系統(tǒng)方案的選擇與論證</p><p><b> 2.1功能要求</b></p><p> 設計使用單片機與數(shù)碼管鍵盤驅動
25、芯片為核心制作直流電流源設計,實現(xiàn)直流電流輸出與數(shù)值顯示功能,設計要求進行硬件、軟件系統(tǒng)設計。</p><p> 2.2系統(tǒng)總體方案選擇與論證</p><p> 方案1:本設計采用AT89C51單片機作為整機的控制單元,通過改變AD的輸入數(shù)字量來改變輸出電壓值,從而使輸出功率管的基極電壓發(fā)生變化,間接地改變輸出電流的大小。為了能夠使系統(tǒng)具備檢測實際輸出電流值的大小,可以將電流轉換成電壓
26、,并經(jīng)過ADC進行模數(shù)轉換,間接用單片機實時對電壓進行采樣,然后進行數(shù)據(jù)處理及顯示。此系統(tǒng)比較靈活,采用軟件方法來解決數(shù)據(jù)的設置以及電流的步進控制,使系統(tǒng)硬件更加簡潔,各類功能易于實現(xiàn),能很好地滿足題目的要求。本方案的基本原理如圖2-1所示。</p><p> 方案2:采用STC12C2052AD單片機作為整機的控制單元,利用PWM脈寬調制技術來實現(xiàn)高精度數(shù)控恒流源的設計。本系統(tǒng)通過小鍵盤和LED實現(xiàn)人機交流,
27、小鍵盤負責設計輸入要實現(xiàn)的電流值,LED 負責顯示電流數(shù)值。單片機根據(jù)輸入的電流數(shù)值通過軟件控制產(chǎn)生對應的PWM波,經(jīng)過濾波電路后對壓控恒流元件進行控制,產(chǎn)生電流,電流再經(jīng)過采樣電阻到達負載。同時,對采樣電阻兩端信號進行差分和放大,送入ADC。單片機根據(jù)采集到的值調整PWM輸出,從而調整了輸出電流。如此反復,直到電流達到設定要求。本方案的基本原理如圖2-2所示。</p><p> 圖2-1 系統(tǒng)原理框圖<
28、;/p><p> 圖2-2 系統(tǒng)原理框圖</p><p><b> 方案論證:</b></p><p> 比較以上兩種方案的優(yōu)缺點,方案2簡潔、靈活,從精度和成本等方面考慮能達到題目的設計要求,因此本次畢業(yè)設計采用方案2來實現(xiàn)。</p><p> 2.3系統(tǒng)各模塊方案選擇與論證</p><p&g
29、t;<b> ?。?)中央控制模塊</b></p><p> 系統(tǒng)的核心控制模塊為STC12C2052AD單片機。主要使用了STC12C2052AD單片機的PWM脈寬調制功能和A/D功能。單片機片內有一個PWM功能的定時/計數(shù)器。PWM波是數(shù)字向模擬轉換的一種重要方法,通常使用單片機的定時器做頻率發(fā)生器,含有數(shù)字比較器,當設定值與定時器的值相等,引腳的電平發(fā)生翻轉??刂圃O定值,就控制了PW
30、M波占空比,通過濾波,輸出直流模擬量。PWM開關穩(wěn)流電源基本工作原理就是在輸入電壓變化、內部參數(shù)變化、外接負載變化的情況下,控制電路通過被控制信號與基準信號的差值進行閉環(huán)反饋,調節(jié)主電路開關器件的導通脈沖寬度,使得開關電源的輸出電流等被控制信號穩(wěn)定。</p><p> PWM波產(chǎn)生過程:單片機片內有一個具有8位PWM功能的定時/計數(shù)器。在普通模式下,計數(shù)器不停地累加,計到最大值0xff后溢出,返回到最小值0x0
31、0重新開始。當啟用PWM功能即在單片機的快速PWM模式下,通過調整CCAPNL的值x可實現(xiàn)輸出PWM波的占空比變化。產(chǎn)生PWM波形的機理是:PWM引腳電平在發(fā)生匹配時以及在計數(shù)器清零的那一個定時器時鐘周期內發(fā)生跳變,即波形產(chǎn)生相應變化。PWM占空比:(256-x)/256 * 100%。</p><p><b> ?。?)人機界面模塊</b></p><p><
32、b> 方案選擇:</b></p><p> 方案1:采用LCD顯示。特點:顯示內容豐富,采用數(shù)字式接口,體積小、重量輕,功率消耗小,但編程復雜,且成本相對LED較高。</p><p> 方案2:采用LED并行動態(tài)顯示。即一位一位地輪流點亮各位顯示器,對每一位顯示器而言,每隔一段時間點亮一次。其硬件電路簡單,但同樣的功率驅動下,顯示亮度不及靜態(tài)顯示,且占用I/O口較多
33、。</p><p> 方案3:采用LED串行靜態(tài)顯示。即顯示某一字符時,相應的發(fā)光二極管恒定導 通或截止,這種方式每一個顯示位都需要一個8位輸出口控制,占用硬件較多,但僅占用控制器串口的兩個I/O口,軟件實現(xiàn)簡單,顯示亮度高,成本低。</p><p> LED數(shù)碼管顯示器由8個發(fā)光二極管組成,因此也稱之為8段LED數(shù)碼管,因為LED數(shù)碼管顯示成本較低,外加一個驅動芯片,所需單片機接口
34、較少,而且程序容易實現(xiàn)??紤]到本次設計的需要,只要顯示3位電流值,采用方案2,使用1個4位共陰極數(shù)碼管及1個驅動芯片ZLG7289b。</p><p> 本模塊以ZLG7289b數(shù)碼管顯示驅動及鍵盤掃描管理芯片為核心,包括鍵盤電路和數(shù)碼管顯示電路。鍵盤設計為1×4按鍵,由功能鍵“+”、“-”、“選擇”及“確認”組成,輸入最小設定步進等級為0.1mA,“選擇”完成顯示值數(shù)值切換功能。功能鍵“確定”完成確
35、定輸出顯示值并且產(chǎn)生對應數(shù)值直流電流功能。通過驅動電路實現(xiàn)鍵值識別。數(shù)碼管采用4位共陰極數(shù)碼管。</p><p> ?。?)低通濾波電路模塊</p><p> PWM波產(chǎn)生后不能直接用于控制場效應晶體管,需把其變成能隨占空比變化而變化的直流電壓。本次設計采用有源濾波電路,主要由放大器與RC網(wǎng)絡組成。低通濾波電路模塊在電路中的作用:</p><p> 對PWM輸出
36、信號進行調制,首先PWM模塊將輸入信號轉換成對時間進行調制而幅度等于電源電壓的脈沖信號,PWM模塊內的全橋放大器一般都利用反相鎖存調制,當一個輸出為高,另一個輸出總是低。假如50%占空比,則意味著開關頻率的每個周期內高和低的時間相等,脈沖信號必須通過低通功率濾波電路解調后,才能到達負載端其信號值為零。</p><p> 低通功率濾波電路抑制通過時間調制的方波載波信號,在濾波電路的輸出端上可以得到遠低于PWM開關
37、頻率的負載載波信號,事實上占空比不斷變化的PWM信號參雜了很多高頻毛刺成分,會嚴重干擾反饋電路的參數(shù),同時過高的載波頻率可能會損壞負載本身。</p><p><b> 恒流源模塊</b></p><p> 基本的恒流源電路主要是由輸入級和輸出級構成,輸入級提供參考電流,輸出級輸出需要的恒定電流。恒流源電路就是要能夠提供一個穩(wěn)定的電流以保證其它電路穩(wěn)定工作的基礎,即
38、要求恒流源電路輸出恒定電流。因此作為輸出級的器件應該是具有飽和輸出電流的伏安特性。這可以采用工作于輸出電流飽和狀態(tài)的BJT 或者MOSFET來實現(xiàn)。</p><p> 為了保證輸出晶體管的電流穩(wěn)定,就必須要滿足兩個條件:</p><p><b> 其輸入電壓要穩(wěn)定</b></p><p> 輸出晶體管的輸出電阻盡量大(最好是無窮大)<
39、;/p><p><b> 方案選擇:</b></p><p> 方案1:采用恒流二極管或者恒流三極管。其特點精度比較高,但這種電路能實現(xiàn)的恒流范圍很小。</p><p> 方案2:采用四端可調恒流源。這種器件靠改變外圍電阻元件參數(shù),從而使電流達到可調的目的,這種器件能夠達到1~2000毫安的輸出電流。改變輸出電流,通常有兩種方法:一是通過手動
40、調節(jié)來改變輸出電流,這種方法不能滿足題目的數(shù)控調節(jié)要求;二是通過數(shù)字電位器來改變需要的電阻參數(shù),雖然可以達到數(shù)控的目的,但數(shù)字電位器的每一級步進電阻比較大,所以很難調節(jié)輸出電流。</p><p> 方案3:壓控恒流源。通過改變恒流源的外圍電壓,利用電壓的大小來控制輸出電流的大小。電壓控制電路采用數(shù)控的方式,利用單片機送出數(shù)字量,經(jīng)過D/A轉換轉變成模擬信號,再送到大功率三極管進行放大。單片機系統(tǒng)實時對輸出電流進
41、行監(jiān)控,采用數(shù)字方式作為反饋調整環(huán)節(jié),由程序控制調節(jié)功率管的輸出電流恒定。當改變負載大小時,基本上不影響電流的輸出,采用這樣一個閉路環(huán)節(jié)使得系統(tǒng)一直在設定值維持電流恒定。該方案通過軟件方法實現(xiàn)輸出電流穩(wěn)定,易于功能的實現(xiàn),便于操作,故選擇方案3。</p><p> (5)采樣電路 當對采樣電阻兩端信號進行差分后,可得到采樣電阻兩端的電壓值U,而在已知采樣電阻阻值情況下,很容易得到流經(jīng)采樣電阻的電流,即I
42、=U/R。由于負載與采樣電阻在同一條支路,故流經(jīng)負載的電流也為I。差分放大電路的放大倍數(shù)可根據(jù)采樣電阻阻值以及ADC的參考電壓來選擇,差分信號經(jīng)ADC口送入單片機進行處理。 </p><p> 3系統(tǒng)的硬件電路設計與實現(xiàn)</p><p> 3.1系統(tǒng)的硬件組成部分</p><p> 系統(tǒng)硬件電路主要由中央控制模塊、人機界面模塊、低通濾波與電壓電流轉換模塊和恒流
43、源模塊組成。系統(tǒng)總原理圖如圖3-1所示。</p><p> 圖3-1 總系統(tǒng)原理圖</p><p> 3.2 主要電路模塊設計</p><p> 3.2.1 中央控制模塊</p><p> 本模塊設計主要以STC12C2052AD單片機最小系統(tǒng)為核心。ZLG7289b數(shù)碼管顯示驅動及鍵盤掃描管理芯片與單片機STC12C2052AD的接
44、口采用3線制SPI串行總線,由CS、CLK和DIO這3根信號線組成。CS和CLK是輸入信號,由STC12C2052AD提供。DIO信號是雙向的,必須接到STC12C2052AD上具有雙向功能的I/O上。STC12C2052AD單片機與ZLG7289b數(shù)碼管顯示驅動及鍵盤掃描管理芯片引腳對應關系如表3.1所示。中央控制模塊系統(tǒng)原理圖如圖3-2所示。</p><p> 表3.1 STC12C2052AD與ZLG72
45、89b引腳對應關系</p><p> 圖3-2中央控制模塊系統(tǒng)原理圖</p><p> STC12C2052AD系列1T單片機簡介:</p><p> STC12C2052AD系列單片機是宏晶科技生產(chǎn)的單時鐘/機器周期(1T)的高速/低功耗/超強抗干擾的新一代851單片機,指令代碼完全兼容傳統(tǒng)8051,單速度快8-12倍,內部集成MAX810專用復位電路。2路
46、PWM,8路高速8位A/D轉換,針對電機控制,強干擾場合。STC12C2052AD引腳圖如圖3-3所示。</p><p> STC12C2052AD系列1T單片機特點:</p><p> 增強型1T流水線/精簡指令集結構8051CPU</p><p> 工作電壓:2.4V~3.8V/3.4V~5.5V</p><p> 工作頻率范圍:
47、0~35MHz,相當于普通8051的0~420MHz</p><p> 用戶應用程序空間512/1K/2K/3K/4K/5K字節(jié)</p><p> 片上集成256字節(jié)RAM</p><p> 15個通用I/O口復位后為:準雙向口/弱上拉</p><p> 可設置成四種模式:準雙向口/弱上拉,推挽/強上拉,僅為輸入/高阻,開漏</
48、p><p><b> EEPROM功能</b></p><p> 共2個16位定時器/計數(shù)器</p><p> PWM(2路)/PCA(可編程計數(shù)器陣列)</p><p> ADC,8路8位精度</p><p> 通用異步串行口(UART)</p><p> SPI
49、同步通信口,主模式/從模式</p><p><b> 看門狗</b></p><p> 內部集成 R/C振蕩器,精度要求不高時可省外部晶體</p><p> ISP(在系統(tǒng)可編程)/IAP(在應用可編程),無需專用仿真器可通過串口直接下載用戶程序,數(shù)秒即可完成一片</p><p> 工作溫度范圍:0~75℃/-4
50、0~+85℃</p><p> 封裝: PDIP-20</p><p> 圖3-3 STC12C2052AD引腳圖</p><p> 3.2.2人機界面模塊</p><p> 本模塊以ZLG7289b數(shù)碼管顯示驅動及鍵盤掃描管理芯片為核心,包括鍵盤電路和LED顯示電路。LED選用4位共陰極數(shù)碼管,實際只選通前3位使用。鍵盤電路設置4個
51、按鍵,通過驅動電路實現(xiàn)鍵值識別。4個按鍵分別為“+”、“-”、“選擇”和“確定”鍵。人機界面模塊系統(tǒng)原理圖如圖3-4所示。</p><p> 圖3-4人機界面模塊系統(tǒng)原理圖</p><p> ?。?)ZLG7289b數(shù)碼管顯示驅動與鍵盤管理芯片</p><p> ZLG7289b是廣州周立功單片機發(fā)展有限公司自行設計的數(shù)碼管顯示驅動及鍵盤掃描管理芯片,可直接驅動
52、8位共陰極數(shù)碼管(或64只獨立LED),同時還可以掃描管理多達64只按鍵,并自動消除抖動,可廣泛地應用于儀器儀表、工業(yè)控制器、條形顯示器、控制面板等領域。 </p><p> ZLG7289B內部含有顯示譯碼器,可直接接受BCD碼或16進制碼,并同時具有2種譯碼方式。此外,還具有多種控制指令,如消隱﹑閃爍﹑左移﹑右移﹑段尋址等。芯片采用SPI串行總線與微控制器接口,僅占用少數(shù)幾根I/O口線。利用片選信號,多片Z
53、LG7289b 還可以并接在一起使用,能夠方便地實現(xiàn)多于 8 位的顯示或多于 64只按鍵的應用。</p><p> 芯片采用I2C總線方式,與微控制器的接口僅需兩根信號線。</p><p> ZLG7289b引腳圖如圖3-5所示,ZLG7289b引腳功能說明如表3.2所示。</p><p> ZLG7289b數(shù)碼管顯示驅動與鍵盤管理芯片特點:</p>
54、;<p> 串行接口,無需外圍元件可直接驅動LED</p><p> 各位獨立控制譯碼/不譯碼/及消隱和閃爍屬性</p><p> ?。ㄑh(huán))左移/(循環(huán))右移指令</p><p> 具有段尋址指令,方便控制獨立LED</p><p> 64鍵鍵盤控制器,內含去抖動電路</p><p> 工作電
55、壓2.7V~6.0V</p><p> 圖3-5 ZLG7289b引腳圖</p><p> 表3.2 ZLG7289b引腳功能說明</p><p> ZLG7289b SPI串行接口信號:</p><p> ZLG7289b與STC12C2052AD的接口采用3線制SPI串行總線,由CS、CLK和DIO這3根信號線組成。CS和CLK是
56、輸入信號,由STC12C2052AD提供。DIO信號是雙向的,必須接到單片機STC12C2052AD上具有雙向功能的I/O上。SPI信號線的具體意義請參見表3.3。操作SPI總線的時序圖請參見圖3-6、圖3-7和圖3-8。其中圖3-8是讀按鍵值的時序圖,只有當INT引腳出現(xiàn)下跳沿時才允許去讀取按鍵值,否則將得不到有意義的數(shù)據(jù)。</p><p> 表3.3 ZLG7289b的SPI串行接口信號</p>
57、<p> SPI 總線時序圖(3個)</p><p> 圖3-6 純指令時序圖(單字節(jié)命令)</p><p> 圖3-7 帶數(shù)據(jù)指令時序圖(命令字在前,輸入數(shù)據(jù)在后)</p><p> 圖3-8讀鍵盤指令時序圖(命令字在前,鍵值在后)</p><p> ZLG7289b下載數(shù)據(jù)并且按方式0 進行譯碼</p>
58、<p> 在指令格式中,高 5 位的10000是命令字段;a2a1a0是數(shù)碼管顯示數(shù)據(jù)的位地址,位地址編號按從左到右的順序依次為0、1、2、3、4、5、6、7(以圖3-1為準)。dp控制小數(shù)點是否顯示,dp=0時該位的小數(shù)點被點亮,dp=1時該位的小數(shù)點被熄滅;xxx是無關地址位;d3d2d1d0是要顯示的數(shù)據(jù)。顯示數(shù)據(jù)按照3.4表中的規(guī)則進行譯碼:</p><p> 表 3.4 下載數(shù)據(jù)命令譯
59、碼方式0</p><p> ?。?)4位共陰極數(shù)碼管</p><p> 共陰極數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰極數(shù)碼管在應用時應將公共極COM接到地線GND上,當某一字段發(fā)光二極管的陽極為高電平時,相應字段就點亮。當某一字段的陽極為低電平時,相應字段就不亮。本次設計采用4位共陰極數(shù)碼管,實際只選通3位使用。數(shù)碼管端選位與ZLG7289b的端選位
60、對應連接。4位共陰極數(shù)碼管電路圖如3-9所示。</p><p> 圖3-9 4位共陰極數(shù)碼管</p><p> 數(shù)碼管動態(tài)顯示驅動技術簡介:</p><p> 數(shù)碼管動態(tài)顯示接口是單片機中應用最為廣泛的一種顯示方式之一,動態(tài)驅動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM
61、增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅動。在輪流顯示過程中,每位數(shù)碼管的點亮時間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余
62、輝效應,盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。</p><p> 3.2.3低通濾波電路與電壓電流轉化電路模塊</p><p> PWM波產(chǎn)生后不能直接用于控制場效應晶體管,需把其變成能隨占空比變化而變化的直流電壓。濾波電路常用于濾去整流輸出電壓
63、中的紋波,本次設計采用有源濾波電路,主要由放大器LM324N和RC網(wǎng)絡組成,電路中LM324N起電壓跟隨器作用。直流電壓需經(jīng)過電阻R(250歐姆)才能轉換為相應的直流電流。系統(tǒng)原理圖如圖3-10所示。</p><p> 圖3-10低通濾波電路與電壓電流轉化電路模塊系統(tǒng)原理圖</p><p> LM324N是由四個獨立的運算放大器組成的電路。LM324N引腳說明如表3.5所示,LM324
64、N引腳圖如圖3-11所示。其特點如下:</p><p> 具有寬的單電源或雙電源工作電壓范圍;單電源3V~30V,雙電源±1.5V~±15V </p><p> 內含相位校正回路, 外圍元件少</p><p> 消耗電流小:ICC=0.6mA (典型值, RL=∞)</p><p> 輸入失調電壓低:±
65、;2mV (典型值) </p><p> 電壓輸出范圍寬:0V~VCC </p><p> 共模輸入電壓范圍寬:0V~VCC</p><p> 封裝形式:DIP14 </p><p> 表3.5LM324N引腳說明</p><p> 圖3-11 LM324N引腳圖</p><p&
66、gt; 3.2.4恒流源模塊</p><p> 單片機引腳控制輸出電壓不能精確輸出0-5V,必須經(jīng)過恒流模塊控制才能近似達到控制效果。恒流源模塊采用場效應管IRF3502與5V穩(wěn)壓管LM336-5組成。如圖3-12所示。</p><p> 圖3-12 恒流源模塊系統(tǒng)原理圖</p><p> 4系統(tǒng)的軟件設計及實現(xiàn)</p><p>
67、本次設計軟件部分編程采用Keil C51軟件。Keil C51是美國keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(UVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WI
68、NXP等操作系統(tǒng)。使用C語言編程,Keil就是不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調試工具也會令使用者事半功倍。</p><p> ZLG7289b芯片的51單片機C51驅動程序軟件包是由3個文件IC72X9.h、IC72X9_user.h和IC72X9v2.c組成。IC72X9_user.h包含IC72X9的I/O接口定義,用戶要根據(jù)實際電路修改。頭文件IC72X
69、9.h包括用戶指令集聲明。 C語言文件IC72X9v2.c是這些用戶指令的具體實現(xiàn)。用戶指令集如表4.1所示。 </p><p> 在keil C51中,該軟件包的具體用法是: </p><p> 將文件IC72X9v2.c、IC72x9.h和IC72X9_user.h一起復制到您的工程文件夾下,把文件IC72X9v2.c添加進工程中。 </p><p> 根
70、據(jù)電路的實際情況,在文件IC72X9_user.h中重新定義片選、時鐘、數(shù)據(jù)和鍵盤申請接口。</p><p> 表4.1 IC72X9 的用戶指令集</p><p> 4.1系統(tǒng)的總體流程圖</p><p> 圖4-1系統(tǒng)的總體流程圖</p><p> 4.2數(shù)碼管正常顯示子程序流程圖</p><p> 系統(tǒng)
71、上電后,由于初始程序設定數(shù)碼管首先顯示數(shù)值4.0,此時iout的值是顯示值的十倍為40。因為設計的電流輸出范圍是4~20mA,即iout的值是40~200,如果輸入值不在其范圍內就不能得到設計范圍內要求輸出的電流,所以進行第一次對iout值的判斷。當iout大于等于200的時候,iout就等于200,對應輸出電流大小20mA;當iout小于等于40的時候,iout就等于40,對應輸出電流大小4mA;iout在40到200之間,對應正常范
72、圍內的電流大小。然后進行第二次對iout值的判斷。當iout大于等于100的時候,數(shù)碼管正常顯示十位、個位和小數(shù)位;當iout小于100的時候,數(shù)碼管值顯示個位和小數(shù)位。數(shù)碼管正常顯示子程序流程圖如圖4-2所示。</p><p> 圖4-2 數(shù)碼管正常顯示子程序流程圖</p><p> 4.3按鍵掃描子程序流程圖</p><p> 系統(tǒng)一共有4個按鍵分別為“+
73、”、“-”、“選擇”和確定鍵。系統(tǒng)上電后,進入鍵盤掃描模式后,通過ZLG289b芯片鍵盤掃面指令進行鍵值掃描。如果掃描到有鍵按下,首先判斷是否為選擇鍵被按下,如果按下的不是選擇鍵則不能進入修改模式,修改鍵“+”、“-”都無效;如果按下的是選擇鍵,則進入修改模式,選中的修改位閃爍,進入修改模式可按“+”、“-”進行數(shù)值修改。按下確定鍵后,退出修改模式,選中位數(shù)碼管停止閃爍。按鍵掃描子程序流程圖如圖4-3所示。</p><
74、;p> 圖4-3 按鍵掃描子程序流程圖</p><p> 4.4 PWM輸出子程序流程圖</p><p> PWM輸出子程序是控制電流輸出大小的核心程序。由于硬件系統(tǒng)本身的缺陷,所以必須進行軟件的修正,才能滿足設計題目的要求。軟件修正采用了分段線性修正。理論上PWM占空比變化對應1~5V電壓,兩者是線性關系;1~5V電壓經(jīng)過250歐姆電阻對應4~20mA也是線性關系。通過計算實
75、際電流值與PWM寄存器數(shù)值的函數(shù)關系為一次函數(shù),按鍵設定輸入的電流值通過計算函數(shù)關系修正后,控制輸出的電流大小基本能滿足要求。設置進入PCA的輸入模式,賦值給寄存器CCAP1后輸出對應關系的PWM波。PWM輸出子程序流程圖如圖4-4所示。</p><p> 圖4-4 PWM輸出子程序流程圖</p><p><b> 5數(shù)據(jù)測試及分析</b></p>
76、<p> 給電流源上電,通過按鍵設定輸出電流值,250歐姆負載電阻通過外部電流表測量的電流值,相關數(shù)據(jù)如表5.1所示。由于設計本身電子元器件的電壓線性關系不是很理想,盡管進行了軟件修正對輸出進行反饋調節(jié),但是部分輸出電流范圍內的誤差偏大。</p><p> 本直流電流源能夠基本完成設定直流電流的輸出,但由于個人經(jīng)驗不足等因素,本設計還有一些不足之處,離產(chǎn)品實用還有一定的差距,還有一些方面需要進一步完
77、善。</p><p> 表5.1 實驗相關數(shù)據(jù)</p><p><b> 6結束語</b></p><p> 在設計制作數(shù)控直流恒流源的過程中,我深切體會到,實踐是理論運用的最好檢驗。本次設計是對我四年所學知識的一次綜合性檢測和考驗,無論是動手能力還是理論知識運用能力都得到了提高,同時加深了我對網(wǎng)絡資源認識,大大提高了查閱資料的效率,使我
78、有充足的時間投入到電路設計當中。本系統(tǒng)的研制主要應用到了模擬電子技術、數(shù)字電子技術、單片機控制技術、電子工藝等多方面的知識,所設計的基于單片機程序控制的數(shù)控恒流源,基本達到了題目要求。在數(shù)據(jù)測試和調試方面,由于儀表存在誤差和電路主要器件特性不是很理想產(chǎn)生的誤差,使得測量數(shù)據(jù)不是很精確,本系統(tǒng)就此通過軟件線性補償設計,減少誤差的存在,提高了系統(tǒng)的精度。</p><p><b> 參考文獻</b&g
79、t;</p><p> [1]《單片機應用技術》 劉守義 西安 西安電子科技大學出版社 2002</p><p> [2]《單片微機測控系統(tǒng)設計大全》 王福瑞 北京 北京航空航天大學出版社 1998</p><p> [3]《數(shù)控恒流源》 曾波 電子世界 第九期 2005</p><p> [4]《電子電路》 何希才 北京 北京航空航
80、天大學出版社 2003</p><p> [5]《模擬電子技術基礎》 李義府 長沙 國防科技大學出版社 2004</p><p> [6]《單片機原理及接口技術》 李朝青 北京 北京航空航天大學出版社 1994</p><p> [7]《單片機C語言編程與示例》 趙亮等 人民郵電出版社 2003.9</p><p> [8]《C程序
81、設計(第二版)》 譚浩強 清華大學出版社 1999.12</p><p> [9]《電子技術基礎 模擬部分》 康華光 高等教育出版社2004.7</p><p> [10]《單片機應用開發(fā)實例》 劉文濤 清華大學出版社 2005.9</p><p><b> 附錄</b></p><p><b&
82、gt; 系統(tǒng)總原理圖</b></p><p><b> 源程序:</b></p><p> #include <STC12C2052AD.H></p><p> #include <IC72X9.H></p><p> #include <IC72X9_user.H&g
83、t;</p><p> #define LED100 0</p><p> #define LED10 1</p><p> #define LED12</p><p> #define IncKey 0</p><p> #define DecKey 1</p><p>
84、#define SKey 2</p><p> #define EnKey3</p><p> code unsigned char led_addr[ ] = {LED100, LED10, LED1};//顯示的百十個位對應的數(shù)碼管位選信號編號</p><p> unsigned char iout = 40;//設定電流大小,40表示4mA</
85、p><p> unsigned char num[ ] = {0,4,0};//顯示的百十個位上的數(shù)字</p><p> unsigned char flash_index;//標志百十個位的閃爍狀態(tài)</p><p> #define Flash 0</p><p> #define NoFlash 1</p><p&
86、gt; #define WaitFlash 2</p><p> char state;//工作狀態(tài)指示</p><p> void iout2num(void)</p><p><b> {</b></p><p> unsigned char x = iout;</p><p>&l
87、t;b> char i;</b></p><p> for(i=2;i>=0;i--)</p><p><b> {</b></p><p> num[i] = x % 10;</p><p> x = x / 10;</p><p><b> }
88、 </b></p><p><b> }</b></p><p> void num2iout(void)</p><p><b> {</b></p><p> int tmp = num[0] *100 + num[1] *10 + num[2];</p>&l
89、t;p> if(tmp>200) tmp = 200;</p><p> if(tmp<40) tmp = 40;</p><p> iout = tmp;</p><p><b> }</b></p><p> //根據(jù)led_addr[flash_index]取值情況,閃爍顯示或不閃&l
90、t;/p><p> void flash_display(unsigned char datum, bit flash)//flash=1表示閃爍</p><p><b> {</b></p><p> char i = led_addr[flash_index];</p><p> if(flash_index
91、== 1) IC72X9_Download0(i, 1, datum);</p><p> else IC72X9_Download0(i, 0, datum);</p><p><b> if(flash)</b></p><p><b> {</b></p><p> char x =
92、0x01;</p><p> for(; i>0;i--) x <<= 1;</p><p> IC72X9_Flash(~x);</p><p><b> }</b></p><p> else IC72X9_Flash(0xff);</p><p><b>
93、 }</b></p><p> //數(shù)碼管合理顯示,不閃爍</p><p> void all_display(void)</p><p><b> {</b></p><p> num2iout( );</p><p> iout2num( );</p>
94、<p> if(iout>100) IC72X9_Download0(led_addr[0], 0, num[0]);</p><p> else IC72X9_Download0(led_addr[0], 0, 0x0f);//不顯示</p><p> IC72X9_Download0(led_addr[1], 1, num[1]);</p><
95、p> IC72X9_Download0(led_addr[2], 0, num[2]);</p><p><b> }</b></p><p> void pwm_out(unsigned i)</p><p><b> {</b></p><p><b> char y;
96、</b></p><p> if(i>=40&&i<=50) y=1.63*i-50.63;</p><p> if(i>50&&i<=100) y=1.36*i-32.5;</p><p> if(i>100&&i<=140) y=1.82*i-90;</p
97、><p> if(i>140&&i<180) y=1.19*i+4;</p><p> if(i>=180&&i<=200) y=1.39*i-25.17;</p><p><b> {</b></p><p> CMOD = 0x02; // Setup PC
98、A timer</p><p> CL = 0x00;</p><p> CH = 0x00;</p><p> CCAP1L = y; //Set the initial value same as CCAP1H</p><p> CCAP1H = y; // </p><p> CCAPM1 = 0x42
99、; //0100,0010 Setup PCA module 1 in PWM mode</p><p> CR = 1; //Start PCA Timer.</p><p><b> }</b></p><p><b> }</b></p><p> void main( )<
100、/p><p><b> {</b></p><p> unsigned char key;</p><p> IDLE_CLK = 0x3;</p><p> state = NoFlash;</p><p> IC72X9_InitPins( );</p><p>
101、<b> while(1)</b></p><p><b> {</b></p><p> switch(state)</p><p><b> {</b></p><p> case WaitFlash:</p><p> if (IC72
102、X9_pinKEY == 1) break;</p><p> key = IC72X9_Key(0);</p><p> if(key != SKey) break;</p><p> state = Flash;</p><p> flash_index = 2;</p><p> flash_displ
103、ay( num[flash_index], 1);//閃爍個位</p><p><b> break;</b></p><p> case Flash:</p><p> if (IC72X9_pinKEY == 1) break;</p><p> key = IC72X9_Key(0);</p>
104、<p> switch(key)</p><p><b> {</b></p><p> case IncKey:</p><p> if (num[flash_index] <9) num[flash_index]++;</p><p> else num[flash_index] = 0;
105、</p><p> flash_display(num[flash_index], 1);</p><p><b> break;</b></p><p> case DecKey:</p><p> if (num[flash_index] >0) num[flash_index]--;</p>
106、;<p> else num[flash_index] = 9;</p><p> flash_display(num[flash_index], 1);</p><p><b> break;</b></p><p> case SKey:</p><p> flash_display(num[
107、flash_index], 0);</p><p> if(flash_index>0) flash_index--;</p><p> else flash_index = 2;</p><p> flash_display(num[flash_index], 1);</p><p><b> break;</
108、b></p><p> case EnKey:</p><p><b> default:</b></p><p> flash_display(num[flash_index], 0);</p><p> state = NoFlash;</p><p><b> br
109、eak;</b></p><p><b> }</b></p><p><b> break;</b></p><p> case NoFlash:</p><p><b> default:</b></p><p> all_di
110、splay( );</p><p> pwm_out(iout);</p><p> state = WaitFlash;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機控制設計一個數(shù)控電流源【開題報告】
- 基于atmega16單片機閉環(huán)控制的數(shù)控電流源設計
- 基于單片機的數(shù)控直流電流源設計
- 基于單片機的數(shù)控電流源畢業(yè)論文設計
- 基于單片機的數(shù)控電流源設計【畢業(yè)論文】
- 基于單片機的數(shù)控電流源設計【任務書】
- 基于單片機的數(shù)控電流源畢業(yè)論文設計
- 單片機課程設計--單片機控制步進電機
- 單片機課程設計-單片機控制步進電機
- 單片機課程設計--單片機控制各種器件
- 基于單片機的數(shù)字直流電流源設計畢業(yè)論文
- 單片機課程設計——單片機控制步進電機控制系統(tǒng)設計
- 單片機課程設計報告——單片機控制步進電機
- 單片機課程設計報告---單片機控制秒表系統(tǒng)
- 單片機畢業(yè)設計--汽車轉彎燈單片機控制
- 單片機畢業(yè)設計---單片機控制交通燈
- 單片機課程設計--基于單片機的控制循環(huán)燈設計
- 基于單片機的數(shù)控直流電流源的設計畢業(yè)論文
- 單片機畢業(yè)設計--單片機控制的led點陣顯示
- 單片機課程設計---單片機節(jié)日彩燈控制器
評論
0/150
提交評論