版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 《單片機(jī)應(yīng)用與仿真訓(xùn)練》設(shè)計(jì)報(bào)告</p><p> 多功能信號(hào)發(fā)生器設(shè)計(jì)</p><p><b> 摘要</b></p><p> 本設(shè)計(jì)采用基于AT89S52的單片機(jī)最小系統(tǒng)為核心,成功產(chǎn)生出幅值和頻率都可調(diào)的正弦波、梯形波、方波、三角波等波形。頻率范圍是0-2000Hz,幅值調(diào)節(jié)范圍-10V到+10V。本系統(tǒng)主要
2、由四大模塊組成:液晶顯示模塊、波形發(fā)生模塊及穩(wěn)幅輸出模塊,幅頻調(diào)節(jié)模塊、及外部電源模塊。各個(gè)模塊的實(shí)現(xiàn)方法如下:</p><p> 一、液晶顯示模塊:本系統(tǒng)采用應(yīng)用較廣泛的1602液晶作為顯示模塊。其顯示與控制機(jī)理是單片機(jī)通過與液晶按照一定的規(guī)定相連接,然后再程序中在對液晶進(jìn)行初始化后,就可以向其寫字符或讀字符。</p><p> 二、波形發(fā)生模塊及穩(wěn)幅輸出模塊:產(chǎn)生指定波形可以通過D
3、AC芯片來實(shí)現(xiàn),不同波形產(chǎn)生實(shí)質(zhì)上是對輸出的二進(jìn)制數(shù)字量進(jìn)行相應(yīng)改變來實(shí)現(xiàn)的。本系統(tǒng)采用的是經(jīng)典的DAC0832 8位數(shù)/模轉(zhuǎn)換器。穩(wěn)幅輸出則通過兩個(gè)LM324集成運(yùn)放來實(shí)現(xiàn)對DAC0832輸出電流信號(hào)到電壓信號(hào)的轉(zhuǎn)變。</p><p> 三、幅頻調(diào)節(jié)模塊:通過按鍵與兩個(gè)門電路74ls00和74ls04的組合來實(shí)現(xiàn)通過產(chǎn)生中斷來實(shí)現(xiàn)對波形的選擇和頻率的調(diào)節(jié)。而幅值調(diào)節(jié)通過一個(gè)10K的電位器來實(shí)現(xiàn)參考電壓Vre
4、f的改變來改變幅值。</p><p> 四、外部電源模塊:變壓器將220V交流電降成16V交流后在通過整流橋</p><p> 經(jīng)過7812和7912濾波后即產(chǎn)生正負(fù)12V直流電用作LM324的電源。</p><p> 本系統(tǒng)軟件主要通過C語言開發(fā),硬件電路設(shè)計(jì)具有典型性。同時(shí),本系統(tǒng)中任何一部分電路模塊均可移植于其它實(shí)用開發(fā)系統(tǒng)的設(shè)計(jì)中,電路設(shè)計(jì)實(shí)用性很強(qiáng)。
5、</p><p><b> 目錄</b></p><p><b> 1、概述4</b></p><p> 1.1 信號(hào)發(fā)生器現(xiàn)狀4</p><p> 1.2 單片機(jī)在波形發(fā)生器中的應(yīng)用4</p><p> 2、系統(tǒng)總體方案及硬件設(shè)計(jì)5</p&g
6、t;<p> 2.1 系統(tǒng)分析5</p><p> 2.2 總體方案設(shè)計(jì)6</p><p> 2.2.1系統(tǒng)總體結(jié)構(gòu)框圖設(shè)計(jì)6</p><p> 2.3 總體硬件設(shè)計(jì)6</p><p> 2.4系統(tǒng)各模塊設(shè)計(jì)7</p><p> 2.4.1 資源分配7</p><
7、;p> 2.4.2顯示器接口設(shè)計(jì)7</p><p> 2.4.3 復(fù)位與時(shí)鐘電路設(shè)計(jì)8</p><p> 2.4.4 按鍵中斷電路設(shè)計(jì)10</p><p> 2.4.5 D/A轉(zhuǎn)換電路設(shè)計(jì)10</p><p> 3、軟件設(shè)計(jì)15</p><p> 3.1軟件總體設(shè)計(jì)15</p>
8、;<p> 3.2 軟件功能設(shè)計(jì)16</p><p> 3.2.1系統(tǒng)初始化程序設(shè)計(jì)16</p><p> 3.2.2 按鍵檢測及中斷處理程序16</p><p> 3.2.3 液晶顯示程序17</p><p> 3.2.4 正弦波發(fā)生程序設(shè)計(jì)19</p><p> 3.2.5方波產(chǎn)
9、生程序20</p><p> 3.2.6三角波產(chǎn)生程序20</p><p> 3.2.7梯形波產(chǎn)生程序21</p><p> 4、實(shí)驗(yàn)仿真22</p><p> 4.1 protues軟件仿真步驟22</p><p> 4.2 仿真結(jié)果23</p><p> 4.3仿
10、真結(jié)論25</p><p> 5、課程設(shè)計(jì)體會(huì)26</p><p><b> 參考文獻(xiàn)27</b></p><p> 附1:源程序代碼28</p><p> 附2:系統(tǒng)原理圖35</p><p><b> 概述</b></p><p&
11、gt; 1.1 信號(hào)發(fā)生器現(xiàn)狀</p><p> . 目前,市場上的信號(hào)發(fā)生器多種多樣,一般按頻帶分為超高頻、高頻、低頻、超低頻、超高頻信號(hào)發(fā)生器。其中高頻、低頻和超低頻信號(hào)發(fā)生器,大多使用文氏橋振蕩電路,即RC振蕩電路,通過改變電容和電阻值,改變頻率。用以上原理設(shè)計(jì)的信號(hào)發(fā)生器,其輸出波形一般只有兩種,即正弦波和脈沖波,其零點(diǎn)不可調(diào),而且價(jià)格也比較貴,一般在幾百元左右。但是在科學(xué)研究和生產(chǎn)實(shí)踐中,如工業(yè)過
12、程控制,生物醫(yī)學(xué),地震模擬震動(dòng)等領(lǐng)域往往需要低頻信號(hào)源,而由硬件搭建的波形發(fā)生器效果往往達(dá)不到好的效果,而且低頻信號(hào)源所需要的RC很大,大電阻,大電容在制作上有困難,參數(shù)的精度也難以保證,而且體積大,漏電,體積大是該類波形發(fā)生器的顯著缺點(diǎn)。</p><p> 1.2 單片機(jī)在波形發(fā)生器中的應(yīng)用</p><p> 隨著電子技術(shù)的飛快發(fā)展,單片機(jī)的應(yīng)用不斷的深入,基于單片機(jī)的智能儀器的設(shè)
13、計(jì)技術(shù)不斷成熟。單片機(jī)構(gòu)成的儀器具有高可靠性,高性價(jià)比,單片機(jī)技術(shù)在智能儀表和自動(dòng)化等諸多領(lǐng)域有了極為廣泛的應(yīng)用,并應(yīng)用到各種家庭電器,單片機(jī)技術(shù)的廣泛應(yīng)用推動(dòng)了社會(huì)的進(jìn)步。</p><p> 利用單片機(jī)采用程序設(shè)計(jì)方法來產(chǎn)生波形,線路相對簡單,結(jié)構(gòu)緊湊,價(jià)格低廉,頻率穩(wěn)定度高,抗干擾能力強(qiáng)等優(yōu)點(diǎn),而且還能對波形進(jìn)行細(xì)微的調(diào)整,改良波形,易于通過程序控制,只要對電路稍加修改,調(diào)整程序,就能實(shí)現(xiàn)功能的升級(jí)。<
14、;/p><p> 系統(tǒng)總體方案及硬件設(shè)計(jì)</p><p><b> 2.1 系統(tǒng)分析</b></p><p> 基于單片機(jī)的信號(hào)發(fā)生系統(tǒng)是一個(gè)實(shí)際應(yīng)用系統(tǒng),可為相關(guān)實(shí)驗(yàn)及實(shí)際應(yīng)用提供支持。本論文包括硬件系統(tǒng)的詳細(xì)設(shè)計(jì)及C語言在基本控制中的應(yīng)用。此系統(tǒng)具有的功能如下:</p><p><b> 硬件部分<
15、;/b></p><p> ?。?)1602液晶顯示電路;</p><p> (2)鍵盤和與非門中斷產(chǎn)生電路;</p><p> ?。?)時(shí)鐘電路與復(fù)位電路;</p><p> ?。?)具有8位精度的D/A轉(zhuǎn)換和波形產(chǎn)生電路;</p><p> (5)正負(fù)12V直流電源轉(zhuǎn)換電路;</p><
16、;p><b> 軟件部分</b></p><p> ?。?)系統(tǒng)復(fù)位初始化;</p><p> ?。?)鍵盤中斷與處理;</p><p> ?。?)中斷0服務(wù)程序;</p><p> ?。?)定時(shí)器0中斷服務(wù)程序;</p><p> ?。?)正弦波發(fā)生程序;</p><
17、p> ?。?)三角波發(fā)生程序;</p><p> ?。?)方波發(fā)生程序;</p><p> ?。?)梯形波發(fā)生程序。</p><p> 2.2 總體方案設(shè)計(jì)</p><p> 2.2.1系統(tǒng)總體結(jié)構(gòu)框圖設(shè)計(jì)</p><p> 圖2-1 系統(tǒng)主結(jié)構(gòu)框圖</p><p> 2.3 總
18、體硬件設(shè)計(jì)</p><p><b> (1)程序存貯器</b></p><p> AT89S52內(nèi)部自帶8K的ROM,512B的RAM,所以不需要對其擴(kuò)展存儲(chǔ)器。</p><p> (2)按鍵及中斷接口</p><p> 系統(tǒng)采用按鍵通過門電路來產(chǎn)生中斷,并在中斷服務(wù)程序里來掃描按鍵來實(shí)現(xiàn)波形切換和頻率的調(diào)節(jié)。&
19、lt;/p><p><b> (3)液晶顯示</b></p><p> 本設(shè)計(jì)實(shí)現(xiàn)了89S52的I/O口液晶顯示字符的控制來顯示當(dāng)前波形種類和波形頻率。</p><p><b> (4)D/A轉(zhuǎn)換</b></p><p> 本設(shè)計(jì)D/A轉(zhuǎn)換部分采用DAC0808芯片,通過對單片機(jī)輸出的二進(jìn)制數(shù)字
20、量進(jìn)行從數(shù)字量到模擬量的變換來實(shí)現(xiàn)波形的產(chǎn)生。</p><p><b> (5)信號(hào)變換部分</b></p><p> 對信號(hào)的變換部分采用四運(yùn)放集成芯片LM324,它采用14腳雙列直插塑料封裝,它的內(nèi)部包含四組形式完全相同的運(yùn)算放大器。</p><p><b> (6)外部電源</b></p><
21、;p> 因LM324工作需要正負(fù)12V的直流電源,因此需要通過對變壓器輸出電壓進(jìn)行整流、濾波然后在通過7812和7912輸出所需電壓。</p><p> 2.4系統(tǒng)各模塊設(shè)計(jì)</p><p> 2.4.1 資源分配</p><p> 為了滿足功能和指標(biāo)要求,現(xiàn)分配資源如下:</p><p> 1.晶振采用12MHZ</p
22、><p> 2.IO端口分配:P0口與DAC0832的DI0-DI7數(shù)據(jù)輸入;P3口的P3.4~P3.7分別與四個(gè)按鍵相連,依次控制波形種類的選擇、波形頻率的增加、波形頻率的減小和波形輸出的暫停與恢復(fù)。中斷0即P3.2與門電路的輸入端相連。P2.0和P2.1分別與DAC0832的輸入寄存器選擇信號(hào)CS,輸入寄存器寫選通信號(hào)WR1及DAC寄存器寫選通WR2和數(shù)據(jù)傳送信號(hào)XFER相連。P1口做液晶的D0—D7的數(shù)據(jù)輸入
23、端口,P2.2~P2.4分別做1602液晶的讀寫控制端和使能端。</p><p> 2.4.2顯示器接口設(shè)計(jì) </p><p> 本系統(tǒng)采用1602液晶來顯示信號(hào)輸出的狀態(tài),液晶顯示器以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧的諸多優(yōu)點(diǎn),在各類儀表和低功耗系統(tǒng)中得到廣泛的應(yīng)用。相比較數(shù)碼管用液晶顯示具有以下優(yōu)點(diǎn):</p><p> 1.位數(shù)多,可顯示32位,3
24、2個(gè)數(shù)碼管體積則相當(dāng)龐大</p><p> 2.顯示內(nèi)容豐富,可顯示所有數(shù)字和大、小寫字母,能更好的表示信號(hào)顯示的狀態(tài),而數(shù)碼管只能顯示也一個(gè)頻率值,不能表示正在輸出的信號(hào)類別</p><p> 3.程序簡單,如果用數(shù)碼管動(dòng)態(tài)顯示,會(huì)占用很多時(shí)間來刷新顯示,而1602自動(dòng)完成此功能。節(jié)省了單片機(jī)資源。</p><p> 圖2.2 系統(tǒng)顯示電路</p>
25、;<p> 2.4.3 復(fù)位與時(shí)鐘電路設(shè)計(jì)</p><p> 2.4.3.1復(fù)位電路設(shè)計(jì)</p><p> 單片機(jī)的復(fù)位是靠外電路實(shí)現(xiàn)的,在時(shí)鐘電路工作后,只要在單片機(jī)的RST引腳上出現(xiàn)24個(gè)時(shí)鐘振蕩脈沖(2個(gè)機(jī)器周期)以上的高電平,單片機(jī)便實(shí)現(xiàn)初始化狀態(tài)復(fù)位。為了保證應(yīng)用系統(tǒng)可靠地復(fù)位,通常是RST引腳保持10ms以上的高電平。復(fù)位電路連接如圖3-2所示。此電路僅用一
26、個(gè)電容及一個(gè)電阻。系統(tǒng)上電時(shí),在RC電路充電過程中,由于電容兩端電壓不能跳變,故使RESET端電平呈高電位,系統(tǒng)復(fù)位。經(jīng)過一段時(shí)間,電容充電,使RESET端呈低電位,復(fù)位結(jié)束。</p><p><b> 圖2-3 復(fù)位電路</b></p><p> 2.4.3.2 時(shí)鐘電路設(shè)計(jì) </p><p> 8XX51系列單片機(jī)工作時(shí)必須要有個(gè)時(shí)
27、鐘脈沖,有兩種方法可以向AT89S51提供時(shí)鐘脈沖:</p><p> 第一:外部時(shí)鐘方式。使用外部電路始終給AT89S51提供時(shí)鐘脈沖如右圖</p><p><b> 圖2-4 晶振電路</b></p><p> 第二:內(nèi)部時(shí)鐘方式。使用晶振利用AT89S51內(nèi)部電路產(chǎn)生時(shí)鐘脈沖如左圖。我們一般使用這種方式。AT89S51中有一個(gè)用于構(gòu)
28、成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器</p><p> 外接石英晶體及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對外接電容C1、C2雖然沒有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性。如果使用石英晶體,我們推薦使用30
29、pF+/-10pF,而如使用陶瓷諧振器建議選擇40pF+/-10PF。</p><p> 2.4.4 按鍵中斷電路設(shè)計(jì)</p><p> 圖2-5按鍵中斷實(shí)現(xiàn)</p><p><b> 工作原理如下:</b></p><p> 1. 當(dāng)沒有按鍵按下時(shí),INT0端口保持高電平,中斷不觸發(fā),當(dāng)有任何一個(gè)按鍵按下時(shí)通過
30、74ls00(雙輸入與非門)、74ls04(非門)的相互連接,最終實(shí)現(xiàn)INT0變成低電平。從而觸發(fā)中斷,進(jìn)而執(zhí)行中斷服務(wù)程序。(注:本來門電路部分通過一個(gè)74ls22 這個(gè)4輸入的與非門就可以實(shí)現(xiàn),但因?yàn)槲以诟浇脑骷痰隂]有買到,只好用74ls00和74ls04代替使電路略顯復(fù)雜)。</p><p> 2.進(jìn)入中斷服務(wù)程序后,系統(tǒng)執(zhí)行鍵盤掃描程序,來識(shí)別究竟是哪個(gè)按鍵按下。然后根據(jù)識(shí)別的按鍵來進(jìn)入相關(guān)的處理
31、函數(shù),例如按下波形選擇鍵觸發(fā)中斷后,在中斷服務(wù)程序中,系統(tǒng)將波形符號(hào)加1,從而改變波形。</p><p> 2.4.5 D/A轉(zhuǎn)換電路設(shè)計(jì)</p><p> 2.4.5.1 DAC0832基本介紹</p><p> DAC0832是雙列直插式8位D/A轉(zhuǎn)換器。能完成數(shù)字量輸入到模擬量(電流)輸出的轉(zhuǎn)換。其主要參數(shù)如下:</p><p>
32、;<b> 1.分辨率為8位</b></p><p> 2.轉(zhuǎn)換時(shí)間為1μs</p><p> 3.滿量程誤差為±1LSB</p><p> 4.參考電壓為(+10~-10)V</p><p> 5.供電電源為(+5~+15)V</p><p> 6.邏輯電平輸入與TTL兼容
33、</p><p> 2.4.5.2 DAC0832引腳圖</p><p> 圖2-6 DAC0832引腳圖</p><p> (1)DI7~DI0 :8位的數(shù)據(jù)輸入端,DI7為最高位。</p><p> (2)IOUT1 :模擬電流輸出端1,當(dāng)DAC寄存器中數(shù)據(jù)全為1時(shí),輸出電流最大,當(dāng) DAC寄存器中數(shù)據(jù)全為0時(shí),輸出電流為0。&l
34、t;/p><p> (3)IOUT2 :模擬電流輸出端2, IOUT2與IOUT1的和為一個(gè)常數(shù),即IOUT1+I(xiàn)OUT2=常數(shù)。</p><p> (4)RFB :反饋電阻引出端,DAC0832內(nèi)部已經(jīng)有反饋電阻,所以 RFB端可以直接接到外部運(yùn)算放大器的輸出端,這樣相當(dāng)于將一個(gè)反饋電阻接在運(yùn)算放大器的輸出端和輸入端之間。</p><p> (5)VREF :參
35、考電壓輸入端,此端可接一個(gè)正電壓,也可接一個(gè)負(fù)電壓,它決定0至255的數(shù)字量轉(zhuǎn)化出來的模擬量電壓值的幅度,VREF范圍為(+10~-10)V。VREF端與D/A內(nèi)部T形電阻網(wǎng)絡(luò)相連。</p><p> (6)Vcc :芯片供電電壓,范圍為(+5~ 15)V。</p><p> (7)AGND :模擬量地,即模擬電路接地端。</p><p> (8)DGND :
36、數(shù)字量地。</p><p> 2.4.5.3 內(nèi)部結(jié)構(gòu)框圖</p><p> 圖2-7 DAC0832內(nèi)部結(jié)構(gòu)圖</p><p> 內(nèi)部結(jié)構(gòu)框圖分析:在DAC0832中有兩級(jí)鎖存器,第一級(jí)鎖存器稱為輸入寄存器,它的允許鎖存信號(hào)為ILE,第二級(jí)鎖存器稱為DAC寄存器,它的鎖存信號(hào)也稱為通道控制信號(hào) XFER。當(dāng)ILE為高電平,片選信號(hào) /CS 和寫信號(hào) /WR1
37、為低電平時(shí),輸入寄存器控制信號(hào)為1,這種情況下,輸入寄存器的輸出隨輸入而變化。此后,當(dāng) /WR1由低電平變高時(shí),控制信號(hào)成為低電平,此時(shí),數(shù)據(jù)被鎖存到輸入寄存器中,這樣輸入寄存器的輸出端不再隨外部數(shù)據(jù)DB的變化而變化。對第二級(jí)鎖存來說,傳送控制信號(hào) /XFER 和寫信號(hào) /WR2同時(shí)為低電平時(shí),二級(jí)鎖存控制信號(hào)為高電平,8位的DAC寄存器的輸出隨輸入而變化,此后,當(dāng) /WR2由低電平變高時(shí),控制信號(hào)變?yōu)榈碗娖剑谑菍⑤斎爰拇嫫鞯男畔㈡i存
38、到DAC寄存器中。</p><p> 2.4.5.4 DAC0832的工作方式</p><p> 1.單緩沖工作方式 </p><p> 此方式是使兩個(gè)寄存器中任一個(gè)處于直通狀態(tài),另一個(gè)工作于受控鎖存器狀態(tài)或兩個(gè)寄存器同步受控。一般的做法是將WR1和XFER接數(shù)字地,使DAC 寄存器處于直通狀態(tài)。另外把ILE接高電平,CS接端口地址譯碼信號(hào),WR1接CPU系統(tǒng)
39、總線的IOW信號(hào),這樣便可通過執(zhí)行一條輸出指令,選中該端口,使 CS和 WR1有效,從而啟動(dòng)D/A轉(zhuǎn)換。</p><p> 圖2-8單緩沖工作單極性方式電路連接</p><p> 雙極性模擬輸出電壓 :</p><p> 圖2-9單緩沖工作雙極性方式電路連接</p><p> ?。?)雙緩沖工作方式 </p><p&
40、gt; 雙緩沖方式的一大用途是數(shù)據(jù)接收和啟動(dòng)轉(zhuǎn)換可以異步進(jìn)行,即在對某數(shù)據(jù)轉(zhuǎn)換的同時(shí),能進(jìn)行下一數(shù)據(jù)的接收,以提高轉(zhuǎn)換速率。這時(shí),可將ILE接高電平,WR1和WR2接CPU的IOW,CS和XFER分別接兩個(gè)不同的I/O地址譯碼信號(hào)。</p><p><b> ?。?)直通工作方式</b></p><p> 當(dāng)DAC0832芯片的片選信號(hào)、寫信號(hào)、及傳送控制信號(hào)的引
41、腳全部接地,允許輸入鎖存信號(hào)ILE引腳接+5V時(shí),DAC0832芯片就處于直通工作方式,數(shù)字量一旦輸入,就直接進(jìn)入DAC寄存器,進(jìn)行D/A轉(zhuǎn)換。</p><p> 2.4.5.5本系統(tǒng)采用的AD轉(zhuǎn)換原理圖 </p><p> DAC0832主要由8位輸入寄存器、8位DAC寄存器、8位D/A轉(zhuǎn)換器以及輸入控制電路四部分組成。8 位輸入寄存器用于存放主機(jī)送來的數(shù)字量,使輸入數(shù)字量得到緩沖和
42、鎖存,由加以控制;8位DAC寄存器用于存放待轉(zhuǎn)換的數(shù)字量,由加以控制;8位D/A轉(zhuǎn)換器輸出與數(shù)字量成正比的模擬電流;由與門、非與門組成的輸入控制電路來控制2個(gè)寄存器的選通或鎖存狀態(tài)。</p><p> DAC0832與反相比例放大器相連,實(shí)現(xiàn)電流到電壓的轉(zhuǎn)換,因此輸出模擬信號(hào)的極性與參考電壓的極性相反,數(shù)字量與模擬量的轉(zhuǎn)換關(guān)系為</p><p> Vout1=-Vref×(數(shù)
43、字碼/256)</p><p> 圖2-10 D/A轉(zhuǎn)換器雙極性輸出電路</p><p> 圖10中,運(yùn)算放大器U3B的作用是把運(yùn)算放大器U3A的單向輸出電壓轉(zhuǎn)換成雙向輸出電壓。D/A轉(zhuǎn)換器的總輸出電壓為:</p><p> VOUT2= -[(R3/R2) VOUT1+(R3/R1)] Vref</p><p> 因?yàn)镽2=R3=2
44、R R1=R,則 VOUT2= -(2VOUT1+Vref)</p><p> 這樣VOUT2的變化范圍就是從- VREF到+VREF之間變化。從而實(shí)現(xiàn)電壓的雙極性輸出,并且可以通過改變Vref的值變化來實(shí)現(xiàn)幅值的改變</p><p><b> 軟件設(shè)計(jì)</b></p><p><b> 3.1軟件總體設(shè)計(jì)</b>
45、;</p><p> 應(yīng)用系統(tǒng)中的應(yīng)用軟件是根據(jù)系統(tǒng)功能要求而設(shè)計(jì)的,能可靠地實(shí)現(xiàn)系統(tǒng)的各種功能。一個(gè)優(yōu)秀的應(yīng)用系統(tǒng)的應(yīng)具有下列特點(diǎn):</p><p> (1)根據(jù)軟件功能要求,將系統(tǒng)軟件分成若干個(gè)獨(dú)立的部分。設(shè)計(jì)出軟件的總體結(jié)構(gòu),使其結(jié)構(gòu)清晰、流程合理。</p><p> (2)要樹立結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格,各功能程序模塊化、子程序化。既便于調(diào)試、鏈接,又便于移
46、植、修改。</p><p> (3)建立正確的數(shù)學(xué)模型。即根據(jù)功能要求,描述各個(gè)輸入和輸出變量之間的數(shù)學(xué)關(guān)系,它是關(guān)系到系統(tǒng)好壞的重要因素。</p><p> (4)為提高軟件設(shè)計(jì)的總體效率,以簡明、直觀法對任務(wù)進(jìn)行描述,在編寫應(yīng)用軟件之前,應(yīng)繪制出程序流程圖。</p><p> (5)要合理分配系統(tǒng)資源,包括ROM、RAM、定時(shí)數(shù)器、中斷資源等。</p
47、><p> (6)注意在程序的有關(guān)位置處寫上功能注釋,提高程序的可讀性。</p><p> (7)加強(qiáng)軟件抗干擾設(shè)計(jì),它是提高系統(tǒng)應(yīng)用可靠性的有利措施。</p><p> 本系統(tǒng)的軟件包括以下幾個(gè)程序模塊:</p><p> ?。?)系統(tǒng)復(fù)位初始化;</p><p> ?。?)鍵盤中斷與處理;</p>
48、<p> ?。?)中斷0服務(wù)程序;</p><p> ?。?)定時(shí)器0中斷服務(wù)程序;</p><p> ?。?)正弦波發(fā)生程序;</p><p> (6)三角波發(fā)生程序;</p><p> (7)方波發(fā)生程序;</p><p> ?。?)梯形波發(fā)生程序。</p><p> 3.2
49、 軟件功能設(shè)計(jì)</p><p> 3.2.1系統(tǒng)初始化程序設(shè)計(jì)</p><p> 初始化程序完成以下工作:初始化1602液晶使其指針指向第一行第一格;初始化DAC0832使其工作在單緩沖方式,其中使DAC寄存器處于直通狀態(tài),而使8位輸入寄存器處于關(guān)斷狀態(tài);初始化外部中斷0使其為下降沿觸發(fā),設(shè)置定時(shí)器0為16位工作方式,開定時(shí)器和外部中斷,開總中斷。</p><p&g
50、t;<b> 初始化程序如下:</b></p><p> uchar i=0;</p><p> DA_S2=0; //使DAC寄存器處于直通狀態(tài)</p><p><b> DAdata=0;</b></p><p> DA_S1=1; //關(guān)閉8位輸入寄存器</p>
51、;<p> waveform=0;</p><p> rw=0; //1602液晶初始化一定要設(shè)置為零,表示寫數(shù)據(jù)</p><p> write_com(0x38); //使液晶顯示點(diǎn)陣,為下面做準(zhǔn)備</p><p> write_com(0x0c); //初始設(shè)置</p><p> write_com(0x0
52、6); //初始設(shè)置</p><p> write_com(0x01); //清零</p><p> write_com(0x80); //使指針指向第一行第一格</p><p> TMOD=0x01; //設(shè)置定時(shí)器0為16位工作方式</p><p> IT0=1; //設(shè)置外部中斷0為下降沿觸發(fā)</p>
53、;<p> ET0=1; //開定時(shí)器中斷</p><p> EX0=1; //開外部中斷</p><p> EA=1; //開總中斷</p><p> 3.2.2 按鍵檢測及中斷處理程序</p><p> 單片機(jī)系統(tǒng)中,鍵盤掃描是CPU工作的一個(gè)主要內(nèi)容之一。CPU忙于各項(xiàng)工作任務(wù)時(shí),
54、如何兼顧鍵盤掃描。既保證不失時(shí)機(jī)的響應(yīng)鍵盤操作,又不過多占用CPU時(shí)間。因此,要根據(jù)應(yīng)用系統(tǒng)中的CPU的忙、閑情況,選擇好鍵盤的工作方式。</p><p> 本系統(tǒng)采用中斷工作方式,該方式相交其它方式有節(jié)省CPU資源,提高效率等優(yōu)點(diǎn)。即當(dāng)鍵盤有健按下時(shí),才執(zhí)行鍵盤掃描,然后執(zhí)行該鍵功能程序。 </p><p> 圖3.1按鍵處理結(jié)構(gòu)圖</p><p> 3.2
55、.3 液晶顯示程序</p><p> 對1602液晶進(jìn)行初始化后就可以向其寫命令和字符了,本程序要用1602液晶顯示輸出信號(hào)的種類和頻率,輸出的信號(hào)共有四種:Sine Wave:正弦波、Triangle Wave:三角波、 Square Wave:方波、Trapezoidal wave:方波。</p><p><b> 顯示程序如下:</b></p>
56、<p> void write_com(uchar com)//寫命令函數(shù)</p><p><b> {</b></p><p> rs=0;//置零,表示寫指令</p><p><b> lcden=0;</b></p><p> lcd_ports=com;</p
57、><p><b> delay(5);</b></p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p><p><b> lcden=0;</b></p><p>&l
58、t;b> }</b></p><p> void write_date(uchar date)//寫字符函數(shù)</p><p><b> {</b></p><p> rs=1;//置1,表示寫數(shù)據(jù)(在指令所指的地方寫數(shù)據(jù))</p><p><b> lcden=0;</b&g
59、t;</p><p> lcd_ports=date;</p><p><b> delay(5);</b></p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p><p><b&g
60、t; lcden=0;</b></p><p><b> }</b></p><p> void disp_lcd(uchar addr,uchar *temp1)//寫字符串函數(shù)</p><p><b> {</b></p><p> uchar num;</p>
61、;<p> write_com(addr);</p><p> delay(1); //延時(shí)一會(huì)兒</p><p> for(num=0;num<16;num++)</p><p><b> {</b></p><p> write_date(temp1[num]);</p>
62、<p><b> delay(1);</b></p><p><b> }</b></p><p><b> }</b></p><p> void init_lcd()</p><p><b> {</b></p>
63、<p> rw=0; //初始化一定要設(shè)置為零,表示寫數(shù)據(jù)</p><p> write_com(0x38); //使液晶顯示點(diǎn)陣,為下面做準(zhǔn)備</p><p> write_com(0x0c); //初始設(shè)置</p><p> write_com(0x06); //初始設(shè)置</p><p> write_com(
64、0x01); //清零</p><p> write_com(0x80); //使指針指向第一行第一格</p><p> disp_lcd(0x80,&lcd_hang1[4*16]); //在第一行顯示</p><p> disp_lcd(0xc0,&lcd_hang1[5*16]); //在第二行顯示</p><
65、p><b> }</b></p><p> 3.2.4 正弦波發(fā)生程序設(shè)計(jì)</p><p> 利用MATLAB對正弦曲線均勻取樣后,得到等間隔時(shí)刻的y方向上的二進(jìn)制數(shù)值,然后依次輸出后經(jīng)D/A轉(zhuǎn)換得到。本程序在一個(gè)周期上進(jìn)行了256次均勻取樣結(jié)果如下:</p><p> uchar code sine_tab[256]={<
66、/p><p> //輸出電壓從0到最大值(正弦波1/4部分)</p><p> 0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,</p><p> 0xbf,0xc2,0xc5,0xc7,0xca,0xc
67、c,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,</p><p> 0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,</p>
68、<p> //輸出電壓從最大值到0(正弦波1/4部分)</p><p> 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,</p><p> 0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3
69、,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,</p><p> 0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,</p><
70、;p> //輸出電壓從0到最小值(正弦波1/4部分)</p><p> 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,</p><p> 0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e
71、,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,</p><p> 0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,</p><p>
72、; //輸出電壓從最小值到0(正弦波1/4部分)</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,</p><p> 0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x
73、20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,</p><p> 0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80};</p><p>
74、 3.2.5方波產(chǎn)生程序</p><p> 方波信號(hào)是利用定時(shí)器0中斷產(chǎn)生的,每次中斷時(shí),將輸出的信號(hào)按位反即可;</p><p> void square_out() //方波輸出</p><p><b> {</b></p><p> judge=~judge;</p><p>
75、 if(judge==1) DAdata=0xff;</p><p> else DAdata=0x00;</p><p> DA_S1=0; //打開8位輸入寄存器</p><p> DA_S1=1; //關(guān)閉8位輸入寄存器</p><p><b> }</b></p><p>
76、 3.2.6三角波產(chǎn)生程序</p><p> 通過對三角波圖形在一個(gè)周期上的均勻取樣,然后依次輸出后經(jīng)D/A轉(zhuǎn)換得到,本程序在一個(gè)周期上進(jìn)行了64次均勻取樣結(jié)果如下:</p><p> uchar code triangle_tab[]={ //每隔數(shù)字8,采取一次</p><p> 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x
77、38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,</p><p> 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xff,</p><p> 0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0
78、xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,</p><p> 0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00};</p><p> 3.2.7梯形波產(chǎn)生程序</p><p> 梯形波產(chǎn)生的原理和三角波相似,也是對其在一個(gè)周期
79、上的均勻取樣,然后依次輸出后經(jīng)D/A轉(zhuǎn)換得到,取樣結(jié)果如下:</p><p> uchar code tixing_tab[]={ //每隔數(shù)字8,采取一次</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x
80、10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xa0,0xb0,0xc0,0xd0,0xe0,0xf0,0xff,0xff, 0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,</p><p> 0xf0,0xe0,0xd0,0xc0,0xb0,0xa0,
81、0x90,0x80,0x70,0x60,0x50,0x40,0x30,0x20,0x10,0x00};</p><p><b> 實(shí)驗(yàn)仿真</b></p><p> 4.1 protues軟件仿真步驟</p><p> 1. 打開PROTEUS軟件,選擇所需器件。窗口如圖4-1所示</p><p><b&g
82、t; 圖4-1 器件選擇</b></p><p> 2.將所有器件排列好。器件排列見圖4-2</p><p><b> 圖4-2 器件排列</b></p><p> 3.連接導(dǎo)線。如圖4-3。</p><p><b> 圖4-3 連接導(dǎo)線</b></p><
83、p> 4. 打開KEIL軟件,調(diào)出程序編譯,生成HEX文件,并將其載入protues里。調(diào)試窗口見圖4-4。</p><p><b> 圖4-4 系統(tǒng)調(diào)試</b></p><p><b> 4.2 仿真結(jié)果</b></p><p> 1.正弦波仿真: 頻率10HZ 仿真結(jié)果如圖4-5</p>&
84、lt;p><b> 圖4-5 正弦波</b></p><p> 2.三角波仿真:頻率100HZ 仿真結(jié)果如圖4-6</p><p><b> 圖4-6 三角波</b></p><p> 3.方波仿真:頻率200HZ 仿真結(jié)果如圖4-7</p><p><b> 圖4-7方波
85、</b></p><p> 4.梯形波仿真:頻率100HZ 仿真結(jié)果如圖4-11</p><p><b> 圖4-11 梯形波</b></p><p><b> 4.3仿真結(jié)論</b></p><p> 采用PROTEUS進(jìn)行單片機(jī)仿真,可以大大縮短單片機(jī)的開發(fā)周期。它不僅能仿真
86、單片機(jī)CPU 的工作情況,也能仿真單片機(jī)外圍電路或沒有單片機(jī)參與的其它電路的工作情況。本系統(tǒng)仿真結(jié)果,滿足設(shè)計(jì)需求。實(shí)際操作靈活,使用方便。</p><p><b> 課程設(shè)計(jì)體會(huì)</b></p><p> 這次課程設(shè)計(jì)主要是基于對單片機(jī)的掌握和應(yīng)用,這是我第一次動(dòng)手實(shí)踐制作電路圖和焊接硬件電路,從課題的選擇、系統(tǒng)原理方案的設(shè)計(jì),電路原理的理解,到電路上元器件的焊
87、接、程序的編寫,電路的調(diào)試,調(diào)試下載,一步步,我覺得每個(gè)環(huán)節(jié)我都收獲很大。在設(shè)計(jì)中,我力求硬件電路簡單,充分發(fā)揮軟件靈活方面的特點(diǎn),在滿足系統(tǒng)設(shè)計(jì)要求的同時(shí)在一定程度上作出擴(kuò)展。在此次課程設(shè)計(jì)中,我主要有以下幾個(gè)方面的心得體會(huì):</p><p> 一、 在對單片機(jī)的具體實(shí)踐掌握方面。上個(gè)學(xué)期我們開設(shè)了單片機(jī)原理與接口技術(shù)這門專業(yè)課,盡管在這門課程的學(xué)習(xí)上,自己態(tài)度非常認(rèn)真而且也下了很大的功夫。但是在純粹的理論上
88、,總感覺不是那么的踏實(shí)和具體,而這次課程設(shè)計(jì)就為我具體實(shí)踐提供了一次很好的機(jī)會(huì),我覺得這個(gè)教學(xué)安排對我們實(shí)踐能力的鍛煉時(shí)很有幫助的,通過此次課程設(shè)計(jì),我對單片機(jī)的掌握有了更加切實(shí)的感受和接觸,以及簡單的應(yīng)用,收獲很大</p><p> 二、在軟件的使用方面。這次課程設(shè)計(jì)主要用到keil uvision2和Proteus兩個(gè)軟件,這次課程設(shè)計(jì)使我更加深入和熟練的掌握了這兩個(gè)軟件的使用。特別是protues軟件,該
89、軟件功能強(qiáng)大,操作簡單,可以大大加快單片機(jī)的開發(fā)過程,是單片機(jī)開發(fā)的有力幫手。</p><p> 三、 在C語言程序的編寫方面。在大一下學(xué)期的時(shí)候自己就學(xué)過用C語言編寫程序的方法,雖然自己在大三也學(xué)過匯編編程,但與C語言相比匯編有可讀性好,移植容易等優(yōu)點(diǎn),所以這次采用了更方便好用的C語言編寫程序。此次課程設(shè)計(jì)是我掌握了編寫一個(gè)較大型系統(tǒng)軟件的思路,提高了自己的編程水平。</p><p>
90、 單片機(jī)課程設(shè)計(jì)馬上就要結(jié)束了,自己在設(shè)計(jì)過程中碰到了不少“難題”,通過自己翻閱大量資料和請教老師,解決了一個(gè)個(gè)難題。通過這次畢業(yè)設(shè)計(jì),我深深體會(huì)到:世上無難題,只怕有心人。碰到難題不要懼怕,只要你肯鉆研,問題總會(huì)有解決的辦法。最后在此我特別感謝在此次課程設(shè)計(jì)對我提供幫助的老師和同學(xué), </p><p><b> 參考文獻(xiàn)</b></p><p> [1] 余
91、發(fā)山 王福忠 單片機(jī)原理及應(yīng)用技術(shù) 北京:中國礦業(yè)大學(xué)出版社,2008</p><p> [2] 張義和等編. 例說51單片機(jī) 北京:人民郵電出版社,2008</p><p> [3] 周和琴,吳秀清編著. 微型計(jì)算機(jī)原理與接口技術(shù)北京:中國科學(xué)技術(shù)大學(xué)出版社,2004</p><p> [4] 周潤景等編著. Proteus在MCS-51&AR
92、M7系統(tǒng)中的應(yīng)用百例:電子工業(yè)出版社,2006</p><p> [5] 張靖武,周靈彬著. 單片機(jī)系統(tǒng)的PROTEUS設(shè)計(jì)與仿真 北京:電子工業(yè)出版社,2007</p><p> [6] 丁新民編著.微機(jī)原理與應(yīng)用 北京:高等教育出版社,2008</p><p> [7] 周明德編著.微型計(jì)算機(jī)原理及應(yīng)用.北京:清華大學(xué)出版社,1998</p&g
93、t;<p> [8] 張洪潤,易濤編著.單片機(jī)應(yīng)用技術(shù)教程(第二版).北京:清華大學(xué)出版,2003</p><p> [9] 求是科技編著.單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航.北京:人民郵電出版社,2004 </p><p> [10] 劉坤等編著. 51單片機(jī)C語言應(yīng)用開發(fā)技術(shù)大全 .北京:人民郵電出版社,2008</p><p> [11]
94、 潘新民,王燕芳編著.微型計(jì)算機(jī)控制技術(shù).北京:電子工業(yè)出版社,2004</p><p> [12] 全國大學(xué)生電子設(shè)計(jì)競賽組委會(huì)編.第五屆全國大學(xué)生電子設(shè)計(jì)競賽獲獎(jiǎng)作品選編</p><p> .北京:北京理工大學(xué)出版社,2003</p><p> [13] 楊寧編著.單片機(jī)與控制技術(shù).北京:北京航空航天大學(xué)出版社,2005</p><
95、;p><b> 附1:源程序代碼</b></p><p> #include<reg52.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> #define DAdata
96、 P0//DA數(shù)據(jù)端口</p><p> sbit DA_S1= P2^0; // 控制DAC0832的8位輸入寄存器,僅當(dāng)都為0時(shí),可以輸出數(shù)據(jù)(處于直通狀態(tài)),否則,輸出將被鎖存</p><p> sbit DA_S2= P2^1; // 控制DAC0832的8位DAC寄存器,僅當(dāng)都為0時(shí),可以輸出數(shù)據(jù)(處于直通狀態(tài)),否則,輸出將被鎖存</p><p
97、> sbit key= P3^2;</p><p> #define lcd_ports P1</p><p> sbit rs=P2^2;</p><p> sbit rw=P2^3;</p><p> sbit lcden=P2^4;</p><p> uchar wavecount;
98、 //'抽點(diǎn)'計(jì)數(shù)</p><p> uchar THtemp,TLtemp; //傳遞頻率的中間變量</p><p> uchar judge=1; //在方波輸出函數(shù)中用于簡單判別作用</p><p> uchar judge1=0;
99、 //在中斷處理里做判斷暫停和輸出狀態(tài)作用</p><p> uchar waveform; //當(dāng)其為0、1、2、3時(shí),分別代表四種波</p><p> uchar code freq_unit[4]={10,50,200,50}; //四種波的頻率單位</p><p> ucha
100、r idata wavefreq[4]={1,1,1,1}; //給每種波定義一個(gè)數(shù)組單元,用于存放單位頻率的個(gè)數(shù)</p><p> uchar code lcd_hang1[]={"Sine Wave " "Triangle Wave " "Square Wave " "Trapezoidal wave&qu
101、ot; "Select Wave: " "press No.1 key! " "Suspend output: " "waveform! "};</p><p> uchar idata lcd_hang2[16]={"f= Hz "};</p><p&g
102、t; /***********這兩組數(shù)組很重要,需要根據(jù)波形來調(diào)試,選擇合適的值,使輸出波形達(dá)到頻率要求************/</p><p> uchar code waveTH[]={</p><p> 0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,</p><p> 0xfd,0xfe,0xff
103、,0xff,0xff,0xff,0xff,0xff,0xff,0xff,</p><p> 0xec,0xf6,0xf9,0xfb,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe,</p><p> 0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};</p><p> uchar code wav
104、eTL[]={ </p><p> 0x06,0x8a,0x10,0x4e,0x78,0x93,0xa8,0xb3,0xbe,0xc6, //正弦波頻率調(diào)整中間值</p><p> 0xac,0xde,0x48,0x7a,0x99,0xaf,0xbb,0xc8,0xd0,0xde,//三角波頻率調(diào)整中間值</p><p> 0x88,0x50,0x90,0x
105、32,0x34,0xbe,0x4a,0xa3,0xe5,0x2c,</p><p> 0xac,0xde,0x48,0x7a,0x99,0xaf,0xbb,0xc8,0xd0,0xde}; //矩形波頻率調(diào)整中間值</p><p> /****************************************************************************
106、*********************/</p><p> uchar code triangle_tab[]={ //每隔數(shù)字8,采取一次</p><p> 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,</p><p> 0x80,0x8
107、8,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xff,</p><p> 0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80,</p><p> 0x78,0x70,0x68,0x
108、60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00};</p><p> uchar code tixing_tab[]={ //每隔數(shù)字8,采取一次</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0
109、x00,0x00,</p><p> 0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xa0,0xb0,0xc0,0xd0,0xe0,0xf0,0xff,0xff,</p><p> 0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,0Xff,
110、</p><p> 0xf0,0xe0,0xd0,0xc0,0xb0,0xa0,0x90,0x80,0x70,0x60,0x50,0x40,0x30,0x20,0x10,0x00};</p><p> uchar code sine_tab[256]={</p><p> //輸出電壓從0到最大值(正弦波1/4部分)</p><p>
111、 0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,</p><p> 0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0
112、xe9,0xea,0xec,</p><p> 0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,</p><p> //輸出電壓從最大值到0(正弦波1/4部分)</p><p> 0xff,
113、0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,</p><p> 0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0x
114、c5,0xc2,</p><p> 0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,</p><p> //輸出電壓從0到最小值(正弦波1/4部分)</p><p> 0x80,0x7c,
115、0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,</p><p> 0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0
116、x13,</p><p> 0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> //輸出電壓從最小值到0(正弦波1/4部分)</p><p> 0x00,0x00,0x00,
117、0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,</p><p> 0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 多功能信號(hào)發(fā)生器課程設(shè)計(jì)
- 多功能信號(hào)發(fā)生器-課程設(shè)計(jì)
- eda課程設(shè)計(jì)-多功能波形信號(hào)發(fā)生器
- 多功能發(fā)生器電路課程設(shè)計(jì)
- 信號(hào)發(fā)生器課程設(shè)計(jì)報(bào)告--函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)
- 51單片機(jī)課程設(shè)計(jì)---多功能信號(hào)發(fā)生器設(shè)計(jì)
- 信號(hào)發(fā)生器課程設(shè)計(jì)報(bào)告
- 信號(hào)發(fā)生器課程設(shè)計(jì)----函數(shù)信號(hào)發(fā)生器
- 函數(shù)信號(hào)發(fā)生器課程設(shè)計(jì)報(bào)告
- 函數(shù)信號(hào)發(fā)生器課程設(shè)計(jì)報(bào)告
- 信號(hào)發(fā)生器課程設(shè)計(jì)
- 信號(hào)發(fā)生器課程設(shè)計(jì)
- 課程設(shè)計(jì)---函數(shù)信號(hào)發(fā)生器設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)--信號(hào)發(fā)生器設(shè)計(jì)
- 多功能信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 多功能信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 模擬電子---信號(hào)發(fā)生器課程設(shè)計(jì)報(bào)告
- 信號(hào)發(fā)生器課程設(shè)計(jì)---函數(shù)發(fā)生器的設(shè)計(jì)
- 多功能信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--多功能信號(hào)發(fā)生器
評論
0/150
提交評論