微機(jī)原理課程設(shè)計(jì)報(bào)告_第1頁(yè)
微機(jī)原理課程設(shè)計(jì)報(bào)告_第2頁(yè)
微機(jī)原理課程設(shè)計(jì)報(bào)告_第3頁(yè)
微機(jī)原理課程設(shè)計(jì)報(bào)告_第4頁(yè)
微機(jī)原理課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

word文檔可自由復(fù)制編輯微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與綜合實(shí)驗(yàn)課程設(shè)計(jì)報(bào)告word文檔可自由復(fù)制編輯目錄目錄·······································································1第一章 概要····························································31.1設(shè)計(jì)目的·························································31.2課程設(shè)計(jì)內(nèi)容及要求·············································31.3所需芯片及硬件簡(jiǎn)介··············································41.3.18086CPU簡(jiǎn)介················································41.3.274LS273功能簡(jiǎn)介············································41.3.38255A特性簡(jiǎn)介·············································51.3.4D/A0832功能簡(jiǎn)介···········································61.3.5A/D0809功能簡(jiǎn)介············································61.3.6唐都小鍵盤(pán)簡(jiǎn)介·············································71.3.7數(shù)碼管顯示·················································7第二章 總體設(shè)計(jì)方案··················································82.1設(shè)計(jì)思想論述····················································82.2程序流程圖······················································92.3電路原理圖····················································10第三章 典型模塊分析················································113.1波形產(chǎn)生模塊·················································113.1.1三角波·················································123.1.2鋸齒波··················································153.1.3正弦波·················································163.1.4方波···················································193.2小鍵盤(pán)模塊···················································203.3調(diào)幅調(diào)頻模塊················································22第四章 系統(tǒng)調(diào)試過(guò)程及結(jié)果······································25第五章 收獲與體會(huì)················································27參考文獻(xiàn)··························································29附錄1匯編語(yǔ)言源程序代碼········································30附錄2proteus仿真圖··············································37第一章概要1.1課程設(shè)計(jì)目的《微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與綜合實(shí)驗(yàn)(實(shí)踐)》課程設(shè)計(jì)是自動(dòng)化、智能專業(yè)本科生的必修課。通過(guò)本課程設(shè)計(jì),讓學(xué)生對(duì)微機(jī)系統(tǒng)有一個(gè)較全面的理解,對(duì)典型數(shù)字接口電路的應(yīng)用技術(shù)有一個(gè)較深入地掌握,綜合了對(duì)應(yīng)用系統(tǒng)的硬件原理和軟件編程的分析、設(shè)計(jì)和調(diào)試,達(dá)到基本掌握簡(jiǎn)單微型計(jì)算機(jī)應(yīng)用系統(tǒng)軟硬件的設(shè)計(jì)方法,提高項(xiàng)目開(kāi)發(fā)能力的目的。要求同學(xué)獨(dú)立完成課題,寫(xiě)出課程設(shè)計(jì)說(shuō)明書(shū),畫(huà)出電路原理圖,說(shuō)明工作原理,畫(huà)出電路印制板圖,編寫(xiě)設(shè)計(jì)程序及程序流程圖。希望同學(xué)們認(rèn)真閱讀課程設(shè)計(jì)任務(wù)書(shū),認(rèn)真查閱資料,完成好上機(jī)調(diào)試,圓滿完成本次課程設(shè)計(jì)。1.2課程設(shè)計(jì)內(nèi)容及要求完成基于80x86CPU為核心控制器的具備基本I/O接口功能的硬件電路系統(tǒng)原理圖設(shè)計(jì)、PCB電路設(shè)計(jì)和軟件編程設(shè)計(jì)?;綢/O接口電路應(yīng)包括:鎖存器、緩沖器、地址譯碼器、8255接口、8253接口、A/D(D/A)轉(zhuǎn)換電路、串行接口電路等;軟件功能要求完成基本I/O接口電路控制和串口通信功能調(diào)試。設(shè)計(jì)題:信號(hào)發(fā)生器功能程序設(shè)計(jì)設(shè)計(jì)要求:(1)、硬件電路基于80x86微機(jī)的接口電路;(2)、分別用C語(yǔ)言或匯編語(yǔ)言或VC++編程完成硬件接口功能設(shè)計(jì);(3)、程序功能要求:小鍵盤(pán)給定、數(shù)碼管(屏幕)顯示,并產(chǎn)生對(duì)應(yīng)信號(hào)波形(D/A)輸出(信號(hào)波形包括正弦波、三角波、方波、鋸齒波)、輸出信號(hào)波形幅度、頻率可調(diào)。(注意:按鍵數(shù)量應(yīng)盡量少)。(4)、具備本地及遠(yuǎn)程(串行方式)監(jiān)測(cè)功能。實(shí)現(xiàn)技術(shù)指標(biāo):

(1)、完全用小鍵盤(pán)控制各波形間的切換和頻率和幅值的調(diào)節(jié)以及退出。

(2)、實(shí)現(xiàn)正弦波、三角波、方波和鋸齒波信號(hào)的產(chǎn)生。

(3)、數(shù)碼管同步顯示當(dāng)前工作波形的頻率和幅值。

(4)、實(shí)現(xiàn)頻率的1到5倍可調(diào)。

(5)、實(shí)現(xiàn)幅值的1到5倍可調(diào)。1.3所需芯片及硬件簡(jiǎn)介1.3.1

8086功能簡(jiǎn)介

8086

CPU是由總線接口部件BIU和執(zhí)行部件EU這兩大部分構(gòu)成。總線接口部件BIU是8086

CPU在存儲(chǔ)器和I/O設(shè)備之間的接口部件,負(fù)責(zé)對(duì)全部引腳的操作,即8086對(duì)存儲(chǔ)器和I/O設(shè)備的所有操作都是由BIU完成的。所有對(duì)外部總線的操作都必須有正確的地址和適當(dāng)?shù)目刂菩盘?hào),BIU中的各部件主要是圍繞這個(gè)目標(biāo)設(shè)計(jì)的。它提供了16位雙向數(shù)據(jù)總線、20位地址總線和若干條控制總線。

其具體任務(wù)是:負(fù)責(zé)從內(nèi)存單元中預(yù)取指令,并將它們送到指令隊(duì)列緩沖器暫存。CPU執(zhí)行指令時(shí),總線接口單元要配合執(zhí)行單元,從指定的內(nèi)存單元或I/O端口中取出數(shù)據(jù)傳送給執(zhí)行單元,或者把執(zhí)行單元的處理結(jié)果傳送到指定的內(nèi)存單元或I/O端口中。

