版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、23 單片機(jī)課程設(shè)計(jì)報(bào)告目 錄一、題目的意義1二、本人所做的工作1三、課設(shè)要求2四、課設(shè)所需設(shè)備及芯片功能介紹241、所需設(shè)備242、芯片功能介紹2五、總體功能圖及主要設(shè)計(jì)思路551、總體功能圖552、主要設(shè)計(jì)思想5六、硬件電路設(shè)計(jì)及描述761、硬件原理圖762、線路連接步驟7七、軟件設(shè)計(jì)流程及描述771、鋸齒波的實(shí)現(xiàn)過程772、三角波的實(shí)現(xiàn)過程873、梯形波的實(shí)現(xiàn)過程974、方波的實(shí)現(xiàn)過程1175、正弦波的實(shí)驗(yàn)過程1276、通過開關(guān)實(shí)現(xiàn)波形切換和調(diào)頻、調(diào)幅13八、程序調(diào)試步驟與運(yùn)行結(jié)果1581、調(diào)試步驟1582、運(yùn)行結(jié)果15九、課程設(shè)計(jì)體會(huì)17十、參考文獻(xiàn)18十一、源代碼及注釋18一、題目的
2、意義(1)、利用所學(xué)單片機(jī)的理論知識(shí)進(jìn)行軟硬件整體設(shè)計(jì),鍛煉學(xué)生理論聯(lián)系實(shí)際、提高我們的綜合應(yīng)用能力。(2)、我們這次的課程設(shè)計(jì)是以單片機(jī)為基礎(chǔ),設(shè)計(jì)并開發(fā)能輸出多種波形(正弦波、三角波、鋸齒波、方波、梯形波等)且頻率、幅度可變的函數(shù)發(fā)生器。(3)、掌握各個(gè)接口芯片(如0832等)的功能特性及接口方法,并能運(yùn)用其實(shí)現(xiàn)一個(gè)簡(jiǎn)單的微機(jī)應(yīng)用系統(tǒng)功能器件。(4)、在平時(shí)的學(xué)習(xí)中,我們所學(xué)的知識(shí)大都是課本上的,在機(jī)房的練習(xí)大家也都是分散的對(duì)各個(gè)章節(jié)的內(nèi)容進(jìn)行練習(xí)。因此,缺乏一種系統(tǒng)的設(shè)計(jì)鍛煉。在課程所學(xué)結(jié)束以后,這樣的課程設(shè)計(jì)十分有助于學(xué)生的知識(shí)系統(tǒng)的總結(jié)到一起。(5)、通過這幾個(gè)波形進(jìn)行組合形成了一個(gè)
3、函數(shù)發(fā)生器,使得我對(duì)系統(tǒng)的整個(gè)框架的設(shè)計(jì)有了一個(gè)很好的鍛煉。這不僅有助于大家找到自己感興趣的題目,更可以鍛煉大家單片機(jī)知識(shí)的應(yīng)用。二、本人所做的工作 本次課設(shè)組員:劉正、鄧強(qiáng)、劉志 組長(zhǎng):劉正 經(jīng)過了這一個(gè)星期的時(shí)間,我們已經(jīng)基本完成了老師所提出的課程設(shè)計(jì)要求。其中,我本人是組長(zhǎng)整個(gè)系統(tǒng)的設(shè)計(jì)框架和編寫代碼由我親自完成。由于我們上課沒有接觸過正弦波因此通過在圖書館和網(wǎng)絡(luò)上找資料已經(jīng)順利完成。然后通過上機(jī)連接線路把電路板和pc機(jī)相連接之后對(duì)每一個(gè)波形單個(gè)調(diào)試完成后,再組合起來通過開關(guān)控制波形的輸出,最后實(shí)現(xiàn)老師所要求的功能。 三、課設(shè)要求1、設(shè)計(jì)接口電路,將這些外設(shè)構(gòu)成一個(gè)簡(jiǎn)單的單片機(jī)應(yīng)用系統(tǒng),
4、畫出接口的連接圖。2、編寫下列控制程序(1) 能輸出正弦波、三角波、鋸齒波、方波、梯形波。(2) 由k0-k4鍵分別控制以上所述波形的產(chǎn)生。(3) 根據(jù)開關(guān)對(duì)輸出波形的頻率、幅度進(jìn)行控制調(diào)節(jié)。四、課設(shè)所需設(shè)備及芯片功能介紹41、所需設(shè)備單片機(jī)最小開發(fā)系統(tǒng),dac0832一片,pc機(jī)一臺(tái),運(yùn)算放大器,其他器件任選。42、芯片功能介紹 (1)、dac0832芯片介紹: dac0832為一個(gè)8位d/a轉(zhuǎn)換器,單電源供電,在+5+15v范圍內(nèi)均可正常工作?;鶞?zhǔn)電壓的范圍為10v,電流建立時(shí)間為1s,cmos工藝,低功耗20mw。dac0832的內(nèi)部結(jié)構(gòu)框圖如下圖所示。dac0832的外部引腳及功能介紹
5、圖如下: (2)、dac0832的應(yīng)用:dac0832一是用作單極性電壓輸出,二是用作雙極性電壓輸出,最后是用作程控放大器。 (3)、dac0832與8031的連接方式: dac0832的與單片機(jī)的連接方式有三種方式:一、單緩沖二、雙緩沖、三是直通方式。本程序采用的是方式一即單緩沖方式,ile為高電平,cs、wr1、wr2、xfer為低電平。電源及時(shí)鐘引腳:vcc、vss;xtal1、xtal2控制引腳 psen、ale、ea、reset(即rst).i/o口引腳: p0、p1、p2、p3為4個(gè)8位i/o口的外部引腳.rst/vpd(9腳)rst:單片剛接上電源時(shí),其內(nèi)部各寄存器處于隨機(jī)狀態(tài),
6、在此腳輸入24個(gè)時(shí)鐘周期寬度以上的高電平將使單片機(jī)復(fù)位。單片機(jī)正常工作時(shí),此腳應(yīng)為0.5v低電平。vpd:備用電源輸入端。當(dāng)vcc下降到低于規(guī)定的值,而vpd在其規(guī)定的電壓范圍內(nèi)(50.5v)時(shí),vpd就向內(nèi)部ram提供備用電源以保持內(nèi)部ram的數(shù)據(jù)。 ale/prog(30引腳)ale引腳輸出為地址鎖存允許信號(hào),當(dāng)單片機(jī)上電工作 后,ale引腳不斷輸出正脈沖信號(hào). 當(dāng)訪問片外存儲(chǔ)器時(shí),ale(地址鎖存允許信號(hào))輸出脈沖的負(fù)跳沿用于16位地址的低8位鎖存信號(hào)。不訪問片外存儲(chǔ)器,ale端以時(shí)鐘振蕩器頻率的1/6固定輸出正脈沖。在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)(執(zhí)行movx指令),ale會(huì)丟失一個(gè)ale脈沖
7、。mcs-51單片機(jī)的片外總線結(jié)構(gòu) mcs-51系列單片機(jī)片外引腳可以構(gòu)成如上圖所示的三總線結(jié)構(gòu):地址總線(ab) 數(shù)據(jù)總線(db) 控制總線(cb)8031各個(gè)口的功能定義p0口:雙向8位三態(tài)i/o口,此口為地址總線(低8位)及數(shù)據(jù)總線分時(shí)復(fù)用口,可帶8個(gè)lsttl負(fù)載。p1口:8位準(zhǔn)雙向i/o口,可帶4個(gè) lstttl負(fù)載。p2口:8位準(zhǔn)雙向i/o口,與地址總線(高8位)復(fù)用。p3口:8位準(zhǔn)雙向i/o口,雙功能復(fù)用口。五、總體功能圖及主要設(shè)計(jì)思路51、總體功能圖函數(shù)發(fā)生器的設(shè)計(jì)k1鍵三角波k2鍵梯形波k3鍵方波k4鍵正弦波k5調(diào)頻調(diào)幅k0鍵鋸齒波52、主要設(shè)計(jì)思想從此題的要求我的設(shè)計(jì)思路分
8、以下幾步:(一)、課設(shè)需要各個(gè)波形的基本輸出。如輸出鋸齒波、三角波、梯形波、方波、正弦波。這些波形的實(shí)現(xiàn)的具體步驟:鋸齒波實(shí)現(xiàn)很簡(jiǎn)單,只需要一開始定義一個(gè)初值,然后不斷的加1,當(dāng)溢出后又重初值開始加起,就這樣循環(huán)下去。三角波的實(shí)驗(yàn)過程是先加后減,我的一開始的實(shí)現(xiàn)方法是先是從00h開始加1直到溢出后就執(zhí)行減1操作,就這樣不斷調(diào)用這個(gè)循環(huán)。梯形波的實(shí)現(xiàn)過程是前后加和減的速度不同而已,如你可以在上升加的步數(shù)大一些,減時(shí)少一些。方波的實(shí)現(xiàn)方法是連續(xù)輸出一個(gè)數(shù),到某個(gè)時(shí)候就改變一下值,可以把值定義為正極性的,也可以是負(fù)極性。正弦波的實(shí)現(xiàn)是非常麻煩的。它的實(shí)現(xiàn)過程是通過定義一些數(shù)據(jù),然后執(zhí)行時(shí)直接輸出定義
9、的數(shù)據(jù)就可以了。在設(shè)計(jì)之初,我一直都在嘗試使用數(shù)學(xué)的泰勒級(jí)數(shù)展開來計(jì)算輸出波形,使用這種方法,實(shí)現(xiàn)起來相對(duì)來說要比較困難一點(diǎn),而且會(huì)使得頻率會(huì)下降。要使得它達(dá)到更高的頻率,就得另辟蹊徑了。分析一下為什么頻率上不去,主要原因在于,使用單片機(jī)進(jìn)行正弦函數(shù)的運(yùn)算時(shí)占去了不少時(shí)間,如果去掉這一計(jì)算過程波形的頻率應(yīng)該大有提高,另外就是cpu時(shí)鐘頻率沒有調(diào)至最高,以及dac轉(zhuǎn)換過程需要時(shí)間。為了達(dá)到更高的頻率,首先就要免去單片機(jī)的計(jì)算負(fù)擔(dān),我使用的解決方法是人為計(jì)算出要輸出的點(diǎn),然后建一個(gè)表通過查表來進(jìn)行輸出,這樣主要工作任務(wù)就落到了建表的過程中。這樣做的好處在于,查表所耗費(fèi)的時(shí)鐘周期相同,這樣輸出的點(diǎn)與
10、點(diǎn)之間的距離就相等了,輸出的波形行將更趨于完美,當(dāng)然更讓我們感到的高興的是它輸出波形的頻率將近達(dá)到了100k赫茲,能夠滿足我們?cè)O(shè)計(jì)的擴(kuò)展要求了。為了實(shí)現(xiàn)頻率的調(diào)整,我在一個(gè)正弦波周期里建了兩百個(gè)點(diǎn),如果我們隔一個(gè)取點(diǎn)的話,且在cpu時(shí)鐘頻率不改變的情形下,正弦波頻率將相對(duì)于前面的頻率提高將近一倍。這樣我們就得到了解決頻率調(diào)整的方法,首先進(jìn)行cpu時(shí)鐘頻率選擇,再調(diào)整一個(gè)正弦函數(shù)一個(gè)周期輸出的點(diǎn)數(shù),幅度的調(diào)節(jié)是通過初始幅度設(shè)置再通過外部放大電路來調(diào)節(jié),設(shè)計(jì)程序流程圖如圖所示。(二)、通過p3口和開關(guān)k0-k5相連接來控制各個(gè)波形的輸出。能根據(jù)k0-k5鍵狀態(tài)進(jìn)行波形切換,開關(guān)鍵向上接“1”,產(chǎn)生
11、波形,向下拔接“0”,無波形輸出。如k0鍵向上拔,k1-k4鍵向下拔,產(chǎn)生鋸齒波; k1鍵向上拔,k0、k2-k4鍵向下拔,產(chǎn)生三角波;以此類推。通過k5鍵來控制調(diào)頻/調(diào)幅。六、硬件電路設(shè)計(jì)及描述61、硬件原理圖62、線路連接步驟(1)d/a區(qū)0832片選信號(hào)cs插孔和譯碼輸出y2插孔相連。 (2)用排線將d/a區(qū)d0d7連到bus2區(qū)xd0xd7。 (3)將0832的wr信號(hào)線連到bus3區(qū)的xwr上。 (4)d/a區(qū)的12v插孔分別與外置電源的12v端相連。 (5)w2區(qū)的vin接+12v,如果電源內(nèi)置,vin插孔和d/a區(qū)的+12v插孔相連。(6)d/a區(qū)的vref接w2區(qū) vref,并
12、調(diào)節(jié)w2使 vref=+5v。(7)k0-k5開關(guān)分別接到p3口的p3.0-p3.5七、軟件設(shè)計(jì)流程及描述71、鋸齒波的實(shí)現(xiàn)過程鋸齒波的實(shí)現(xiàn)過程是首先定義一個(gè)初值然后進(jìn)行加法操作,加的步數(shù)的多少則根據(jù)要求的頻率來進(jìn)行。然后加到某個(gè)數(shù)之后就再重新設(shè)置為初值,再重復(fù)執(zhí)行剛剛的操作,如此循環(huán)下去。流程圖如下所示:設(shè)置初值amov dptr,#8000hmovx dptr,a加上設(shè)定的步數(shù),add a,步數(shù)判斷a是否已經(jīng)滿了?否重新設(shè)置初值a是開 始72、三角波的實(shí)現(xiàn)過程 三角波的實(shí)現(xiàn)是設(shè)置一個(gè)初值,然后進(jìn)行加數(shù),同樣是加到某個(gè)數(shù)之后再進(jìn)行減數(shù),減到初值之后就再返回到先前的操作,這個(gè)操作跟鋸齒波的實(shí)現(xiàn)
13、是相似的。此程序輸入的vref的電壓是5v,因此該波形輸出的最大頻率是初值為00h和最終值為0ffh,且步數(shù)為1,這樣輸出的波形是最大的。程序流程圖如下圖所示:給a設(shè)置初值mov dptr,#8000hmovx dptr,aadd a,步數(shù)判斷a是否已滿?否是subb a,步數(shù)判斷是否等于初值?否/是開 始73、梯形波的實(shí)現(xiàn)過程 梯形波輸出跟鋸齒波和三角波相似,只不過當(dāng)加到頂峰后的一段時(shí)間內(nèi)不改變a的值,過了一段時(shí)間后再將減少a的值,不過先后的步數(shù)可以一樣也可以不一樣。然后減到初始的值后也要持續(xù)一段時(shí)間,然后再進(jìn)行加數(shù),如此循環(huán)下去。開 始給a設(shè)置初值mov dptr,#8000h是持續(xù)一段時(shí)
14、間subb a,步數(shù)2判斷是否等于初值?否是 持續(xù)一段時(shí)間movx dptr,aadd a,步數(shù)1判斷a是否已滿?否74、方波的實(shí)現(xiàn)過程 此波形的實(shí)現(xiàn)更加簡(jiǎn)單,只需開始的時(shí)候設(shè)置一個(gè)初值然后直接輸出這個(gè)值就行了,輸出一段時(shí)間后,然后再重新置一個(gè)數(shù)據(jù),然后再輸出這個(gè)數(shù)據(jù)一段時(shí)間,但是此時(shí)的時(shí)間一定要等于前面那段時(shí)間。這樣才是一個(gè)方波,如果兩個(gè)時(shí)間不相同,那就相當(dāng)于一個(gè)脈沖波了。流程圖如下圖所示:開 始給a設(shè)置初值mov dptr,#8000h movx dptr,a設(shè)置輸出的時(shí)間再設(shè)置一個(gè)初值放入a中movx dptr,a輸出一段時(shí)間75、正弦波的實(shí)驗(yàn)過程 正弦波的實(shí)現(xiàn)則相對(duì)比較復(fù)雜,因?yàn)檎也?/p>
15、的實(shí)現(xiàn)是輸出各個(gè)點(diǎn)的值就行了,可是各個(gè)點(diǎn)值則要通過正弦函數(shù)來求出,不過這些值直接去網(wǎng)上下載下來使用就可以了。輸出的數(shù)據(jù)剛好是256個(gè)數(shù)據(jù),這樣則可以直接相加就行了。開 始mov a,#00hmov r7,amov dptr,#sinmovc a,a+dptrmov dptr,#8000hmovx dptr,amov a,r7inc a 76、通過開關(guān)實(shí)現(xiàn)波形切換和調(diào)頻、調(diào)幅 通過開關(guān)實(shí)現(xiàn)波形的切換比較簡(jiǎn)單只需通過輸出波形后不斷返回到檢測(cè)開關(guān)的子程序中,判斷是否有別的開關(guān)撥動(dòng),如果有別的開關(guān)撥動(dòng)則執(zhí)行別的程序,否則輸出原來的波形,不過如果要能夠識(shí)別別的開關(guān)發(fā)生變化,必須將此開關(guān)關(guān)掉否則會(huì)識(shí)別不了
16、別的鍵按下。當(dāng)然開關(guān)的調(diào)頻和調(diào)幅的實(shí)現(xiàn)也一樣,不過首先先輸出一個(gè)波形,然后再檢測(cè)開關(guān)是否需要調(diào)頻或者調(diào)幅,如果需要?jiǎng)t轉(zhuǎn)入到相應(yīng)的程序中,最后再重新輸出波形。下面是調(diào)頻和調(diào)幅:開 始判斷p3.5是否為1?否是輸出各種波形調(diào)整一下數(shù)字量下面要實(shí)現(xiàn)的各種波形通過開關(guān)的切換過程的流程圖,按下一個(gè)開關(guān)通過p3.0為1則輸出鋸齒波,p3.1為1輸出三角波,p3.2為1輸出梯形波,p3.3為1輸出方波,p3.4為1輸出正弦波。開 始判斷p3.0是否為1?判斷p3.1是否為1?判斷p3.2是否為1?判斷p3.3是否為1?判斷p3.4是否為1?否否否否否是是是是是輸出響應(yīng)的波形 八、程序調(diào)試步驟與運(yùn)行結(jié)果81、
17、調(diào)試步驟(1)、按照實(shí)驗(yàn)原理圖及電路圖和接線步驟連好實(shí)驗(yàn)線路。(2)、把設(shè)計(jì)好的程序放在兩個(gè)地方:一是在系統(tǒng)監(jiān)控中,二是在上位機(jī)實(shí)驗(yàn)系統(tǒng)軟件中。(3)、運(yùn)行“dvcc實(shí)驗(yàn)系統(tǒng)”,稍后出現(xiàn)“dvcc實(shí)驗(yàn)系統(tǒng)”菜單。打開存放的課設(shè)程序。(4)、打開實(shí)驗(yàn)箱外置電源,顯示器顯示閃動(dòng)的“p.”,按下“reset 復(fù)位鍵,然后按下“pcdbg”功能鍵,再點(diǎn)擊系統(tǒng)菜單中的“聯(lián)接”,此時(shí)出現(xiàn)“寄存器窗口”、“反匯編窗口”和“數(shù)據(jù)窗口”等,說明聯(lián)機(jī)成功。再點(diǎn)“編譯”和“調(diào)試”,將目標(biāo)文件傳送到實(shí)驗(yàn)系統(tǒng)的仿真ram區(qū)。最后點(diǎn)擊“運(yùn)行”,將輸出端連接到示波器,觀察波形是否滿足設(shè)計(jì)要求。82、運(yùn)行結(jié)果根據(jù)p3口內(nèi)容判
18、斷波形輸出,p3.0=1時(shí),為鋸齒波;p3.1=1時(shí),為三角波;p3.2=1時(shí),為梯形波;p3.3=1時(shí),為方波;p3.4=1時(shí),為正弦波。根據(jù)p3.5的值進(jìn)行頻率與振幅的改變,改變當(dāng)前波形頻率,改變當(dāng)前波形振幅。各個(gè)波形的運(yùn)行情況如下:(1)、正弦波原始大小及調(diào)頻調(diào)幅后的波形: 原始正弦波 頻率改變后 振幅改變后(2)、三角波原始大小及調(diào)頻調(diào)幅后的波形: 原始三角波 頻率改變后 振幅改變后(3)、鋸齒波原始大小及調(diào)頻調(diào)幅后的波形: 原始鋸齒波 頻率改變后 振幅改變后(4)、方波原始大小及調(diào)頻調(diào)幅后的波形: 原始方波 頻率改變后 振幅改變后(4)、梯形波原始大小及調(diào)頻調(diào)幅后的波形:原始方波 頻
19、率改變后 振幅改變后九、課程設(shè)計(jì)體會(huì)一個(gè)星期的課程設(shè)計(jì)很快就這樣過去了,經(jīng)過此課程設(shè)計(jì)我已經(jīng)了解了dac0832的基本的功能的實(shí)現(xiàn)和開關(guān)的操作。以此在實(shí)現(xiàn)這些功能時(shí),我遇到了一些問題,這些問題困擾了我好久。我的實(shí)現(xiàn)步驟就是首先能夠讓示波器能夠輸出一些基本的波形,首先檢查一下示波器是否是好的,檢測(cè)方法:將探頭插到示波器的一個(gè)接口處,然后調(diào)示波器如果能夠出來一個(gè)矩形波則說明示波器沒有問題,下面就可以編寫程序,實(shí)現(xiàn)各個(gè)波形的輸出,不過在實(shí)現(xiàn)第二步時(shí)發(fā)現(xiàn)一個(gè)問題就是示波器沒有問題,可是運(yùn)行程序時(shí)波形就是沒有輸出,我不斷的檢查電路,首先從線開始著手,檢查一下這些線內(nèi)部是否時(shí)導(dǎo)通的,后來發(fā)現(xiàn)沒有問題,接著
20、就是檢查8031單片機(jī)是否有問題,檢測(cè)方法是將單片機(jī)的ale端口作為輸出端,我檢測(cè)到有波形輸出,這說明單片機(jī)沒有問題,最后就是檢查dac0832是否有問題,通過運(yùn)行系統(tǒng)自帶的程序,后來發(fā)現(xiàn)dac0832的aout端口能夠輸出,這又檢測(cè)到了dac0832沒有問題,后來我就無計(jì)可施了,只能請(qǐng)教老師,結(jié)果經(jīng)老師檢查發(fā)現(xiàn)有一個(gè)根線接錯(cuò)了,d/a區(qū)的vref應(yīng)該和+5v相連接,還有就是一個(gè)開關(guān)給撥動(dòng)了。當(dāng)然還有一些問題就是系統(tǒng)設(shè)置的問題,因?yàn)閐ac0832的使用要接線實(shí)現(xiàn),所以在運(yùn)行之前一定要修改系統(tǒng)設(shè)置,把它調(diào)成“內(nèi)程序,外數(shù)據(jù)”,否則波形也不會(huì)輸出。后來調(diào)整一下就能夠輸出波形了。就這樣我整整花1天的
21、時(shí)間才解決了這個(gè)問題。不過在運(yùn)行程序時(shí)必須知道怎樣調(diào)示波器,否則示波器不會(huì)調(diào)波形也不會(huì)輸出。此次設(shè)計(jì)可以說是理論知識(shí)與動(dòng)手能力的一次綜合演練,它要求我們不但要掌握其設(shè)計(jì)原理,能編出相應(yīng)的源程序,還要求我們有一定的硬件知識(shí),能動(dòng)手設(shè)計(jì)線路并搭建好。后來還有一個(gè)問題就是調(diào)頻調(diào)幅的問題,由于我開始在程序當(dāng)中設(shè)置的值過小導(dǎo)致后來我在示波器上看到的波形調(diào)頻后效果不是非常的明顯,后來我檢查完了之后我又自己在電腦上進(jìn)行修改程序調(diào)試終于把這個(gè)問題解決了。最后,我覺得一個(gè)星期的時(shí)間雖然過的很快但是非常的充實(shí)。在這里再一次感謝周老師的指導(dǎo)和同學(xué)的幫助。十、參考文獻(xiàn) 1、主編:張毅剛,副主編:彭喜元,董繼成 單片機(jī)
22、原理及應(yīng)用,高等教育出版社。 2、主編:胡輝單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與訓(xùn)練 中國(guó)水利水電出版社3、主編:周航慈單片機(jī)應(yīng)用程序設(shè)計(jì)技術(shù) 北京航空航天大學(xué)出版社 十一、源代碼及注釋波形輸出程序和切換: org 0000h ;程序開始 mov sp,#60h ;設(shè)置堆棧mov dptr,#8000h ;0832的地址lop: jb p3.5,tiao ;是否需要調(diào)頻 mov r6,#01h ;設(shè)置步長(zhǎng) mov r5,#01h start:jb p3.0,jchi ;輸出鋸齒波程序 jb p3.1,sjiao ;輸出三角波程序 jb p3.2,txing ;輸出梯形波程序 jb p3.3,fbo ;輸出方波
23、程序 jb p3.4,zxuan ;輸出正弦波程序 sjmp lop ;循環(huán)檢測(cè);- jchi:mov a,#00h ;設(shè)置初值 loop:movx dptr,a ;把數(shù)據(jù)送到端口轉(zhuǎn)換 add a,r6 ;通過步長(zhǎng)改變數(shù)據(jù),上升波形 cjne a,#00h,loop ;a值是否到最高點(diǎn) ; djnz r5,loop sjmp lop ;返回檢測(cè)開關(guān);-sjiao:mov a,#00h ;設(shè)置初值 loop3:movx dptr,a ;把數(shù)據(jù)送到端口轉(zhuǎn)換 add a,r6 ;通過步長(zhǎng)改變數(shù)據(jù)上升波形 cjne a,#00h,loop3 ; a值是否到最高點(diǎn) dec a ;減少步長(zhǎng)改變數(shù)據(jù)下降波形
24、 loop2:movx dptr,a ;把數(shù)據(jù)送到端口轉(zhuǎn)換 dec a ;減少步長(zhǎng)改變數(shù)據(jù)下降波形 cjne a,#00h,loop2 ;a值是否到最低點(diǎn) djnz r5,loop3 ;波形周期 sjmp lop ;返回檢測(cè)開關(guān);-txing:mov a,#00h ;設(shè)置初值 loop4:movx dptr,a ;把數(shù)據(jù)送到端口轉(zhuǎn)換 add a,r6 ;增加步長(zhǎng)改變數(shù)據(jù)上升波形 cjne a,#00h,loop4 ;a值是否到最高點(diǎn) ;subb a,r6 ;下降波形做準(zhǔn)備 dec a mov r7,0eeh ;循環(huán)次數(shù) lop2:movx dptr,a ;進(jìn)行延時(shí) djnz r7,lop2 l
25、oop1:movx dptr,a ;把數(shù)據(jù)送到端口轉(zhuǎn)換 ;subb a,r6 dec a cjne a,#00h,loop1 ;是否到最低點(diǎn) mov r7,0eeh ;循環(huán)次數(shù) lop1:movx dptr,a ;把數(shù)據(jù)送到端口轉(zhuǎn)換 djnz r7,lop1 ;進(jìn)行延時(shí) sjmp lop ;返回檢測(cè)開關(guān);- fbo: mov a,#00h ;設(shè)置初值最低點(diǎn) mov r7,#0eeh ;循環(huán)次數(shù) loop5:movx dptr,a ;進(jìn)行數(shù)據(jù)轉(zhuǎn)換 djnz r7,loop5 ;進(jìn)行延時(shí) mov a,#0ffh ;設(shè)置最高點(diǎn) mov r7,#0eeh ;循環(huán)次數(shù) loop6:movx dptr,a
26、 ;進(jìn)行數(shù)據(jù)轉(zhuǎn)換 djnz r7,loop6 ;進(jìn)行延時(shí) mov a,#00h sjmp lop ;返回檢測(cè)開關(guān)變化;-zxuan: mov a,#00h ;設(shè)置初值loop7: mov r7,a ;保存當(dāng)前的數(shù)據(jù) mov dptr,#sin ;讀取表的地址 movc a,a+dptr ;讀取表中的數(shù)據(jù) mov dptr,#8000h ;d/a0832的端口地址 movx dptr,a ;進(jìn)行數(shù)據(jù)轉(zhuǎn)換 mov a,r7 ;恢復(fù)當(dāng)前數(shù)據(jù) inc a ;為讀取表的下一個(gè)值做準(zhǔn)備 cjne a,#00h,loop7 是否讀完表的數(shù)據(jù) sjmp start ;返回檢測(cè)開關(guān)tiao: mov r6,#0
27、4h ;改變調(diào)頻/調(diào)幅 mov r5,#02h sjmp start ;返回檢測(cè)開關(guān);-以下是通過正弦的值所建立的一個(gè)表sin: db 80h,83h,86h,89h,8dh,90h,93h,96h db 99h,9ch,9fh,0a2h,0a5h,0a8h,0abh,0aeh dbb1h,0b4h,0b7h,0bah,0bch,0bfh,0c2h,0c5h db0c7h,0cah,0cch,0cfh,0d1h, 0d4h,0d6h,0d8h db 0dah,0ddh,0dfh,0e1h,0e3h, 0e5h,0e7h,0e9h db 0eah,0ech,0eeh,0efh,0f1h, 0f2h,0f4h,0f5h db 0f6h,0f7h,0f8h,0f9h,0fah, 0fbh,0fch,0fdh db 0fdh,0feh,0ffh,0ffh,0ffh, 0ffh,0ffh,0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh,0feh,0fdh db 0fdh,0fch,0fbh,0fah,0f9h, 0f8h,0f7h,0f6h db 0f5h,0f4h,0f2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第十一章 異常分娩 第一節(jié)產(chǎn)力異常課件
- 解剖生理內(nèi)臟04男性生殖系統(tǒng)課件
- 2024年安全月心得體會(huì)(30篇)
- 2025年江西新余市分宜縣中小企業(yè)融資擔(dān)保有限公司招聘筆試參考題庫附帶答案詳解
- 2025年云南楚雄州元謀縣國(guó)有資產(chǎn)投資管理有限公司招聘筆試參考題庫附帶答案詳解
- 2025年合肥合翼航空有限公司招聘筆試參考題庫含答案解析
- 2025年咸陽水務(wù)集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 2025年山東光明電力服務(wù)公司招聘筆試參考題庫含答案解析
- 2025年福州左投置業(yè)有限公司招聘筆試參考題庫含答案解析
- 2025年嘉善星創(chuàng)實(shí)業(yè)有限公司招聘筆試參考題庫含答案解析
- 2025年遼寧省大連市普通高中學(xué)業(yè)水平合格性考試模擬政治試題(一)
- 2024版戶外廣告牌安裝與維護(hù)服務(wù)合同2篇
- 2024年5月江蘇省事業(yè)單位招聘考試【綜合知識(shí)與能力素質(zhì)】真題及答案解析(管理類和其他類)
- 云南省昆明市五華區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末數(shù)學(xué)試卷
- 安徽省合肥市第四十中學(xué)2024~2025學(xué)年九年級(jí)上學(xué)期化學(xué)期末模擬試題(含答案)
- 安徽省淮北市(2024年-2025年小學(xué)六年級(jí)語文)部編版期末考試((上下)學(xué)期)試卷及答案
- 注漿工安全技術(shù)措施
- 大學(xué)生職業(yè)生涯規(guī)劃
- 干燥綜合征的護(hù)理查房
- 江蘇省徐州市2023-2024學(xué)年六年級(jí)上學(xué)期期末科學(xué)試卷(含答案)2
- 五年級(jí)數(shù)學(xué)上冊(cè)七大重點(diǎn)類型應(yīng)用題
評(píng)論
0/150
提交評(píng)論