基于單片機的pwm信號輸出系統設計_第1頁
基于單片機的pwm信號輸出系統設計_第2頁
基于單片機的pwm信號輸出系統設計_第3頁
基于單片機的pwm信號輸出系統設計_第4頁
基于單片機的pwm信號輸出系統設計_第5頁
已閱讀5頁,還剩66頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

摘要隨著電力電子技術的飛速發展,PWM技術應用越來越廣泛。同時PWM技術本身也發展迅速,各種新理論層出不窮。PWM技術結合了電力電子技術、計算機技術、現代控制理論,具有抗干擾性強、效率高、可靠性好等顯著優點,已經在交流逆變、開關電源等領域得到廣泛應用。 本文在研究PWM技術當前發展狀況基礎上,設計了一種基于單片機的PWM信號輸出系統。首先對系統結構和PWM軟件算法進行了研究和分析,包括對各種PWM產生方法的對比分析和對稱規則采樣法的仔細研究以及系統的功能分區和總體結構。在總體設計完成后又設計了硬件電路各個單元模塊。然后采用C語言編程實現了系統功能,完成設計目標。最后對設計的系統進行了計算機仿真。本設計是基于單片機控制的PWM信號輸出系統,系統以AT89C52單片機為核心,采用SPWM軟件生成法中對稱規則采樣法,用擴展按鍵中斷方式輸入有關控制信號及參數,可以實現頻率、占空比、輸出時間可調的直流斬波PWM信號和頻率、調幅比、輸出時間可調的SPWM信號,并在LCD1602上實時設置參數及輸出狀態監視。關鍵詞:單片機;PWM;SPWM;信號;規則采樣法

ABSTARCTAsthedevelopingofpowerelectronictechnology,PWMtechnologyhasapplyingtomoreandmorefield.Atthesametime,PWMtechnologyitselfhastakenagreatprogress,lotsofnewtheoryhasemerged.PWMtechnologytakesadvantagesofpowerelectronic,computertechnology,andmoderncontroltheory,hasstrongabilityofanti-interference,andismoreefficiency,reliable.Ithasappliedtovastfield,suchasACconverter,DCchopper.Thispaperfirstly,analysisthesituationofPWMtechnology’development,then,designedaPWMsignaloutputsystembasedonSCM.Atthebeginning,westudythesoftalgorithmofPWM,includingcomparisonandanalysisofseveralPWMalgorithmanddeepanalysisofregular-sampling.Wealsodesignedthesystemstructure.Following,hardwareandsoftwareisdesigned.Everyhardwaremoduleisdesignedwiththecomputer,andthesoftwareiswritteninClanguage.Atlast,wetakeasimulation.ThesystemisbasedonAT89C52.Itusebuttonstoinputparameters.ItcanoutputsinglepolarPWMsignals.Thesignal’sfrequency,duty-cycle,outputtimecanbechanged.What’smore,allinformationisshowedinaLCD1602,sothatitiseasiertocommunicatedwiththesystem.Indexterms:SCM;PWM;SPWM;signal;regular-sampling

目錄1緒論 11.1PWM的背景、應用及發展趨勢 11.2PWM原理 11.3本文的主要工作 22系統方案設計 32.1系統PWM算法 32.1.1等面積法 32.1.2硬件調制法 32.1.3軟件生成法 32.2系統結構 52.3涉及元器件簡介 52.3.1AT89C52介紹 52.3.2LCD1602簡介 82.4仿真工具介紹 92.4.1Protues簡介 92.4.2KeiluVision2簡介 113硬件電路設計 133.1電源 133.2單片機復位電路 143.3單片機時鐘電路 143.4按鍵中斷 153.5顯示電路 163.6輸出電路 173.7SPWM測試電路 174軟件設計 194.1軟件總流程 194.2直流斬波PWM軟件計算法 194.3SPWM軟件計算法 204.4輸出時間控制 224.5按鍵中斷 234.6LCD1602編程 264.7顯示設計 275系統調試 315.1系統的調試 315.2系統仿真過程 316結論 36參考文獻 37附錄 38翻譯部分 50外文原文: 50中文譯文: 56致謝 691緒論1.1PWM的背景、應用及發展趨勢 模擬信號的值可以連續變化,其時間和幅度的分辨率都沒有限制,可直接用來進行控制,但它并不總是非常經濟或可行的。其中一點就是,模擬電路容易隨時間漂移,因而難以調節。能夠解決這個問題的精密模擬電路可能非常龐大、笨重(如老式的家庭立體聲設備)和昂貴。模擬電路還有可能嚴重發熱,其功耗相對于工作元件兩端電壓與電流的乘積成正比。模擬電路還可能對噪聲很敏感,任何擾動或噪聲都肯定會改變電流值的大小。 PWM的一個優點是從處理器到被控系統信號都是數字形式的,無需進行數模轉換。讓信號保持為數字形式可將噪聲影響降到最小。噪聲只有在強到足以將邏輯1改變為邏輯0或將邏輯0改變為邏輯1時,也才能對數字信號產生影響。隨著全控式電力電子器件如可關斷晶閘管GTO、大功率晶體管IGBT、場效應功率晶體管PMOSFET等的出現和應用技術的進步,PWM控制技術在電力電子技術行業,如:風力發電、電機調速、直流供電等領域,得到廣泛的應用。在通信領域,由于PWM控制有很強的噪聲抵抗能力,從模擬信號轉向PWM可以極大地延長通信距離。在接收端,通過適當的RC或LC網絡可以濾除調制高頻方波并將信號還原為模擬形式。在風力發電領域,PWM變換器的控制技術是其核心技術之一。由于PWM可以同時實現變頻變壓和抑制諧波的特點,由此在交流傳動及至其它能量變換系統中得到廣泛應用。PWM信號的產生通常有兩種方法一種是軟件的方法另一種是硬件的方法。硬件調制法模擬電路結構復雜,難以實現精確的控制。軟件生成法其實就是用軟件來實現調制的方法,其有兩種基本算法,即自然采樣法和規則采樣法。隨著電力電子技術,微電子技術和自動控制技術的發展以及各種新的理論方法,如現代控制理論,非線性系統控制思想的應用,PWM控制技術獲得了空前的發展.到目前為止,已出現了多種PWM控制技術。從PWM確定確定變換器的導通時間方式來看有三類差別顯著的PWM用于固定開關頻率的調制系統:在目標參考波形和高頻載波的交點去開關動作的自然采樣PWM;在規則采樣參考波形和高頻載波交點處開關動作的規則采樣PWM;3)開關動作使得目標參考波形在一個載波周期內的積分面積與開關變換器輸出波形的積分面積相等的直接PWM。PWM技術朝著許多方向不斷地發展,例如,人們越來越關注電源側的波形質量問題,PWM技術最近已經應用于有特殊要求的輸入側變換器的控制。此外,半導體開關的開通延遲,損耗等實際影響近來也受到關注,產生了隨機PWM、軟開關PWM等。1.2PWM原理脈沖寬度調制(PWM)是一種對模擬信號電平進行數字編碼的方法。通過高分辨率計數器的使用,方波的占空比被調制用來對一個具體模擬信號的電平進行編碼。PWM信號仍然是數字的,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復脈沖序列被加到模擬負載上去的。通的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM進行編碼。圖SEQ圖\*ARABIC1SPWMSPWM法是一種比較成熟的,目前使用較廣泛的PWM法。前面提到的采樣控制理論中的一個重要結論:沖量相等而形狀不同的窄脈沖加在具有慣性的環節上時,其效果基本相同。SPWM法就是以該結論為理論基礎,用脈沖寬度按正弦規律變化而和正弦波等效的PWM波形即SPWM波形控制逆變電路中開關器件的通斷,使其輸出的脈沖電壓的面積與所希望輸出的正弦波在相應區間內的面積相等,通過改變調制波的頻率和幅值則可調節逆變電路輸出電壓的頻率和幅值。1.3本文的主要工作本文的主要工作是設計一個PWM信號輸出系統,實現的單極性PWM信號輸出。在直流斬波PWM中,要求PWM的頻率,占空比,和輸出時間均可調,輸出頻率為1K-20KHz;在SPWM模式中,頻率,調幅比及輸出時間可調,輸出頻率為1-50Hz。