執(zhí)行單元EU中包含1個(gè)16位的運(yùn)算器ALU、8個(gè)16位的寄存器、1個(gè)16位標(biāo)志寄存器FR、1個(gè)運(yùn)算暫存器和執(zhí)行單元的控制電路。這個(gè)單元進(jìn)行所有指令的解釋和執(zhí)行,同時(shí)管理上述有關(guān)的寄存器。EU對(duì)指令的執(zhí)行是從取指令操作碼開(kāi)始的,它從總線接口單元的指令隊(duì)列緩沖器中每次取一個(gè)字節(jié)。如果指令隊(duì)列緩沖器中是空的,那么EU就要等待BIU通過(guò)外部總線從存儲(chǔ)器中取得指令并送到EU,通過(guò)譯碼電路分析,發(fā)出相應(yīng)控制命令,控制ALU數(shù)據(jù)總線中數(shù)據(jù)的流向。1.3.274LS273功能簡(jiǎn)介

地址鎖存器就是一個(gè)暫存器,它根據(jù)控制信號(hào)的狀態(tài),將總線上地址代碼暫存起來(lái)。8086/8088數(shù)據(jù)和地址總線采用分時(shí)復(fù)用操作方法,即用同一總線既傳輸數(shù)據(jù)又傳輸?shù)刂?。?dāng)微處理器與存儲(chǔ)器交換信號(hào)時(shí),首先由CPU發(fā)出存儲(chǔ)器地址,同時(shí)發(fā)出允許鎖存信號(hào)ALE給鎖存器,當(dāng)鎖存器接到該信號(hào)后將地址/數(shù)據(jù)總線上的地址鎖存在總線上,隨后才能傳輸數(shù)據(jù)。

地址鎖存器74LS273是帶清除端的八D觸發(fā)器,只有清除端為高電平時(shí)才具有鎖存功能,鎖存控制端為11腳CLK,在上升沿鎖存。8086的ALE端輸出的鎖存控制信號(hào)必須經(jīng)反相器后才能連到74LS273的CLK端,以滿足CLK在上升沿鎖存的要求。74LS273的引腳1D~8D為數(shù)據(jù)輸入端,1Q~8Q為數(shù)據(jù)輸出端,WR:主清除端,低電平觸發(fā),即當(dāng)為低電平時(shí),芯片被清除,輸出全為0。CP(CLK):觸發(fā)端,上升沿觸發(fā),即當(dāng)CP從低到高電平時(shí),D0~D7的數(shù)據(jù)通過(guò)芯片,為0時(shí)將數(shù)據(jù)鎖存,D0~D7的數(shù)據(jù)不變。由于8086有20位物理地址,所以需要用3片74LS273級(jí)聯(lián)。1.3.38255A特性簡(jiǎn)介(1)具有24條輸入/輸出引腳、可編程的通用并行輸入/輸出接口電路。它是一片使用單一+5V電源的40腳雙列直插式大規(guī)模集成電路。8255A的通用性強(qiáng),使用靈活,通過(guò)它CPU可直接與外設(shè)相連。圖1.1唐都實(shí)驗(yàn)箱D/A0832接線圖(2)8255A在使用前要寫(xiě)入一個(gè)方式控制字,選擇A、B、C三個(gè)端口各自的工作方式,共有三種。方式0:基本的輸入輸出方式,即無(wú)須聯(lián)絡(luò)就可以直接進(jìn)行的I/O方式。其中A、B、C口的高四位或低四位可分別設(shè)置成輸入或輸出;方式1:選通I/O,此時(shí)接口和外圍設(shè)備需聯(lián)絡(luò)信號(hào)進(jìn)行協(xié)調(diào),只有A口和B口可以工作在方式1,此時(shí)C口的某些線被規(guī)定為A口或B口與外圍設(shè)備的聯(lián)絡(luò)信號(hào),余下的線只有基本的I/O功能,即只工作在方式0;方式2:雙向I/O方式,只有A口可以工作在這種方式,該I/O線即可輸入又可輸出,此時(shí)C口有5條線被規(guī)定為A口和外圍設(shè)備的雙向聯(lián)絡(luò)線,C口剩下的三條線可作為B口方式1的聯(lián)絡(luò)線,也可以和B口一起方式0的I/O線。本次設(shè)計(jì)只用到了三個(gè)端口的方式0。1.3.4D/A0832功能簡(jiǎn)介DAC0832是采用CMOS工藝制成的單片電流輸出型8位數(shù)/模轉(zhuǎn)換器。DAC0832的引腳功能說(shuō)明如下:D0-D7:數(shù)字信號(hào)輸入端CS:片選信號(hào),低電平有效WR:寫(xiě)信號(hào)1,低電平有效OUT:DAC電流輸出端1.3.5A/D0809功能簡(jiǎn)介ADC0809是采樣頻率為8位的、以逐次逼近原理進(jìn)行?!獢?shù)轉(zhuǎn)換的器件。其內(nèi)部有一個(gè)8通道多路開(kāi)關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號(hào),只選通8路模擬輸入信號(hào)中的一個(gè)進(jìn)行A/D轉(zhuǎn)換。當(dāng)?shù)刂稟BC=000時(shí),IN0通道被選通。圖1.2唐都實(shí)驗(yàn)箱A/D0809接線圖1.3.6唐都小鍵盤(pán)簡(jiǎn)介唐都實(shí)驗(yàn)箱中提供了4行×4列16個(gè)按鍵,列選擇信號(hào)X1-X4,行掃描信號(hào)Y1-Y4。圖1.3唐都實(shí)驗(yàn)箱小鍵盤(pán)接線圖1.3.7

數(shù)碼管顯示

