版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《單片機(jī)原理及應(yīng)用》</p><p><b> 課程設(shè)計(jì)報告</b></p><p><b> 目 錄</b></p><p> 一、課程設(shè)計(jì)的目的與意義2</p><p> 1.課程設(shè)計(jì)的目的2</p><p> 2.課程設(shè)計(jì)的意義2
2、</p><p> 二、課程設(shè)計(jì)的任務(wù)與要求3</p><p> 1.課程設(shè)計(jì)的任務(wù)3</p><p> 2. 課程設(shè)計(jì)的要求及其主要功能3</p><p> 三、系統(tǒng)總體結(jié)構(gòu)及工作原理說明3</p><p> 1.系統(tǒng)總體結(jié)構(gòu)框圖3</p><p> 2. 工作原理說明
3、3</p><p> 四、各模塊電路設(shè)計(jì)4</p><p> 1.所用元器件簡介及其引腳功能4</p><p> 2. 模塊電路原理圖8</p><p><b> 五、軟件設(shè)計(jì)11</b></p><p> 1. 主程序流程圖11</p><p> 2
4、. 各個子程序流程圖12</p><p> 六、調(diào)試過程和調(diào)試方法19</p><p> 七、課程設(shè)計(jì)總結(jié)22</p><p> 參考文獻(xiàn)……………………………..……………………………………………………………... 23</p><p> 附錄……………………………………………………………………………………………………..24
5、</p><p> 一、課程設(shè)計(jì)的目的與意義</p><p><b> 1.課程設(shè)計(jì)的目的</b></p><p> ?。?)利用所學(xué)單片機(jī)的理論知識進(jìn)行軟硬件整體設(shè)計(jì),鍛煉我們理論聯(lián)系實(shí)際、提高我們的綜合應(yīng)用能力。 (2)我們這次的課程設(shè)計(jì)是以單片機(jī)為基礎(chǔ),設(shè)計(jì)并開發(fā)能輸出多種波形(三角波、鋸齒波、方波等)。 (3)掌握各個接
6、口芯片(如0832等)的功能特性及接口方法,并能運(yùn)用其實(shí)現(xiàn)一個簡單的微機(jī)應(yīng)用系統(tǒng)功能器件。 (4)在平時的學(xué)習(xí)中,我們所學(xué)的知識大都是課本上的,因此,缺乏一種系統(tǒng)的設(shè)計(jì)鍛煉。在課程所學(xué)結(jié)束以后,這樣的課程設(shè)計(jì)十分有助于我們將知識系統(tǒng)的總結(jié)到一起。 (5)通過這幾個波形進(jìn)行組合形成了一個函數(shù)發(fā)生器,使得我對系統(tǒng)的整個框架的設(shè)計(jì)有了一個很好的鍛煉。這不僅有助于大家找到自己感興趣的題目,更可以鍛煉大家微機(jī)知識的應(yīng)用。</p&
7、gt;<p><b> 2.課程設(shè)計(jì)的意義</b></p><p> 波形發(fā)生器作為一種常用的信號源,是現(xiàn)代測試領(lǐng)域內(nèi)應(yīng)用最為廣泛的通用儀器之一。</p><p> 在研制、生產(chǎn)、測試和維修各種電子元件、部件以及整機(jī)設(shè)備時,都學(xué)要有信號源,由它產(chǎn)生不同頻率不同波形的電壓、電流信號并加到被測器件或設(shè)備上,用其他儀器觀察、測量被測儀器的輸出響應(yīng),以分析
8、確定它們的性能參數(shù)。信號發(fā)生器是電子測量領(lǐng)域中最基本、應(yīng)用最廣泛的一類電子儀器。它可以產(chǎn)生多種波形信號,如正弦波,三角波,方波等,因而廣泛用于通信、雷達(dá)、導(dǎo)航、宇航等領(lǐng)域。</p><p> 二、課程設(shè)計(jì)的任務(wù)與要求</p><p><b> 1.課程設(shè)計(jì)的任務(wù)</b></p><p> 基于AT89C51設(shè)計(jì)一個波形發(fā)生器。</p
9、><p> 2. 課程設(shè)計(jì)的要求及其主要功能</p><p> ?。?)輸出頻率在1Hz~1000Hz之間的方波、三角波、鋸齒波等模擬信號。 (2)設(shè)計(jì)一個功能鍵,用于切換輸出波形的類型,并用虛擬示波器顯示輸出波形。 (3)增加輸出波形的種類,能夠輸出梯形波、正弦波。 (4)實(shí)現(xiàn)多路波形同時輸出,并增加相應(yīng)的功能鍵分別用于切換各類輸出波形的類型。</p>&l
10、t;p> 三、系統(tǒng)總體結(jié)構(gòu)及工作原理說明</p><p> 1.系統(tǒng)總體結(jié)構(gòu)框圖</p><p><b> 如圖1所示:</b></p><p><b> 圖1.總體結(jié)構(gòu)框圖</b></p><p><b> 2. 工作原理說明</b></p>&
11、lt;p> 以產(chǎn)生正弦波為例,采用定點(diǎn)法來產(chǎn)生波形,即將一個周期的正弦波按360度等分為若干點(diǎn),計(jì)算出各點(diǎn)的正弦函數(shù)值,并轉(zhuǎn)換相應(yīng)的D/A轉(zhuǎn)換器輸入數(shù)值,這樣得到一個正弦函數(shù)表。通過程序?qū)⒃摫沓绦虼鎯ζ髦?,利用單片機(jī)的定時器來產(chǎn)生定時,每當(dāng)定時時間到,查表該點(diǎn)對應(yīng)的輸出值,然后通過D/A轉(zhuǎn)換器轉(zhuǎn)換得到該點(diǎn)的對應(yīng)電壓值。如此,反復(fù)的查表輸出,就得到所謂的正弦波。由于一個周期正弦波的點(diǎn)數(shù)固定,改變定時器的定時值,就可以改變正弦波的頻
12、率值。 </p><p> 鋸齒波和三角波的產(chǎn)生類似于正弦波。方波的產(chǎn)生較簡單,只要交替地將最大值和最小值輸出給D/A轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換即可,它們的延續(xù)時間為周期的一半。</p><p><b> 四、各模塊電路設(shè)計(jì)</b></p><p> 1.所用元器件簡介及其引腳功能</p><p> 波形發(fā)生器所采用
13、的硬件設(shè)備主要有AT89C51單片機(jī)和DAC0832 D/A轉(zhuǎn)換芯片,并外接運(yùn)算放大器,得到模擬模擬輸出信號。</p><p> ?。?)AT89C51芯片介紹</p><p> AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,
14、俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。外
15、形及引腳排列如圖2所示:</p><p> 圖2.AT89C51引腳圖</p><p> AT89C51芯片的引腳描述如下:</p><p> ①、主電源引腳VCC和VSS</p><p> VCC——(40腳)接+12V電源;</p><p> VSS——(20腳)接地。</p><p&
16、gt; ?、?、外接晶體引腳XTAL1和XTAL2</p><p> XTAL1(19腳)接外部晶體的一個引腳。在單片機(jī)內(nèi)部,它是一個反相放大器的輸入端,這個放大器構(gòu)成了片內(nèi)振蕩器。當(dāng)采用外部振蕩器時,對HMOS單片機(jī),此引腳應(yīng)接地;對CHMOS單片機(jī),此引腳作為驅(qū)動端。</p><p> XTAL2(18腳)接外晶體的另一端。在單片機(jī)內(nèi)部,接至上述振蕩器的反相放大器的輸出端。采用外部振
17、蕩器時,對HMOS單片機(jī),該引腳接外部振蕩器的信號,即把外部振蕩器的信號直接接到內(nèi)部時鐘發(fā)生器的輸入端;對CHMOS,此引腳應(yīng)懸浮。</p><p> ?、?、控制或與其他電源復(fù)用引腳RST/VPD、ALE/PROG、PSEN和EA/VPP</p><p> RST/VPD(9腳)當(dāng)振蕩器運(yùn)行時,在此引腳上出現(xiàn)兩個機(jī)器周期的高電平將使單片機(jī)復(fù)位。推薦在此引腳與VSS引腳之間連接一個電阻,與
18、VCC引腳之間連接一個電容,以保證可靠地復(fù)位。</p><p> VCC掉電期間,此引腳可接上備用電源,以保證內(nèi)部RAM的數(shù)據(jù)不丟失。當(dāng)VCC主電源下掉到低于規(guī)定的電平,而VPD在其規(guī)定的電壓范圍內(nèi),VPD就向內(nèi)部RAM提供備用電源。</p><p> ALE/PROG(30腳)當(dāng)訪問外部存貯器時,ALE(允許地址鎖存)的輸出用于鎖存地址的低位字節(jié)。即使不妨問外部存儲器,ALE端仍以不
19、變的頻率周期性地出現(xiàn)正脈沖信號,此頻率為振蕩器頻率的六分之一。因此,它可用作對外輸出的時鐘,或用于定時目的。然而要注意的是,每當(dāng)訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。ALE端可以驅(qū)動(吸收或輸出電流)8個LS型的TTL輸入電路。</p><p> 對于EPROM單片機(jī)(如8751),在EPROM編程期間,此引腳用于輸入編程脈沖(PROG)。</p><p> PSEN(29腳)此
20、腳的輸出是外部程序存儲器的讀選通信號,再從外部程序存儲器取指令(或常數(shù))期間,每個機(jī)器周期兩次PSEN有效,但在此期間,每當(dāng)訪問外部存儲器時,這兩次有效的PSEN信號將不出現(xiàn),PSEN同樣可以驅(qū)動(吸收或輸出)8個LS型的TTL輸入。</p><p> EA/VPP(引腳)當(dāng)EA端保持高電平時,訪問內(nèi)部程序存儲器,但在PC(程序計(jì)數(shù)器)值超過0FFFH(對851/8751/80C51)或1FFFH(對8052)
21、時,將自動轉(zhuǎn)向執(zhí)行外部程序存儲器內(nèi)的程序。當(dāng)EA保持低電平時,則只訪問外部程序存儲器,不管是否有內(nèi)部程序存儲器,對于常用的8031來說,無內(nèi)部程序存儲器,所以EA腳必須常接地,這樣才能只選擇外部程序存儲器。</p><p> 對于EPROM型的單片機(jī)(如8751),在EPROM編程期間,此引腳也用于施加12V的編程電源(VPP)。</p><p> ?、?、輸入/輸出(I/O)引腳P0、P
22、1、P2、P3(共32根)</p><p> PO口(39腳至32腳)是雙向8位三態(tài)I/O口,在外接存儲器時,與地址總線的低8位及數(shù)據(jù)總線復(fù)用,能以吸收電流的方式驅(qū)動8個LS型的TTL負(fù)載。</p><p> P1口(1腳至8腳)是準(zhǔn)雙向8位I/O口。由于這種接口輸出沒有高阻狀態(tài),輸入也不能鎖存,故不是真正的雙向I/O口。P1口能驅(qū)動(吸收或輸出電流)4個LS型的TTL負(fù)載,對8052
23、、8032,P1.0引腳的第二功能為T2定時/計(jì)數(shù)器的外部輸入,P1.1引腳的第二功能為T2EX捕捉、重裝觸發(fā),即T2的外部控制端。對EPROM編程和程序驗(yàn)證時,它吸收低8位地址。</p><p> P2口(21腳至28腳)是準(zhǔn)雙向8位I/O口。在訪問外部存儲器時,它可以作為擴(kuò)展電路高8位地址總線送出高8位地址。在對EPROM編程和程序驗(yàn)證期間,它接收高8位地址。P2可以驅(qū)動(吸收或輸出電流)4個LS型的TTL
24、負(fù)載。</p><p> P3口(10腳至17腳)是準(zhǔn)雙向8位I/O口。在MCS-51中,這8個引腳還用于專門功能,是復(fù)用雙功能口。P3能驅(qū)動(吸收或輸出電流)4個LS型的TTL負(fù)載。</p><p> 作為第一功能使用時,就作為普通I/O口用,功能和操作方法與P1口相同。</p><p> 作為第二功能使用時,各引腳的定義不同。(值得強(qiáng)調(diào)的是,P3口的每一條
25、引腳均可獨(dú)立定義為第一功能的輸入輸出或第二功能。</p><p> ?、荨⑤斎?輸出(I/O)引腳第二功能</p><p> P3.0 10RXD(串行輸入口)</p><p> P3.1 11TXD(串行輸出口)</p><p> P3.2 12INT0(外部中斷0)</p><p> P3.3 13INT1
26、(外部中斷1)</p><p> P3.4 14T0(定時器0外部輸入)</p><p> P3.5 15T1(定時器1外部輸入)</p><p> P3.6 16WR(外部數(shù)據(jù)存儲器寫脈沖)</p><p> P3.7 17RD(外部數(shù)據(jù)存儲器讀脈沖)</p><p> (2)D/A轉(zhuǎn)換0832芯片介紹&l
27、t;/p><p> DAC0832是采樣頻率為八位的D/A轉(zhuǎn)換芯片,集成電路內(nèi)有兩級輸入寄存器。DAC0832輸出的是電流,一般要求輸出是電壓,所以還必須經(jīng)過一個外接運(yùn)算放大器轉(zhuǎn)換成電壓。DAC0832采用雙緩沖接口方式,其傳送控制端接地,輸入所存允許端ILE與電源相連,利用一個地址碼進(jìn)行二次輸出操作,完成數(shù)據(jù)的傳送和激動轉(zhuǎn)換,第一次操作視P2.6為高電平,將P0口數(shù)據(jù)線上的數(shù)據(jù)鎖存于DAC0832的輸入寄存器中。
28、第二次操作是寫控制信號由效,傳送控制端為低電平,將輸入寄存器中的內(nèi)容鎖存入0832的DAC寄存器中,D/A轉(zhuǎn)換器便開始對鎖存于DAC寄存器的8位數(shù)據(jù)進(jìn)行轉(zhuǎn)換,約經(jīng)過1/2時鐘周期后,在輸出端(IOUT2、IOUT1)建立穩(wěn)定的電流輸出。</p><p> DAC0832引腳圖如圖3所示:</p><p><b> 圖3.DAC引腳圖</b></p>
29、<p> DAC0832引腳功能電路應(yīng)用原理圖DAC0832是采樣頻率為八位的D/A轉(zhuǎn)換芯片,集成電路內(nèi)有兩級輸入寄存器,使DAC0832芯片具備雙緩沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要(如要求多路D/A異步輸入、同步轉(zhuǎn)換等)。所以這個芯片的應(yīng)用很廣泛。若需要相應(yīng)的模擬電壓信號,可通過一個高輸入阻抗的線性運(yùn)算放大器實(shí)現(xiàn)。運(yùn)放的反饋電阻可通過RFB端引用片內(nèi)固有電阻,也可外接。DAC0832邏輯輸入滿足TTL電
30、平,可直接與TTL電路或微機(jī)電路連接。</p><p> DAC0832芯片引腳描述如下:</p><p> DI0~DI7:數(shù)據(jù)輸入線,TLL電平。</p><p> ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效。</p><p> CS:片選信號輸入線,低電平有效。</p><p> WR1:為輸入寄存
31、器的寫選通信號。</p><p> XFER:數(shù)據(jù)傳送控制信號輸入線,低電平有效。</p><p> WR2:為DAC寄存器寫選通信號輸入線。</p><p> Iout1:電流輸出線。當(dāng)輸入全為1時Iout1最大。</p><p> Iout2:電流輸出線。其值與Iout1之和為一常數(shù)。</p><p>
32、Rfb:反饋信號輸入線,芯片內(nèi)部有反饋電阻。</p><p> VCC:電源輸入線 (+5v~+15v) </p><p> Vref:基準(zhǔn)電壓輸入線 (-10v~+10v) </p><p> AGND:模擬地,摸擬信號和基準(zhǔn)電源的參考地。 </p><p> DGND:數(shù)字地,兩種地線在基準(zhǔn)電源處共地比較好。</p>
33、;<p> 2. 模塊電路原理圖</p><p><b> (1)復(fù)位電路</b></p><p> 復(fù)位電路是為單片機(jī)復(fù)位使用,使單片機(jī)接口初始化。89C51 單片機(jī)的復(fù)位引腳 RET 是施密特觸發(fā)輸入腳,內(nèi)部有一個上拉低電阻,當(dāng)振蕩器起振以后,在RST 引腳上輸出 2 個機(jī)器周期以上的高電平,器件變進(jìn)入復(fù)位狀態(tài)開始,此時不產(chǎn)生ALE及PSEN信
34、號,內(nèi)部復(fù)位操作使堆棧指示器SP為07H,各端口都為高電平(P0~P3口的內(nèi)容均為0FFH),特殊功能寄存器都復(fù)位為0,但不影響RAM的狀態(tài)。如圖4所示:</p><p><b> 圖4.復(fù)位電路圖</b></p><p><b> ?。?)振蕩電路</b></p><p> 單片機(jī)工作,是一條一條的從ROM中取指令,
35、然后一步一步的運(yùn)行。單片機(jī)訪問一次存儲器的時間,就是一個機(jī)器周期,這是一個時間基準(zhǔn)。一個機(jī)器周期包括12個時鐘周期。如果沒有晶振,就沒有時鐘周期,沒有時鐘周期,就沒有機(jī)器周期,沒有機(jī)器周期,就無法運(yùn)行程序代碼,單片機(jī)就無法工作。由此可見,必須要有振蕩電路。</p><p> 單片機(jī)的振蕩電路是一種典型的電路,晶振頻率一般選擇在4MHZ-12MHZ之間,外接兩個晶振電容,該電容的典型值為30pF。如圖5所示:&l
36、t;/p><p><b> 圖5.振蕩電路圖</b></p><p><b> ?。?)按鍵電路</b></p><p> 按鍵電路是為了單片機(jī)轉(zhuǎn)換波形使用的。通過分別按鍵K0、K1、K3、K4產(chǎn)生一個低電平脈沖,通過單片機(jī)內(nèi)部處理,輸出相應(yīng)波形。按鍵電路如圖6所示:</p><p><b&g
37、t; 圖6.按鍵電路圖</b></p><p> ?。?)D/A轉(zhuǎn)換電路</p><p> DAC0832主要由8位輸入寄存器、8位DAC寄存器、8位D/A轉(zhuǎn)換器以及輸入控制電路四部分組成。8 位輸入寄存器用于存放主機(jī)送來的數(shù)字量,使輸入數(shù)字量得到緩沖和鎖存;8位DAC寄存器用于存放待轉(zhuǎn)換的數(shù)字量;8位D/A轉(zhuǎn)換器輸出與數(shù)字量成正比的模擬電流。DAC0832與反相比例放大器
38、相連,實(shí)現(xiàn)電流到電壓的轉(zhuǎn)換,因此輸出模擬信號的極性與參考電壓的極性相反。D/A DAC0832原理圖如圖7所示:</p><p> 圖7. D/A DAC0832原理圖</p><p> 電流電壓轉(zhuǎn)換電路原理圖如圖8所示:</p><p> 圖8.電流電壓轉(zhuǎn)換電路圖</p><p> 實(shí)現(xiàn)I/V轉(zhuǎn)換最簡單的方法就是直接在1out1和I
39、out2之間跨界一電阻,這樣就很容易的實(shí)現(xiàn)了I/V轉(zhuǎn)換,但是這種方法忽略了一個阻抗問題。對于DAC0832來說,R的取值應(yīng)盡可能大,能夠保證獲得更多的電壓,對于與輸出電壓相連的后續(xù)電路來說,R的取值應(yīng)盡可能的小,以降低輸出阻抗,這兩方面是矛盾的,所以這種方式欠合理。而合理的方式是應(yīng)用運(yùn)算放大器實(shí)現(xiàn)I/V轉(zhuǎn)換,也解決了阻抗的問題。</p><p><b> ?。?)硬件電路</b></p
40、><p> 波形的產(chǎn)生是通過AT89C51單片機(jī)執(zhí)行某一波形發(fā)生程序,向D/A轉(zhuǎn)換器DAC0832的輸入端按一定的規(guī)律發(fā)生數(shù)據(jù),從而在D/A轉(zhuǎn)換電路的輸出端得到相應(yīng)的電壓波形。如圖9所示:</p><p><b> 圖9.硬件電路圖</b></p><p><b> 五、軟件設(shè)計(jì)</b></p><p
41、><b> 主程序流程圖</b></p><p> 軟件設(shè)計(jì)由主程序和產(chǎn)生波形的子程序組成,軟件設(shè)計(jì)重點(diǎn)是設(shè)計(jì)各種波形的子程序的程序,通過編程可得到各種波形,波形周期的改變可采用插入延時子程序的方法來實(shí)現(xiàn)。主程序開始后通過讀取按鈕狀態(tài),判別是哪種波形需求,然后調(diào)用相應(yīng)的子程序,輸出相應(yīng)的波形。</p><p> 利用中斷,當(dāng)5個開關(guān)中有任意一個閉合時,跳轉(zhuǎn)
42、至中斷程序,在中斷程序中判斷是哪一個按鍵閉合,跳轉(zhuǎn)至相應(yīng)的程序,執(zhí)行輸出波形的操作,每輸出一個點(diǎn)之后,判斷按鍵是否斷開,如果依舊閉合,則繼續(xù)輸出,如果已經(jīng)斷開,則結(jié)束中斷程序。</p><p> 主程序流程圖如圖10所示:</p><p> 圖10.主程序流程圖</p><p> 主程序代碼以及文字說明:</p><p><b&g
43、t; ORG 0000H</b></p><p><b> LJMP MAIN</b></p><p> ORG 0003H;外部中斷0</p><p> LJMP INT00</p><p><b> ORG 0040H</b></p><p>
44、 MAIN: MOV SP,60H;更改堆棧指針,避免堆棧與工作寄存器區(qū)發(fā)生沖突</p><p> SETB IT0;外部中斷請求0為下降沿觸發(fā)方式</p><p> SETB EA;中斷允許總開關(guān)打開</p><p> SETB EX0;允許外部中斷0中斷</p><p> INT00: CLR EA
45、;關(guān)中斷</p><p> PUSH PSW;現(xiàn)場保護(hù)</p><p><b> PUSH Acc</b></p><p> SETB EA ;開中斷</p><p> JNB P1.0,BX0 ;如果K0鍵閉合,則跳轉(zhuǎn)至BX0輸出鋸齒波</p><p> JNB
46、P1.1,BX1 ;如果K1鍵閉合,則跳轉(zhuǎn)至BX1輸出梯形波</p><p> JNB P1.2,BX2 ;如果K2鍵閉合,則跳轉(zhuǎn)至BX2輸出三角波</p><p> JNB P1.3,BX3 ;如果K3鍵閉合,則跳轉(zhuǎn)至BX3輸出方波</p><p> JNB P1.4, BX 4 ;如果K4鍵閉合,則跳轉(zhuǎn)至BX4輸出正弦波</p>
47、<p> INTIR: CLR EA ;關(guān)中斷</p><p> POP Acc ;現(xiàn)場恢復(fù)</p><p><b> POP PSW</b></p><p> SETB EA ;開中斷</p><p><b> RETI</b></p>
48、<p><b> 各個子程序流程圖</b></p><p><b> 鋸齒波流程</b></p><p> 鋸齒波的實(shí)現(xiàn)過程是首先定義一個初值然后進(jìn)行加法操作,然后加到某個數(shù)之后就再重新設(shè)置為初值,再重復(fù)執(zhí)行剛剛的操作,如此循環(huán)下去。流程圖如圖11所示:</p><p> 圖11.鋸齒波流程圖<
49、/p><p> 鋸齒波發(fā)生子程序如下:</p><p> BX0:MOV R0,#0FEH ;設(shè)置端口地址</p><p> MOV A,#00H</p><p> LOOP:MOVX @R0,A ;寫入</p><p> JB P1.0,INTIR
50、 ;如果k0鍵已經(jīng)斷開,則返回</p><p> INC A ;A加一</p><p> SJMP LOOP ;循環(huán)</p><p><b> 梯形波流程</b></p><p> 梯形波的實(shí)現(xiàn)是設(shè)置一個初值,然后進(jìn)行加一,當(dāng)加到某個數(shù)時延時,之后減一
51、,減到初值時在返回到之前的操作,繼續(xù)加一、延時、減一。流程圖如圖12所示:</p><p> 圖12.梯形波流程圖</p><p> 梯形波發(fā)生子程序如下:</p><p> BX1:MOV R0,#0FEH ;設(shè)置端口地址</p><p> MOV A,#00H</p><p> UP:MOVX
52、 @R0,A ;寫入</p><p> INC A ;A加一</p><p> JNZ UP ;循環(huán)</p><p> LCALL DELAY</p><p> DOWN: DEC A</p><p> MOVX @R0,A ;寫入</p><p&g
53、t; JNZ DOWN ;循環(huán)</p><p> LCALL DELAY</p><p> LJMP INTIR ;返回</p><p> DELAY:MOV R7,#100 ;延時子程序 </p><p> DELAY1:MOV R6,#10</p><p><b> NO
54、P</b></p><p> DELAY2: DJNZ R6,DELAY2</p><p> DJNZ R7,DELAY1</p><p><b> RET</b></p><p><b> 三角波流程</b></p><p> 三角波的實(shí)現(xiàn)是設(shè)置一個初
55、值,當(dāng)加到某個值的時候,執(zhí)行減一操作,減到初值時,再加一。流程圖如圖13所示:</p><p> 圖13.三角波流程圖</p><p> 三角波發(fā)生子程序如下:</p><p> BX2:MOV R0,#0FEH;設(shè)置端口地址</p><p> MOV A,#00H</p><p> UP2:MOVX
56、 @R0,A ;寫入</p><p> JB P1.2,INTIR;如果k2鍵已經(jīng)斷開,則返回</p><p> INC A;A加一</p><p> JNZ UP2 ;循環(huán)</p><p> DOWN2:DEC A ;A減一</p><p> MOVX
57、@R0,A ;寫入</p><p> JB P1.2,INTIR ;如果k2鍵已經(jīng)斷開,則返回</p><p> JNZ DOWN2 ;循環(huán)</p><p> SJMP UP2 ;如果減到0,則跳轉(zhuǎn)至UP2,繼續(xù)加一操作</p><p> LJMP INTIR ;返回</p>
58、<p><b> 方波流程</b></p><p> 方波的實(shí)現(xiàn)只需開始的時候設(shè)置一個初值然后直接輸出這個值就行了,輸出一段時間后,然后再重新置一個數(shù)據(jù),然后再輸出這個數(shù)據(jù)一段時間,但是此時的時間一定要等于前面那段時間。這樣才是一個方波,如果兩個時間不相同,那就相當(dāng)于一個脈沖波了。流程圖如圖14所示:</p><p><b> 圖14.方
59、波流程圖</b></p><p> 方波發(fā)生子程序如下:</p><p> BX3:MOV R0,#0FEH;設(shè)置端口地址</p><p> POSI:MOV A,#00H ;給A賦值0x00</p><p> MOVX @R0,A ;寫入</p><p> L
60、CALL DELAY;延時</p><p> JB P1.3,INTIR ;如果k3鍵已經(jīng)斷開,則返回</p><p> NEGA:MOV A,#0FFH;給A賦值0xFF</p><p> MOVX @R0,A ;寫入</p><p> LCALL DELAY;延時</p><p
61、> JB P1.3,INTIR ;如果k3鍵已經(jīng)斷開,則返回</p><p> SJMP POSI ;跳轉(zhuǎn)至POSI,繼續(xù)下一個波形的輸出</p><p> LP: LJMP INTIR ;返回</p><p><b> 正弦波流程</b></p><p> 正弦波的實(shí)現(xiàn)需要查表
62、,每查一次表,輸出一個數(shù)值,之后查下一個數(shù)值繼續(xù)輸出,當(dāng)一個波形的256個數(shù)值全部輸出之后,從頭開始繼續(xù)輸出。流程圖如圖15所示:</p><p> 圖15.正弦波流程圖</p><p> 正弦波發(fā)生子程序如下:</p><p> BX4: MOV R0,#0FEH;設(shè)置端口地址</p><p> MOV R1,#00H&
63、lt;/p><p> XX: MOV A,R1</p><p> LCALL HANSHU ;調(diào)用查表函數(shù)</p><p> MOVX @R0,A ;寫入</p><p> JB P1.4,LP ;如果k4鍵已經(jīng)斷開,則返回</p><p><b> INC R1&
64、lt;/b></p><p> SJMP XX ;繼續(xù)查表</p><p> LJMP INTIR ;返回</p><p> HANSHU:MOV DPTR,#TAB1</p><p> MOVC A,@A+DPTR</p><p><b> RET</b>&l
65、t;/p><p> 利用中斷,當(dāng)5個開關(guān)中有任意一個閉合時,跳轉(zhuǎn)至中斷程序,在中斷程序中判斷是哪一個按鍵閉合,跳轉(zhuǎn)至相應(yīng)的程序,執(zhí)行輸出波形的操作,每輸出一個點(diǎn)之后,判斷按鍵是否斷開,如果依舊閉合,則繼續(xù)輸出,如果已經(jīng)斷開,則結(jié)束中斷程序。鋸齒波的實(shí)現(xiàn)過程是首先定義一個初值然后進(jìn)行加法操作,然后加到某個數(shù)之后就再重新設(shè)置為初值,再重復(fù)執(zhí)行剛剛的操作,如此循環(huán)下去。梯形波的實(shí)現(xiàn)是設(shè)置一個初值,然后進(jìn)行加一,當(dāng)加到某個
66、數(shù)時延時,之后減一,減到初值時在返回到之前的操作,繼續(xù)加一、延時、減一。三角波的實(shí)現(xiàn)是設(shè)置一個初值,當(dāng)加到某個值的時候,執(zhí)行減一操作,減到初值時,再加一。方波的實(shí)現(xiàn)只需開始的時候設(shè)置一個初值然后直接輸出這個值就行了,輸出一段時間后,然后再重新置一個數(shù)據(jù),然后再輸出這個數(shù)據(jù)一段時間,但是此時的時間一定要等于前面那段時間。正弦波的實(shí)現(xiàn)需要查表,每查一次表,輸出一個數(shù)值,之后查下一個數(shù)值繼續(xù)輸出,當(dāng)一個波形的256個數(shù)值全部輸出之后,從頭開始
67、繼續(xù)輸出。</p><p> 六、調(diào)試過程和調(diào)試方法</p><p> 由圖9所示的硬件仿真電路圖可以得到以下各類型波的波形圖。</p><p><b> ?。?)鋸齒波</b></p><p> 當(dāng)按下K0鍵后輸出的鋸齒波波形如圖16所示:</p><p> 圖16.鋸齒波仿真波形<
68、;/p><p><b> ?。?)梯形波</b></p><p> 當(dāng)按下K1鍵后輸出的梯形波波形如圖17所示:</p><p> 圖17.梯形波仿真波形</p><p><b> ?。?)三角波</b></p><p> 當(dāng)按下K2鍵后輸出的三角波波形如圖18所示::&l
69、t;/p><p> 圖18.三角波仿真波形</p><p><b> ?。?)方波</b></p><p> 當(dāng)按下K3鍵后輸出的方波波形如圖19所示:</p><p> 圖19.方波仿真波形</p><p><b> (5)正弦波</b></p><
70、p> 當(dāng)按下K4鍵后輸出的正弦波波形如圖20所示:</p><p> 圖20.正弦波仿真波形</p><p> 由圖9所示的硬件仿真電路圖可以得到以下各類型波的波形圖。當(dāng)按下K0鍵后輸出的鋸齒波波形, 當(dāng)按下K1鍵后輸出的梯形波波形, 當(dāng)按下K2鍵后輸出的三角波波形, 當(dāng)按下K3鍵后輸出的方波波形, 當(dāng)按下K4鍵后輸出的正弦波波形。</p><p>&l
71、t;b> 七、課程設(shè)計(jì)總結(jié)</b></p><p> 單片機(jī)課程設(shè)計(jì)是學(xué)習(xí)單片機(jī)理論的重要實(shí)踐環(huán)節(jié)。在單片機(jī)實(shí)驗(yàn)課程基礎(chǔ)上,通過本課程設(shè)計(jì)的學(xué)習(xí),使我們增進(jìn)了對單片機(jī)的感性認(rèn)識,加深對單片機(jī)理論方面的理解;使我們掌握單片機(jī)的內(nèi)部功能模塊的應(yīng)用,如定時器/計(jì)數(shù)器、中斷、片內(nèi)外存儲器、I/O接口、串行口等。掌握單片機(jī)接口功能和擴(kuò)展應(yīng)用,掌握一些特殊器件及常用器件的使用方法,學(xué)習(xí)編制綜合程序;使我
72、們了解和掌握單片機(jī)應(yīng)用系統(tǒng)的軟硬件設(shè)計(jì)過程、方法及實(shí)現(xiàn),強(qiáng)化單片機(jī)應(yīng)用電路的設(shè)計(jì)與分析能力以及調(diào)試過程。</p><p> 此次課程設(shè)計(jì)充分發(fā)揮了我們的主觀能動性,激發(fā)我們的學(xué)習(xí)興趣,培養(yǎng)了我們主動利用單片機(jī)解決工程實(shí)際問題的意識。培養(yǎng)我們的工程實(shí)踐能力、實(shí)際動手操作能力和自我學(xué)習(xí)能力。讓我們不但能夠?qū)⒄n堂上學(xué)到的理論知識與實(shí)際應(yīng)用結(jié)合起來,而且能夠?qū)﹄娮与娐?、電子元器件等方面的知識進(jìn)一步加深認(rèn)識,同時在軟件編
73、程、調(diào)試、相關(guān)儀器設(shè)備和相關(guān)軟件的使用技能等方面得到較全面的鍛煉和提高。使我們完成從實(shí)際項(xiàng)目立題、調(diào)研、方案論證、方案實(shí)驗(yàn)、系統(tǒng)調(diào)試、編寫使用說明書等科研全過程的基本訓(xùn)練,為今后在相關(guān)領(lǐng)域中從事與單片機(jī)有關(guān)的設(shè)計(jì)、開發(fā)、應(yīng)用等工作打下良好的基礎(chǔ),提高我們在單片機(jī)應(yīng)用方面的實(shí)踐技能和科學(xué)作風(fēng),培養(yǎng)我們綜合應(yīng)用理論知識解決問題的能力。</p><p> 這次課程設(shè)計(jì)使我懂得理論知識的重要性,沒有理論的指導(dǎo)一切實(shí)際行
74、動都是盲目的,且實(shí)際操作是我們得到的理論知識得到驗(yàn)證,更能增加對理論知識的理解。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 李念強(qiáng),王玉泰.單片機(jī)原理及應(yīng)用 [M] .北京:機(jī)械工業(yè)出版社,2007:302</p><p> [2] 李廣弟,朱月秀.單片機(jī)基礎(chǔ)(修訂本)[M] .北京:北京航空航天大學(xué)出版社
75、,2011:260 </p><p> [3] 翠華,蔡炎光.單片機(jī)實(shí)用技術(shù) [M] .北京:清華大學(xué)出版社,2004:160</p><p> [4] 祈偉,楊亭.單片機(jī)C51程序設(shè)計(jì)教程與實(shí)驗(yàn) [M] .北京:北京航空航天大學(xué)出版社,2006:255</p><p> [5] 陸彬.21天學(xué)通51單片機(jī)開發(fā) [M] .北京:電子工業(yè)出版社,2011:
76、410</p><p> [6] 張鑫.單片機(jī)原理及應(yīng)用 [M] .北京:電子工業(yè)出版社,2010 :372</p><p> [7] 胡學(xué)海.單片機(jī)原理及系統(tǒng)設(shè)計(jì)實(shí)用教程 [M] .北京:化學(xué)工業(yè)出版社,2012:303</p><p> [8] 楊打生,宋偉.單片機(jī)C51技術(shù)應(yīng)用 [M] .北京:北京理工大學(xué)出版社,2011:266</p>
77、;<p> [9] 肖金球.增強(qiáng)型51單片機(jī)與仿真技術(shù) [M] .北京:清華大學(xué)出版社,2011:406</p><p> [10] 王蘭軍.單片機(jī)與可編程控制器 [M] .濟(jì)南:山東科學(xué)技術(shù)出版社,2005:188</p><p><b> 附錄</b></p><p><b> 程序清單如下:</b
78、></p><p><b> ORG 0000H</b></p><p><b> LJMP MAIN</b></p><p> ORG 0003H;外部中斷0</p><p> LJMP INT00</p><p><b> ORG 0040
79、H</b></p><p> MAIN: MOV SP,60H ;更改堆棧指針,避免堆棧與工作寄存器區(qū)發(fā)生沖突</p><p> SETB IT0 ;外部中斷請求0為下降沿觸發(fā)方式</p><p> SETB EA ;中斷允許總開關(guān)打開</p><p> SETB EX0 ;允
80、許外部中斷0中斷</p><p> INT00: CLR EA;關(guān)中斷</p><p> PUSH PSW ;現(xiàn)場保護(hù)</p><p><b> PUSH Acc</b></p><p> SETB EA;開中斷</p><p> JNB P1.0,BX0
81、 ;如果K0鍵閉合,則跳轉(zhuǎn)至BX0輸出鋸齒波</p><p> JNB P1.1,BX1 ;如果K1鍵閉合,則跳轉(zhuǎn)至BX1輸出梯形波</p><p> JNB P1.2,BX2 ;如果K2鍵閉合,則跳轉(zhuǎn)至BX2輸出三角波</p><p> JNB P1.3,BX3 ;如果K3鍵閉合,則跳轉(zhuǎn)至BX3輸出方波</p><p>
82、 JNB P1.4,BX4 ;如果K4鍵閉合,則跳轉(zhuǎn)至BX4輸出正弦波</p><p> INTIR: CLR EA;關(guān)中斷</p><p> POP Acc;現(xiàn)場恢復(fù)</p><p><b> POP PSW</b></p><p> SETB EA;開中斷</p><
83、p><b> RETI</b></p><p> BX0:MOV R0,#0FEH ;設(shè)置端口地址</p><p> MOV A,#00H</p><p> LOOP:MOVX @R0,A ;寫入</p><p> JB P1.0,INTIR ;如果k0鍵已經(jīng)斷開,則返回&l
84、t;/p><p> INC A ;A加一</p><p> SJMP LOOP ;循環(huán)</p><p> LJMP INTIR ;返回</p><p> BX1:MOV R0,#0FEH ;設(shè)置端口地址</p><p> MOV A,#00H</p&g
85、t;<p> UP:MOVX @R0,A ;寫入</p><p> INC A ;A加一</p><p> JNZ UP ;循環(huán)</p><p> LCALL DELAY</p><p> DOWN: DEC A</p><p> MOVX @
86、R0,A ;寫入</p><p> JNZ DOWN ;循環(huán)</p><p> LCALL DELAY</p><p> LJMP INTIR ;返回</p><p> DELAY:MOV R7,#100 ;延時子程序 </p><p> DELAY1: MOV
87、R6,#10</p><p><b> NOP</b></p><p> DELAY2: DJNZ R6,DELAY2</p><p> DJNZ R7,DELAY1</p><p><b> RET</b></p><p> BX2:MOV R0,#0FEH
88、;設(shè)置端口地址</p><p> MOV A,#00H</p><p> UP2:MOVX @R0,A ;寫入</p><p> JB P1.2,INTIR;如果k2鍵已經(jīng)斷開,則返回</p><p> INC A;A加一</p><p> JNZ UP2;循環(huán)</p&
89、gt;<p> DOWN2:DEC A ;A減一</p><p> MOVX @R0,A ;寫入</p><p> JB P1.2,INTIR;如果k2鍵已經(jīng)斷開,則返回</p><p> JNZ DOWN2 ;循環(huán)</p><p> SJMP UP2;如果減到0,則跳轉(zhuǎn)至U
90、P2,繼續(xù)加一操作</p><p> LJMP INTIR ;返回</p><p> BX3:MOV R0,#0FEH;設(shè)置端口地址</p><p> POSI:MOV A,#00H ;給A賦值0x00</p><p> MOVX @R0,A ;寫入</p><p> L
91、CALL DELAY;延時</p><p> JB P1.3,INTIR;如果k3鍵已經(jīng)斷開,則返回</p><p> NEGA:MOV A,#0FFH;給A賦值0xFF</p><p> MOVX @R0,A ;寫入</p><p> LCALL DELAY ;延時</p><p&
92、gt; JB P1.3,INTIR;如果k3鍵已經(jīng)斷開,則返回</p><p> SJMP POSI;跳轉(zhuǎn)至POSI,繼續(xù)下一個波形的輸出</p><p> LP: LJMP INTIR ;返回</p><p> BX4:MOV R0,#0FEH;設(shè)置端口地址</p><p> MOV R1,#00H
93、</p><p> XX:MOV A,R1</p><p> LCALL HANSHU;調(diào)用查表函數(shù)</p><p> MOVX @R0,A;寫入</p><p> JB P1.4,LP ;如果k4鍵已經(jīng)斷開,則返回</p><p><b> INC R1</b>
94、;</p><p> SJMP XX ;繼續(xù)查表</p><p> LJMP INTIR;返回</p><p> HANSHU:MOV DPTR,#TAB1</p><p> MOVC A,@A+DPTR</p><p><b> RET</b></p>
95、<p><b> TAB1:</b></p><p> DB 080h,083h,086h,089h,08ch,090h,093h,096h,099h,09ch,09fh,0a2h,0a5h,0a8h,0abh,0aeh</p><p> DB 0b1h,0b3h,0b6h,0b9h,0bch,0bfh,0c1h,0c4h,0c7h,0c9h,0cch
96、,0ceh,0d1h,0d3h,0d5h,0d8h</p><p> DB 0dah,0dch,0deh,0e0h,0e2h,0e4h,0e6h,0e8h,0eah,0ebh,0edh,0efh,0f0h,0f1h,0f3h,0f4h</p><p> DB 0f5h,0f6h,0f8h,0f9h,0fah,0fah,0fbh,0fch,0fdh,0fdh,0feh,0feh,0feh
97、,0ffh,0ffh,0ffh</p><p> DB 0ffh,0ffh,0ffh,0ffh,0feh,0feh,0feh,0fdh,0fdh,0fch,0fbh,0fah,0fah,0f9h,0f8h,0f6h</p><p> DB 0f5h,0f4h,0f3h,0f1h,0f0h,0efh,0edh,0ebh,0eah,0e8h,0e6h,0e4h,0e2h,0e0h,0deh
98、,0dch</p><p> DB 0dah,0d8h,0d5h,0d3h,0d1h,0ceh,0cch,0c9h,0c7h,0c4h,0c1h,0bfh,0bch,0b9h,0b6h,0b3h</p><p> DB 0b1h,0aeh,0abh,0a8h,0a5h,0a2h,09fh,09ch,099h,096h,093h,090h,08ch,089h,086h,083h</
99、p><p> DB 080h,07dh,07ah,077h,074h,070h,06dh,06ah,067h,064h,061h,05eh,05bh,058h,055h,052h</p><p> DB 04fh,04dh,04ah,047h,044h,041h,03fh,03ch,039h,037h,034h,032h,02fh,02dh,02bh,028h</p><
100、;p> DB 026h,024h,022h,020h,01eh,01ch,01ah,018h,016h,015h,013h,011h,010h,00fh,00dh,00ch</p><p> DB 00bh,00ah,008h,007h,006h,006h,005h,004h,003h,003h,002h,002h,002h,001h,001h,000h</p><p> DB
101、 000h,000h,001h,001h,002h,002h,002h,003h,003h,004h,005h,006h,006h,007h,008h,00ah</p><p> DB 00bh,00ch,00dh,00fh,010h,011h,013h,015h,016h,018h,01ah,01ch,01eh,020h,022h,024h</p><p> DB 026h,028h
102、,02bh,02dh,02fh,032h,034h,037h,039h,03ch,03fh,041h,044h,047h,04ah,04dh</p><p> DB 04fh,052h,055h,058h,05bh,05eh,061h,064h,067h,06ah,06dh,070h,074h,077h,07ah,07dh</p><p><b> END</b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)波形發(fā)生器課程設(shè)計(jì)報告
- 單片機(jī)課程設(shè)計(jì)(波形發(fā)生器)
- 單片機(jī)課程設(shè)計(jì)---波形發(fā)生器
- 單片機(jī)課程設(shè)計(jì)—波形發(fā)生器
- 課程設(shè)計(jì)--單片機(jī)波形發(fā)生器
- 單片機(jī)課程設(shè)計(jì)-波形發(fā)生器
- 單片機(jī)波形發(fā)生器課程設(shè)計(jì)報告 (2)
- 單片機(jī)課程設(shè)計(jì)報告---基于單片機(jī)的波形發(fā)生器
- 單片機(jī)課程設(shè)計(jì)--簡易波形發(fā)生器
- 單片機(jī)課程設(shè)計(jì)--多波形發(fā)生器
- 單片機(jī)課程設(shè)計(jì)---函數(shù)波形發(fā)生器
- 單片機(jī)實(shí)現(xiàn)波形發(fā)生器的課程設(shè)計(jì)報告
- 單片機(jī)優(yōu)質(zhì)課程設(shè)計(jì)波形發(fā)生器報告
- 單片機(jī)課程設(shè)計(jì)--波形發(fā)生器的設(shè)計(jì)
- 波形發(fā)生器的設(shè)計(jì)單片機(jī)課程設(shè)計(jì)
- 基于單片機(jī)的波形發(fā)生器課程設(shè)計(jì)
- 課程設(shè)計(jì)基于單片機(jī)之波形發(fā)生器的設(shè)計(jì)
- 課程設(shè)計(jì)基于單片機(jī)之波形發(fā)生器的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報告(信號發(fā)生器)
- 單片機(jī)課程設(shè)計(jì)報告--- 函數(shù)發(fā)生器
評論
0/150
提交評論