2系統方案設計2.1系統PWM算法 PWM的全稱是PulseWidthModulation(脈沖寬度調制),它是通過改變輸出方波的占空比來改變等效的輸出電壓。SPWM,就是在PWM的基礎上改變了調制脈沖方式,脈沖寬度時間占空比按正弦規律排列,這樣輸出波形經過適當的濾波可以做到正弦波輸出。該方法的實現有以下幾種方案。2.1.1等面積法該方案實際上就是SPWM法原理的直接闡釋,用同樣數量的等幅而不等寬的矩形脈沖序列代替正弦波,然后計算各脈沖的寬度和間隔,并把這些數據存于微機中,通過查表的方式生成PWM信號控制開關器件的通斷,以達到預期的目的.由于此方法是以SPWM控制的基本原理為出發點,可以準確地計算出各開關器件的通斷時刻,其所得的的波形很接近正弦波,但其存在計算繁瑣,數據占用內存大,不能實時控制的缺點。2.1.2硬件調制法硬件調制法是為解決等面積法計算繁瑣的缺點而提出的,其原理就是把所希望的波形作為調制信號,把接受調制的信號作為載波,通過對載波的調制得到所期望的PWM波形。通常采用等腰三角波作為載波,當調制信號波為正弦波時,所得到的就是SPWM波形。其實方法簡單,可以用模擬電路構成三角波載波和正弦調制波發生電路,用比較器來確定它們的交點,在交點時刻對開關器件的通斷進行控制,就可以生成SPWM波。但是,這種模擬電路結構復雜,難以實現精確的控制。2.1.3軟件生成法由于微機技術的發展使得用軟件生成SPWM波形變得比較容易,因此,軟件生成法也就應運而生。軟件生成法其實就是用軟件來實現調制的方法,其有兩種基本算法:即自然采樣法和規則采樣法。①自然采樣法以正弦波為調制波,等腰三角波為載波進行比較,在兩個波形的自然交點時刻控制開關器件的通斷,這就是自然采樣法.其優點是所得SPWM波形最接近正弦波,但由于三角波與正弦波交點有任意性,脈沖中心在一個周期內不等距,從而脈寬表達式是一個超越方程,計算繁瑣,難以實時控制。②規則采樣法規則采樣法是一種應用較廣的工程實用方法,一般采用三角波作為載波。其原理就是用三角波對正弦波進行采樣得到階梯波,再以階梯波與三角波的交點時刻控制開關器件的通斷,從而實現SPWM法.當三角波只在其頂點(或底點)位置對正弦波進行采樣時,由階梯波與三角波的交點所確定的脈寬,在一個載波周期(即采樣周期)內的位置是對稱的,這種方法稱為對稱規則采樣。當三角波既在其頂點又在底點時刻對正弦波進行采樣時,由階梯波與三角波的交點所確定的脈寬,在一個載波周期(此時為采樣周期的兩倍)內的位置一般并不對稱,這種方法稱為非對稱規則采樣。規則采樣法是對自然采樣法的改進,其主要優點就是是計算簡單,便于在線實時運算,其中非對稱規則采樣法因階數多而更接近正弦.其缺點是直流電壓利用率較低,線性控制范圍較小[1]我們這里選擇軟件生產法中計算簡便的對稱規則采樣法來計算PWM開關動作時間。具體實施時有兩種方法:(1)單極性SPWM法,見下圖:正弦調制波周期決定于需要的調頻比kf,振幅值決定于ku,等腰三角波載波周期決定于載波頻率,振幅不變,等于ku=1時正弦調制波的振幅值,每半周期內所有三角波的極性均相同(即單極性)。調制波和載波的交點,決定了SPWM脈沖系列的寬度和脈沖音的間隔寬度,每半周期內的脈沖系列也是單極性的。單極性調制的工作特點:每半個周期內,逆變橋同一橋臂的兩個逆變器件中,只有一個器件按脈沖系列的規律時通時斷地工作,另一個完全截止;而在另半個周期內,兩個器件的工況正好相反,流經負載ZL的便是正、負交替的交變電流。圖SEQ圖\*ARABIC2單極性SPWM(2)雙極性SPWM法:調制波仍為正弦波,其周期決定于kf,振幅決定于ku,中曲線①,載波為雙極性的等腰三角波,其周期決定于載波頻率,振幅不變,與ku=1時正弦波的振幅值相等。調制波與載波的交點決定了逆變橋輸出相電壓的脈沖系列,此脈沖系列也是雙極性的,但是,由相電壓合成為線電壓(uab=ua-ub;ubc=ub-uc;uca=uc-ua)時,所得到的線電壓脈沖系列卻是單極性的。雙極性調制的工作特點:逆變橋在工作時,同一橋臂的兩個逆變器件總是按相電壓脈沖系列的規律交替地導通和關斷,毫不停息,而流過負載ZL的是按線電壓規律變化的交變電流。圖SEQ圖\*ARABIC3雙極性PWM這里我們采用同步調制單極性SPWM法,載波比N=32,調幅比K取值(0,1)。工業上變頻器的調幅比是跟隨輸出頻率而改變的,如在恒V/F控制中,K需要考慮的因素很多,為簡化問題,我們選擇手動調節K。SPWM必須做的工作是:實時地計算調制波(正弦波)和載波(三角波)的所有交點的時間坐標,根據計算結果,有序地向逆變橋中各逆變器件發出“通”和“斷”的動作指令;調制波的振幅要隨調制比而變,而載波的振幅則不變,所以,每次調節后,交點的時間坐標都必須重新計算。2.2系統結構 本系統的功能框圖如下。控制器需要完成輸入輸出交互,數據處理和PWM信號的生成,我們選擇AT89C52;為了節省單片機的I/O,我們選用4個按鍵輸入;需要顯示的內容較多,我們選擇LCD1602;電源則取220V市電整理降壓得到。AT89C52的P3口能驅動4路TTL門電路,能滿足小信號輸出。我們就直接采用P3^0和P3^1輸出PWM信號。由于PWM信號對定時的精確度較高,而簡單的RC電路穩定性不好,我們采用晶振和電容并聯的諧振電路作為時鐘發生電路。圖SEQ圖\*ARABIC4系統結構圖2.3涉及元器件簡介2.3.1AT89C52介紹下圖給出了At89C52的芯片引腳結構。AT89C52單片機是美國ATMEL公司生產的低電壓,高性能CMOS8位單片機,片內含8Kbytes的可反復擦寫的Flash只讀程序存儲器和256bytes的隨機數據存儲器(RAM),器件采用ATMEL公司的高密度,非易失性存儲技術生產,與標準MCS-51指令系統及8052產品引腳兼容。功能強大的AT89C52單片機適合于許多較為復雜的控制應用場合。(1)AT89C52主要性能參數①與Mcs-51產品指令和引腳完全兼容。