數(shù)碼管同步顯示當(dāng)前波形的幅值和頻率。硬件上由8086將數(shù)據(jù)輸出給8255,8255再將輸出送給數(shù)碼管的A~Dp,顯示相應(yīng)字符。軟件上定義一個(gè)緩沖區(qū)存放波形的幅值和頻率,顯示數(shù)碼管時(shí),利用緩沖區(qū)的數(shù)值查找數(shù)碼管鍵值表再輸出對(duì)應(yīng)數(shù)值。循環(huán)輸出波形時(shí)也循環(huán)輸出緩沖區(qū)內(nèi)容對(duì)應(yīng)的值,就可以同步顯示波形的幅值和頻率。利用小鍵盤(pán)掃描得到的鍵值進(jìn)行判斷,對(duì)緩沖區(qū)內(nèi)的幅值頻率進(jìn)行相應(yīng)的改變,使數(shù)碼管能顯示不同的幅值和頻率。第二章總體設(shè)計(jì)方案2.1設(shè)計(jì)思想論述(1).波形產(chǎn)生:通過(guò)匯編語(yǔ)言編寫(xiě)各個(gè)波形子程序,其中方波和三角波參考了唐都的參考程序。鋸齒波由三角波修改而來(lái),正弦波事先用MATLAB仿真存入各點(diǎn)數(shù)據(jù),產(chǎn)生波形時(shí)依次輸出各個(gè)數(shù)據(jù)即可。波形子程序中主要是各個(gè)波形一個(gè)周期的代碼,循環(huán)執(zhí)行,由此產(chǎn)生連續(xù)波形并通過(guò)D/A0832將數(shù)字量轉(zhuǎn)換成模擬量輸出,即可得各種波形。具體方案見(jiàn)第三章3.1節(jié)。(2).波形切換:用小鍵盤(pán)輸入進(jìn)行波形的選擇,按鍵0~3分別對(duì)應(yīng)方波、三角波、鋸齒波和正弦波。每個(gè)波形周期輸出后,調(diào)用鍵盤(pán)查詢子程序,判斷有無(wú)按鍵按下,沒(méi)有則繼續(xù)輸出下一周期,否則轉(zhuǎn)到相應(yīng)的波行子程序上。可隨時(shí)進(jìn)行波形間的切換。具體方案見(jiàn)第三章3.2節(jié)。(3).無(wú)極調(diào)頻:改變波形子程序中的各個(gè)數(shù)據(jù)輸出延時(shí)時(shí)間,就可改變整個(gè)波形的頻率,延時(shí)越短頻率越高。而延時(shí)時(shí)間長(zhǎng)短可由外部輸入決定,通過(guò)A/D0809將電位計(jì)(0~5V)的模擬量轉(zhuǎn)化成數(shù)字量(00~FF)作為延時(shí)時(shí)間長(zhǎng)短。調(diào)節(jié)電位器即可調(diào)節(jié)延時(shí),進(jìn)而調(diào)節(jié)頻率。ADC0809芯片分辨率為8位,即可將延時(shí)分為256個(gè)等級(jí),實(shí)現(xiàn)無(wú)極調(diào)頻。具體方案見(jiàn)第三章3.3、3.4節(jié)。(4).無(wú)極調(diào)幅:改變波形子程序中DA輸出值的大小即可改變幅值,可以在原數(shù)據(jù)基礎(chǔ)上乘以一個(gè)增益。而增益可由外部輸入,原理與調(diào)頻相似,通過(guò)A/D0809輸入一個(gè)數(shù)字量(00~FF)。按鍵4用于調(diào)頻/調(diào)幅的切換。當(dāng)判斷當(dāng)前為調(diào)幅狀態(tài)時(shí)就將這個(gè)數(shù)字量存入幅值增益變量中,如果判斷是調(diào)頻狀態(tài)則存入頻率延時(shí)變量中。從而實(shí)現(xiàn)只用一個(gè)電位器分別調(diào)節(jié)頻率和幅度的功能。具體方案見(jiàn)第三章3.3、3.4節(jié)。(5).開(kāi)始結(jié)束:通過(guò)掃描小鍵盤(pán),按下5鍵則退出。2.2程序流程圖開(kāi)始開(kāi)始NYNY結(jié)束初始化8255調(diào)用ccscan子程序并判斷,無(wú)鍵按下則循環(huán)等待,有鍵按下則消抖鍵盤(pán)掃描子程序,鍵值keyKey=5?Key=0?Key=1?Key=2?Key=3?YYYYNNN三角波子程序,出口參數(shù):波形標(biāo)志位=0鋸齒波子程序,出口參數(shù):波形標(biāo)志位=1正弦波子程序,出口參數(shù):波形標(biāo)志位=2方波子程序,出口參數(shù):波形標(biāo)志位=3Key=4?鍵盤(pán)掃描子程序,鍵值keyNFLAG_FUPIN取反Key=波形標(biāo)志位顯示調(diào)頻/調(diào)幅狀態(tài)顯示波形信息顯示波形信息顯示波形信息顯示波形信息圖2.1主程序流程圖2.3電路原理圖圖2.2硬件連接電路圖第三章典型模塊分析3.1波形產(chǎn)生模塊四個(gè)波形子程序結(jié)構(gòu)類似,當(dāng)子程序被調(diào)用后,進(jìn)行以下步驟:(1)通過(guò)8255的C7位輸出一個(gè)低電平來(lái)啟動(dòng)AD0809,并從8255的B口讀入AD輸入的數(shù)字量(00H~FFH)。(2)判斷幅頻標(biāo)志位FLAG_FUPIN,為0則把AD輸入的數(shù)字量存入頻率值空間FRE,否則存入幅值空間AMP。(3)輸出波形的一個(gè)周期。(4)調(diào)用子程序CCSCAN,判斷小鍵盤(pán)有無(wú)按鍵按下,無(wú)則繼續(xù)步驟(1),有則返回主程序。流程圖如圖3.1所示。子程序調(diào)用子程序調(diào)用啟動(dòng)AD0809,讀入數(shù)據(jù)到ALFlag_fupin=0?保存到頻率,F(xiàn)reAL保存到幅值,AmpAL輸出一個(gè)周期波形小鍵盤(pán)有鍵按下?YNYN延時(shí)消抖小鍵盤(pán)有鍵按下?NY子程序返回圖3.1波形子程序流程圖3.1.1三角波三角波從最小值開(kāi)始逐漸上升,到達(dá)最大值之后再逐漸減小到最小。因此先將最小值(00H)放到BL,輸出并延時(shí),對(duì)BL加一,再輸出并延時(shí),達(dá)到最大值后就對(duì)BL依次減一,輸出并延時(shí),直到BL=00H,則為一個(gè)周期波形。因此三角波有兩個(gè)過(guò)程。(1)一個(gè)周期波形的代碼如下:SANJIAO:CALLAM;進(jìn)行幅度調(diào)制 MOVAL,00H ;對(duì)AL中的數(shù)據(jù)進(jìn)行初始化UP:MOVDX,MY8255_A;上升 ;信號(hào)發(fā)生器系統(tǒng)開(kāi)始時(shí)輸出為0MOVDI,AXOUTDX,ALCALLDELAY;進(jìn)行頻率調(diào)制MOVAX,DIPUSHAXMOVDX,MY8255_B ;讀入8255B口信息,看是否有按鍵按下并進(jìn)行波形轉(zhuǎn)換INAL,DXNOTAL ;由于B口的信息按下為低電平,故對(duì)AL中的數(shù)取反CMPAL,02H;按下第二行鍵轉(zhuǎn)入正弦波JEZHENGXIANBOCMPAL,04H ;按下第三行鍵轉(zhuǎn)入鋸齒波JEJUCHIBOCMPAL,08H ;按下第四行鍵轉(zhuǎn)入方波JEFBPOPAXINCALCMPAL,BL;和最大值比較JBUP;小于最大值則執(zhí)行循環(huán)DON:MOVDI,AX;下降MOVDX,MY8255_AOUTDX,ALCALLDELAYMOVAX,DIPUSHAXMOVDX,MY8255_B ;判斷鍵值按下的情況INAL,DXNOTALCMPAL,02HJEZHENGXIANBOCMPAL,04HJEJUCHIBOCMPAL,08HJEFBPOPAXDECALCMPAL,00H;和最小值比較JADON;高于最小值則執(zhí)行循環(huán)JMPSANJIAO;重新進(jìn)行三角波發(fā)生延時(shí)子程序代碼:DELAY:PUSHAXMOVDX,MY08081;調(diào)頻ADC08081的初始化OUTDX,ALMOVDX,MY08081;讀調(diào)頻ADC08081值INAL,DXMOVAH,0;AH,BH進(jìn)行初始化MOVBH,0MOVBH,50MULBH;AH中存高8位,AL中存低8位MOVBH,0FFHDIVBH;AH存放余數(shù),AL中存放商 MOVAH,0MOVBH,0AHDIVBH;對(duì)商除以10,即相當(dāng)于把十位的數(shù)字保存到AL中,個(gè)位保存到AH中;AL=0000XXXX,AH=0000XXXXMOVCL,4SHLAL,CL;即把上邊AL中的商左移四位,將來(lái)在數(shù)碼管的十位上顯示;AL=XXXX0000,AH=0000XXXXORAL,AH;把AH中的數(shù)據(jù)加到AL的低四位中去 ;此時(shí)AL=XXXXXXXXMOVDX,MY82551_COUTDX,ALMOVBH,0HMOVAH,0PUSHCXMOVCX,001AHMULCXMOVCX,AXDELAY1: LOOPDELAY1 POPAXPOPCXRET局部流程圖如圖3.1所示:BL已到最大?BL已到最大?延時(shí)BL*增益→AL,輸出ALBL=00HBL加一NYBL已到最?。垦訒r(shí)BL*增益→AL,輸出ALBL減一NY圖3.1三角波一周期流程圖BL=00H延時(shí)BL*增益→AL,輸出ALBL*增益→AL,輸出ALBL=00H延時(shí)BL加一BL已到最大?NY圖3.3鋸齒波一周期流程圖運(yùn)行效果如圖3.2所示:圖3.2三角波圖形3.1.2鋸齒波鋸齒波與三角波類似,只是鋸齒波到達(dá)最大值之后,直接跳到最小值。因此鋸齒波只有對(duì)BL依次加一的過(guò)程。一個(gè)周期波形的代碼如下:JUCHIBO:CALLAM ;進(jìn)行幅度調(diào)制PUSHAXMOVAL,BL;將幅度的最大值保存在AL中DOWN:MOVDX,MY8255_A;輸出鋸齒波OUTDX,ALMOVDI,AX ;保存AX的值CALLDELAY ;進(jìn)行頻率調(diào)制MOVDX,MY8255_B;判斷鍵值按下的情況INAL,DXNOTALCMPAL,01HJESANJIAOCMPAL,02HJEZHENGXIANBOCMPAL,08HJEFBMOVAX,DI ;恢復(fù)AX的值DECALCMPAL,00HJADOWNPOPAXJMPJUCHIBO延時(shí)子程序與三角波類似,此處不再贅述。局部流程圖如圖3.3所示。運(yùn)行效果如圖3.4所示:圖3.4鋸齒波圖形3.1.3正弦波正弦波是利用正弦表(見(jiàn)附錄代碼段)輸出的,即將正弦表中的數(shù)值一一輸出并延時(shí)。一個(gè)周期波形的代碼:ZHENGXIANBO:CALLAM ;進(jìn)行幅度調(diào)制,將幅值讀入到BL中PUSHAXPUSHCXLEASI,SINMOVSI,00H;SI做正弦表里的指針D:MOVAL,[SI];讀入正弦表中的數(shù)值到AL中MOVDX,MY8255_AMOVDI,AXMULBL ;將正弦表中的數(shù)值乘以BL幅值以實(shí)現(xiàn)調(diào)幅MOVAL,AHOUTDX,ALINCSICALLDELAY ;進(jìn)行頻率調(diào)制MOVDX,MY8255_B;判斷鍵值按下的情況INAL,DXNOTALCMPAL,01HJESANJIAOCMPAL,04HJEJUCHIBOCMPAL,08HJEFBMOVAX,DICMPSI,0FFHJNZDPOPCXPOPAXJMPZHENGXIANBO延時(shí)子程序與三角波類似,此處不再贅述。局部流程圖如圖3.5所示:延時(shí)延時(shí)讀表中的一個(gè)數(shù)據(jù)到AL取正弦表首地址AL*增益→AL,輸出AL表地址加一已到表末?NY圖3.5正弦波一周期流程圖運(yùn)行效果如圖3.6所示:圖3.6正弦波圖形3.1.4方波方波的產(chǎn)生先向DA0832輸出一個(gè)低電平(00H),并延時(shí)一段時(shí)間。再輸出一個(gè)高電平(此處直接用AMP的值作為高電平,AMP是外部AD輸入的幅值增益),延時(shí)一段相同時(shí)間,就是矩形波的一個(gè)周期。一個(gè)周期波形的代碼:FB: CALLAM ;進(jìn)行幅度調(diào)制PUSHAXMOVAL,0FFH;輸出方波的幅值MULBLMOVAL,AHMOVDX,MY8255_AOUTDX,ALMOVCX,40HCALLDELAY ;進(jìn)行頻率調(diào)制MOVAL,0H;改變方波的幅值MOVDX,MY8255_AOUTDX,ALCALLDELAY ;進(jìn)行頻率調(diào)制MOVDX,MY8255_B ;判斷鍵值按下的情況INAL,DXNOTALCMPAL,01HJESANJIAOCMPAL,04HJEJUCHIBOCMPAL,02HJEZHENGXIANBOPOPAXJMPFB延時(shí)子程序與三角波類似,此處不再贅述。運(yùn)行效果如圖3.7所示:圖3.7方波圖形3.2小鍵盤(pán)模塊小鍵盤(pán)用到兩個(gè)子程序(ccscan和scan)。ccscan子程序只是一個(gè)輔助程序,用于判斷當(dāng)前小鍵盤(pán)是否有鍵按下,有則全零標(biāo)志位ZF=0(運(yùn)算結(jié)果不為0),無(wú)鍵按下則ZF=1(運(yùn)算結(jié)果為0)。子程序代碼如下:CCSCANPROCNEAR;掃描是否有按鍵閉合子程序MOVAL,00HMOVDX,MY8255_A;將4列全選通,X1~X4置0OUTDX,ALMOVDX,MY8255_CINAL,DX;讀Y1~Y4NOTALANDAL,0FH;取出Y1~Y4的反值RETCCSCANENDPscan功能為當(dāng)確定小鍵盤(pán)有鍵按下則一列一列掃描鍵盤(pán),判斷是哪一列哪一行的鍵被按下了,并把鍵值保存到數(shù)據(jù)段的key空間去。子程序代碼如下:SCANPROCNEARMOVCH,0FEHMOVCL,00H;設(shè)置當(dāng)前檢測(cè)的是第幾列COLUM:MOVAL,CH;選取一列,將X1~X4中一個(gè)置0MOVDX,MY8255_AOUTDX,ALMOVDX,MY8255_C;讀Y1~Y4,用于判斷哪一行按鍵閉合INAL,DXL1:TESTAL,01H;是否為第1行JNZL2;不是則繼續(xù)判斷MOVAL,00H;設(shè)置第1行第1列的對(duì)應(yīng)的鍵值JMPKCODEL2:TESTAL,02H;是否為第2行JNZL3;不是則繼續(xù)判斷MOVAL,04H;設(shè)置第2行第1列的對(duì)應(yīng)的鍵值JMPKCODEL3:TESTAL,04H;是否為第3行JNZL4;不是則繼續(xù)判斷MOVAL,08H;設(shè)置第3行第1列的對(duì)應(yīng)的鍵值JMPKCODEL4:TESTAL,08H;是否為第4行JNZNEXT;不是則繼續(xù)判斷MOVAL,0CH;設(shè)置第4行第1列的對(duì)應(yīng)的鍵值JMPKCODENEXT:INCCL;當(dāng)前檢測(cè)的列數(shù)遞增MOVAL,CHTESTAL,08H;檢測(cè)是否掃描到第4列JZKERR;是則跳回到開(kāi)始處ROLAL,1;沒(méi)檢測(cè)到第4列則準(zhǔn)備檢測(cè)下一列MOVCH,ALJMPCOLUMKCODE:ADDAL,CL;將第1列的值加上當(dāng)前列數(shù),確定按鍵值MOVKEY,AL;保存按鍵值到key空間KERR:RETSCANENDP3.3調(diào)幅調(diào)頻模塊系統(tǒng)只使用了一個(gè)電位計(jì)可以分別調(diào)節(jié)頻率和幅值。波形子程序中每個(gè)循環(huán)周期啟動(dòng)一次A/D轉(zhuǎn)換,啟動(dòng)信號(hào)由C7口輸出,將讀入的數(shù)據(jù)放到特定的存儲(chǔ)單元FRE(或AMP)中,供延時(shí)(或幅值輸出)時(shí)使用。本次實(shí)驗(yàn)ADC0809芯片的輸出八位數(shù)據(jù)線連到了8255端口B,通過(guò)端口B讀入。模擬輸入量Vin通過(guò)電位計(jì)從0~5V無(wú)極可調(diào),對(duì)應(yīng)的數(shù)字輸出量N從00H~FFH變化。調(diào)頻:改變波形子程序中的各個(gè)數(shù)據(jù)輸出延時(shí)時(shí)間,就可改變整個(gè)波形的頻率。延時(shí)時(shí)間由AD0809讀入的數(shù)據(jù)控制。調(diào)幅:在波形子程序中給DA輸出值乘以一個(gè)增益,改變?cè)鲆娴拇笮〖纯筛淖兎?。增益由AD0809讀入的數(shù)據(jù)控制。調(diào)頻/調(diào)幅切換:主程序設(shè)了一個(gè)幅頻標(biāo)志位FLAG_FUPIN,當(dāng)小鍵盤(pán)的4鍵按下時(shí),使FLAG_FUPIN取反(默認(rèn)標(biāo)志位=0)。波形子程序中通過(guò)判斷幅頻標(biāo)志位FLAG_FUPIN的狀態(tài),可以選擇是調(diào)頻還是調(diào)幅。部分代碼如下:(1)調(diào)頻程序代碼如下:DELAY:PUSHAXMOVDX,MY08081;調(diào)頻ADC08081的初始化OUTDX,ALMOVDX,MY08081;讀調(diào)頻ADC08081值INAL,DXMOVAH,0;AH,BH進(jìn)行初始化MOVBH,0MOVBH,50MULBH;AH中存高8位,AL中存低8位MOVBH,0FFHDIVBH;AH存放余數(shù),AL中存放商 MOVAH,0MOVBH,0AHDIVBH ;對(duì)商除以10,即相當(dāng)于把十位的數(shù)字保存到AL中,個(gè)位保存到AH中;AL=0000XXXX,AH=0000XXXXMOVCL,4SHLAL,CL;即把上邊AL中的商左移四位,將來(lái)在數(shù)碼管的十位上顯示;AL=XXXX0000,AH=0000XXXXORAL,AH;把AH中的數(shù)據(jù)加到AL的低四位中去 ;此時(shí)AL=XXXXXXXXMOVDX,MY82551_COUTDX,ALMOVBH,0HMOVAH,0PUSHCXMOVCX,001AHMULCXMOVCX,AXDELAY1: LOOPDELAY1 POPAXPOPCXRET(2)調(diào)幅程序代碼如下:AM:PUSHAXMOVDX,MY08082;讀0808值A(chǔ)L=10000010OUTDX,ALMOVDX,MY08082INAL,DX;此時(shí)AL中存儲(chǔ)08082讀入的幅值信息MOVBL,AL;把幅值信息保存在BL中MOVAH,0;AH,BH進(jìn)行初始化MOVBH,0MOVBH,50MULBH;AH中存高8位,AL中存低8位MOVBH,0FFHDIVBH;AH存放余數(shù),AL中存放商 MOVAH,0MOVBH,0AHDIVBH ;對(duì)商除以10,即相當(dāng)于把十位的數(shù)字保存到AL中,個(gè)位保存到AH中;AL=0000XXXX,AH=0000XXXXMOVCL,4SHLAL,CL;即把上邊AL中的商左移四位,將來(lái)在數(shù)碼管的十位上顯示;AL=XXXX0000,AH=0000XXXXORAL,AH;把AH中的數(shù)據(jù)加到AL的低四位中去 ;此時(shí)AL=XXXXXXXXMOVDX,MY8255_COUTDX,ALMOVBH,0HPOPAXRET第四章系統(tǒng)調(diào)試過(guò)程及結(jié)果此次設(shè)計(jì)波形發(fā)生器是我們?cè)趯W(xué)習(xí)匯編以來(lái)接觸到的比較大的程序。無(wú)論用何種程序書(shū)寫(xiě),理清思路是關(guān)鍵。因此,從拿到題目開(kāi)始,我們花了很多時(shí)間來(lái)對(duì)設(shè)計(jì)波形發(fā)生器的硬件和軟件進(jìn)行了分析與思考,從中選出最好的解決方法。在系統(tǒng)調(diào)試的過(guò)程中,我們用到的一個(gè)很重要的分析過(guò)程就是先易后難,先局部后整體,先將各個(gè)波形的子程序?qū)懗鰜?lái),一一進(jìn)行測(cè)試。無(wú)誤后再寫(xiě)主程序?qū)⒏鱾€(gè)子程序整合起來(lái)。設(shè)計(jì)的過(guò)程是由易到難的,我們從實(shí)現(xiàn)最簡(jiǎn)單的波形產(chǎn)生功能開(kāi)始,逐步添加波形切換功能、小鍵盤(pán)輸入功能、無(wú)極調(diào)頻功能、無(wú)極調(diào)幅功能,整個(gè)系統(tǒng)由簡(jiǎn)至繁逐步完善。調(diào)試過(guò)程中遇到的問(wèn)題有:1.硬件的連線。硬件連好后,將方波子程序載入8086,最開(kāi)始示波器連輸出都沒(méi)有,DAC0832的片選端一直沒(méi)有被選中,我總是以為是地址的問(wèn)題,可是怎么檢查程序也是沒(méi)有理由出錯(cuò)的,最后發(fā)現(xiàn)DAC0832的WR端虛接了,軟件畫(huà)圖容易出現(xiàn)虛接的情況,所以連線的時(shí)候一定要小心。

