九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

信號(hào)發(fā)生器功能程序設(shè)計(jì)_微機(jī)原理課程設(shè)計(jì)報(bào)告.doc

  • 資源ID:116542490       資源大?。?span id="24d9guoke414" class="font-tahoma">352.33KB        全文頁(yè)數(shù):41頁(yè)
  • 資源格式: DOC        下載積分:20積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要20積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說(shuō)明有答案則都視為沒有答案,請(qǐng)知曉。

信號(hào)發(fā)生器功能程序設(shè)計(jì)_微機(jī)原理課程設(shè)計(jì)報(bào)告.doc

微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與綜合實(shí)驗(yàn) 微機(jī)原理課程設(shè)計(jì)報(bào)告課題名稱: 信號(hào)發(fā)生器功能程序設(shè)計(jì)學(xué) 院: 姓 名: 指導(dǎo)老師: 日 期: 目錄目錄1第一章概要21.1 設(shè)計(jì)目的21.2 課程設(shè)計(jì)內(nèi)容及要求21.3 所需芯片及硬件簡(jiǎn)介21.3.1 8255A 特性簡(jiǎn)介21.3.2 D /A0832功能簡(jiǎn)介31.3.3A /D0809功能簡(jiǎn)介31.3.4唐都小鍵盤簡(jiǎn)介4第二章總體設(shè)計(jì)方案52.1 設(shè)計(jì)思想論述52.2 程序流程圖62.3 電路原理圖7第三章典型模塊分析83.1 波形產(chǎn)生模塊83.1.1 方波93.1.2 三角波93.1.3 鋸齒波103.1.4 正弦波123.2 小鍵盤模塊133.3 調(diào)幅調(diào)頻模塊14第四章系統(tǒng)調(diào)試過(guò)程及結(jié)果16第五章收獲與體會(huì)17參考文獻(xiàn)18附錄1 匯編語(yǔ)言源程序代碼19附錄2 C語(yǔ)言源程序代碼33第一章 概要1.1 設(shè)計(jì)目的 信號(hào)發(fā)生器的功能設(shè)計(jì)結(jié)合了軟硬件的知識(shí),這樣的一個(gè)課程設(shè)計(jì)促使我們主動(dòng)去找尋資料,自主學(xué)習(xí)更多的知識(shí)。尤其重要的是設(shè)計(jì)本身是一種實(shí)踐,將課本知識(shí)應(yīng)用到設(shè)計(jì)中,驗(yàn)證并且進(jìn)一步熟悉它從而獲得新的領(lǐng)悟,這是只啃書本所不能達(dá)成的好處。信號(hào)發(fā)生器的設(shè)計(jì)尤其加深我們對(duì)信號(hào)發(fā)生的理解,對(duì)以8086cpu為中心的各芯片功能的了解以及對(duì)微機(jī)原理和匯編語(yǔ)言編程有了更深的體會(huì)。1.2 課程設(shè)計(jì)內(nèi)容及要求(1)、分別用C語(yǔ)言和匯編語(yǔ)言編程完成硬件接口功能設(shè)計(jì);(2)、硬件電路基于80 x86微機(jī)的接口電路;(3)、程序功能要求:小鍵盤給定、數(shù)碼管或屏幕顯示,并產(chǎn)生對(duì)應(yīng)信號(hào)波形(D/A)輸出(信號(hào)波形包括正弦波、三角波、方波、鋸齒波)、輸出信號(hào)波形幅度、頻率可調(diào)。(按鍵數(shù)量盡量少)。1.3 所需芯片及硬件簡(jiǎn)介1.3.1 8255A 特性簡(jiǎn)介(1)具有24條輸入/輸出引腳、可編程的通用并行輸入/輸出接口電路。它是一片使用單一+5V電源的40腳雙列直插式大規(guī)模集成電路。8255A的通用性強(qiáng),使用靈活,通過(guò)它CPU可直接與外設(shè)相連(2)8255A在使用前要寫入一個(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.2 D /A0832功能簡(jiǎn)介DAC0832是采用CMOS工藝制成的單片電流輸出型8位數(shù) / 模轉(zhuǎn)換器。DAC0832的引腳功能說(shuō)明如下:D0D7 :數(shù)字信號(hào)輸入端CS:片選信號(hào),低電平有效WR:寫信號(hào)1,低電平有效OUT:DAC電流輸出端圖1.1 唐都實(shí)驗(yàn)箱D /A0832接線圖1.3.3 A /D0809功能簡(jiǎn)介ADC0809是采樣頻率為8位的、以逐次逼近原理進(jìn)行模數(shù)轉(zhuǎn)換的器件。其內(nèi)部有一個(gè)8通道多路開關(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.4 唐都小鍵盤簡(jiǎn)介唐都實(shí)驗(yàn)箱中提供了4行4列16個(gè)按鍵,列選擇信號(hào)X1-X4,行掃描信號(hào)Y1-Y4。圖1.3 唐都實(shí)驗(yàn)箱小鍵盤接線圖第二章 總體設(shè)計(jì)方案2.1 設(shè)計(jì)思想論述(1)波形產(chǎn)生:通過(guò)匯編語(yǔ)言編寫各個(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)換成模擬量輸出,即可得各種波形。具體方案見第三章3.1節(jié)。(2)波形切換:用小鍵盤輸入進(jìn)行波形的選擇,按鍵03分別對(duì)應(yīng)方波、三角波、鋸齒波和正弦波。每個(gè)波形周期輸出后,調(diào)用鍵盤查詢子程序,判斷有無(wú)按鍵按下,沒有則繼續(xù)輸出下一周期,否則轉(zhuǎn)到相應(yīng)的波行子程序上??呻S時(shí)進(jìn)行波形間的切換。具體方案見第三章3.2節(jié)。(3)無(wú)極調(diào)頻:改變波形子程序中的各個(gè)數(shù)據(jù)輸出延時(shí)時(shí)間,就可改變整個(gè)波形的頻率,延時(shí)越短頻率越高。而延時(shí)時(shí)間長(zhǎng)短可由外部輸入決定,通過(guò)A/D0809將電位計(jì)(05V)的模擬量轉(zhuǎn)化成數(shù)字量(00FF)作為延時(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)頻。具體方案見第三章3.3、3.4節(jié)。(4)無(wú)極調(diào)幅:改變波形子程序中DA輸出值的大小即可改變幅值,可以在原數(shù)據(jù)基礎(chǔ)上乘以一個(gè)增益。而增益可由外部輸入,原理與調(diào)頻相似,通過(guò)A/D0809輸入一個(gè)數(shù)字量(00FF)。按鍵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é)頻率和幅度的功能。具體方案見第三章3.3、3.4節(jié)。(5)開始結(jié)束:通過(guò)掃描小鍵盤,按下5鍵則退出。2.2 程序流程圖開始NYNY結(jié)束初始化8255調(diào)用ccscan子程序并判斷,無(wú)鍵按下則循環(huá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?鍵盤掃描子程序,鍵值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ù)字量(00HFFH)。(2)判斷幅頻標(biāo)志位FLAG_FUPIN,為0則把AD輸入的數(shù)字量存入頻率值空間FRE,否則存入幅值空間AMP。(3)輸出波形的一個(gè)周期。(4)調(diào)用子程序CCSCAN,判斷小鍵盤有無(wú)按鍵按下,無(wú)則繼續(xù)步驟(1),有則返回主程序。流程圖如圖3.1所示。子程序調(diào)用啟動(dòng)AD0809,讀入數(shù)據(jù)到ALFlag_fupin=0?保存到頻率,F(xiàn)reAL保存到幅值,AmpAL輸出一個(gè)周期波形小鍵盤有鍵按下?YNYN延時(shí)消抖小鍵盤有鍵按下?NY子程序返回圖3.1 波形子程序流程圖3.1.1 方波 方波的產(chǎn)生先向DA0832輸出一個(gè)低電平(00H),并延時(shí)一段時(shí)間。再輸出一個(gè)高電平(此處直接用AMP的值作為高電平,AMP是外部AD輸入的幅值增益),延時(shí)一段相同時(shí)間,就是矩形波的一個(gè)周期。 (1)一個(gè)周期波形的代碼: NEXT1_1: MOV DX,DA0832 ;寫00H,輸出低電平 MOV AL,00H OUT DX,AL CALL DELAY1;延時(shí) MOV DX,DA0832 ;寫 AMP,輸出高電平 MOV AL,AMP ;AMP=00HFFH,默認(rèn)值 7FH OUT DX,AL CALL DELAY1;延時(shí)(2)延時(shí)子程序代碼: DELAY1 PROC NEAR ;軟件延時(shí)子程序 PUSH CX PUSH AX MOV CH,FRE ;讀取頻率值,F(xiàn)RE=00HFFH AND CH,0F0H ADD CH,0FH ;CH的值受FRE的控制,改變FRE則改變延時(shí)時(shí)間 MOV CL,0FFH DD1: MOV AX,0FF00H DD2: DEC AX JNZ DD2 LOOP DD1 POP AX POP CX RET DELAY1 ENDP3.1.2 三角波三角波從最小值開始逐漸上升,到達(dá)最大值之后再逐漸減小到最小。因此先將最小值(00H)放到BL,輸出并延時(shí),對(duì)BL加一,再輸出并延時(shí),達(dá)到最大值后就對(duì)BL依次減一,輸出并延時(shí),直到BL=00H,則為一個(gè)周期波形。因此三角波有兩個(gè)過(guò)程。一個(gè)周期波形的代碼如下: NEXT1_2: MOV BL,00H ;BL賦最小值00H UP1: MOV AL,AMP ;AL幅值增益AMP, AMP=00HFFH AND AL,0F0H SHR AL,4 ; AL=00H0FHMUL BL ; ALBL*AL MOV DX,DA0832 ;啟動(dòng)D/A轉(zhuǎn)換 OUT DX,AL ;輸出AL CALL DELAY2 INC BL ;BL加一 CMP BL,25H ;判斷BL是否加到最大值了 JNE UP1 DOWN: MOV AL,AMP ;AL幅值增益AMP ,AMP=00HFFH AND AL,0F0H SHR AL,4 ; AL=00H0FHMUL BL; ALBL*ALMOV DX,DA0832 OUT DX,AL CALL DELAY2 DEC BL ;BL減一 CMP BL,00H;判斷BL是否減到最小值了 JNE DOWN延時(shí)子程序與方波類似,此處不再贅述。局部流程圖如圖3.2所示。3.1.3 鋸齒波 鋸齒波與三角波類似,只是鋸齒波到達(dá)最大值之后,直接跳到最小值。因此鋸齒波只有對(duì)BL依次加一的過(guò)程。一個(gè)周期波形的代碼如下:NEXT1_3: MOV BL,00H ;BL賦最小值00H UP2: MOV AL,AMP ;AL幅值增益AMP, AMP=00HFFH AND AL,0F0H SHR AL,4 ; AL=00H0FH MUL BL; ALBL*AL MOV DX,DA0832 ;啟動(dòng)D/A轉(zhuǎn)換 OUT DX,AL;輸出AL CALL DELAY2 INC BL;BL加一 CMP BL,25H;判斷BL是否加到最大值了 JNE UP2 MOV BL,00H;BL加到最大之后直接賦給最小值00H MOV AL,AMP AND AL,0F0H SHR AL,4 MUL BL; ALBL*AL MOV DX,DA0832 OUT DX,AL CALL DELAY2延時(shí)子程序與方波類似,此處不再贅述。局部流程圖如圖3.3所示。BL已到最大?延時(shí)BL*增益AL,輸出ALBL=00HBL加一NYBL已到最?。垦訒r(shí)BL*增益AL,輸出ALBL減一NY圖3.2 三角波一周期流程圖BL=00H延時(shí)BL*增益AL,輸出ALBL*增益AL,輸出ALBL=00H延時(shí)BL加一BL已到最大?NY圖3.3 鋸齒波一周期流程圖3.1.4 正弦波正弦波是利用正弦表(見附錄 代碼段)輸出的,即將正弦表中的數(shù)值一一輸出并延時(shí)。一個(gè)周期波形的代碼: NEXT1_4: LEA SI,SIN ;指向正弦表中的第一個(gè)數(shù)據(jù) MOV CX,255 UP: MOV BL,AMP ;BL幅值增益AMP, AMP=00HFFH AND BL,0F0H SHR BL,4 ;AMP=00HFFH ,BL=00H0F MOV AL,SI ;讀取正弦表中的一個(gè)數(shù)據(jù) SHR AL,2 MUL BL ; AL AL* BL MOV DX,DA0832 ;啟動(dòng)D/A轉(zhuǎn)換 OUT DX,AL ;輸出AL CALL DELAY3 INC SI ;指向表中的下一個(gè)數(shù)據(jù) LOOP UP延時(shí)子程序與方波類似,此處不再贅述。局部流程圖如圖3.4所示。延時(shí)讀表中的一個(gè)數(shù)據(jù)到AL取正弦表首地址AL*增益AL,輸出AL表地址加一已到表末?NY圖3.4 正弦波一周期流程圖3.2 小鍵盤模塊小鍵盤用到兩個(gè)子程序(ccscan和scan)。(1) ccscan子程序只是一個(gè)輔助程序,用于判斷當(dāng)前小鍵盤是否有鍵按下,有則全零標(biāo)志位ZF=0(運(yùn)算結(jié)果不為0),無(wú)鍵按下則ZF=1(運(yùn)算結(jié)果為0)。子程序代碼如下: CCSCAN PROC NEAR ;掃描是否有按鍵閉合子程序 MOV AL,00H MOV DX,MY8255_A ;將4列全選通,X1X4置0 OUT DX,AL MOV DX,MY8255_C IN AL,DX ;讀Y1Y4 NOT AL AND AL,0FH ;取出Y1Y4的反值 RET CCSCAN ENDP(2) scan功能為當(dāng)確定小鍵盤有鍵按下則一列一列掃描鍵盤,判斷是哪一列哪一行的鍵被按下了,并把鍵值保存到數(shù)據(jù)段的key空間去。子程序代碼如下: SCAN PROC NEAR MOV CH,0FEH MOV CL,00H ;設(shè)置當(dāng)前檢測(cè)的是第幾列 COLUM: MOV AL,CH ;選取一列,將X1X4中一個(gè)置0 MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C ;讀Y1Y4,用于判斷是哪一行按鍵閉合 IN AL,DX L1: TEST AL,01H ;是否為第1行 JNZ L2 ;不是則繼續(xù)判斷 MOV AL,00H ;設(shè)置第1行第1列的對(duì)應(yīng)的鍵值 JMP KCODE L2: TEST AL,02H ;是否為第2行 JNZ L3 ;不是則繼續(xù)判斷 MOV AL,04H ;設(shè)置第2行第1列的對(duì)應(yīng)的鍵值 JMP KCODE L3: TEST AL,04H ;是否為第3行 JNZ L4 ;不是則繼續(xù)判斷 MOV AL,08H ;設(shè)置第3行第1列的對(duì)應(yīng)的鍵值 JMP KCODE L4: TEST AL,08H ;是否為第4行 JNZ NEXT ;不是則繼續(xù)判斷 MOV AL,0CH ;設(shè)置第4行第1列的對(duì)應(yīng)的鍵值 JMP KCODE NEXT: INC CL ;當(dāng)前檢測(cè)的列數(shù)遞增 MOV AL,CH TEST AL,08H ;檢測(cè)是否掃描到第4列 JZ KERR ;是則跳回到開始處 ROL AL,1 ;沒檢測(cè)到第4列則準(zhǔn)備檢測(cè)下一列 MOV CH,AL JMP COLUM KCODE: ADD AL,CL ;將第1列的值加上當(dāng)前列數(shù),確定按鍵值 MOV KEY,AL ;保存按鍵值到key空間 KERR: RET SCAN ENDP3.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)ADC 0809芯片的輸出八位數(shù)據(jù)線連到了8255端口B,通過(guò)端口B讀入。模擬輸入量Vin通過(guò)電位計(jì)從05V無(wú)極可調(diào),對(duì)應(yīng)的數(shù)字輸出量N從00HFFH變化。調(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)小鍵盤的4鍵按下時(shí),使FLAG_FUPIN取反(默認(rèn)標(biāo)志位=0)。波形子程序中通過(guò)判斷幅頻標(biāo)志位FLAG_FUPIN的狀態(tài),可以選擇是調(diào)頻還是調(diào)幅。部分代碼如下:(1)主程序中的切換部分 GETKEY3: CALL SCAN ;有鍵按下,調(diào)用鍵盤掃描子程序 MOV AL,KEY CMP AL,08H ;判斷是否為調(diào)幅 /調(diào)頻鍵 JNE LOOP1 ;不是則返回判斷波形或退出 NOT BYTE PTRFLAG_FUPIN ;是,則將幅頻標(biāo)志位取反 CMP FLAG_FUPIN,0 JNE TIAOFU MOV DX,OFFSET MES5 ;屏幕顯示切換到調(diào)頻狀態(tài) MOV AH,09H INT 21H JMP JIXU TIAOFU: MOV DX,OFFSET MES6 ; 屏幕顯示切換到調(diào)幅狀態(tài) MOV AH,09H INT 21H JIXU: MOV BL,FLAG_BOXING MOV KEY,BL ;將波形對(duì)應(yīng)的鍵值存回 KEY中 JMP LOOP1 ;返回判斷波形(2)波形子程序部分 MOV DX,MY8255_MODE ; 通過(guò)8255的C7口發(fā)出一個(gè)低電平 MOV AL,00001110B OUT DX,AL;啟動(dòng)AD0809 MOV DX,MY8255_B ;讀8255B口數(shù)據(jù) IN AL,DX MOV BL,FLAG_FUPIN ;判斷幅頻標(biāo)志位,默認(rèn)為0 CMP BL,0 JE PIN_1 ; 為0則跳轉(zhuǎn)到PIN_1 MOV AMP,AL ; 不為0則存為振幅值 JMP NEXT1_1 PIN_1: MOV FRE,AL; 為0則存為頻率值流程圖見圖2.1和圖3.1第四章 系統(tǒng)調(diào)試過(guò)程及結(jié)果此次設(shè)計(jì)波形發(fā)生器是我們?cè)趯W(xué)習(xí)匯編以來(lái)接觸到的比較大的程序。無(wú)論用何種程序書寫,理清思路是關(guān)鍵。因此,從拿到題目開始,我們花了很多時(shí)間來(lái)對(duì)設(shè)計(jì)波形發(fā)生器的硬件和軟件進(jìn)行了分析與思考,從中選出最好的解決方法。在系統(tǒng)調(diào)試的過(guò)程中,我們用到的一個(gè)很重要的分析過(guò)程就是先易后難,先局部后整體,先將各個(gè)波形的子程序?qū)懗鰜?lái),一一進(jìn)行測(cè)試。無(wú)誤后再寫主程序?qū)⒏鱾€(gè)子程序整合起來(lái)。設(shè)計(jì)的過(guò)程是由易到難的,我們從實(shí)現(xiàn)最簡(jiǎn)單的波形產(chǎn)生功能開始,逐步添加波形切換功能、小鍵盤輸入功能、無(wú)極調(diào)頻功能、無(wú)極調(diào)幅功能,整個(gè)系統(tǒng)由簡(jiǎn)至繁逐步完善。最先遇到的比較大的困難是小鍵盤的輸入,前后試過(guò)兩個(gè)方案,最終以唐都提供的參考程序?yàn)榛A(chǔ),進(jìn)過(guò)修改得到了現(xiàn)在使用的鍵盤掃描子程序,效果很好。整個(gè)過(guò)程中最難的是實(shí)現(xiàn)無(wú)級(jí)調(diào)頻和無(wú)極調(diào)幅,開始時(shí)一直無(wú)法調(diào)頻,經(jīng)過(guò)對(duì)各個(gè)部位的仔細(xì)調(diào)試分析,是0809模數(shù)轉(zhuǎn)換的問題。0809需要一個(gè)啟動(dòng)信號(hào),且轉(zhuǎn)換需要一定時(shí)間。于是我們用C口每周期輸出一啟動(dòng)信號(hào)進(jìn)行轉(zhuǎn)換。最終達(dá)到理想效果。實(shí)現(xiàn)了調(diào)頻之后,對(duì)整個(gè)程序的結(jié)構(gòu)稍加改進(jìn),引入了幅頻標(biāo)志位,實(shí)現(xiàn)了小鍵盤控制調(diào)頻/調(diào)幅的切換,從而只用一個(gè)電位計(jì)和一個(gè)小鍵盤按鍵實(shí)現(xiàn)了無(wú)極調(diào)頻和無(wú)極調(diào)幅的功能。不足和改進(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ì)的要求雖然不多,但整個(gè)設(shè)計(jì)過(guò)程是問題不斷,一波三折。整個(gè)課程設(shè)計(jì)完成之后,我在整體設(shè)計(jì)思路、硬件連結(jié)和匯編語(yǔ)言編程等方面得到了很大的收獲。設(shè)計(jì)的過(guò)程是由易到難的,我們從實(shí)現(xiàn)最簡(jiǎn)單的波形產(chǎn)生功能開始,逐步添加波形切換功能、小鍵盤輸入功能、無(wú)極調(diào)頻功能、無(wú)極調(diào)幅功能,整個(gè)系統(tǒng)由簡(jiǎn)至繁逐步完善。而程序總體流程也是三易其稿,其中有借鑒了別人的一些設(shè)計(jì)思路。第一個(gè)方案實(shí)在缺乏設(shè)計(jì)的智慧,在得到正確的指標(biāo)后就被拋棄了。第二個(gè)方案時(shí),我們把控制波形轉(zhuǎn)換的功能寄希望于用中斷實(shí)現(xiàn),而調(diào)頻變化在延時(shí)子程序中進(jìn)行,最后證實(shí)這樣子的程序流程圖將很復(fù)雜冗長(zhǎng),條理不清晰,而且用中斷實(shí)現(xiàn)時(shí)缺乏所需的硬件。最后一個(gè)方案即為當(dāng)前選擇的方案,條理清晰,程序簡(jiǎn)單,代碼也短,但是能很好實(shí)現(xiàn)所有功能。硬件連結(jié)的問題主要在使用第二個(gè)方案時(shí)出現(xiàn)的。第二個(gè)方案的中斷控制需要手動(dòng)輸入一個(gè)中斷脈沖,然后結(jié)果總是有差,最后討論得出結(jié)論是我們很難保證這個(gè)手動(dòng)輸入脈沖的合格,這個(gè)脈沖可能不夠標(biāo)準(zhǔn)。后面做最終方案時(shí),波形發(fā)生顫抖,檢查發(fā)現(xiàn)是控制波形選擇的開關(guān)處不穩(wěn)定,也算是硬件連結(jié)的問題。而波形特別是矩形波輸出時(shí),在中間總是一個(gè)斷痕,反復(fù)檢查軟件設(shè)計(jì)后也歸結(jié)為硬件內(nèi)部延時(shí)所產(chǎn)生誤差。做軟件設(shè)計(jì)時(shí)遇到的關(guān)鍵點(diǎn)也是難點(diǎn)集中到了調(diào)頻電路的選擇。第二方案時(shí),我們把調(diào)頻參數(shù)的讀取放置在延時(shí)程序,主程序不循環(huán),每一個(gè)波形都是無(wú)限循環(huán)的波形。后來(lái)得到高人指點(diǎn),我們忽略了主程序循環(huán)所會(huì)帶來(lái)的延時(shí)對(duì)波形的影響,以主程序無(wú)限循環(huán),每輸出一個(gè)周期波形讀一次調(diào)頻參數(shù)的方式進(jìn)行調(diào)頻。結(jié)果很完美。實(shí)現(xiàn)了調(diào)頻之后,對(duì)整個(gè)程序的結(jié)構(gòu)稍加改進(jìn),引入了幅頻標(biāo)志位,實(shí)現(xiàn)了小鍵盤控制調(diào)頻/調(diào)幅的切換,從而只用一個(gè)電位計(jì)和一個(gè)小鍵盤按鍵實(shí)現(xiàn)了無(wú)極調(diào)頻和無(wú)極調(diào)幅的功能。參考文獻(xiàn)1周荷琴,吳秀清.微型計(jì)算機(jī)原理與接口技術(shù).合肥:中國(guó)科學(xué)技術(shù)大學(xué)出版社,2008.62唐都科教儀器開發(fā)有限公司. 32位微機(jī)原理與接口技術(shù)實(shí)驗(yàn)教程.3陳明義.數(shù)字電子技術(shù)基礎(chǔ).長(zhǎng)沙.中南大學(xué)出版社,2008.9附錄1 匯編語(yǔ)言源程序代碼 ;*根據(jù)查看端口資源修改下列符號(hào)值* IOY0 EQU 0E400H ;片選IOY0對(duì)應(yīng)的端口始地址 IOY1 EQU 0E440H ;片選IOY1對(duì)應(yīng)的端口始地址;* DA0832 EQU IOY0+00H*4 ;DA0832的端口地址 MY8255_A EQU IOY1+00H*4 ;8255的A口地址 MY8255_B EQU IOY1+01H*4 ;8255的B口地址 MY8255_C EQU IOY1+02H*4 ;8255的C口地址 MY8255_MODE EQU IOY1+03H*4 ;8255的控制寄存器地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT STR1 DB DA0832: Please choose Wave,0AH,0DH,$ ;定義顯示的字符串 MES1 DB SHOW A SQUARE,0AH,0DH,$ MES2 DB SHOW A SANJIAO,0AH,0DH,$ MES3 DB SHOW A JUCHI,0AH,0DH,$ MES4 DB SHOW A SINE,0AH,0DH,$ MES5 DB CHANGE THE Frequence,0AH,0DH,$ MES6 DB CHANGE THE Amplitude,0AH,0DH,$ KEY DB? FLAG_BOXING DB ? FLAG_FUPIN DB 0 FRE DB 7FH AMP DB 7FH SIN DB 100, 102, 105, 107, 110, 112, 115, 117, 120, 122 DB 124, 127, 129, 132, 134, 136, 139, 141, 143, 145 DB 147, 150, 152, 154, 156, 158, 160, 162, 164, 166 DB 168, 169, 171, 173, 175, 176, 178, 179, 181, 182 DB 184, 185, 186, 187, 189, 190, 191, 192, 193, 194 DB 194, 195, 196, 197, 197, 198, 198, 199, 199, 199 DB 200, 200, 200, 200, 200, 200, 200, 200, 199, 199 DB 199, 198, 198, 197, 197, 196, 195, 194, 194, 193 DB 192, 191, 190, 189, 187, 186, 185, 184, 182, 181 DB 179, 178, 176, 175, 173, 171, 169, 168, 166, 164 DB 162, 160, 158, 156, 154, 152, 150, 147, 145, 143 DB 141, 139, 136, 134, 132, 129, 127, 124, 122, 120 DB 117, 115, 112, 110, 107, 105, 102, 100, 98, 95 DB 93, 90, 88, 85, 83, 80, 78, 76, 73, 71 DB 68, 66, 64, 61, 59, 57, 55, 53, 50, 48 DB 46, 44, 42, 40, 38, 36, 34, 32, 31, 29 DB 27, 25, 24, 22, 21, 19, 18, 16, 15, 14 DB 13, 11, 10, 9, 8, 7, 6, 6, 5, 4 DB 3, 3, 2, 2, 1, 1, 1, 0, 0, 0 DB 0, 0, 0, 0, 0, 1, 1, 1, 2, 2 DB 3, 3, 4, 5, 6, 6, 7, 8, 9, 10 DB 11, 13, 14, 15, 16, 18, 19, 21, 22, 24 DB 25, 27, 29, 31, 32, 34, 36, 38, 40, 42 DB 44, 46, 48, 50, 53, 55, 57, 59, 61, 64 DB 66, 68, 71, 73, 76, 78, 80, 83, 85, 88 DB 90, 93, 95, 98, 100 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET STR1 ;顯示提示選擇界面 MOV AH,9 INT 21H MOV DX,OFFSET MES5 ;show message MOV AH,09H INT 21H MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,10000011B ;方式0,A口、C口高四位輸出, OUT DX,AL ; B口、C口低4位輸入;無(wú)鍵按下則循環(huán)等待,有鍵按下則消抖KEYBEGIN: CALL CCSCAN ;掃描按鍵 JNZ GETKEY1 ;有鍵按下則跳置GETKEY1 JMP KEYBEGIN ;無(wú)按鍵則繼續(xù)循環(huán)等待 GETKEY1: CALL DELAY_SCAN ;有鍵壓下,延時(shí)消抖 CALL DELAY_SCAN CALL CCSCAN ;再次掃描按鍵 JNZ GETKEY2 ;有鍵按下則跳置GETKEY2 JMP KEYBEGIN ;否則跳回開始繼續(xù)循環(huán) GETKEY2: CALL SCAN LOOP1: MOV AL,KEY CMP AL,0CH JE A0 CMP AL,0DH JE A1 CMP AL,0EH JE A2 CMP AL,0FH JE A3 CMP AL,9H JE QUIT JMP KEYBEGIN A0: MOV DX,OFFSET MES1 ;show message MOV AH,09H INT 21H CALL SQUARE MOV FLAG_BOXING,0CH JMP GETKEY3 A1: MOV DX,OFFSET MES2 ;show message MOV AH,09H INT 21H CALL SANJIAO MOV FLAG_BOXING,0DH JMP GETKEY3 A2: MOV DX,OFFSET MES3 ;show message MOV AH,09H INT 21H CALL JUCHI MOV FLAG_BOXING,0EH JMP GETKEY3 A3: MOV DX,OFFSET MES4 ;show message MOV AH,09H INT 21H CALL SINE MOV FLAG_BOXING,0FH JMP GETKEY3 GETKEY3: CALL SCAN ;有鍵按下,調(diào)用鍵盤掃描子程序 MOV AL,KEY;判斷是否為調(diào)幅 /調(diào)頻鍵 CMP AL,08H ;不是則返回判斷波形或退出 JNE LOOP1 NOT BYTE PTRFLAG_FUPIN ;是,則改變幅頻標(biāo)志位 CMP FLAG_FUPIN,0 JNE TIAOFU MOV DX,OFFSET MES5 ;show message MOV AH,09H INT 21H JMP JIXU TIAOFU: MOV DX,OFFSET MES6 ;show message MOV AH,09H INT 21H JIXU: MOV BL,FLAG_BOXING MOV KEY,BL ;將波形對(duì)應(yīng)的鍵值存回 KEY中 JMP LOOP1 ;返回判斷波形 QUIT: MOV AX,4C00H ;返回到DOS INT 21H SCAN PROC NEAR MOV CH,0FEH MOV CL,00H ;設(shè)置當(dāng)前檢測(cè)的是第幾列 COLUM: MOV AL,CH ;選取一列,將X1X4中一個(gè)置0 MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C ;讀Y1Y4,用于判斷是哪一行按鍵閉合 IN AL,DX L1: TEST AL,01H ;是否為第1行 JNZ L2 ;不是則繼續(xù)判斷 MOV AL,00H ;設(shè)置第1行第1列的對(duì)應(yīng)的鍵值 JMP KCODE L2: TEST AL,02H ;是否為第2行 JNZ L3 ;不是則繼續(xù)判斷 MOV AL,04H ;設(shè)置第2行第1列的對(duì)應(yīng)的鍵值 JMP KCODE L3: TEST AL,04H ;是否為第3行 JNZ L4 ;不是則繼續(xù)判斷 MOV AL,08H ;設(shè)置第3行第1列的對(duì)應(yīng)的鍵值 JMP KCODE L4: TEST AL,08H ;是否為第4行 JNZ NEXT ;不是則繼續(xù)判斷 MOV AL,0CH ;設(shè)置第4行第1列的對(duì)應(yīng)的鍵值 JMP KCODE NEXT: INC CL ;當(dāng)前檢測(cè)的列數(shù)遞增 MOV AL,CH TEST AL,08H ;檢測(cè)是否掃描到第4列 JZ KERR ;是則跳回到開始處 ROL AL,1 ;沒檢測(cè)到第4列則準(zhǔn)備檢測(cè)下一列 MOV

注意事項(xiàng)

本文(信號(hào)發(fā)生器功能程序設(shè)計(jì)_微機(jī)原理課程設(shè)計(jì)報(bào)告.doc)為本站會(huì)員(good****022)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!