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