2.小鍵盤(pán)控制,這也是整個(gè)程序中最核心的部分。這個(gè)子程序加在程序的最前面的,如果沒(méi)有掃描到鍵值,整個(gè)程序就會(huì)陷入死循環(huán),不會(huì)有任何輸出變化。要使鍵盤(pán)掃描得到鍵值,我參考了實(shí)驗(yàn)指導(dǎo)書(shū)上的小鍵盤(pán)控制,先把小鍵盤(pán)掃描的程序單獨(dú)給出來(lái),看能否顯示數(shù)字,結(jié)果并不能正常顯示,反復(fù)檢查調(diào)試以后,修改了鍵值的存儲(chǔ)方式以及延時(shí),將其修改后,小鍵盤(pán)方面能正常掃描了。

3.其實(shí)最復(fù)雜的是將數(shù)碼管顯示和小鍵盤(pán)掃描整合在一起。數(shù)碼管顯示問(wèn)題一直很復(fù)雜,總是不能正常的顯示,明明小鍵盤(pán)Y端有變化,表明有鍵按下,但是數(shù)碼管就是不能將要顯示的數(shù)平穩(wěn)地顯示,剛開(kāi)始只顯示零,后來(lái)經(jīng)修改后,會(huì)偶爾顯示一下幅值或頻率但又立馬變了,并且顯示的數(shù)字也不正確,貌似會(huì)和之前顯示的數(shù)字有重雙影。查唐都的實(shí)驗(yàn)說(shuō)明得知,數(shù)碼管只提供了一個(gè)8位數(shù)據(jù)端口,一次只能讓一個(gè)數(shù)碼管顯示數(shù)據(jù),然后顯示過(guò)程特別地快,基本上看不到想要的結(jié)果,并且閃爍得特別厲害。經(jīng)過(guò)反復(fù)一直地查找修改,終于發(fā)現(xiàn),有兩個(gè)數(shù)碼管顯示的內(nèi)容重疊了,原來(lái)是要顯示的兩個(gè)存儲(chǔ)單元的地址弄混了,并且延時(shí)也有問(wèn)題。但是數(shù)碼管的延時(shí)又涉及到波形每個(gè)輸出點(diǎn)的延時(shí),所以將波形產(chǎn)生方面,我改用了采樣數(shù)字量表,使所有的波形產(chǎn)生都簡(jiǎn)化了,同時(shí)也使延時(shí)更短,改為增加循環(huán)次數(shù),并且使數(shù)碼管顯示也加入循環(huán)里,這樣利用視覺(jué)暫留,就能看到同時(shí)顯示幅值和頻率。