②8字節可重擦寫FLASH閃速存儲器

③1000次擦寫周期

④全靜態操作:0HZ-24MHZ

⑤三級加密程序存儲器

⑥256X8字節內部RAM

⑦32個可編程I/0口線

⑧3個16位定時/計數器

⑨6個中斷源

⑩可編程串行UART通道、低功耗空閑和掉電模式(2)At89C52功能特性

AT89C52提供以下標準功能:8字節FLASH閃速存儲器,256字節內部RAM,32個I/O口線,3個16位定時/計數器,一個6向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。同時,AT89c52可降至OHz的靜態邏輯操作,并支持兩種軟件可選的節電工作模式。空閑方式停止CPU的工作,但允許RAM,定時/計數器.串行通信口及中斷系統繼續工作。掉電方式保存RAM中的內容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。圖SEQ圖\*ARABIC5AT89C52引腳圖(3)AT89C52部分引腳功能說明

①XTAL1:片內晶振電路反相放大器的輸入端。

②XTAL2:片內晶振電路反相放大器的輸出端。

③P0:P0口是一組8位漏極開路型雙向I/O口,即地址/數據總線復用口。

作為輸出口用時.每位能以吸收電流的方式驅動8個TTL邏輯門電路,對端口P0寫“1”時,可作為高阻抗輸入端用。

在FLASH中編程時,P0口接收指令字節,而在程序校驗時,輸出指令字節,校驗時,要求外接上拉電阻。

④P1口:P1是一個帶內部上拉電阻的8位雙向I/O口,Pl的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻某個引腳被外部信號拉低時會輸出一個電流。與AT89C51不同之處是,Pl.0和P1.1還可分別作為定時/計數器2的外部計數輸入(Pl.0/T2)和外部觸發輸入(P1.1/T2EX),FLASH編程和程序校驗期間,Pl接收低8位地址。

⑤P2口:P2是一個帶有內部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯電路。對端口P2寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。

在訪問外部程序存儲器或16位地址的外部數據存儲器(例如執行MOvx@DPTR指令)時,P2送出高8位地址數據。在訪問8位地址的外部數據存儲器、如執行MOVX@RI指令)時,P2口輸出P2鎖存器的內容。

FLASH編程或校驗時,P2亦接收高位地址和一些控制信號。

⑥P3口:P3口是一組帶有內部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的P3口將用上拉電阻輸出電流。

P3口除了作為I/0口線外,更重要的用途是它的第二功能,如表格1所示。

