版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 前言</b></p><p> 脈沖寬度調(diào)制是現(xiàn)代控制技術(shù)常用的一種控制信息輸出,可以有效地利用數(shù)字技術(shù)控制模擬信號(hào)的技術(shù)。PWM(Pulse Width Modulation)又稱脈沖寬度調(diào)制,屬于脈沖調(diào)制的一種,即脈沖幅度調(diào)制(PAM)、脈沖相位調(diào)制(PPM)、脈沖寬度調(diào)制(PWM)和脈沖編碼調(diào)制(PCM)。它們本來是應(yīng)用于電子信息系統(tǒng)和通信領(lǐng)域的一種信號(hào)
2、變換技術(shù),但從六十年代中期以來后,隨著電力電子技術(shù)被引入到電力變換領(lǐng)域,PWM技術(shù)廣泛運(yùn)用于各種工業(yè)電力傳動(dòng)領(lǐng)域乃至家電產(chǎn)品中。目前,隨著微機(jī)技術(shù)日益廣泛深入工業(yè)控制領(lǐng)域,單片機(jī)控制的PWM技術(shù)迅速發(fā)展,其突出特點(diǎn)是可以比較容易地選擇最佳的脈沖調(diào)制頻段,更重要的,由于與單片機(jī)的結(jié)合,整個(gè)系統(tǒng)可以集成為具有更完備的保護(hù)功能、故障診斷功能和顯示功能的高可靠的微型化的系統(tǒng)。因此,被競(jìng)相開發(fā),前景廣闊。</p><p>
3、 在智能化產(chǎn)品開發(fā)中, 許多常用的單片機(jī)沒有提供脈寬調(diào)制(PWM ) 電壓信號(hào)輸出功能, 而在某些特定的場(chǎng)合需要得到PWM信號(hào)。 PWM控制技術(shù)以其控制簡(jiǎn)單、靈活和動(dòng)態(tài)響應(yīng)好的優(yōu)點(diǎn)而成為電力電子技術(shù)最廣泛應(yīng)用的控制方式,也是人們研究的熱點(diǎn)。PWM控制技術(shù)一直是變頻技術(shù)的核心技術(shù)之一,由于PWM可以同時(shí)實(shí)現(xiàn)變頻變壓反抑制諧波的特點(diǎn),在交流傳動(dòng)及至其它能量變換系統(tǒng)中得到廣泛應(yīng)用。目前實(shí)現(xiàn)方法為采用全數(shù)字化方案,完成優(yōu)化的實(shí)時(shí)在線的PWM信
4、號(hào)輸出。</p><p> 本文主要介紹了PWM信號(hào)發(fā)生器的概念、作用及定義,分析了系統(tǒng)的工作原理和軟硬件的設(shè)計(jì)。主要是以AT89C51單片機(jī)為核心控制單元,通過對(duì)外圍電路芯片的設(shè)計(jì)實(shí)現(xiàn)PWM輸出波形的頻率、電壓幅值、占空比的連續(xù)調(diào)節(jié),達(dá)到產(chǎn)生PWM信號(hào)目的。 </p><p> 第一章 系統(tǒng)組成與工作原理</p><p> 1.1
5、系統(tǒng)設(shè)計(jì)內(nèi)容與要求</p><p> 一、設(shè)計(jì)內(nèi)容:PWM信號(hào)發(fā)生器的研制</p><p><b> 二、設(shè)計(jì)要求:</b></p><p> 采用定時(shí)/計(jì)數(shù)器8253</p><p> PWM信號(hào)的工作頻率為500Hz(1000Hz)</p><p> 占空比可變且顯示占空比<
6、/p><p><b> 1.2 系統(tǒng)組成</b></p><p> 如圖1.1所示為系統(tǒng)的設(shè)計(jì)結(jié)構(gòu)框圖。此系統(tǒng)由89C51單片機(jī)核心控制單元、HD7279控制的顯示與鍵盤掃描單元以及8253計(jì)數(shù)單元組成,其中還用到了74LS138譯碼器作為單片機(jī)的片選輸出來作為8253計(jì)數(shù)器的口地址控制單元,在完成89C51與8253連接的電路中還用到了74LS373地址鎖存器和一
7、些邏輯門電路組成。</p><p> 圖1.1 設(shè)計(jì)結(jié)構(gòu)框圖</p><p><b> 1.3 工作原理</b></p><p> PWM信號(hào)發(fā)生器是通過89C51單片機(jī)對(duì)顯示器模塊和定時(shí)/計(jì)數(shù)器模塊的控制,采用軟件編程的方法,通過改變給8253計(jì)數(shù)器的寫入值產(chǎn)生一系列幅值相等而寬度不等的脈沖,,再通過一整形電路,產(chǎn)生規(guī)則的PWM脈沖波
8、形,而改變8253的計(jì)數(shù)器初值是通過鍵盤操作實(shí)現(xiàn)的,同時(shí)數(shù)碼管顯示相應(yīng)的占空比。</p><p> 第二章 系統(tǒng)硬件設(shè)計(jì)</p><p> 2.1 方案比較與確定</p><p> 方案一:直接采用51單片機(jī)TO/TI定時(shí),通過軟件編程產(chǎn)生PWM脈沖。以89C51單片機(jī)為核心控制單元,采用計(jì)數(shù)法加軟件延時(shí)法,以及與按鍵相配合。當(dāng)有按鍵按下后,通過鍵盤掃描將
9、所按鍵值作為PWM信號(hào)的的占空比輸入,經(jīng)軟件程序處理后實(shí)現(xiàn)PWM信號(hào)的占空比可變,并在數(shù)碼管上顯示相應(yīng)的占空比。</p><p> 方案二:選用可編程芯片8253的計(jì)數(shù)器0作為PWM信號(hào)發(fā)生器,8253的計(jì)數(shù)器0工作在可重復(fù)觸發(fā)單穩(wěn)態(tài)方式1下,它的輸出口OUT0產(chǎn)生寬度可調(diào)的PWM信號(hào)脈沖,該輸出脈沖寬度為:W=N/f;輸出的占空比為:P=W1×(f/N); 式中,W為輸出脈沖寬度,單位是秒;W1為一
10、個(gè)周期內(nèi)高電平的脈沖寬度,P為占空比;f為計(jì)數(shù)器時(shí)鐘信號(hào)的頻率;N為單片機(jī)為其置入的計(jì)數(shù)值。PWM的頻率由GATE0上所加的信號(hào)頻率決定;在計(jì)數(shù)器0的GATE0端輸入一定頻率的方波,該頻率由計(jì)數(shù)器1的OUT1輸出產(chǎn)生,再由89C51的ALE鎖存信號(hào)給CLK1和CLK0同步的時(shí)鐘脈沖,最后改變計(jì)數(shù)器值N產(chǎn)生連續(xù)可調(diào)的PWM信號(hào)。如圖2.1所示。</p><p> 圖2.1 系統(tǒng)原理框圖</p>&l
11、t;p> 分析:由于單片機(jī)本身內(nèi)部具有計(jì)數(shù)及定時(shí)功能,方案一與方案二相比方案一直接使用單片機(jī)內(nèi)部芯片功能產(chǎn)生PWM脈寬調(diào)制波形算法實(shí)現(xiàn)簡(jiǎn)單,成本低廉。但是受單片機(jī)端口數(shù)量及單片機(jī)工作頻率(主要為晶振頻率)的限制,單片機(jī)無法實(shí)現(xiàn)多路控制;單片機(jī)搭建的電路抗干擾性較差,易受感性負(fù)載的影響,電路的穩(wěn)定性較低;單片機(jī)利用程序?qū)崿F(xiàn)PWM脈寬調(diào)制波形,程序執(zhí)行存在相對(duì)延遲現(xiàn)象,盡管單次延遲時(shí)間很小,但是延遲時(shí)間的累積會(huì)對(duì)較為復(fù)雜的控制產(chǎn)生難
12、以估量的影響??紤]到必須保證系統(tǒng)的穩(wěn)定性,所以本設(shè)計(jì)采用方案二實(shí)現(xiàn)。</p><p> 2.2 單元電路設(shè)計(jì)</p><p> 2.2.1 振蕩電路</p><p> 單片機(jī)需要不斷地提供時(shí)鐘脈沖,這個(gè)時(shí)鐘脈沖就是由振蕩電路提供的,它是由一個(gè)石英晶振、兩個(gè)反饋電容組成,振蕩電路是計(jì)算機(jī)的心臟,它控制著計(jì)算機(jī)的工作節(jié)奏。晶振頻率多在1.2MHz~12MHz
13、之間選取,工業(yè)上常用的是6M和12M,而本次專業(yè)課設(shè)用的晶振頻率是11.0592MHz,反饋電容的取值一般在5PF~30PF 之間選擇,這里我們選用是30PF的反饋電容,它的作用有兩個(gè):一是驅(qū)動(dòng)振蕩器工作,二是對(duì)振蕩器的頻率F 起微調(diào)作用,反饋電容值越大,振蕩器的頻率就越小,二者成反比。如圖3.2所示。</p><p> 2.2.2 復(fù)位電路</p><p> 單片機(jī)需要復(fù)位以后才能
14、正常工作,復(fù)位的目的就是使單片機(jī)處于一個(gè)基準(zhǔn)點(diǎn),在這個(gè)基準(zhǔn)點(diǎn),程序?qū)?huì)從C51的MAIN主行數(shù)的第一條語句開始執(zhí)行。一般來說復(fù)位電路有兩種,一種是手動(dòng)復(fù)位,另一種是上電復(fù)位,本設(shè)計(jì)采用的是常用的的上電復(fù)位,復(fù)位過程很簡(jiǎn)單,在電源剛剛合上時(shí),電流經(jīng)過電阻對(duì)電解電容充電,這樣在電阻上就形成了一個(gè)電壓,對(duì)于單片機(jī)來說,這個(gè)電壓就是復(fù)位電壓。經(jīng)過若干毫秒以后,電解電容器被充滿電,這時(shí)電阻就沒有電流流過,電阻兩端也就沒有電壓,單片機(jī)的復(fù)位腳RET
15、電壓恢復(fù)為零,復(fù)位工作結(jié)束,單片機(jī)開始工作。在本次設(shè)計(jì)中選用的是10uF的電解電容,10K的電阻以及5V的外接電壓。如圖2.2所示。</p><p> 圖2.2 單片機(jī)振蕩電路與復(fù)位電路圖</p><p> 2.2.3 定時(shí)/計(jì)數(shù)器8253模塊電路</p><p> 本模塊是此次設(shè)計(jì)的核心模塊,是利用可編程計(jì)數(shù)器8253與89C51單片機(jī)的特殊連接所實(shí)現(xiàn)的。
16、</p><p> 一片8253共有3個(gè)獨(dú)立通道,各通道共有6種工作方式,其中方式1(可編程序單穩(wěn))的工作性能是:當(dāng)控制字裝入控制寄存器后,OUT變高,在GATE輸入信號(hào)的上升沿以后的整個(gè)技術(shù)過程中,OUT變低,一旦技術(shù)結(jié)束則OUT變高。下一次GATE上升沿觸發(fā),OUT再一次變低,輸出一定寬度的負(fù)脈沖。若在OUT為低時(shí)寫入新的計(jì)數(shù)值,則在下一次觸發(fā)之前將不影響單穩(wěn)脈沖寬度。由8253可編程序單穩(wěn)工作特性可知,每
17、啟動(dòng)一次,定時(shí)時(shí)間由計(jì)數(shù)值而定。該特性適合本次設(shè)計(jì)PWM波形的工作要求。</p><p> 單片機(jī)向8253的通道0賦值給方式1的控制字及計(jì)數(shù)值T0,OUT0輸出為高電平,但計(jì)數(shù)器0未啟動(dòng)不工作,這時(shí)通道處于等待狀態(tài),等待GATE0的上升沿到來。</p><p> 單片機(jī)向8253的通道1賦值給方式1的控制字及計(jì)數(shù)值T1,OUT1輸出由低變高,因而在GATE0端得到一個(gè)上升觸發(fā)脈沖啟動(dòng)
18、通道0定時(shí),在定時(shí)中OUT0變?yōu)榈碗娖?,這時(shí)8253開始進(jìn)入雙定時(shí)器互相觸發(fā)啟動(dòng)的工作狀態(tài)。</p><p> 在通道0第一次定時(shí)結(jié)束,OUT0輸出變高,是GATE1端得到一個(gè)上升觸發(fā)脈沖啟動(dòng)通道1定時(shí),而通道0處于等待狀態(tài)。</p><p> 當(dāng)時(shí)鐘頻率為f0,調(diào)寬脈沖周期為T(T=t+t’)時(shí),則有:</p><p> T0=f*t, T1=f*t’
19、 (1)</p><p> 當(dāng)t’用T與t取代時(shí),可得:</p><p> T1=f*(T-t) (2)</p><p> 由此看來,當(dāng)需要得到寬度為t的調(diào)寬脈沖時(shí),必須給通道0置計(jì)數(shù)值為T0,通道1置計(jì)數(shù)值為T1,當(dāng)需要調(diào)整脈寬時(shí),只需按式(
20、1)和式(2)重新計(jì)算T0和T1,置入各對(duì)應(yīng)通道,輸出波形后自動(dòng)得到調(diào)整,從而實(shí)現(xiàn)了占空比可變的脈寬調(diào)制的目的</p><p> 在這里單片機(jī)除了需要給8253定時(shí)/計(jì)數(shù)器 8位數(shù)據(jù)以外,還需用到74LS373地址鎖存器對(duì)單片機(jī)的地址進(jìn)行鎖存,由于74LS373內(nèi)部是由8個(gè)D觸發(fā)器構(gòu)成的,在這里其中的兩個(gè)觸發(fā)器輸出Q1和Q2是8253中的A0和A1的輸入信號(hào),使得8253得到正確的控制口地址和計(jì)數(shù)器口地址,這也
21、是8253計(jì)數(shù)器正常工作所必須的。其次是單片機(jī)的P2.5作為8253的片選信號(hào),以此來進(jìn)一步確定8253的口地址,8253</p><p> 的讀寫信號(hào)分別由單片機(jī)的讀寫信號(hào)直接給予,然后是ALE地址所存信號(hào)給8253的CLK1和CLK0送同步時(shí)鐘信號(hào),最后通過OUT1的輸出脈沖打開GATE0,使得OUT0經(jīng)過一個(gè)反相器后得到我們最終所需的PWM脈沖信號(hào)。如圖2.3所示。</p><p>
22、; 圖2.3 定時(shí)/計(jì)數(shù)器8253控制電路圖</p><p> 2.2.4 鍵盤及顯示電路</p><p> HD7279A 只需要4 根線(CS、CLK、DATA、KEY)與AT89C51 相連,僅僅使用單片機(jī)的P1.0—P1.3 口,大大節(jié)省了CPU 的端口資源,大大簡(jiǎn)化系統(tǒng)電路,即可實(shí)現(xiàn)鍵盤接口功能。由于HD7279A 內(nèi)部含有去抖動(dòng)電路,軟件編程時(shí)不需要鍵盤的消抖動(dòng)程序,而
23、且HD7279A 的控制指令也使得軟件編程更簡(jiǎn)單。選用HD7279A 芯片作為驅(qū)動(dòng)接鍵盤矩陣。掃描鍵盤時(shí),如果有鍵按下,直接通過讀鍵盤數(shù)據(jù)指令即可在LCD 上顯示鍵入的鍵值,而不需要通過AT89C51 口線來控制鍵盤輸入值。所以選擇HD7279 作為驅(qū)動(dòng)芯片的鍵盤電路。</p><p> 常用的數(shù)碼管顯示器由八個(gè)發(fā)光二極管組成,其中七個(gè)發(fā)光二極管a-g控制七個(gè)段的亮或暗,另一個(gè)控制一個(gè)小數(shù)點(diǎn)的亮和暗,這種筆畫式
24、的七段顯示器控制簡(jiǎn)單,使用方便,而且字符較亮,價(jià)格適宜,所以選擇數(shù)碼管顯示.如圖2.4所示。</p><p> 圖2.4 鍵盤與顯示控制電路圖</p><p> 第三章 系統(tǒng)軟件設(shè)計(jì)</p><p> 3.1 編程語言的選擇</p><p> MCS-51 編程語言常用的有兩種,一種是匯編語言,另一種是C 語言。C 語言是一種結(jié)構(gòu)
25、化語言,在大多數(shù)情況下其機(jī)器代碼生成效率和匯編語言相當(dāng)。匯編語言的機(jī)器代碼生成效率很高,匯編語言的開發(fā)效率高,可以充分地利用片內(nèi)的資源。具有直接和硬件打道、執(zhí)行代碼的效率高等特點(diǎn),可以做到C語言所不能做到的一些事情,例如對(duì)時(shí)鐘要求很嚴(yán)格時(shí),使用匯編語言成了唯一的選擇。匯編在延時(shí)和中斷時(shí)有很大的作用,有時(shí)C是沒有辦法做到的 。綜合以上匯編語言的優(yōu)點(diǎn),本次設(shè)計(jì)選擇匯編語言對(duì)51單片機(jī)進(jìn)行軟件編程。</p><p>
26、 3.2 7279鍵盤功能設(shè)計(jì) </p><p> 表3-1 7279鍵盤功能設(shè)計(jì)</p><p> 3.3 存儲(chǔ)單元及關(guān)鍵字介紹</p><p> 3.3.1 存儲(chǔ)單元介紹</p><p> 表3-2 存儲(chǔ)單元介紹</p><p> 3.3.2 關(guān)鍵字介紹</p><p&g
27、t; 表3-3 關(guān)鍵字介紹</p><p> 3.4 軟件設(shè)計(jì)系統(tǒng)總框圖</p><p> 程序開始運(yùn)行時(shí)對(duì)存儲(chǔ)區(qū)及7279初始化,判斷是否有按鍵按下,無鍵按下,重新進(jìn)行鍵盤掃描;有鍵按下,判斷是哪個(gè)鍵按下,并進(jìn)行相應(yīng)的操作,整個(gè)程序是以AT89C51單片機(jī)為核心控制單元,通過ALE不斷給8253計(jì)數(shù)器時(shí)鐘信號(hào),以及與按鍵相配合,通過對(duì)數(shù)碼管顯示占空比的改變,給計(jì)數(shù)器0口不同的輸
28、出,從而實(shí)現(xiàn)設(shè)計(jì)要求。因此整個(gè)系統(tǒng)設(shè)計(jì)的流程圖如圖3.1所示。</p><p> N </p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p&g
29、t;<p> 圖 3.1程序流程圖</p><p> 第四章 實(shí)驗(yàn)調(diào)試與測(cè)試結(jié)果分析</p><p> 4.1 調(diào)試過程中主要用到的儀器和工具</p><p><b> 數(shù)字萬用表 一個(gè)</b></p><p><b> 穩(wěn)壓電源 一個(gè)</b></p>
30、<p> 示波器 一臺(tái)</p><p> 4.2 實(shí)驗(yàn)調(diào)試過程 </p><p> 采用KeilC51編譯器進(jìn)行源程序編譯及仿真調(diào)試,同時(shí)進(jìn)行硬件電路板的設(shè)計(jì)制作。硬件電路制作完畢,用萬用表檢測(cè)有無短路開路等現(xiàn)象,確定硬件電路沒有問題后,用示波器的串口線與硬件電路相連,運(yùn)行程序進(jìn)行調(diào)試。</p><p> 在軟件調(diào)試過程中,發(fā)現(xiàn)程序運(yùn)行沒
31、有錯(cuò)誤,但在輸入占空比數(shù)值后,按下確認(rèn)鍵不能在數(shù)碼管上顯示修改后的占空比值,得不到想要的實(shí)驗(yàn)結(jié)果。而后憑借著流程圖,一步一步地檢查程序的走向,最終發(fā)現(xiàn)原來是程序中判斷是否按下確認(rèn)鍵后,沒有調(diào)用顯示程序。當(dāng)加入顯示子程序后,運(yùn)行程序?qū)崿F(xiàn)了預(yù)期的實(shí)驗(yàn)結(jié)果。</p><p> 4.3 測(cè)試結(jié)果分析</p><p> 制作完成后,將8253計(jì)數(shù)器0的OUT0端連接示波器上。上電后,7279顯
32、示器初始化顯示“good050“字樣,示波器上顯示穩(wěn)定的占空比為50%的方波。按下“設(shè)置/確認(rèn)” 鍵后,顯示器上第6個(gè)數(shù)碼管開始閃爍,即提示可以修改此數(shù)值。選擇一個(gè)數(shù)字鍵按下,若選擇“1“或比”1“大的數(shù)字鍵,則這個(gè)數(shù)碼管仍然閃爍,即提示輸入錯(cuò)誤;若選擇”0“數(shù)字鍵,則第六個(gè)數(shù)碼管消閃并顯示了”0“,同時(shí)第七個(gè)數(shù)碼管開始閃爍,這個(gè)“0”即作為占空比的百位值。接著輸入數(shù)字,此時(shí)可以選擇”0“到”9“中的任意一個(gè)數(shù)字作為占空比的十位值(比如
33、“2”),按下后第七個(gè)數(shù)碼管消閃并顯示了所按下的數(shù)字,同時(shí)第八個(gè)數(shù)碼管開始閃爍。與第七個(gè)數(shù)碼管一樣按下一個(gè)數(shù)字鍵作為占空比的個(gè)位值(比如“5”),第八個(gè)數(shù)碼管則顯示所按下的數(shù)字,但不消閃,直到再次按下“設(shè)置/確認(rèn)”鍵后,第八個(gè)數(shù)碼管消閃。此時(shí)修改完成,顯示器上顯示“nice025”,即占空比變?yōu)?5%,從操作中可以發(fā)現(xiàn)提供修改的占空比范圍為0%-99%。再觀察示波器上的波形及相應(yīng)測(cè)量參數(shù),可以得出輸出的PWM波占空比的確變?yōu)?5%,達(dá)到
34、設(shè)計(jì)要求。</p><p><b> 結(jié)論</b></p><p> 單片機(jī)的應(yīng)用系統(tǒng)由硬件和軟件所組成。硬件主要指單片機(jī)擴(kuò)展的存儲(chǔ)器,輸入/輸出設(shè)備等硬件部件機(jī)器,而軟件是各種工作程序的總稱。只有硬件和軟件緊密配合,協(xié)調(diào)一致,才能組成高性能的單片機(jī)應(yīng)用系統(tǒng)。對(duì)于本次專業(yè)課程設(shè)計(jì)——PWM波的研制,是簡(jiǎn)單的單片機(jī)應(yīng)用系統(tǒng),采用順序設(shè)計(jì)方法。</p>
35、<p> 回顧起此次單片機(jī)課程設(shè)計(jì),至今我仍感慨頗多,的確,從選題到定稿,從理論到實(shí)踐,在這三周的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。體會(huì)最深刻的一點(diǎn)就是理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。
36、在設(shè)計(jì)的過程中遇到了一些問題,同時(shí)也發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說對(duì)單片機(jī)匯編語言掌握得不好,對(duì)HD7279的模塊的工作原理掌握得不夠熟練,對(duì)設(shè)計(jì)一個(gè)單片機(jī)系統(tǒng)所需要的思路和方法不明確等等。通過這次專業(yè)課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識(shí)重新溫故。</p><p> 專業(yè)課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)專業(yè)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié)
37、,是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程。隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域, 在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)生來說掌握單片機(jī)的開發(fā)技術(shù)是十分重要的。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]韓成、張延偉主編.拿來就用單片機(jī).北京:人民郵電出版社,2008</p>
38、<p> [2] 樓然苗、李光飛.單片機(jī)課程設(shè)計(jì)指導(dǎo).北京:北京航空航天大學(xué)出版社,2007</p><p> [3] 王福瑞等.單片機(jī)測(cè)控系統(tǒng)設(shè)計(jì)大全.北京:北京航空航天大學(xué)出版社,1999</p><p> [4]蘇凱,劉慶國(guó).MCS-51系列單片機(jī)系統(tǒng)原理與設(shè)計(jì).北京:冶金工業(yè)出版</p><p> [5]鄔寬明.單片機(jī)外圍器件實(shí)用手冊(cè).
39、北京:北京航空航天大學(xué)出版社,1998</p><p> [6]徐建軍主編.MCS-51系統(tǒng)單片機(jī)應(yīng)用及接口技術(shù).北京:人民郵電出版社,2003</p><p> [7]姜至海、劉連鑫主編.單片微型計(jì)算機(jī)原理及應(yīng)用.北京:機(jī)械工業(yè)出版社,2007</p><p> [8] 蔡明文、馮先成. 單片機(jī)課程設(shè)計(jì). 武漢:華中科技大學(xué)出版社 , 2007</p&
40、gt;<p> [9] 房小翠、王金鳳. 單片機(jī)實(shí)用系統(tǒng)設(shè)計(jì)技術(shù).北京:國(guó)防工業(yè)出版社,1996</p><p><b> 附錄A</b></p><p> 系統(tǒng)設(shè)計(jì)程序代碼如下:</p><p><b> ORG 0000H</b></p><p><b> LJ
41、MP MAIN</b></p><p> MAIN:MOV SP,#67H </p><p> ACALL INIT_7279 ;7279初始化</p><p> L1:ACALL PWM_DEAL ;PWM的占空比數(shù)據(jù)處理</p><p> ACALL PWM_OUT ;PWM輸出</p&g
42、t;<p> ACALL DIS_DEAL ;顯示處理</p><p> L2:ACALL DISPLAY ;7279顯示子程序</p><p> ACALL KEY </p><p> CJNE A,#0FFH,L4 ;判斷有無鍵按下</p><p><b> LJMP L
43、2</b></p><p> L4:CJNE A,#0AH,L2 ;判斷是否按下設(shè)置鍵</p><p><b> ACALL TV4</b></p><p><b> SJMP L1</b></p><p> ;PWM的占空比數(shù)據(jù)處理</p><p&g
44、t; PWM_DEAL:MOV R7,#02H</p><p> MOV R0,#4AH</p><p><b> MOV A,@R0</b></p><p> L6:MOV B,#0AH</p><p> MUL AB ;十進(jìn)制占空比轉(zhuǎn)化為二進(jìn)制 </p><p>
45、;<b> DEC R0</b></p><p><b> ADD A,@R0</b></p><p> DJNZ R7,L6</p><p> MOV B,#25H</p><p><b> MUL AB</b></p><p><b&
46、gt; MOV 50H,A</b></p><p><b> MOV A,B</b></p><p><b> MOV 51H,A</b></p><p><b> RET</b></p><p><b> ;PWM的輸出</b>&l
47、t;/p><p> PWM_OUT:MOV DPTR,#0DFFFH</p><p> MOV A,#74H ;計(jì)數(shù)器1,方式2,二進(jìn)制計(jì)數(shù)</p><p> MOVX @DPTR,A</p><p> MOV DPTR,#0DFFDH;</p><p> MOV A,#74H
48、 ;OUT1 輸出 500HZ的方波,計(jì)數(shù)器1的初值為0E74H</p><p> MOVX @DPTR,A</p><p> MOV A,#0EH</p><p> MOVX @DPTR,A</p><p> MOV DPTR,#0DFFFH</p><p> MOV A,#32H
49、 ;計(jì)數(shù)器0,方式1,二進(jìn)制計(jì)數(shù)</p><p> MOVX @DPTR,A</p><p> MOV DPTR,#0DFFCH</p><p> MOV A,50H ;OUT0 輸出脈寬可調(diào)的頻率為500HZ的脈沖,計(jì)數(shù)器0的初值為鍵入值,存在50H,51H單元里 </p><p> MOVX @DPTR,A
50、</p><p> MOV A,51H </p><p> MOVX @DPTR,A</p><p><b> RET</b></p><p><b> ;初始化顯示處理</b></p><p> DIS_DEAL:MOV 40H,#09H ;上電
51、后,前五個(gè)數(shù)碼管顯示"good"</p><p> MOV 41H,#10H</p><p> MOV 42H,#10H</p><p> MOV 43H,#11H</p><p> MOV 44H,#0BH</p><p> MOV 45H,4AH ;最后三個(gè)數(shù)碼管所顯示的占空比
52、值存于48H-4AH單元中</p><p> MOV 46H,49H</p><p> MOV 47H,48H</p><p><b> RET</b></p><p><b> ;修改后顯示處理</b></p><p> DIS_DEAL1:MOV 40H,#0C
53、H ;按下確認(rèn)鍵后,前五個(gè)數(shù)碼管顯示"nice"</p><p> MOV 41H,#0DH</p><p> MOV 42H,#0EH</p><p> MOV 43H,#0fH</p><p> MOV 44H,#0BH </p><p> MOV 45H,4AH
54、 ;最后三個(gè)數(shù)碼管所顯示的占空比值存于48H-4AH單元中</p><p> MOV 46H,49H</p><p> MOV 47H,48H</p><p><b> RET</b></p><p><b> ;鍵入占空比</b></p><p> TV4:MO
55、V B,A</p><p><b> CLR P1.0</b></p><p> MOV A,#88H ;7279閃爍指令</p><p> ACALL STFS</p><p> MOV A,#0FBH ;第六個(gè)數(shù)碼管閃爍</p><p> ACAL
56、L STFS</p><p><b> SETB P1.0</b></p><p><b> MOV A,B</b></p><p> ACALL DIS_DEAL1 ;顯示結(jié)果處理</p><p> ACALL DISPLAY ;7279顯示子程序<
57、/p><p> ACALL KEY ;鍵入第一個(gè)值</p><p> CJNE A,#01H,M1 ;與1比較,不能大于等于1</p><p><b> M1:JC M2</b></p><p><b> LJMP TV4</b></p>
58、<p> M2:MOV 4AH,A ;將第一個(gè)值存于4AH單元中</p><p><b> MOV B,A</b></p><p><b> CLR P1.0</b></p><p> MOV A,#88H </p><p> ACALL STFS</
59、p><p> MOV A,#0FDH ;第七個(gè)數(shù)碼管閃爍</p><p> ACALL STFS</p><p><b> SETB P1.0</b></p><p><b> MOV A,B</b></p><p> L12:ACALL DIS_D
60、EAL1 ;顯示結(jié)果處理</p><p> ACALL DISPLAY ;7279顯示子程序</p><p> ACALL KEY ;鍵入第二個(gè)值</p><p> CJNE A,#0AH,L11 ;與10比較,不能大于等于10</p><p> L11:J
61、NC L12</p><p> MOV 49H,A ;將第二個(gè)值存于49H單元中</p><p><b> MOV B,A</b></p><p><b> CLR P1.0</b></p><p> MOV A,#88H </p><p>
62、; ACALL STFS</p><p> MOV A,#0FEH ;第八個(gè)數(shù)碼管閃爍</p><p> ACALL STFS</p><p><b> SETB P1.0</b></p><p><b> MOV A,B</b></p><p&g
63、t; L13:ACALL DIS_DEAL1</p><p> ACALL DISPLAY</p><p> ACALL KEY ;鍵入第三個(gè)值</p><p> CJNE A,#0AH,L14 ;與10比較,不能大于等于10</p><p> L14:JNC L13</p>
64、;<p> MOV 48H,A ;將第三個(gè)值存于48H單元中</p><p> L15:ACALL DIS_DEAL1</p><p> ACALL DISPLAY</p><p><b> ACALL KEY</b></p><p> CJNE A,#0AH,L16
65、 ;判斷確認(rèn)鍵是否按下 </p><p><b> MOV B,A</b></p><p><b> CLR P1.0</b></p><p> MOV A,#88H </p><p> ACALL STFS</p><p> MOV A,#0FFH
66、 ;取消閃爍</p><p> ACALL STFS</p><p><b> SETB P1.0</b></p><p><b> MOV A,B</b></p><p> ACALL DIS_DEAL1 ;修改后的最終結(jié)果顯示處理</p><p>
67、ACALL DISPLAY ;7279顯示最終結(jié)果</p><p><b> SJMP L18 </b></p><p> L16:SJMP L15</p><p><b> L18:RET</b></p><p><b> ;顯示部分</b>&
68、lt;/p><p> DISPLAY:MOV R5,#08H ;顯示子程序,顯示8個(gè)字符,顯緩區(qū)40H-47H</p><p> MOV R0,#40H ;顯緩區(qū)首址</p><p> MOV R1,#97H ;命令字控制顯示的數(shù)碼管</p><p> DL1:CLR P1.0</p><
69、p> MOV R6,#0CH</p><p> DL2:DJNZ R6,DL2</p><p> MOV A,R1 ;發(fā)送命令字</p><p> ACALL STFS;</p><p> MOV R6,#06H</p><p> DL3:DJNZ R6,DL3 ;延時(shí)
70、</p><p><b> MOV A,@R0</b></p><p> ADD A,#0DH</p><p> MOVC A,@A+PC ;查表</p><p> ACALL STFS ;發(fā)送顯示內(nèi)容</p><p> MOV R6,#02H</p>
71、;<p> DL4:DJNZ R6,DL4 ;延時(shí)</p><p> SETB P1.0 </p><p><b> INC R0</b></p><p><b> DEC R1</b></p><p> DJNZ R5,DL1 ; 循環(huán)次數(shù)</p&
72、gt;<p><b> RET </b></p><p> TAB: DB 7EH,30H,6DH,79H,33H,5BH,5FH,70H,7FH</p><p> DB 7BH,00H,01H,76h,30h,4Eh,6Fh,1Dh,3Dh ;字型碼</p><p><b> ;發(fā)送一字節(jié)</b>
73、</p><p> STFS:MOV R7,#08H ;與7279串行發(fā)送子程序</p><p><b> SL1:RLC A</b></p><p> MOV P1.2,C</p><p><b> SETB P1.1</b></p><p> MOV R6
74、,#02H</p><p> SL2: DJNZ R6,SL2</p><p><b> CLR P1.1</b></p><p> MOV R6,#02H</p><p> SL3: DJNZ R6,SL3</p><p> DJNZ R7,SL1</p><p&g
75、t;<b> RET</b></p><p><b> ;鍵掃</b></p><p> KEY:ACALL KEY1</p><p> CJNE A,#0FFH,KL1</p><p><b> CLR 00H</b></p><p><
76、;b> RET</b></p><p> KL1:JB 00H,KL2</p><p><b> SETB 00H</b></p><p> ACALL KEY2</p><p><b> RET</b></p><p> KL2:MOV A,#
77、0FFH</p><p><b> RET</b></p><p> KEY1:CLR P1.0 ;讀鍵值子程序</p><p> MOV R6,#0CH</p><p> L01:DJNZ R6,L01</p><p> MOV A,#15H</p><
78、p> ACALL STFS</p><p> MOV R6,#06H</p><p> L02:DJNZ R6,L02</p><p> ACALL STJS</p><p><b> SETB P1.0</b></p><p><b> RET</b>&l
79、t;/p><p> STJS:MOV R7,#08H ;與7279串行接收子程序</p><p> L21:SETB P1.1</p><p><b> SETB P1.2</b></p><p> MOV R6,#02H</p><p> L22:DJNZ R6,L22</p
80、><p> MOV C,P1.2</p><p><b> RLC A</b></p><p><b> CLR P1.1</b></p><p> MOV R6,#02H</p><p> L23:DJNZ R6,L23</p><p> D
81、JNZ R7,L21</p><p><b> RET</b></p><p> KEY2:MOV B,A</p><p> MOV R2,#00H</p><p> MOV R7,#0FH</p><p> L31:MOV A,R2 </p><p> ADD
82、 A,#0AH</p><p> MOVC A,@A+PC</p><p> CJNE A,B,L32</p><p><b> SJMP L33</b></p><p> L32:INC R2</p><p> DJNZ R7,L31</p><p> L33
83、:MOV A,R2</p><p><b> RET</b></p><p> TAB0: DB 1CH,1DH,1EH,1FH,14H ;7279鍵值表</p><p> DB 15H,16H,17H,0CH,0DH</p><p> DB 0EH,0FH,04H,05H,06H</p>
84、<p><b> DB 07H </b></p><p><b> ;7279初始化</b></p><p> INIT_7279:CLR P1.0 ;7279初始化</p><p> MOV R6,#0CH</p><p> NL0:DJNZ R
85、6,NL0</p><p> MOV A,#0A4H</p><p> ACALL STFS</p><p> MOV R6,#02H</p><p> NL1:DJNZ R6,NL1</p><p> SETB P1.0 </p><p> MOV 4AH,#00H
86、 ;上電后,數(shù)碼管顯示初始值050,即占空比50%</p><p> MOV 49H,#05H</p><p> MOV 48H,#00H</p><p><b> RET</b></p><p><b> END</b></p><p><b>
87、 附錄B</b></p><p><b> 芯片引腳圖:</b></p><p> AT89C51單片機(jī):</p><p> 可編程的8253定時(shí)/計(jì)數(shù)器: </p><p><b> HD7279:</b></p><p><b> 74L
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)報(bào)告(信號(hào)發(fā)生器)
- 單片機(jī)信號(hào)發(fā)生器課程設(shè)計(jì)論文
- 單片機(jī)課程設(shè)計(jì)---正弦波發(fā)生器
- 簡(jiǎn)易信號(hào)發(fā)生器單片機(jī)課程設(shè)計(jì)報(bào)告
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器課程設(shè)計(jì)
- 課程設(shè)計(jì)—基于單片機(jī)的方波信號(hào)發(fā)生器
- 課程設(shè)計(jì)--基于單片機(jī)的函數(shù)信號(hào)發(fā)生器
- 課程設(shè)計(jì)---基于單片機(jī)的信號(hào)發(fā)生器的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--- 三角波發(fā)生器
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器課程設(shè)計(jì)
- 課程設(shè)計(jì)-基于單片機(jī)的函數(shù)信號(hào)發(fā)生器設(shè)計(jì)
- 單片機(jī)原理及應(yīng)用課程設(shè)計(jì)--信號(hào)發(fā)生器
- 單片機(jī)課程設(shè)計(jì)(波形發(fā)生器)
- 單片機(jī)課程設(shè)計(jì)---波形發(fā)生器
- 51單片機(jī)課程設(shè)計(jì)---多功能信號(hào)發(fā)生器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)—波形發(fā)生器
- 課程設(shè)計(jì)--單片機(jī)波形發(fā)生器
- 單片機(jī)課程設(shè)計(jì)-波形發(fā)生器
- 課程設(shè)計(jì)--基于51單片機(jī)的信號(hào)發(fā)生器的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)(簡(jiǎn)易函數(shù)發(fā)生器)
評(píng)論
0/150
提交評(píng)論