4.在小鍵盤(pán)實(shí)現(xiàn)中還出現(xiàn)了一個(gè)很重要的問(wèn)題,就是在執(zhí)行到對(duì)應(yīng)的波形時(shí)要怎么樣跳出然后執(zhí)行到另外一個(gè)波形里面去。原本我想多設(shè)置幾個(gè)按鍵,4個(gè)負(fù)責(zé)選擇波形,4個(gè)負(fù)責(zé)調(diào)幅調(diào)頻,還要加一個(gè)退出按鍵,每輸出一個(gè)周期就掃描一次,可是這樣按鍵太多了程序顯得臃腫,并且沒(méi)有波形的情況調(diào)節(jié)頻率也是沒(méi)有意義的,而且一個(gè)周期的時(shí)間,很有可能使你的按鍵落空,沒(méi)有掃描進(jìn)去。最后決定只用5個(gè)鍵。沒(méi)有波形時(shí)4個(gè)按鍵選擇波形,每次執(zhí)行完一個(gè)點(diǎn)后再重新鍵盤(pán)掃描,此時(shí)那4個(gè)鍵又代表調(diào)幅和調(diào)頻,而4鍵從始至終設(shè)置為退出鍵,只要任何時(shí)候掃描到此鍵就返回初始狀態(tài),重新進(jìn)入波形選擇,這樣就實(shí)現(xiàn)了波形的切換,又使按鍵有效率更高,而且按鍵數(shù)量也很少。