表格SEQ表格\*ARABIC1P3口第二功能端口引腳第二功能P3.0RXD(串行輸入口〕P3.1TXD(串行輸出口〕P3.2INTO(外中斷0〕P3.3INTO(外中斷l)P3.4TO(定時/計數器0)P3.5Tl(定時/計數器l)P3.6WR(外部數據存儲器寫選通)P3.7RD(外部數據存儲器讀選通)⑧ALE/PROG:當訪問外部程序存儲器或數據存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節.一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數據存儲器時將跳過一個ALE脈沖。

對Flash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區中的8EH單元的D0位置位.可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活,此外,該引腳會被微弱拉高,單片機執行外部程序時,應設置ALE禁止位無效。⑨PSEN:程序儲存允許PSEN輸出是外部程序存儲器的讀選通信號,當AT89C52由外部程序存儲器取指令(或數據)時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。在此期間,當訪問外部數據存儲器,將跳過兩次PSEN信號。⑩EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地).需注意的是:如果加密位LBI被編程,復位時內部會鎖存EA端狀態。如EA端為高電平(接Vcc端),CPU則執行內部程序存儲器中的指令。

flash存儲器編程時,該引腳加上+12V的編程允許電源VPP

,當然這必須是該器件是使用12V編程電壓VPP。(4)AT89C52特殊功能寄存器在AT89C52片內存儲器中,80H-FFH共128個單元為特殊功能寄存器(SFE)。并非所有的地址都被定義,從80H-FFH共128個字節只有一部分被定義,還有相當一部分沒有定義。對沒有定義的單元讀寫將是無效的,讀出的數位將不確定,而寫入的數據也將丟失。

不應將數據"1"寫入未定義的單元,由于這些單元在將來的產品中可能賦予新的功能。在這種情況下,復位后這些單元數值總是“0”。(5)AT89C52

單片機擴展電路及分析AT89C52提供以下標準功能:8字節FLASH閃速存儲器,256字節內部RAM,32個I/O口線,2個16位定時/計數器,一個6向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。由于AT89C52具有256字節內部RAM。對本設計已經足夠使用,因此不需要再擴展外部數據存儲器[2.3.2LCD1602簡介 工業字符型液晶,能夠同時顯示16x02即32個字符(16列2行)。1602液晶也叫1602字符型液晶它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊它有若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔每行之間也有間隔起到了字符間距和行間距的作用,正因為如此所以他不能顯示圖形。目前市面上字符液晶絕大多數是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應用于市面上大部分的字符型液晶。1602采用標準的16腳接口,其中:第1腳:VSS為電源地第2腳:VDD接5V電源正極第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度)。第4腳:RS為寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。第6腳:E(或EN)端為使能(enable)端。第7~14腳:D0~D7為8位雙向數據端。第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。1602LCD的供電電壓為+5V電壓,對比度可調,內含復位電路,提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能,有80字節顯示數據存儲器DDRAM,內建有192個5X7點陣的字型的字符發生器CGROM,8個可由用戶自定義的5X7的字符發生器CGRAM。1602LCD微功耗、體積小、顯示內容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應用系統中。1602液晶模塊內部的字符發生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。因為1602識別的是ASCII碼,試驗可以用ASCII碼直接賦值,在單片機編程中還可以用字符型常量或變量賦值,如'A’。2.4仿真工具介紹2.4.1Protues簡介Protues軟件是英國Labcenterelectronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發應用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協同仿真,一鍵切換到PCB設計,真正實現了從概念到產品的完整設計。是目前世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯。Protues軟件具有其它EDA工具軟件(例:multisim)的功能。這些功能是:(1)原理布圖(2)PCB自動或人工布線(3)SPICE電路仿真革命性的特點:(1)互動的電路仿真。用戶甚至可以實時采用諸如RAM,ROM,鍵盤,馬達,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。(2)仿真處理器及其外圍電路。可以仿真51系列、AVR、PIC、ARM、等常用主流單片機。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運行后輸入輸出的效果。配合系統配置的虛擬邏輯分析儀、示波器等,Protues建立了完備的電子設計開發環境。Protues具有4大功能模塊:1)智能原理圖設計(ISIS)豐富的器件庫:超過27000種元器件,可方便地創建新元件;智能的器件搜索:通過模糊搜索可以快速定位所需要的器件;智能化的連線功能:自動連線功能使連接導線簡單快捷,大大縮短繪圖時間;支持總線結構:使用總線器件和總線布線使電路設計簡明清晰;可輸出高質量圖紙:通過個性化設置,可以生成印刷質量的BMP圖紙,可以方便地供WORD、POWERPOINT等多種文檔使用。完善的電路仿真功能(Prospice)ProSPICE混合仿真:基于工業標準SPICE3F5,實現數字/模擬電路的混合仿真;超過27000個仿真器件:可以通過內部原型或使用廠家的SPICE文件自行設計仿真器件,Labcenter也在不斷地發布新的仿真器件,還可導入第三方發布的仿真器件;多樣的激勵源:包括直流、正弦、脈沖、分段線性脈沖、音頻(使用wav文件)、指數信號、單頻FM、數字時鐘和碼流,還支持文件形式的信號輸入;豐富的虛擬儀器:13種虛擬儀器,面板操作逼真,如示波器、邏輯分析儀、信號發生器、直流電壓/電流表、交流電壓/電流表、數字圖案發生器、頻率計/計數器、邏輯探頭、虛擬終端、SPI調試器、I2C調試器等;生動的仿真顯示:用色點顯示引腳的數字電平,導線以不同顏色表示其對地電壓大小,結合動態器件(如電機、顯示器件、按鈕)的使用可以使仿真更加直觀、生動;高級圖形仿真功能(ASF):基于圖標的分析可以精確分析電路的多項指標,包括工作點、瞬態特性、頻率特性、傳輸特性、噪聲、失真、傅立葉頻譜分析等,還可以進行一致性分析。2)獨特的單片機協同仿真功能(VSM)支持主流的CPU類型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU類型隨著版本升級還在繼續增加,如即將支持CORTEX、DSP處理器;支持通用外設模型:如字符LCD模塊、圖形LCD模塊、LED點陣、LED七段顯示模塊、鍵盤/按鍵、直流/步進/伺服電機、RS232虛擬終端、電子溫度計等等,其COMPIM(COM口物理接口模型)還可以使仿真電路通過PC機串口和外部電路實現雙向異步串行通信;實時仿真:支持UART/USART/EUSARTs仿真、中斷仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。※編譯及調試:支持單片機匯編語言的編輯/編譯/源碼級仿真,內帶8051、AVR、PIC的匯編編譯器,也可以與第三方集成編譯環境(如IAR、Keil和Hitech)結合,進行高級語言的源碼級仿真和調試。3)實用的PCB設計平臺原理圖到PCB的快速通道:原理圖設計完成后,一鍵便可進入ARES的PCB設計環境,實現從概念到產品的完整設計;※先進的自動布局/布線功能:支持器件的自動/人工布局;支持無網格自動布線或人工布線;支持引腳交換/門交換功能使PCB設計更為合理;完整的PCB設計功能:最多可設計16個銅箔層,2個絲印層,4個機械層(含板邊),靈活的布線策略供用戶設置,自動設計規則檢查,3D可視化預覽;※多種輸出格式的支持:可以輸出多種格式文件,包括Gerber文件的導入或導出,便利與其它PCB設計工具的互轉(如protel)和PCB板的設計和加工。4)Protues提供了豐富的資源(1)Protues可提供的仿真元器件資源:仿真數字和模擬、交流和直流等數千種元器件,有30多個元件庫。(2)Protues可提供的仿真儀表資源:示波器、邏輯分析儀、虛擬終端、SPI調試器、I2C調試器、信號發生器、模式發生器、交直流電壓表、交直流電流表。理論上同一種儀器可以在一個電路中隨意的調用。(3)除了現實存在的儀器外,Protues還提供了一個圖形顯示功能,可以將線路上變化的信號,以圖形的方式實時地顯示出來,其作用與示波器相似,但功能更多。這些虛擬儀器儀表具有理想的參數指標,例如極高的輸入阻抗、極低的輸出阻抗。這些都盡可能減少了儀器對測量結果的影響。(4)Protues可提供的調試手段Protues提供了比較豐富的測試信號用于電路的測試。這些測試信號包括模擬信號和數字信號。Protues的軟件仿真功能:支持當前的主流單片機,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。1.提供軟件調試功能。2.提供豐富的外圍接口器件及其仿真。RAM,ROM,鍵盤,馬達,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。這樣很接近實際。在訓練學生時,可以選擇不同的方案,這樣更利于培養學生。3.提供豐富的虛擬儀器,利用虛擬儀器在仿真過程中可以測量外圍電路的特性,培養學生實際硬件的調試能力。4.具有強大的原理圖繪制功Protues電路功能仿真:在PROTUES繪制好原理圖后,調入已編譯好的目標代碼文件:*.HEX,可以在PROTUES的原理圖中看到模擬的實物運行狀態和過程。PROTUES是單片機課堂教學的先進助手。PROTUES不僅可將許多單片機實例功能形象化,也可將許多單片機實例運行過程形象化。前者可在相當程度上得到實物演示實驗的效果,后者則是實物演示實驗難以達到的效果。它的元器件、連接線路等卻和傳統的單片機實驗硬件高度對應。這在相當程度上替代了傳統的單片機實驗教學的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調試、運行結果等。課程設計、畢業設計是學生走向就業的重要實踐環節。由于PROTUES提供了實驗室無法相比的大量的元器件庫,提供了修改電路設計的靈活性、提供了實驗室在數量、質量上難以相比的虛擬儀器、儀表,因而也提供了培養學生實踐精神、創造精神的平臺。隨著科技的發展“計算機仿真技術”已成為許多設計部門重要的前期設計手段。它具有設計靈活,結果、過程的統一的特點。可使設計時間大為縮短、耗資大為減少,也可降低工程制造的風險。相信在單片機開發應用中PROTUES也能茯得愈來愈廣泛的應用。2.4.2KeiluVision2簡介KeiluVision2是德國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發系統,使用接近于傳統c語言的語法來開發,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用,而且大大的提高了工作效率和項目開發周期,他還能嵌入匯編,您可以在關鍵的位置嵌入,使程序達到接近于匯編的工作效率。KEILC51標準C編譯器為8051微控制器的軟件開發提供了C語言環境,同時保留了匯編代碼高效,快速的特點。C51編譯器的功能不斷增強,使你可以更加貼近CPU本身,及其它的衍生產品。C51已被完全集成到uVision2的集成開發環境中,這個集成開發環境包含:編譯器,匯編器,實時操作系統,項目管理器,調試器。uVision2IDE可為它們提供單一而靈活的開發環境。KeilC51軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面,能在很短的時間內就能學會使用keilc51來開發單片機應用程序。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到KeilC51生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢。

3硬件電路設計3.1電源本電路所需5V直流電源采用工頻220V電源,經由一個變壓器降壓后,通過H橋整流,再使用三端穩壓芯片穩壓得到。常見的三端穩壓集成電路有正電壓輸出的78××系列和負電壓輸出的79××系列。三端IC的三條引腳分別是輸入端、接地端和輸出端。有TO-220,TO-202的標準封裝,也有9013樣子的TO-92封裝。用78/79系列三端穩壓IC來組成穩壓電源所需的外圍元件極少,電路內部還有過流、過熱及調整管的保護電路,使用起來可靠、方便,而且價格便宜。因為本設計只需要正電壓5V,故這里選用7805[7805的主要電氣參數如下表:表格SEQ表格\*ARABIC27805電氣參數參數符號測試條件最小值典型值最大值單位輸出電壓VoTj=25℃4.85.05.2V5.0mA<1o<1.0A,Po<15W

Vi=7.5vto20v

4.75

5.00

5.25

V線性調整率△VoTj=25℃,Vi=7.5Vto25V4.0100mVTj=25℃,Vi=8Vto12V1.650mV負載調整率△VoTj=25℃,lo=5.0mAto1.5A9100mVTj=25℃,lo=250mAto750mA450mV靜態電流IQTj=25℃5.08mA靜態電流變化率△IQlo=5mAto1.0A0.030.5mAVi=8Vto25V0.30.8mA輸出電壓溫漂△Vo/△Tlo=5mA0.8mV/

℃輸出噪音電壓VNf=10Hzto100KHz,Ta=25℃42μV紋波抑制比RRf=120Hz,Vi=8Vto18V6273dB輸入輸出電壓差Volo=1.0A,Tj=25℃2V輸出阻抗Rof=1KHz15mΩ短路電流1SCVi=35V,Ta=25℃230mA峰值電流1PKTj=25℃2.2A電路中由于7805的輸入輸出電壓差典型值為2V,設計PWM輸出功率3W,加上單片機及其他功耗,可選用220V/9V/10W規格的變壓器。整流橋可以選擇正向電流1A,耐壓值為25V。整流出來的波形是脈動的,為了得到平穩的電壓,在整流橋輸出端接一個大電容。7805的最高輸出電流約為1.5A,輸出功率:P=UI=5V*1.5A=7.5W故用一片7805可設計滿足要求。下圖中C1和C3作平波用,故選用大電容;C2和C4擇消除長導線的電感效應,選用小電容。圖SEQ圖\*ARABIC6電源3.2單片機復位電路復位電路的基本功能是:系統上電時提供復位信號,直至系統電源穩定后,撤銷復位信號。為可靠起見,電源穩定后還要經一定的延時才撤銷復位信號,以防電源開關或電源插頭分-合過程中引起的抖動而影響復位。AT89C52的復位是靠外電路實現的,RST引腳是單片機的復位輸入端。當振蕩器工作時,RST引腳出現兩個機器周期以上高電平將使單片機復位。,在時鐘電路工作后,只要在單片機的RST引腳上出現24個時鐘振蕩脈沖(2個機器周期)以上的高電平,單片機便實現初始化狀態復位。當單片機的時鐘f=12MHz時,1個機器周期為1μS,復位信號至少需保持2μS。為了保證應用系統可靠地復位,通常是RST引腳保持10ms以上的高電平。復位電路連接如圖所示。此電路僅用一個電容及一個電阻和一個按鍵。系統上電時,在RC電路充電過程中,由于電容兩端電壓不能跳變,故使RESET端電平呈高電位,系統復位。經過一段時間,電容充電,使RESET端呈低電位,復位結束。這里C3=20μF,R1=1kΩ,充電時間常數t=R1*C3=20ms,滿足要求[3.3單片機時鐘電路AT89C52可以使用外部時鐘電路。這時外部時鐘脈沖接到XTAL1端,即內部時鐘發生器的輸入端,XTAL2則懸空。外部時鐘信號通過一個2分頻觸發器后作為內部時鐘的,對占空比沒有特殊要求。廠商推薦接法如下圖:圖SEQ圖\*ARABIC7外部時鐘接法但是使用外部時鐘需要額外時鐘電路,因此這里我們選用內部時鐘電路,簡化電路。AT89C52中有一個用于構成內部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構成自激振蕩器,振蕩電路參見圖。外接石英晶體及電容C1,C2接在放大器的反饋回路中構成并聯振蕩電路。外接電容C1C2的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩定性、起振的難易程度及溫度穩定性。廠商推薦使用的是30pF±10pF。時鐘電路和復位電路如下圖:圖SEQ圖\*ARABIC8時鐘復位電路3.4按鍵中斷AT89C52共有2個外部中斷,INT0和INT1為兩天外部中斷請求輸入線,都允許外部中斷源以低電平或下降沿觸發。為了能在線修改參數而不影響PWM輸出,我們選用優先級低的INT1。本電路中設計有4個按鍵,因此需要進行中斷擴充。按鍵中斷的電路如圖。工作原理:上電后對P2.3、P2.4、P2.5、P2.6及P3.3置高位,持續掃描,如果有按鍵按下,如P2.3對應的按鍵按下,則P2.3接地,檢測到低電壓,P3.3則通過正向二極管接地,也可認為是低電平。其余P2.4、P2.5、P2.6由于與P2.3有反向二極管隔離,仍懸空,認為還是高電平,因而能判斷哪個按鍵按下。圖SEQ圖\*ARABIC9中斷擴展3.5顯示電路LCD1602的引腳輸入時的電流很小,當VDD=5V時,高低電平標準和單片機的P1口兼容,所以這里不需要為LCD提供額外驅動電路,可與單片機直接相連。LCD1602采用標準的16腳接口,其中:第1腳:VSS為電源地第2腳:VDD接5V電源正極第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產生“鬼影”,這里通過一個10K的電位器調整對比度)。第4腳:RS為寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇指令寄存器。這里與P2.0連接。第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。這里與P2.1連接。第6腳:E(或EN)端為使能(enable)端。這里與P2.2連接。第7~14腳:D0~D7為8位雙向數據端。這里與8位并行口P1連接。第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。圖SEQ圖\*ARABIC10顯示3.6輸出電路這里以單片機P3.0和P3.1作為PWM的輸出口。這兩個I/O口能驅動一個TTL門電路,作為信號輸出可以滿足要求故不再添加額外驅動電路。3.7SPWM測試電路 在SPWM模式下,P3.0作為正向輸出端口,P3.1為負向輸出端口。為了把兩路信號疊加到一塊,我們設計了一個加法電路。由于單片機無法輸出負電壓,所以需要把P3.1的信號經過一個反向比例放大電路處理后,再和P3.0疊加。后面再添加一個一階濾波電路,這樣就可以分析逆變的正弦波基本分量。為了減少運放對濾波電路的負載效應,同時便于調整,現選用LF412。這是一種具有JFET作輸入級的低失調、高輸入阻抗運放。同時為了使放大電路不產生飽和失真,需把單片機輸出的信號進行縮放。Va=VVb=(V-+V這里逆變的正弦信號頻率為0~50Hz,所以一階濾波電路里截止頻率Wc設為50Hz。Wc=2πf=1/RC令C=0.1μF可以求得:R=200kΩ[電路圖如下:圖SEQ圖\*ARABIC11SPWM仿真電路4軟件設計4.1軟件總流程圖SEQ圖\*ARABIC12軟件總流程圖4.2直流斬波PWM軟件計算法AT89C52單片機每個機器周期由6個狀態組成,每個狀態又有兩個時鐘周期,這樣一個機器周期就等于12個時鐘周期,即機器頻率為時鐘頻率的12分頻。因此一個定時脈沖周期為1uS。我們用T0來產生PWM波。由于需要改變定時初值,所以這里我們采用方式1。在本方式下,定時器按16位加1計數器工作的,該計數器由高8位TH和低8位TL組成。設PWM輸出頻率為fkHz,占空比為α,PWM的周期:T=1/f*10^(-3)S=1000/fuS由于AT89C52無法處理浮點數,在單片機內占空比取值為(0~100),則在一個PWM周期內,高電平的時間:tHigh=T*α/100=1000/f*α/100uS;定時器初值:TH0=(65536-tHigh)/256;TL0=(65536-tHigh)%256;低電平的時間:tLow=T*(100-α)/100=1000/f*α/100uS;定時器初值:TH0=(65536-tLow)/256;TL0=(65536-tLow)%256;生成直流斬波PWM的軟件流程圖:圖SEQ圖\*ARABIC13直流斬波PWM流程圖4.3SPWM軟件計算法 這里以對稱三角波為載波。為了減少AT89C52計算時間,我們把正弦值和三角波以數組形式保存在程序空間里。正弦波和三角波均采樣32點,數值均為0-100。因為單片機主頻低,我們采用載波比為32。在一個三角波周期內,可以認為正弦值不變。 設輸出頻率為f,三角波頻率則為32f。一個三角波周期分為32段。一個定時周期:T=1/(32f)/32S=10^6/(32*32f)μS=1953/fμSSPWM的程序流程圖如下:圖SEQ圖\*ARABIC14SPWM流程圖直流斬波PWM和SPWM程序流程圖如下:/**********************T0中斷服務程序*******************/voidtimer0(void)interrupt1using1{if(dcac) { tjump=1-tjump; if(tjump==0) { TH0=tempt0;//tempt0=(65536-1000/freq*rac/100)/256; TL0=tempt1;//tempt1=(65536-1000/freq*rac/100)%256; OUTPUT0=1; } if(tjump) { TH0=tempt2;//tempt2=(65536-1000/freq*(100-rac)/100)/256; TL0=tempt3;//tempt3=(65536-1000/freq*(100-rac)/100)%256; OUTPUT0=0; } }else { TH0=tempt0,TL0=tempt1; aci++; if(FLAG) { if(sjb[aci]>tempt4)OUTPUT0=0; else OUTPUT0=1; } else { if(sjb[aci]>tempt4)OUTPUT1=0; else OUTPUT1=1; } if(aci==31) { aci=0,acj++; tempt4=((longunsignedint)sine[acj])*k/10; if(acj==31)acj=0,OUTPUT0=0,OUTPUT1=0,FLAG=1-FLAG; } }}if(tjump){TH0=tempt2;//tempt2=(65536-1000/freq*(100-rac)/100)/256; TL0=tempt3;//tempt3=(65536-1000/freq*(100-rac)/100)%256; OUTPUT=0; }}4.4輸出時間控制這里我們用定時器1,同樣工作在方式1。最大定時時間:Tmax=2^16*10^(-6)s=65536uS而我們希望輸出時間以秒記,因此需要進行定時擴充。為方便計算,定時時間設為50000uS。這樣:TH1=(65536-50000)/256=60;TL1=(65536-50000)%256=176;輸出時間到時關閉PWM輸出。輸出時間控制程序如下:/**********************T1中斷服務程序*******************/voidtimer1(void)interrupt3using1{ count1++; //定時擴充TH1=60;TL1=176;if(count1==20) //定時一秒 {count1=0; ToutReal--; if(ToutReal==0)TR0=TR1=0,OUTPUT=0; //關閉PWM輸出,停止計時。}4.5按鍵中斷為了減少硬件開銷少占用單片機的I/O口,這里只設計了4個按鍵。按鍵動作時的典型波形如圖。可以看到實際波形中電壓抖動現象,影響單片機判斷。消抖有硬件和軟件兩種方式。硬件消抖可以采用RC電路或RS觸發器。但是在按鍵多時增加硬件開銷,所以我們采用軟件消抖的方式。按鍵抖動時間一般為10-20ms,所以可以延時20ms后判斷按鍵是否真的動作(包括按下和松開)。圖SEQ圖\*ARABIC15按鍵動作電壓波形C51編譯器支持在C語言源程序中直接編寫89C52單片機的中斷服務函數程序。C51編譯器對函數的定義進行了擴展,增加了一個擴展關鍵字interrupt。關鍵字interrupt是函數定義時的一個選項,加上這個選項就可以將一個函數定義成中斷服務函數。定義中斷服務函數的一般形式為中斷表函數類型函數名(形式參數表)[interruptn][usingn]關鍵字interrupt后面的n是中斷號,n的取值范圍為0~31編譯器從8n+3處產生中斷向量。具體的中斷號n和中斷向量取決于不同的單片機芯片:89C52單片機的常用中斷源和中斷向量如表1所示89C52系列單片機可以在內部RAM中使用4個不同的工作寄存器組,每個寄存器組中包含8個工作寄存器(R0~R7)。C51編譯器擴展了一個關鍵宇using,專門用來選擇單片機中不同的工作寄存器組。using后面的n是一個0—3的常整數,分別選中4個不同的工作寄存器組。在定義一個函數時using是一個選項,如果不用該選項,則由編譯器選擇一個寄存器組作絕對寄存器組訪問。關鍵字usin對函數目標代碼的影響如下:在函數的八口處將當前工作寄存器組保護到堆棧中指定的工作寄存器內容不會改變,函數返回之前將被保護的工作寄存器蛆從堆棧中恢復。為了能夠在線修改PWM參數而不中斷輸出,外部中斷需要不打斷定時器0的中斷,因而我們選擇優先級較低的外部中斷INT1。為了方便修改參數,我們采用低電平觸發。按鍵中斷程序如下:voidEXINT1(void)interrupt2using1{ Delay1ms(20);EX1=0;//關中斷if(KEY1==0)KeyValue=1;elseif(KEY2==0)KeyValue=2;elseif(KEY3==0)KeyValue=3;elseif(KEY4==0)KeyValue=4;EX1=1;}由于只有四個按鍵,因此每個按鍵都是復用的,有多種的功能,且必須和LCD1602顯示的內容配合好。按鍵的功能安排如下:表格3按鍵功能狀態按鍵編號01234567報警0進入模式選擇界面確認確認確認確認確認進入調整輸出界面停止輸出無1進入模式選擇界面選擇DC增加增加增加無進入調整輸出界面修改參數無2進入模式選擇界面選擇AC減少減少減少無進入調整輸出界面無無3進入模式選擇界面無返回上一界面返回上一界面返回上一界面返回上一界面進入調整輸出界面返回上一個界面返回歡迎界面參數修改程序如下: case1: while(KeyValue==2)dcac=1,KeyValue=0;//模式選擇 while(KeyValue==3)dcac=0,KeyValue=0; Manag(dcac); if(KeyValue==1) {Delay1ms(20); if(dcac)script=2; //直流斬波模式 elsescript=10; //SPWM模式 KeyValue=0; LCD_cls(); } break; case2: if(KeyValue==2) //設置f {Delay1ms(20); freq++,KeyValue=0;} if(KeyValue==3) {Delay1ms(20); freq--,KeyValue=0;} DcConf(freq); if(KeyValue==4) {Delay1ms(20); script=1,KeyValue=0; LCD_cls();} if(KeyValue==1) {Delay1ms(20); script=3; KeyValue=0; LCD_cls(); } break; case3: if(dcac) { if(KeyValue==2) //設置rac {Delay1ms(20); rac+=10,KeyValue=0;} if(KeyValue==3) {Delay1ms(20); rac-=10,KeyValue=0;} DcConr(rac); } else { if(KeyValue==2) //設置k {Delay1ms(20); k+=1,KeyValue=0;} if(KeyValue==3) {Delay1ms(20); k-=1,KeyValue=0;} DcConr(k); } if(KeyValue==4) {Delay1ms(20); script=2,KeyValue=0; LCD_cls();} if(KeyValue==1) {Delay1ms(20); script=4,KeyValue=0; LCD_cls();} break; case4: if(KeyValue==2) //設置Tout {Delay1ms(20); Tout+=10,KeyValue=0;} if(KeyValue==3) {Delay1ms(20); Tout-=10,KeyValue=0;} DcCont(Tout); if(KeyValue==4) {Delay1ms(20); script=3,KeyValue=0; LCD_cls();} if(KeyValue==1) {Delay1ms(20); script=5,KeyValue=0; LCD_cls();} break;4.6LCD1602編程1602液晶模塊內部的字符發生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。液晶顯示模塊是一個慢顯示器件,所以在執行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。1602液晶模塊內部的控制器共有11條控制指令。它的讀寫操作、屏幕和光標的操作都是通過指令編程來實現的。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符。下表為LCD1602的顯示地址。因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數據應該是字符地址加上80H。下表為LCD1602的顯示地址。如要在第二行第一個位置顯示數據,則在寫入的數據應該是40H+80H=C0H。為了使用方便我們把LCD1602的常用操作寫成函數,需要時直接調用函數即可。常用操作有:LCD是否忙檢測,LCD清屏,寫指令,光標定位,顯示字符及字符串,LCD初始化。由于1602無法直接顯示數據,需要先把數據轉換為字符串,再送到1602顯示。轉換后的字符串要注意清除前面的0。字符串轉換函數和數據顯示函數如下:voidDataToChar(intdat) //數據-字符串轉換函數。{DataArray[3]=dat%10;DataArray[2]=((dat-DataArray[3])/10)%10;DataArray[0]=dat/1000;DataArray[1]=(dat/100)%10;}voidDispD(intdat) //數據顯示函數{ i=j=0;DataToChar(dat); //數據-字符串轉換for(j=0;j<3;j++) //清除前面的0 { if(DataArray[j])i=1; if(i)LCD_write_data(DataArray[j]+48); }LCD_write_data(DataArray[j]+48);}4.7顯示設計由于LCD1602只有16*2個顯示點,無法在一個界面中完成所有的顯示內容這里我們按功能來分顯示界面。界面0:程序啟動時及出錯后的數據初始化界面1:模式選擇voidManag(intdat){ LCD_set_position(0);LCD_prints("MODE:");LCD_set_position(7);if(dat)LCD_prints("DC");elseLCD_prints("SPWM");LCD_set_position(0x40);LCD_prints("OK");}界面2:設置頻率voidDcConf(intdat){ LCD_set_position(0);LCD_prints("f:");DispD(dat);if(dcac)LCD_prints("KHz"); //直流PWM輸出1-20KHzelseLCD_prints("Hz"); //SPWM輸出1-100HzLCD_set_position(0x40);LCD_prints("OK");LCD_set_position(0x4c);LCD_prints("BACK");}界面3:設置占空比或調幅比voidDcConr(intdat){if(dcac) //設置占空比 { LCD_set_position(0); LCD_write_data(0xe0); LCD_write_data(':'); DispD(dat); LCD_prints("%"); }else //設置調幅比{ LCD_set_position(0); LCD_prints("k:"); DispD(dat); LCD_prints("/10"); }LCD_set_position(0x40);LCD_prints("OK");LCD_set_position(0x4c);LCD_prints("BACK");}界面4:設置輸出時間voidDcCont(intdat){ LCD_set_position(0);LCD_prints("Tout:");DispD(dat);//LCD_set_position(0x07);LCD_prints("S");LCD_set_position(0x40);LCD_prints("OK");LCD_set_position(0x4c);LCD_prints("BACK");}界面5:啟動輸出voidDcConok(void){ LCD_set_position(3);LCD_prints("OUTPUTNOW?");LCD_set_position(0x40);LCD_prints("OK");LCD_set_position(0x4c);LCD_prints("BACK");}界面6:在線監控f,α或k,Tout。輸出完畢后關閉輸出。voidDcmont(void){ LCD_set_position(0);LCD_prints("f:");DispD(freq);//LCD_set_position(0x06);if(dcac)LCD_prints("KHz");elseLCD_prints("Hz");if(dcac){ LCD_write_data(0xe0); LCD_write_data(':'); DispD(rac); LCD_prints("%");}else{ LCD_prints("k:"); DispD(k); LCD_prints("/10");}LCD_set_position(0x40);LCD_prints("Tout:");DispD(ToutReal);//LCD_set_position(0x48);LCD_prints("S");//LCD_prints("C:");//DispD(i);//LCD_printc('S');}界面7:停止輸出并返回到界面1,不停止輸出并返回到界面2,返回到界面6voidDcStop(void){ LCD_set_position(0);LCD_prints("Whatdoyouwant?");LCD_set_position(0x40);LCD_prints("STOP");LCD_set_position(0x45);LCD_prints("MODP");LCD_set_position(0x4c);LCD_prints("BACK");}報警voiderror(void){ LCD_set_position(0);LCD_prints("WRONG!");LCD_set_position(0X40);DispD(script);}

5系統調試5.1系統的調試系統調試包括硬件調試和軟件調試,而且兩者是密不可分的。我們設計好的硬件電路和軟件程序,只有經過聯合調試,才能驗證其正確性;軟硬件的配人情況以及是否達到設計任務的要求,也只有經過調試,才能發現問題并加以解決、完善,最終開發成實用產品。硬件調試分單元電路調試和聯機調試,單元電路試驗在硬件電路設計時已經進行,這里的調試只是將其制成印刷電路板后試驗電路是否正確,并排除一些加工工藝性錯誤(如錯線、開路、短路等)。這種調試可單獨模擬進行,也可通過開發裝置由軟件配合進行。硬件聯機調試則必須在系統軟件的配合下進行。軟件調試一般包括分塊調試和聯機調試兩個階段。程序的分塊調試一般在單片機開發裝置上進行,可根據所調程序功能塊的入口參量初值編制一個特殊的程序段,并連同被調程序功能塊一起在開發裝置上運行;也可配合對應硬件電路單獨運行某程序功能塊,然后檢查是否正確,如果執行結果與預想的不一致,可以通過單步運行或設置斷點的方法,查出原因并加以改正,直到運行結果正確為止。這時該程序功能塊已調試完畢,可去掉附加程序段。其它程序功能塊可按此法進行調試。程序聯機調試就是將已調試好的各程序功能塊按總體結構聯成一個完整程序,在所研制的硬件電路上運行。從而試驗程序整體運行的完整性、正確性和與硬件電路的配合情況。在聯調中可能會有某些支路上的程序、功能塊因受條件制約而得不到相應的輸入參數,這時,調試人員應創造條件進行模擬調試。在聯調中如發現硬件問題也應及時修正,直到單片機系統的軟件、硬件全部調試成功為止。系統調試完成后,還要進行一段時間的試運行,從而檢驗系統的穩定性和抗干擾能力,驗證系統功能是否達到設計要求,是否達到預期的效果。5.2系統仿真過程第一步,打開PROTEUS軟件,建立原理圖,如圖16。注意圖中右上部分是仿真時測試SPWM信號的測試電路。這里把PWM3.1反向后和P3.0疊加后輸出。在模擬示波器的CH3可以觀察合成后的SPWM基波波形。圖SEQ圖\*ARABIC16電路仿真原理圖第二步,打開KeilUvision2,建立工程,輸入程序,調試,編譯生成HEX文件。這里模塊化編程,把一些功能函數放在LCD1602.C中。圖SEQ圖\*ARABIC17KeilUvision工程圖第三步,在Protues中導入HEX文件,運行。由于Protues有自動重載文件的功能,在仿真過程中,如果HEX文件改變了,不需要人為重載文件,系統能自動完成。所以這里只需在建立原理圖后導入文件即可。圖SEQ圖\*ARABIC18導入HEX文件第四步,基本功能仿真初始化及模式選擇:系統上電或出錯處理后,進入初始界面。次數按任何鍵均可進入模式選擇界面。進入模式選擇界面后,按K2選擇直流斬波PWM輸出模式,即DC,按K3選擇SPWM輸出模式,即SPWM。模式選擇完成后按K1進入對應參數設置界面。圖SEQ圖\*ARABIC19初始化、模式選擇參數設置界面:這里可以分別設置如下參數:在DC模式下,設置頻率f,占空比α,輸出時間Tout;在SPWM模式下,設置頻率f,調幅比k,輸出時間Tout。圖SEQ圖\*ARABIC20參數設置輸出監控及修改參數:參數設置完成以后可以確認輸出,如果哪個參數設置錯了可以按K4鍵返回修改。如果輸入錯誤的參數了,系統會直接跳轉到報警界面;如果沒錯就進入相應的輸出監控界面。系統還允許不停輸出的情況下修改參數,也可以隨時停止輸出。圖SEQ圖\*ARABIC21輸出監控出錯報警:如果在參數設置時或程序運行過程中,出現不允許的情況,如頻率超出范圍、輸出時間為0,則進入報警界面。前面的報警號對應于一類錯誤。圖SEQ圖\*ARABIC22出錯報警第五步,PWM輸出仿真直流斬波PWM輸出:圖SEQ圖\*ARABIC23直流斬波PWMSPWM輸出:圖中chA,chB信號分別是P3.0和P3.1輸出的信號,chC信號是經過P3.0和P3.1疊加濾波后的信號,可以認為是SPWM的基波信號。圖24SPWM輸出

6結論 本人通過三個多月的學習和探究,設計了一個基于單片機的PWM信號輸出系統。PWM技術應用非常廣泛,這里主要從直流斬波和交流逆變的應用角度,對PWM的多種軟件算法進行了一定的分析研究,最終選擇了工業上較常用的SPWM方法。本文首先介紹了課題的背景,介紹了PWM的發展歷史、目前的現狀及國內外在這一領域的發展趨勢;其次簡要闡述了PWM原理及相關算法;最后選用SPWM中軟件調制的對稱規則采樣法設計一個PWM信號系統。本文詳細闡述了單片機的工作原理,結構和功能。針對本文所設計開發的PWM信號輸出系統,詳細闡述了其電源電路,時鐘電路,復位電路,顯示電路等單元模塊的設計。同時也簡要闡述了Protues,Keil-Uvision2軟件功能及使用方法,詳細介紹了PWM軟件算法,按鍵中斷,LCD顯示等,最后

溫馨提示

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

評論

0/150

提交評論