版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與綜合應(yīng)用實(shí)驗(yàn)(微機(jī)原理)課程設(shè)計(jì)報(bào)告專業(yè)班級學(xué)生姓名學(xué)生學(xué)號指導(dǎo)老師完成時(shí)間微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與綜合應(yīng)用課程設(shè)計(jì)報(bào)告目錄第一章 設(shè)計(jì)課題概述31.1 課程設(shè)計(jì)目的31.2 課程設(shè)計(jì)要求41.3課程設(shè)計(jì)用途41.4實(shí)現(xiàn)技術(shù)指標(biāo)4第二章 設(shè)計(jì)思想和實(shí)施方案52.1 功能分析52.1.1波形產(chǎn)生52.1.2波形切換52.1.3 屏幕顯示52.1.4小鍵盤控制52.1.5無極調(diào)頻62.1.6無極調(diào)幅62.2 所需芯片功能簡介62.2.1 8088功能簡介62.2.2 8255a功能簡介72.2.3 a/d0832功能簡介82.2.4 d/a0809功能簡介92.3 實(shí)施方案102.3.
2、1 系統(tǒng)總體設(shè)計(jì)方案102.3.2系統(tǒng)設(shè)計(jì)方框圖10第三章 典型程序模塊及編程技巧分析123.1鍵盤掃描及邏輯判斷模塊123.2 鍵盤編碼模塊133.3 波形產(chǎn)生模塊143.3.1方波143.3.2 鋸齒波163.3.3 三角波183.3.4 正弦波203.4 波形切換及基本控制模塊213.5 無級調(diào)頻調(diào)幅判斷及控制模塊23第四章 遇到的問題及解決方法26第五章 程序清單和程序注釋285.1 匯編源程序285.2 c語言源程序49第六章 課程設(shè)計(jì)收獲與體會(huì)636.1 實(shí)驗(yàn)收獲636.2 心得體會(huì)63第七章 參考文獻(xiàn)65第八章 附錄668.1 8088 最小模式的連接圖6666第一章 設(shè)計(jì)課題概
3、述1.1 課程設(shè)計(jì)目的微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與綜合實(shí)驗(yàn)(實(shí)踐)課程設(shè)計(jì)是自動(dòng)化專業(yè)本科生必修的一門技術(shù)基礎(chǔ)課。通過本課程設(shè)計(jì),讓學(xué)生對微機(jī)系統(tǒng)有一個(gè)較全面的理解,對典型數(shù)字接口電路的應(yīng)用技術(shù)有一個(gè)較深入的掌握,并對應(yīng)用系統(tǒng)進(jìn)行硬件原理和軟件編程進(jìn)行分析、設(shè)計(jì)和調(diào)試,達(dá)到基本掌握簡單微型計(jì)算機(jī)應(yīng)用系統(tǒng)軟硬件的設(shè)計(jì)方法,提高項(xiàng)目開發(fā)能力的目的。微型計(jì)算機(jī)原理與接口技術(shù)是一門專業(yè)基礎(chǔ)課程,它的主 要內(nèi)容包括微型計(jì)算機(jī)體系結(jié)構(gòu)、8086 微處理器和指令系統(tǒng)、匯編 語言設(shè)計(jì)以及微型計(jì)算機(jī)各個(gè)組成部分介紹等內(nèi)容。要求學(xué)生對微機(jī) 原理中的基本概念有較深入的了解,能夠系統(tǒng)地掌握微型計(jì)算機(jī)的結(jié)構(gòu)、8086 微處理器和
4、指令系統(tǒng)、匯編語言程序設(shè)計(jì)方法、微機(jī)系統(tǒng) 的接口電路設(shè)計(jì)及編程方法等,并具有綜合運(yùn)用所學(xué)知識分析問題和 解決問題的能力。微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與綜合實(shí)驗(yàn)課程是自動(dòng)化專業(yè)本科生必修的一門技術(shù)基礎(chǔ)課程。通過該課程的學(xué)習(xí),可以使學(xué)生對微機(jī)系統(tǒng) 有一個(gè)全面的了解,掌握常規(guī)的芯片使用方法、掌握簡單的微型計(jì)算 機(jī)應(yīng)用系統(tǒng)軟硬件的設(shè)計(jì)方法。課程中要求學(xué)生根據(jù)課程設(shè)計(jì)指導(dǎo)書來選擇課題,并且獨(dú)立完 成課題,寫出課程設(shè)計(jì)說明書,畫出電路原理圖,說明工作原理,畫 出電路板圖,編寫程序以及程序流程圖。針對數(shù)字信號發(fā)生器及其控制這一課題,主要涉及到硬件 的連接(主要用到芯片有:8088cp u、dac0832 、8255 等
5、)以及硬件連 接原理圖,程序的編寫(主要涉及到顯示波形以及通過開關(guān)來對波形 進(jìn)行選擇)以及各個(gè)子程序或程序段的程序流程等,具體詳見各個(gè)小 節(jié)。通過課程設(shè)計(jì)不僅可以鍛煉學(xué)生在微機(jī)應(yīng)用方面的實(shí)際工作能力,將所學(xué)轉(zhuǎn)化為所用,更是一個(gè)鍛煉解決實(shí)際問題能力的很好機(jī)會(huì)。1.2 課程設(shè)計(jì)要求(1)、分別用c語言和匯編語言編程完成硬件接口功能設(shè)計(jì);(2)、硬件電路基于80x86微機(jī)的接口電路;(3)、程序功能要求:小鍵盤給定、數(shù)碼管(屏幕)顯示,并產(chǎn)生對應(yīng)信號波形(d/a)輸出(信號波形包括正弦波、三角波、方波、鋸齒波)、輸出信號波形幅度、頻率可調(diào)(注意:按鍵數(shù)量應(yīng)盡量少)。1.3課程設(shè)計(jì)用途信號發(fā)生器又稱信
6、號源或振蕩器,在生產(chǎn)實(shí)踐和科技領(lǐng)域中有著廣泛的應(yīng)用。各種波形曲線均可以用三角函數(shù)方程式來表示。能夠產(chǎn)生多種波形,如三角波、鋸齒波、矩形波(含方波)、正弦波的電路被稱為函數(shù)信號發(fā)生器。函數(shù)信號發(fā)生器在電路實(shí)驗(yàn)和設(shè)備檢測中具有十分廣泛的用途。例如在通信、廣播、電視系統(tǒng)中,都需要射頻(高頻)發(fā)射,這里的射頻波就是載波,把音頻(低頻)、視頻信號或脈沖信號運(yùn)載出去,就需要能夠產(chǎn)生高頻的振蕩器。在工業(yè)、農(nóng)業(yè)、生物醫(yī)學(xué)等領(lǐng)域內(nèi),如高頻感應(yīng)加熱、熔煉、淬火、超聲診斷、核磁共振成像等,都需要功率或大或小、頻率或高或低的振蕩器。本次設(shè)計(jì)的信號發(fā)生器主要能產(chǎn)生4種可調(diào)頻的電壓波形,它們是:三角波、鋸齒波、矩形波(含
7、方波)、正弦波,調(diào)頻范圍大致為幾赫茲到一百多赫茲。1.4實(shí)現(xiàn)技術(shù)指標(biāo)1) 正弦波、三角波、方波和鋸齒波信號的產(chǎn)生。2) 用小鍵盤控制各波形間的切換。3) 屏幕同步顯示當(dāng)前工作狀態(tài)。4) 小鍵盤區(qū)分調(diào)頻、調(diào)幅和退出程序。5) 實(shí)現(xiàn)頻率在指定范圍內(nèi)無極可調(diào)。6) 實(shí)現(xiàn)幅值在指定范圍內(nèi)無極可調(diào)。第二章 設(shè)計(jì)思想和實(shí)施方案2.1 功能分析2.1.1波形產(chǎn)生由于要求達(dá)到模擬信號波形發(fā)生,因此要由d/a轉(zhuǎn)換芯片0832來來完成此項(xiàng)任務(wù),由8253形成波形的主要做法是先輸出一個(gè)下限電平,將其保持一個(gè)延時(shí),然后輸出一個(gè)稍高的電平,在保持t,然后重復(fù)此過程,通過匯編語言編寫各個(gè)波形子程序,即各個(gè)波形的一個(gè)周期代
8、碼。通過主程序的循環(huán)調(diào)用,產(chǎn)生連續(xù)波形代碼并通過a/d0832將數(shù)字量轉(zhuǎn)換成模擬量輸出,即可得各種波形。2.1.2波形切換用小鍵盤來控制波形的選擇,即設(shè)計(jì)時(shí)對應(yīng)的編碼分別對應(yīng)矩形波、鋸齒波、三角波和正弦波。每個(gè)波形周期開始前,調(diào)用鍵盤掃描子程序,若無按鍵則繼續(xù)產(chǎn)生第二個(gè)周期的波形;若有按鍵按下,延時(shí)消抖后,再次調(diào)用鍵盤掃描子程序,若真是有按鍵按下,就退出波形產(chǎn)生子程序,返回主程序,并調(diào)用鍵盤編碼子程序?qū)Π存I值進(jìn)行編碼,確定要產(chǎn)生的波形,并調(diào)用相應(yīng)的波形產(chǎn)生子程序,實(shí)現(xiàn)可波形間的切換。2.1.3 屏幕顯示當(dāng)前工作狀態(tài)的屏幕同步顯示,通過對程序的編寫,使用dos顯示功能的調(diào)用,在每次調(diào)用相應(yīng)的子程
9、序前,顯示相應(yīng)字符串,則屏幕就可以顯示當(dāng)前的工作狀態(tài),對應(yīng)的字符串保存在內(nèi)存中,dos調(diào)用可以通過相對地址進(jìn)行讀取,這樣就實(shí)現(xiàn)了屏幕同步顯示當(dāng)前工作狀態(tài)的功能。同時(shí),在鍵盤編碼子程序之后,對幅頻標(biāo)志位進(jìn)行判斷,默認(rèn)為調(diào)頻,標(biāo)志位為0,此時(shí)屏幕顯示可調(diào)節(jié)頻率調(diào)頻的提示字符;若標(biāo)志位不為0,則說明是調(diào)幅,此時(shí)屏幕顯示可調(diào)節(jié)幅值調(diào)頻的提示字符。2.1.4小鍵盤控制使用實(shí)驗(yàn)箱上44鍵盤,可以實(shí)現(xiàn)區(qū)分調(diào)頻、調(diào)幅和退出程序的控制功能。唐都實(shí)驗(yàn)儀器提供的鍵盤屬于機(jī)械式按鍵,掃描時(shí)還選通列,然后從端口處讀取行數(shù)據(jù),如果有按鍵則,則讀取的數(shù)據(jù)肯定有一位為0,經(jīng)過取反后,有一位為1,然后再根據(jù)選取的列和讀取的行值
10、,確定按的是哪一個(gè)鍵,當(dāng)按下的是相應(yīng)的編碼控制鍵時(shí),就能進(jìn)行相應(yīng)的控制。經(jīng)過對唐都自帶的小鍵盤程序進(jìn)行研究和修改,將其分為鍵盤掃描、延時(shí)消抖、鍵盤編碼等不同的模塊,能夠很好的嵌入在我們的程序中。2.1.5無極調(diào)頻改變子程序中的各個(gè)數(shù)據(jù)輸出時(shí)間,及延時(shí),就可改變整個(gè)波形的頻率。延時(shí)越短頻率越高。而延時(shí)時(shí)間長短可由外部輸入決定,通過a/d0809將電位計(jì)(05v)的模擬量轉(zhuǎn)化成數(shù)字量(00ff)作為延時(shí)時(shí)間長短的控制因子。調(diào)節(jié)電位器即可調(diào)節(jié)延時(shí),進(jìn)而調(diào)節(jié)頻率。adc0809芯片分辨率為8位,即可將延時(shí)分為256個(gè)等級,實(shí)現(xiàn)無極調(diào)頻。由于要和無級調(diào)頻區(qū)分開,所以在每個(gè)波形產(chǎn)生子程序中,在產(chǎn)生一周期的
11、波形前,對幅頻標(biāo)志位進(jìn)行判斷,若是調(diào)頻,即為0,就將a/d0809輸出的數(shù)字量移到頻率單元中,用以產(chǎn)生相應(yīng)頻率的波形。2.1.6無極調(diào)幅和無級調(diào)頻類似,無級調(diào)幅由于要和無級調(diào)頻區(qū)分開,所以在每個(gè)波形產(chǎn)生子程序中,在產(chǎn)生一周期的波形前,對幅頻標(biāo)志位進(jìn)行判斷,若是調(diào)幅,即不為0,就將a/d0809輸出的數(shù)字量移到幅值單元中,用以產(chǎn)生相應(yīng)幅值的波形。2.2 所需芯片功能簡介2.2.1 8088功能簡介8088是一個(gè)intel以8086為基礎(chǔ)的微處理器,擁有16位單元暫存器和8位元外部資料總線。內(nèi)部由兩個(gè)獨(dú)立的功能部件組成,分別為biu和eu,eu負(fù)責(zé)指令的執(zhí)行,并進(jìn)行算術(shù)邏輯運(yùn)算等。eu從biu中的
12、指令隊(duì)列中取得指令。當(dāng)指令要求將數(shù)據(jù)放在寄存器或輸出到外部設(shè)備,或者要從寄存器或外部設(shè)備讀取數(shù)據(jù)時(shí),eu就向biu發(fā)出請求,biu根據(jù)eu發(fā)來的請求完成這些操作。它包括一個(gè)算術(shù)邏輯單元(alu)、一組通用寄存器和標(biāo)志寄存器組成,它們均是16位的。執(zhí)行部件中含有8個(gè)16位的寄存器,這些寄存器屬于cpu的專用寄存器,按其用途可將它們分成兩組:數(shù)據(jù)寄存器組和指示器變址寄存器組??偩€接口部件biu包括一組段寄存器、一個(gè)指令指示器、指令隊(duì)列(8086長6個(gè)字節(jié),8088長4個(gè)字節(jié))、地址產(chǎn)生器和總線控制器等。biu根據(jù)執(zhí)行部件eu的請求,完成cpu與存儲(chǔ)器或i/o設(shè)備之間的數(shù)據(jù)傳送。管腳圖如下:2.2.
13、2 8255a功能簡介(1)具有24條輸入/輸出引腳、可編程的通用并行輸入/輸出接口電路。它是一片使用單一+5v電源的40腳雙列直插式大規(guī)模集成電路。8255a的通用性強(qiáng),使用靈活,通過它c(diǎn)pu可直接與外設(shè)相連(2)8255a在使用前要寫入一個(gè)方式控制字,選擇a、b、c三個(gè)端口各自的工作方式,共有三種。方式0 :基本的輸入輸出方式,即無須聯(lián)絡(luò)就可以直接進(jìn)行的 i/o方式。其中a、b、c口的高四位或低四位可分別設(shè)置成輸入或輸出;方式1 :選通i/o,此時(shí)接口和外圍設(shè)備需聯(lián)絡(luò)信號進(jìn)行協(xié)調(diào),只有a口和b口可以工作在方式1,此時(shí)c口的某些線被規(guī)定為a口或b口與外圍設(shè)備的聯(lián)絡(luò)信號,余下的線只有基本的i/
14、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線。管腳圖如下:2.2.3 a/d0832功能簡介dac0832是采用cmos工藝制成的單片電流輸出型8位數(shù) / 模轉(zhuǎn)換器。下圖是dac0832的邏輯框圖及引腳排列。dac0832的引腳功能說明如下:d0d7 :數(shù)字信號輸入端ile:輸入寄存器允許,高電平有效:片選信號,低電平有效:寫信號1,低電平有效:傳送控制信號,低電平有效:寫信號2,低電平有效iout1,io
15、ut2:dac電流輸出端rfb :反饋電阻,是集成在片內(nèi)的外接運(yùn)放的反饋電阻vref :基準(zhǔn)電壓(10+10)vvcc :電源電壓(515)v2.2.4 d/a0809功能簡介adc0809是采樣頻率為8位的、以逐次逼近原理進(jìn)行模數(shù)轉(zhuǎn)換的器件。其內(nèi)部有一個(gè)8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個(gè)進(jìn)行a/d轉(zhuǎn)換。下圖是dac0832的邏輯框圖及引腳排列。 adc0809芯片有28條引腳,采用雙列直插式封裝,如圖1323所示。下面說明各引腳功能。 in0in7:8路模擬量輸入端。2-12-8:8位數(shù)字量輸出端。adda、addb、addc:3位地址輸入線,用
16、于選通8路模擬輸入中的一路ale:地址鎖存允許信號,輸入,高電平有效。 start: ad轉(zhuǎn)換啟動(dòng)脈沖輸入端,輸入一個(gè)正脈沖(至少100ns寬)使其啟動(dòng)(脈沖上升沿使0809復(fù)位,下降沿啟動(dòng)a/d轉(zhuǎn)換)。 eoc: ad轉(zhuǎn)換結(jié)束信號,輸出,當(dāng)ad轉(zhuǎn)換結(jié)束時(shí),此端輸出一個(gè)高電平(轉(zhuǎn)換期間一直為低電平)。 oe:數(shù)據(jù)輸出允許信號,輸入,高電平有效。當(dāng)ad轉(zhuǎn)換結(jié)束時(shí),此端輸入一個(gè)高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。clk:時(shí)鐘脈沖輸入端。要求時(shí)鐘頻率不高于640khz。 ref(+)、ref(-):基準(zhǔn)電壓。 vcc:電源,單一5v。 gnd:地2.3 實(shí)施方案2.3.1 系統(tǒng)總體設(shè)計(jì)方案使用小
17、鍵盤作為產(chǎn)生波形、調(diào)頻調(diào)幅、程序退出的控制端口,8255芯片作為小鍵盤編碼和讀取a/d0809將模擬量轉(zhuǎn)化成的數(shù)字量,通過a/d0832將數(shù)字量轉(zhuǎn)換成模擬量輸出,產(chǎn)生各種波形輸出,再通過d/c0809將模擬的波形轉(zhuǎn)換為數(shù)字信號,通過虛擬示波器顯示出波形,通過小鍵盤可以控制相調(diào)頻和調(diào)幅,再通過電位計(jì)進(jìn)行幅值和幅度的無極調(diào)節(jié)。2.3.2系統(tǒng)設(shè)計(jì)方框圖系統(tǒng)設(shè)計(jì)方框圖如下圖所示 第三章 典型程序模塊及編程技巧分析3.1鍵盤掃描及邏輯判斷模塊鍵盤掃描模塊可以判斷是否有鍵按下,并且并根據(jù)邏輯設(shè)計(jì)進(jìn)行相應(yīng)操作。按在程序中的具體分布位置和實(shí)現(xiàn)功能可以分為兩個(gè)功能相反的類型。一種為“無鍵按下則循環(huán)等待,有鍵按下
18、則消抖”,用于在程序剛剛運(yùn)行時(shí)進(jìn)行判斷;另一種為“無鍵按下則繼續(xù),有鍵按下則消抖”,用于在波形產(chǎn)生子程序的每個(gè)周期結(jié)尾處進(jìn)行判斷。具體的實(shí)現(xiàn)代碼如下:1) 無鍵按下則循環(huán)等待,有鍵按下則消抖 keybegin: call ccscan ;掃描按鍵 jnz getkey1 ;有鍵按下則跳置getkey1 jmp keybegin ;無按鍵則繼續(xù)循環(huán)等待 getkey1: call dally_scan ;有鍵壓下,延時(shí)消抖 call dally_scan call ccscan ;再次掃描按鍵 jnz getkey2 ;有鍵按下則跳置getkey2 jmp keybegin ;否則跳回開始繼續(xù)循
19、環(huán)2) 無鍵按下則繼續(xù),有鍵按下則消抖keybegin_1: call ccscan ;掃描按鍵 jnz getkey1_1 ;有鍵按下則跳置getkey_1 jmp getkey2_1 ;無按鍵則繼續(xù)向下執(zhí)行 getkey1_1: call dally_scan ;有鍵壓下,延時(shí)消抖 call dally_scan call ccscan ;再次掃描按鍵 jnz fanhui1 ;有鍵按下則跳置getkey2 getkey2_1: jmp square1 ;否則跳回開始繼續(xù)循環(huán)3.2 鍵盤編碼模塊如果有按鍵,就獲取按鍵碼的功能,44鍵盤的編碼,從左到右,從上到下,依次編碼為0f, 如果有按鍵
20、, 則轉(zhuǎn)入到按鍵處理子程序模塊執(zhí)行, 如果沒有,則返回主程序循環(huán)。具體的實(shí)現(xiàn)代碼如下:scan proc near ;鍵盤編碼子程序 mov ch,0feh mov cl,00h ;設(shè)置當(dāng)前檢測的是第幾列 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列的對應(yīng)的鍵值 jmp kcode l2: test al,02h
21、 ;是否為第2行 jnz l3 ;不是則繼續(xù)判斷 mov al,04h ;設(shè)置第2行第1列的對應(yīng)的鍵值 jmp kcode l3: test al,04h ;是否為第3行 jnz l4 ;不是則繼續(xù)判斷 mov al,08h ;設(shè)置第3行第1列的對應(yīng)的鍵值 jmp kcode l4: test al,08h ;是否為第4行 jnz next ;不是則繼續(xù)判斷 mov al,0ch ;設(shè)置第4行第1列的對應(yīng)的鍵值 kcode: add al,cl ;將第1列的值加上當(dāng)前列數(shù),確定按鍵值 mov boxing,al ;將al中的按鍵值保存到指定內(nèi)存單元 next: inc cl ;當(dāng)前檢測的列數(shù)遞
22、增 mov al,ch test al,08h ;檢測是否掃描到第4列 jz kerr ;是則退出子程序 rol al,1 ;沒檢測到第4列則準(zhǔn)備檢測下一列 mov ch,al jmp colum kerr: ret scan endp 3.3 波形產(chǎn)生模塊3.3.1方波方波的產(chǎn)生只要用d/a0832輸出一個(gè)最大值(此處用ffh),并延時(shí)一段時(shí)間。在輸出一個(gè)最小值(此處用00f),延時(shí)一段相同時(shí)間,就是矩形波的一個(gè)周期。具體的實(shí)現(xiàn)代碼如下: square proc near ;方波產(chǎn)生子程序 square1: mov dx,my8255_mode ;初始化8255工作方式 mov al,000
23、01110b ;方式0,a口、c口高四位輸出,b口、c口低4位輸入 out dx,al 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則存為頻率值 mov amp,al ; 不為0則存為振幅值 jmp next1_1 pin_1: mov fre,al next1_1: mov dx,da0832 ;寫00h,輸出低電平 mov al,00h out dx,al call dally1 mov dx,da0832 ;寫 amp,輸出高電平 mov al,amp
24、 ;amp=00hffh,默認(rèn)值 7fh out dx,al call dally1 ;無鍵按下則繼續(xù),有鍵按下則消抖 keybegin_1: call ccscan ;掃描按鍵 jnz getkey1_1 ;有鍵按下則跳置getkey_1 jmp getkey2_1 ;無按鍵則繼續(xù)向下執(zhí)行 getkey1_1: call dally_scan ;有鍵壓下,延時(shí)消抖 call dally_scan call ccscan ;再次掃描按鍵 jnz fanhui1 ;有鍵按下則跳置getkey2 getkey2_1: jmp square1 ;否則跳回開始繼續(xù)循環(huán) fanhui1: ret squ
25、are endp3.3.2 鋸齒波鋸齒波是從最小值開始逐漸上升,到達(dá)最大值之后,跳到最小值循環(huán)。因此只要先將最小值(此處用00f)放到al,輸出,延時(shí),在al逐漸加一輸出,延時(shí),直到達(dá)到最大值。具體的實(shí)現(xiàn)代碼如下: juchi proc near ;鋸齒波產(chǎn)生子程序 juchi1: mov dx,my8255_mode ;初始化8255工作方式 mov al,00001110b ;方式0,a口、c口高四位輸出,b口、c口低4位輸入 out dx,al mov dx,my8255_b ; 讀8255b口數(shù)據(jù) in al,dx mov bl,flag_fupin ;判斷幅頻標(biāo)志位,默認(rèn)為0? cm
26、p bl,0 je pin_3 ; 為0則存為頻率值 mov amp,al ; 不為0則存為振幅值 jmp next1_3 pin_3: mov fre,al next1_3: mov bl,00h ;d/a轉(zhuǎn)換起始值 up2: mov al,amp and al,0f0h shr al,4 ;amp=00hffh ,al=00h07h,即 bl變?yōu)?到 7倍 。默認(rèn)值amp=7fh,bl乘 3倍 mul bl mov dx,da0832 ;啟動(dòng)d/a轉(zhuǎn)換 out dx,al call dally2 inc bl cmp bl,25h jne up2 mov bl,00h mov al,amp
27、 and al,0f0h shr al,4 ;amp=00hffh ,al=00h07h,即 bl變?yōu)?到 7倍 。默認(rèn)值amp=7fh,bl乘 3倍 mul bl mov dx,da0832 out dx,al call dally2 ;無鍵按下則繼續(xù),有鍵按下則消抖 keybegin_3: call ccscan ;掃描按鍵 jnz getkey1_3 ;有鍵按下則跳置getkey_1 jmp getkey2_3 ;無按鍵則繼續(xù)向下執(zhí)行 getkey1_3: call dally_scan ;有鍵壓下,延時(shí)消抖 call dally_scan call ccscan ;再次掃描按鍵 jnz
28、 fanhui3 ;有鍵按下則跳置getkey2 getkey2_3: jmp juchi1 ;否則跳回開始繼續(xù)循環(huán) fanhui3: ret juchi endp3.3.3 三角波三角波與鋸齒波類似,只是三角波達(dá)到最大后,在逐漸減小到最小,因此三角波有兩個(gè)過程。具體的實(shí)現(xiàn)代碼如下: sanjiao proc near ;三角波產(chǎn)生子程序 sanjiao1: mov dx,my8255_mode ;初始化8255工作方式 mov al,00001110b ;方式0,a口、c口高四位輸出,b口、c口低4位輸入 out dx,al mov dx,my8255_b ; 讀8255b口數(shù)據(jù) in al
29、,dx mov bl,flag_fupin ;判斷幅頻標(biāo)志位,默認(rèn)為0? cmp bl,0 je pin_2 ; 為0則存為頻率值 mov amp,al ; 不為0則存為振幅值 jmp next1_2 pin_2: mov fre,al next1_2: mov bl,00h ;d/a轉(zhuǎn)換起始值 up1: mov al,amp and al,0f0h shr al,4 ;amp=00hffh ,al=00h07h,即 bl變?yōu)?到 7倍 。默認(rèn)值amp=7fh,bl乘 3倍 mul bl mov dx,da0832 ;啟動(dòng)d/a轉(zhuǎn)換 out dx,al call dally2 inc bl c
30、mp bl,25h jne up1 down: mov al,amp and al,0f0h shr al,4 ;amp=00hffh ,al=00h07h,即 bl變?yōu)?到 7倍 。默認(rèn)值amp=7fh,bl乘 3倍 mul bl mov dx,da0832 out dx,al call dally2 dec bl cmp bl,00h jne down ;無鍵按下則繼續(xù),有鍵按下則消抖 keybegin_2: call ccscan ;掃描按鍵 jnz getkey1_2 ;有鍵按下則跳置getkey_1 jmp getkey2_2 ;無按鍵則繼續(xù)向下執(zhí)行 getkey1_2: call
31、dally_scan ;有鍵壓下,延時(shí)消抖 call dally_scan call ccscan ;再次掃描按鍵 jnz fanhui2 ;有鍵按下則跳置getkey2 getkey2_2: jmp sanjiao1 ;否則跳回開始繼續(xù)循環(huán) fanhui2: ret sanjiao endp3.3.4 正弦波正弦波是利用正弦表(見附錄 代碼段)輸出的,即將正弦表中的數(shù)值一一輸出并延時(shí)。具體的實(shí)現(xiàn)代碼如下: sine proc near ;正弦波產(chǎn)生子程序 sine1: mov dx,my8255_mode ;初始化8255工作方式 mov al,00001110b ;方式0,a口、c口高四位
32、輸出,b口、c口低4位輸入 out dx,al mov dx,my8255_b ; 讀8255b口數(shù)據(jù) in al,dx mov bl,flag_fupin ;判斷幅頻標(biāo)志位,默認(rèn)為0? cmp bl,0 je pin_4 ; 為0則存為頻率值 mov amp,al ; 不為0則存為振幅值 jmp next1_4 pin_4: mov fre,al next1_4: lea si,sin mov cx,255 up: mov bl,amp and bl,0f0h shr bl,4 ;amp=00hffh ,bl=00h07h,即 al變?yōu)?到 7倍。默認(rèn)值amp=7fh,al乘 3倍 mov
33、al,si shral,2 mul bl mov dx,da0832 ;啟動(dòng)d/a轉(zhuǎn)換 out dx,al call dally3 inc si loop up ;無鍵按下則繼續(xù),有鍵按下則消抖 keybegin_4: call ccscan ;掃描按鍵 jnz getkey1_4 ;有鍵按下則跳置getkey_1 jmp getkey2_4 ;無按鍵則繼續(xù)向下執(zhí)行 getkey1_4: call dally_scan ;有鍵壓下,延時(shí)消抖 call dally_scan call ccscan ;再次掃描按鍵 jnz fanhui4 ;有鍵按下則跳置getkey2 getkey2_4: jm
34、p sine1 ;否則跳回開始繼續(xù)循環(huán) fanhui4: ret sine endp3.4 波形切換及基本控制模塊波形切換是根據(jù)對小鍵盤的操作來實(shí)現(xiàn)的,對應(yīng)編碼的不同按鍵對應(yīng)著不同的波形(0ch:方波,0dh:三角波,0eh:鋸齒波,0fh:正弦波)和相應(yīng)的控制(08h:調(diào)頻調(diào)幅轉(zhuǎn)換,0ah:退出系統(tǒng))按下對應(yīng)編碼的鍵即可即可實(shí)現(xiàn)相應(yīng)操作。具體的實(shí)現(xià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
35、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_boxin
36、g,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 cmp al,08h ;判斷是否為調(diào)幅 /調(diào)頻鍵 jne loop1 ;不是則返回判斷波形或退出 not byte ptrflag_fupin ;是調(diào)幅 /調(diào)頻鍵,則改變幅頻標(biāo)志位 cmp flag_fupin,0 jne tiaofu mov dx,offset mes5
37、;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 ;將波形對應(yīng)的鍵值存回 key中 ,以便之后回到原波形 jmp loop1 ;返回判斷波形 quit: mov ax,4c00h ;返回到dos int 21h3.5 無級調(diào)頻調(diào)幅判斷及控制模塊本次實(shí)驗(yàn)adc 0809芯片的輸出八位數(shù)據(jù)線以及clock(1.1625mhz)已通過扁平電纜接到8088控制計(jì)算機(jī)的8255端口
38、b和系統(tǒng)應(yīng)用時(shí)鐘opclk(1.1625mhz)上。模擬輸入量vin與數(shù)字輸出量n的轉(zhuǎn)換公式為vin=(vref+vref-)/256n+vref-,其中vref+接5v,vref-接0v。 改變波形產(chǎn)生子程序中的各個(gè)數(shù)據(jù)輸出時(shí)間,及延時(shí),就可改變整個(gè)波形的頻率。改變波形產(chǎn)生子程序中的每次輸出數(shù)值的大小,就可以改變整個(gè)波形的幅值。而實(shí)現(xiàn)無級變化的數(shù)值是0809讀入的。由于要和無級調(diào)頻區(qū)分開,所以在每個(gè)波形產(chǎn)生子程序中,在產(chǎn)生一周期的波形前,對幅頻標(biāo)志位進(jìn)行判斷。若是調(diào)頻,即為0,就將a/d0809輸出的數(shù)字量移到頻率單元中,用以產(chǎn)生相應(yīng)頻率的波形;若是調(diào)幅,即不為0,就將a/d0809輸出的數(shù)字量移到幅值單元中,用以產(chǎn)生相應(yīng)幅值的波形。即每個(gè)循環(huán)
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年項(xiàng)目利潤分配協(xié)議
- 2024年采沙場工人勞動(dòng)合同2篇
- 2024幼兒園幼兒教育項(xiàng)目合作協(xié)議3篇
- 2024年環(huán)保要求土建工程合同示范文本3篇
- 2025年度數(shù)字經(jīng)濟(jì)股權(quán)優(yōu)化與產(chǎn)業(yè)生態(tài)構(gòu)建協(xié)議3篇
- 2024年酒類產(chǎn)品原料供應(yīng)合同
- 2024版區(qū)塊鏈技術(shù)應(yīng)用合同
- 2024版租賃投資回報(bào)保證協(xié)議3篇
- 2024年鐵路貨運(yùn)運(yùn)輸工程居間服務(wù)協(xié)議3篇
- 2024年綠色施工環(huán)保合同:建設(shè)工程版
- 遼寧醫(yī)院明細(xì).xls
- 200立方矩形鋼筋混凝土清水池標(biāo)準(zhǔn)圖集(共7頁)
- 熱處理變形基礎(chǔ)知識
- 29個(gè)API技術(shù)規(guī)范
- 6x37 FC鋼絲繩破斷拉力
- 軸承(1)(公開課)
- 催化氧化合成4-氯-2-硝基苯甲酸_圖文
- 金屬鍍覆和化學(xué)處理表示方法
- 同濟(jì)大學(xué)本科生學(xué)籍管理規(guī)定
- 三年級數(shù)學(xué)寒假每日一練
- 最新宜昌市中考數(shù)學(xué)21題圓訓(xùn)練(1)教師版有答案
評論
0/150
提交評論