5.方波和三角波的波形產(chǎn)生的程序并不難。鋸齒波就是截取三角波的一半,而正弦波,我找到的正弦波采樣值序列表都很長(zhǎng),而且值都比較大,所以最后,我用計(jì)算器在0~2π內(nèi)取了40個(gè)點(diǎn)的正弦值。最后在調(diào)節(jié)幅值的時(shí)候,當(dāng)調(diào)到最大幅值時(shí),有兩種波形失真了,尤其正弦波和三角波形被截頂了。但是我觀察到鋸齒波卻能正常顯示,原來(lái)鋸齒波的采樣數(shù)字量表的最大值比較小,經(jīng)放大最大倍數(shù)后也沒(méi)有超出范圍。這可能是因?yàn)榉糯蠛笳也ǖ淖畲笾狄呀?jīng)超出了運(yùn)放輸出的最大電壓,所以導(dǎo)致截頂失真。所以我將數(shù)字量的值整體縮小了,最后總算達(dá)到滿意的效果。不足和改進(jìn):1.所產(chǎn)生的頻率范圍較窄。應(yīng)盡量減少延時(shí)拓寬頻率。2.幅值調(diào)節(jié)范圍不夠大。3.產(chǎn)生的波形不是理想狀態(tài)。特別是方波,上下跳變時(shí),總會(huì)有斷點(diǎn)。波形有噪聲,不是理想的波形。4.由于波形每周期之后要讀端口,與下一個(gè)周期之間有一定延時(shí)誤差。第五章收獲與體會(huì)本次課程設(shè)計(jì)在面臨考試的巨大壓力和編程難度的雙重壓力下終于完成了。這讓我對(duì)于微機(jī)原理與接口技術(shù)這門(mén)課程又有了更深的了解,尤其是匯編語(yǔ)言的運(yùn)用。這是一次很好的實(shí)踐的機(jī)會(huì),將我們之前幾個(gè)星期做的微機(jī)原理與接口技術(shù)實(shí)驗(yàn)的軟件和硬件部分都結(jié)合起來(lái),靈活的運(yùn)用,鍛煉我們學(xué)以致用,解決實(shí)際問(wèn)題的能力。我在此次課程設(shè)計(jì)中受益匪淺,收獲良多。本次設(shè)計(jì)我是用仿真完成的,因?yàn)樯蠈W(xué)期在模電數(shù)電課程設(shè)計(jì)中也使用到了protues軟件,所以這次的設(shè)計(jì),對(duì)于protues的使用我一點(diǎn)也不陌生。但是,這次的仿真比起以前模電數(shù)電仿真要復(fù)雜多了。因?yàn)檫@次我選擇的信號(hào)發(fā)生器重點(diǎn)就是匯編語(yǔ)言程序的編寫(xiě)和調(diào)試,程序出現(xiàn)的錯(cuò)誤比硬件出現(xiàn)的錯(cuò)要難找的多,尤其是邏輯錯(cuò)誤,有的時(shí)候看都看不出來(lái)。但是我還是比較喜歡匯編語(yǔ)言的,可能是對(duì)C已經(jīng)忘得差不多了的緣故吧,腦子里只有匯編。匯編是一門(mén)很原始的語(yǔ)言,但是也是一門(mén)很有用的語(yǔ)言,通過(guò)這么一個(gè)比較大的實(shí)驗(yàn),讓我對(duì)匯編的理解有了進(jìn)一步的加深。雖然中間過(guò)程有苦有煎熬,但是還是很值得回味的,因?yàn)槲覀兙褪窃谶@樣一次又一次煎熬中才熬出了頭,才不斷成長(zhǎng)為更加強(qiáng)大的人。

在這次設(shè)計(jì)中,一開(kāi)始想的比較簡(jiǎn)單和樂(lè)觀,因?yàn)樵谧鑫C(jī)原理編程實(shí)驗(yàn)的時(shí)候,我們接觸的都是幾十行到一百來(lái)行的小程序,寫(xiě)完一檢查就能比較輕松地查找到錯(cuò)誤,但是這次的題目重點(diǎn)就在編程。一開(kāi)始,我以為這些程序不會(huì)錯(cuò),電路也比較簡(jiǎn)單。所以當(dāng)我很快的連好電路,再幾個(gè)子程序都加載進(jìn)去的時(shí)候,就完全不是我想象的那樣輸出。而且從整個(gè)電路分析,我也找不到問(wèn)題到底出在哪里。我必須要一步一步地再回頭檢查錯(cuò)誤。這樣有可能還檢查不出來(lái),最后我只能從一個(gè)小模塊開(kāi)始重新連電路,再將該模塊對(duì)應(yīng)的程序加載,有問(wèn)題再改。就這樣,一步一步,只有解決了局部的問(wèn)題,才能為解決整體的問(wèn)題提供可能。

在小鍵盤(pán)和數(shù)碼管顯示的模塊,確實(shí)一度陷入瓶頸,不知道問(wèn)題出在哪里,為什么就是不能顯示。我去了幾次實(shí)驗(yàn)室,想和大家交流一下,但是選擇這個(gè)題目的人真的很少,最后找到幾個(gè)同學(xué),但是他們迫于考試壓力要么放棄了仿真,要么放棄了小鍵盤(pán),當(dāng)時(shí)的情緒真是非常抑郁,難道就真的做不出來(lái)了嗎?怎么可能?就是不相信,感覺(jué)就差一點(diǎn)點(diǎn),就要實(shí)現(xiàn)了,因?yàn)閳?jiān)持,因?yàn)閳?jiān)信,因?yàn)閳?jiān)定,哪怕這個(gè)茬再難找也會(huì)原形畢露的。當(dāng)看到數(shù)碼管顯示正常,自己的心血終于有了結(jié)果,內(nèi)心的喜悅溢于言表。有句話說(shuō)得對(duì):失敗就是離成功最近的地方,邁過(guò)去了就是另一片天。

這次的課程設(shè)計(jì),我要十分感謝同學(xué)們給予我的幫助,還有李志明老師的指導(dǎo),讓我在短短的幾個(gè)星期里學(xué)到了很多很實(shí)用的知識(shí),通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才是真正的知識(shí),才能提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。而且在做課程設(shè)計(jì)的過(guò)程中,不僅是考驗(yàn)自己所學(xué)的《微機(jī)原理》知識(shí),更是要鍛煉自己的分析問(wèn)題的能力和解決實(shí)際問(wèn)題的能力,而在此次課程設(shè)計(jì)過(guò)程中得到了充分的體現(xiàn)。雖然在設(shè)計(jì)的過(guò)程遇到了各種各樣的問(wèn)題,但同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,通過(guò)這次課程設(shè)計(jì),把以前所學(xué)過(guò)的知識(shí)重新溫習(xí),加以鞏固。

這回顧起此次課程設(shè)計(jì),我收獲頗豐,不僅鞏固了《微機(jī)原理》的知識(shí),而且鍛煉了動(dòng)手設(shè)計(jì),解決實(shí)際問(wèn)題的能力,同時(shí)讓我堅(jiān)定了一個(gè)信念,學(xué)習(xí)上,沒(méi)有攀登不了的山峰,即使山重水復(fù)疑無(wú)路,只要堅(jiān)持下去,也會(huì)看到柳暗花明又一村。在今后的學(xué)習(xí)中,我也會(huì)將以這樣的精神面對(duì)所有的困難。

參考文獻(xiàn)[1]周荷琴,吳秀清.微型計(jì)算機(jī)原理與接口技術(shù).合肥:中國(guó)科學(xué)技術(shù)大學(xué)出版社,2008.6[2]唐都科教儀器開(kāi)發(fā)有限公司.32位微機(jī)原理與接口技術(shù)實(shí)驗(yàn)教程.[3]陳明義.數(shù)字電子技術(shù)基礎(chǔ).長(zhǎng)沙.中南大學(xué)出版社,2008.9[4]《TD-PIT+實(shí)驗(yàn)教程》

[5]《TD-PIT+用戶手冊(cè)》

附錄1匯編語(yǔ)言源程序代碼;****************根據(jù)查看端口資源修改下列符號(hào)值*******************IOY0EQU0C400H;片選IOY0對(duì)應(yīng)的端口始地址IOY1EQU0C440H;片選IOY1對(duì)應(yīng)的端口始地址IOY2EQU0C480H;片選IOY2對(duì)應(yīng)的端口始地址IOY3EQU0C4C0H;片選IOY3對(duì)應(yīng)的端口始地址;*****************************************************************MY8255_AEQUIOY0+00H*4;8255的A口地址MY8255_BEQUIOY0+01H*4;8255的B口地址MY8255_CEQUIOY0+02H*4;8255的C口地址MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址MY82551_AEQUIOY3+00H*4;82551的A口地址MY82551_BEQUIOY3+01H*4;82551的B口地址MY82551_CEQUIOY3+02H*4;82551的C口地址MY82551_MODEEQUIOY3+03H*4;82551的控制寄存器地址MY08081EQUIOY1+00H*4;調(diào)頻ADC0808的地址MY08082EQUIOY2+00H*4;調(diào)幅ADC0808的地址STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATASEGMENTSINDB80H,83H,86H,89H,8DH,90H,93H,96H;正弦函數(shù)表DB99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEHDB0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5HDB0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8HDB0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9HDB0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5HDB0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDHDB0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDHDB0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6HDB0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAHDB0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAHDB0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7HDB0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1HDB0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99HDB96H,93H,90H,8DH,89H,86H,83H,80HDB80H,7CH,79H,78H,72H,6FH,6CH,69HDB66H,63H,60H,5DH,5AH,57H,55H,51HDB4EH,4CH,48H,45H,43H,40H,3DH,3AHDB38H,35H,33H,30H,2EH,2BH,29H,27HDB25H,22H,20H,1EH,1CH,1AH,18H,16HDB15H,13H,11H,10H,0EH,0DH,0BH,0AHDB09H,08H,07H,06H,05H,04H,03H,02HDB02H,01H,00H,00H,00H,00H,00H,00HDB00H,00H,00H,00H,00H,00H,01H,02HDB02H,03H,04H,05H,06H,07H,08H,09HDB0AH,0BH,0DH,0EH,10H,11H,13H,15HDB16H,18H,1AH,1CH,1EH,20H,22H,25HDB27H,29H,2BH,2EH,30H,33H,35H,38HDB3AH,3DH,40H,43H,45H,48H,4CH,4EHDB51H,55H,57H,5AH,5DH,60H,63H,66HDB69H,6CH,6FH,72H,76H,79H,7CH,80HDATAENDSCODESEGMENTASSUMECS:CODE,SS:STACK1,DS:DATASTART:MOVAX,STACK1;設(shè)置段地址MOVSS,AXMOVAX,DATAMOVDS,AXMOVDX,MY8255_MODE;8255初始化MOVAL,82H;AL=10000010A口輸出,B口輸入,C口輸出,AB都工作在方式0OUTDX,ALMOVDX,MY82551_MODE;82551初始化MOVAL,82H;AL=10000010A口輸出,B口輸入,C口輸出,AB都工作在方式0OUTDX,AL;三角波發(fā)生模塊SANJIAO:CALLAM;進(jìn)行幅度調(diào)制 MOVAL,00H ;對(duì)AL中的數(shù)據(jù)進(jìn)行初始化UP:MOVDX,MY8255_A;上升 ;信號(hào)發(fā)生器系統(tǒng)開(kāi)始時(shí)輸出為0MOVDI,AXOUTDX,ALCALLDELAY;進(jìn)行頻率調(diào)制MOVAX,DIPUSHAXMOVDX,MY8255_B ;讀入8255B口信息,看是否有按鍵按下并進(jìn)行波形轉(zhuǎn)換INAL,DXNOTAL;由于B口的信息按下為低電平,故對(duì)AL中數(shù)取反CMPAL,02H;按下第二行鍵轉(zhuǎn)入正弦波JEZHENGXIANBOCMPAL,04H ;按下第三行鍵轉(zhuǎn)入鋸齒波JEJUCHIBOCMPAL,08H ;按下第四行鍵轉(zhuǎn)入方波JEFBPOPAXINCALCMPAL,BL;和最大值比較JBUP;小于最大值則執(zhí)行循環(huán)DON:MOVDI,AX;下降MOVDX,MY8255_AOUTDX,ALCALLDELAYMOVAX,DIPUSHAXMOVDX,MY8255_B ;判斷鍵值按下的情況INAL,DXNOTALCMPAL,02HJEZHENGXIANBOCMPAL,04HJEJUCHIBOCMPAL,08HJEFBPOPAXDECALCMPAL,00H;和最小值比較JADON;高于最小值則執(zhí)行循環(huán)JMPSANJIAO;重新進(jìn)行三角波發(fā)生;鋸齒波發(fā)生模塊JUCHIBO:CALLAM ;進(jìn)行幅度調(diào)制PUSHAXMOVAL,BL;將幅度的最大值保存在AL中DOWN:MOVDX,MY8255_A;輸出鋸齒波OUTDX,ALMOVDI,AX ;保存AX的值CALLDELAY ;進(jìn)行頻率調(diào)制MOVDX,MY8255_B;判斷鍵值按下的情況INAL,DXNOTALCMPAL,01HJESANJIAOCMPAL,02HJEZHENGXIANBOCMPAL,08HJEFB

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論