嵌入式微控課程設(shè)計(jì)-多功能信號(hào)發(fā)生器_第1頁(yè)
嵌入式微控課程設(shè)計(jì)-多功能信號(hào)發(fā)生器_第2頁(yè)
嵌入式微控課程設(shè)計(jì)-多功能信號(hào)發(fā)生器_第3頁(yè)
嵌入式微控課程設(shè)計(jì)-多功能信號(hào)發(fā)生器_第4頁(yè)
嵌入式微控課程設(shè)計(jì)-多功能信號(hào)發(fā)生器_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

課程:嵌入式微控制器技術(shù)題目:多功能信號(hào)發(fā)生器設(shè)計(jì)指導(dǎo)老師:專(zhuān)業(yè)班級(jí):自動(dòng)化班姓名:學(xué)號(hào):完成日期:2023年1月24日目錄一、課程設(shè)計(jì)名稱(chēng)及要求3二、設(shè)計(jì)思想和實(shí)施方案32.1總體設(shè)計(jì)思路32.2總體設(shè)計(jì)框圖42.3實(shí)施方案42.4硬件原理圖6三、典型程序模塊63.1矩陣鍵盤(pán)局部63.2波形產(chǎn)生局部93.3數(shù)碼管顯示局部103.4蜂鳴器報(bào)警局部123.5D/A轉(zhuǎn)換局部133.6軟件設(shè)計(jì)14四、課程設(shè)計(jì)中遇到的問(wèn)題及解決方法154.1波形產(chǎn)生局部154.2D/A轉(zhuǎn)換局部154.3調(diào)頻調(diào)幅局部154.4鍵盤(pán)掃描局部154.5上限報(bào)警局部15五、主程序流程圖165.1主程序流程16六、收獲與體會(huì)16七、參考文獻(xiàn)18八、程序清單18一、設(shè)計(jì)課題名稱(chēng)及要求題目:多功能信號(hào)發(fā)生器設(shè)計(jì)設(shè)計(jì)要求:〔1〕、使用匯編語(yǔ)言和C語(yǔ)言〔必做〕;〔2〕、程序功能要求〔必做〕:通過(guò)小鍵盤(pán)和開(kāi)關(guān)給定,實(shí)現(xiàn)信號(hào)源啟動(dòng)/停止、輸出不同類(lèi)型信號(hào)波形〔正弦波、三角波、方波、鋸齒波等〕、具備調(diào)壓、調(diào)頻功能、數(shù)碼管〔或液晶屏〕顯示當(dāng)前信號(hào)源狀態(tài)及相關(guān)參數(shù),簡(jiǎn)單故障診斷與報(bào)警?!?〕、上位機(jī)監(jiān)控功能要求〔選做〕:通過(guò)串口或USB口實(shí)現(xiàn)上/下位機(jī)通信,能夠顯示信號(hào)發(fā)生器當(dāng)前狀態(tài)和相關(guān)參數(shù)信息,能夠從上位機(jī)控制下位機(jī)的工作。二、設(shè)計(jì)思想和實(shí)施方案題目要求是通過(guò)小鍵盤(pán)和開(kāi)關(guān)給定,實(shí)現(xiàn)信號(hào)源啟動(dòng)/停止、輸出正弦波、三角波、方波、鋸齒波等波形并且可調(diào)壓調(diào)頻,用數(shù)碼管或液晶屏顯示當(dāng)前信號(hào)源的狀態(tài)及相關(guān)參數(shù),具備故障診斷和報(bào)警功能。2.1總體設(shè)計(jì)思路根據(jù)題目的要求,經(jīng)過(guò)仔細(xì)的考慮各種要素,制定了整體方案:以AT89C51單片機(jī)為控制核心,P0口接共陽(yáng)極數(shù)碼管顯示器,P1口接矩陣鍵盤(pán),P2口接串行接口D/A轉(zhuǎn)換器TLC5615和蜂鳴器報(bào)警電路,在TLC5615輸出引腳接示波器,P3口接數(shù)碼管位選控制信號(hào)。由矩陣鍵盤(pán)按鍵及按鍵次數(shù)控制產(chǎn)生波形的種類(lèi)及頻率和幅值在一定范圍內(nèi)可調(diào)和顯示波形參數(shù),波形參數(shù)由P0口輸入到數(shù)碼管,由P3口循環(huán)位選數(shù)碼管,由程序控制P2口產(chǎn)生波形〔分別是鋸齒波、三角波、方波和正弦波〕,在調(diào)壓調(diào)頻到達(dá)上限時(shí)蜂鳴器響報(bào)警并清零至下限。波形的合成:為了波形的合成,我們?cè)诓蓸拥臅r(shí)候,對(duì)鋸齒波、三角波、方波、正弦波都只取20個(gè)點(diǎn)。2.2總體設(shè)計(jì)框圖本系統(tǒng)總體框圖如圖1所示AT89C51AT89C51P0.0~P0.7P2.0~P2.2P2.7P1.0P3.4~P1.7P3.7數(shù)碼管段選系統(tǒng)時(shí)鐘數(shù)碼管段選系統(tǒng)時(shí)鐘示示波器TLC5615系統(tǒng)復(fù)位TLC5615系統(tǒng)復(fù)位蜂鳴器蜂鳴器數(shù)碼管位選矩陣鍵盤(pán)數(shù)碼管位選矩陣鍵盤(pán)圖1系統(tǒng)總體框圖2.3實(shí)施方案2.3.1矩陣鍵盤(pán)局部在單片機(jī)P3口端口接有矩陣式鍵盤(pán),矩陣式鍵盤(pán)由4條行線和4條列線所組成,16個(gè)按鍵設(shè)置在行、列線交點(diǎn)上,其中4條行線的一端分別與單片機(jī)P1口的P1.0、P1.1、P1.2、P1.3相接,另一端通過(guò)上拉電阻接到+5V上,平時(shí)使行線處于高電平狀態(tài);而4條列線一段分別與P1.4、P1.5、P1.6、P1.7相接。當(dāng)掃描開(kāi)始時(shí),首先將行設(shè)置為低電平,在判斷有鍵被按下后、讀入列狀態(tài),如果列狀態(tài)出現(xiàn)并非全部為1狀態(tài),這時(shí)0狀態(tài)的列與行相交的鍵就是被按下的鍵。波形產(chǎn)生局部波形產(chǎn)生可以通過(guò)增加步長(zhǎng)并延時(shí),外加循環(huán)的方式來(lái)實(shí)現(xiàn),這種方式對(duì)于鋸齒波、三角波和方波都易實(shí)現(xiàn),但是對(duì)于正弦波,由于它是非線性的,實(shí)現(xiàn)起來(lái)較為困難。假設(shè)用C語(yǔ)言編程,可以直接調(diào)用C語(yǔ)言自帶的sin函數(shù)來(lái)實(shí)現(xiàn),由于匯編語(yǔ)言不帶sin函數(shù),所以在匯編編程產(chǎn)生正弦波比擬容易實(shí)現(xiàn)的方式為查表方式,預(yù)先將正弦采樣點(diǎn)數(shù)值存儲(chǔ)在表中,通過(guò)指針調(diào)用顯示(采樣點(diǎn)數(shù)值可以通過(guò)數(shù)學(xué)計(jì)算得出,也可以通過(guò)MATLAB采樣得出)。其他三種波也可以通過(guò)查表方式,這樣四種波形可只使用同一函數(shù)段實(shí)現(xiàn)。由于本程序使用匯編語(yǔ)言編寫(xiě),故使用查表方式。數(shù)碼管顯示局部單片機(jī)實(shí)現(xiàn)顯示功能需要做的步驟有:將計(jì)算好的十六進(jìn)制的波形幅度數(shù)值、周期數(shù)值轉(zhuǎn)換成適應(yīng)LED數(shù)碼管顯示的數(shù)據(jù),即進(jìn)行十進(jìn)制處理,并存入數(shù)碼管顯示內(nèi)存中〔事先設(shè)置的存放顯示器數(shù)據(jù)單元〕。再經(jīng)掃描顯示程序使之能在數(shù)碼管上顯示數(shù)據(jù)。掃描顯示子程序動(dòng)態(tài)顯示送入4位LED數(shù)碼管數(shù)據(jù)。所謂的動(dòng)態(tài)顯示是指一位一位輪流點(diǎn)亮LED數(shù)碼管,每一位停留4ms,利用人的視覺(jué)暫留消除閃爍現(xiàn)象。蜂鳴器報(bào)警局部在調(diào)幅調(diào)周期到達(dá)上限以后通過(guò)軟件將P2.7口置1,使之上下電平交替延時(shí),即可使蜂鳴器產(chǎn)生鳴叫。D/A轉(zhuǎn)換局部D/A轉(zhuǎn)換可用的芯片有DAC0832、TLC5615等,DAC0832芯片的8位數(shù)字量采用并行輸入,占用端口較多,在初步設(shè)計(jì)時(shí)決定采用通過(guò)3根串行總線就可以完成10位數(shù)據(jù)串行輸入的TLC5615。調(diào)幅調(diào)頻局部調(diào)頻調(diào)幅原理相同,一個(gè)是改變延時(shí),一個(gè)是改變步長(zhǎng)。在確定延時(shí)和步長(zhǎng)基值的根底上,通過(guò)乘以調(diào)頻調(diào)幅倍數(shù)即可得到各個(gè)幅度和各個(gè)周期值得波形。對(duì)于如何確定調(diào)頻調(diào)幅的倍數(shù),有兩種方式實(shí)現(xiàn),一是通過(guò)A/D轉(zhuǎn)換芯片TLC549可以得到00H--0FFH范圍內(nèi)的數(shù)值,但是電壓上限時(shí)+5V,TLC549產(chǎn)生的絕大局部數(shù)據(jù)作為基值乘以的倍數(shù)顯然是不符合實(shí)際使用的,會(huì)造成波形削頂現(xiàn)象,對(duì)此可以通過(guò)將每次A/D產(chǎn)生的數(shù)據(jù)除以一個(gè)常數(shù),如#50,即可使之減小,同時(shí)產(chǎn)生的弊端是A/D轉(zhuǎn)換的數(shù)據(jù)只有幾個(gè)特定值,無(wú)極調(diào)幅無(wú)極調(diào)頻變成了有極調(diào)頻有極調(diào)幅。鑒于上述原因,本次設(shè)計(jì)直接采用有極調(diào)頻,預(yù)先設(shè)定一個(gè)存儲(chǔ)單元存儲(chǔ)要輸入的倍數(shù)即可,實(shí)現(xiàn)起來(lái)較為簡(jiǎn)單。2.4硬件原理圖三、典型程序模塊3.1矩陣鍵盤(pán)局部程序:KEYSCAN: MOVR4,#00HKEY_L1: MOVR3,#0F7H ;掃描初值〔P3.3=0〕 MOVR1,#00H ;取碼指針KEY_L2: MOVA,R3 ;開(kāi)始行掃描 MOVP1,A MOVA,P1 MOVR4,A SETBC MOVR5,#04H KEY_L3: RLCA JNCKEY_KEY INCR1 DJNZR5,KEY_L3 MOVA,R3 SETBC RRCA MOVR3,A JCKEY_L2 JMPKEY_L1 KEY_KEY: ACALLKEY_DELAY KEY_D1: MOVA,P1 XRLA,R4 JZKEY_D1 MOVA,R1 CJNEA,#00H,M1 JMPJUCHIM1: CJNEA,#01H,M2 JMPSANJIAOM2: CJNEA,#02H,M3 JMPFANGBOM3: CJNEA,#03H,M4 JMPZHENGXIANM4: CJNEA,#04H,M5 JMPTLC549_AD1M5: CJNEA,#05H,M6 JMPTLC549_AD2M6: CJNEA,#06H,M7 JMPTLC549_AD3M7: CJNEA,#07H,M8 JMPTLC549_AD4M8: CJNEA,#08H,KEY_L1 JMPCONV_DISPKEY_DELAY: MOVR7,#60 MOVR6,#248KEY_DLY1: DJNZR6,$ DJNZR7,KEY_DLY1 RET3.2波形產(chǎn)生局部程序〔僅列出正弦波,其他相似〕:ZHENGXIAN: MOVP1,#0F0H MOVR0,#AMP MOVDPTR,#TABLE4 MOVR7,#0ZHENGXIAN_L1: MOVA,R7 MOVCA,@A+DPTR MOVB,@R0 MULAB ACALLDA_CON ACALLDELAYZHENGXIAN INCR7 CJNER7,#20,ZHENGXIAN_L1 MOVA,P1 CJNEA,#0F0H,ZHENGXIAN_L2 JMPZHENGXIANZHENGXIAN_L2: LJMPKEYSCANDELAYZHENGXIAN: MOVR1,FREZHENGXIAN_L3: MOVR6,#24 DJNZR6,$ DJNZR1,ZHENGXIAN_L3 RETTABLE4: DB13,16,18,19,20,19,18,16,13,10,7,4,2,1,0,1,2,4,7,10,133.3數(shù)碼管顯示局部程序:DISP: MOVP1,#0F0HDISP_L1: MOVR0,#BUF MOVR2,#4 MOVACC,#10000000BS1: PUSHACC MOVA,@R0 MOVP0,A POPACC MOVP3,ACC MOVR5,#40 ACALLDELAYCONV_DISP RRA INCR0 DJNZR2,S1 MOVA,P1 CJNEA,#0F0H,DISP_L2 JMPDISP_L1DISP_L2: LJMPKEYSCAN3.4蜂鳴器報(bào)警局部 MOVR4,#100 EXT0_D21: MOVR5,#10 ACALLDELAYEXT01 SETBP2.7 MOVR5,#10 ACALLDELAYEXT01 CLRP2.7 DJNZR4,EXT0_D213.5D/A轉(zhuǎn)換局部DA_CON: MOVR4,A;把表值賦給高位R4 MOVR5,#0 ;把0賦給低位R5 MOVR2,#08H ;高位轉(zhuǎn)換循環(huán)次數(shù) MOVR3,#04H;低位轉(zhuǎn)換循環(huán)次數(shù) CLRC CLRSCK SETBCS NOP CLRCS MOVA,R4LOOPH: NOP ;高位轉(zhuǎn)換 RLCA MOVDI,C SETBSCK NOP CLRSCK DJNZR2,LOOPH MOVA,R5LOOPL: NOP ;低位轉(zhuǎn)換 RLCA MOVDI,C SETBSCK NOP CLRSCK DJNZR3,LOOPL SETBCS RET3.6軟件設(shè)計(jì)主程序和子程序都存放在AT89C51單片機(jī)中。主程序的功能是:開(kāi)機(jī)以后負(fù)責(zé)查鍵,即做出鍵盤(pán)掃描及顯示工作,然后根據(jù)用戶(hù)所按的鍵轉(zhuǎn)到相應(yīng)的子程序進(jìn)行處理。子程序的功能有:按鍵掃描子程序、延時(shí)子程序、顯示子程序、調(diào)頻調(diào)幅子程序、D/A轉(zhuǎn)換子程序、十六進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)子程序,其中調(diào)頻調(diào)幅子程序中包含上限報(bào)警程序段。主程序的流程圖如下圖:完成全部硬件和軟件過(guò)后,將程序下載到單片機(jī)中進(jìn)行測(cè)試,通過(guò)反復(fù)測(cè)試,反復(fù)的修改函數(shù)的功能,同時(shí)完善硬件的功能,使系統(tǒng)到達(dá)最優(yōu)控制。四、課程設(shè)計(jì)中遇到的問(wèn)題及解決方法4.1波形產(chǎn)生局部初步預(yù)定是通過(guò)程序自增自減并加延時(shí)的方式產(chǎn)生波形,但是在產(chǎn)生正弦波這一模塊遇到了困難,所以統(tǒng)一全部用查表的方式4.2D/A轉(zhuǎn)換局部TLC5615轉(zhuǎn)換的是12位數(shù)據(jù)〔其中最低兩位為0〕,而單片機(jī)產(chǎn)生的數(shù)據(jù)是8位數(shù)據(jù),在轉(zhuǎn)換時(shí)決定將數(shù)據(jù)統(tǒng)一送入高位存放器,轉(zhuǎn)換8次,而將低位存放器統(tǒng)一移入0轉(zhuǎn)換4次,總共12次循環(huán),分為高位局部和低位局部分別進(jìn)行轉(zhuǎn)換。4.3調(diào)頻調(diào)幅局部利用TLC459芯片A/D轉(zhuǎn)換可用得到一個(gè)數(shù)據(jù)作為幅度、周期基值的倍數(shù),但實(shí)際運(yùn)用時(shí)調(diào)試程序總是達(dá)不到預(yù)期效果,而且將轉(zhuǎn)換后的數(shù)值同除以一個(gè)固定數(shù)后和有極調(diào)頻調(diào)幅效果相同,所以決定直接在軟件中實(shí)現(xiàn)調(diào)頻調(diào)幅。4.4鍵盤(pán)掃描局部參照資料書(shū)上的鍵盤(pán)掃描程序,鍵盤(pán)一直處于掃描中,在作為主程序需要找到分支入口,所以在掃描鍵盤(pán)生成鍵值后增加了比擬不等轉(zhuǎn)移語(yǔ)句,以指向分支結(jié)構(gòu)。4.5上限報(bào)警局部上限報(bào)警局部原準(zhǔn)備利用外部中斷實(shí)現(xiàn),但是外部中斷P3.2口利用軟件清零是不能觸發(fā)外部中斷的,直接利用按鍵又失去了報(bào)警的價(jià)值,于是直接將報(bào)警程序段嵌入調(diào)幅調(diào)頻局部局部,也可到達(dá)目的。此外,蜂鳴器在程序運(yùn)行開(kāi)始就鳴叫,所以在主程序中參加P2.7清零語(yǔ)句。五、主程序流程圖5.1主程序流程圖主程序流程圖如圖2所示開(kāi)始開(kāi)始鍵盤(pán)掃描鍵盤(pán)掃描輸出鍵值輸出鍵值84~70~384~70~3顯示狀態(tài)調(diào)頻調(diào)幅波形產(chǎn)生顯示狀態(tài)調(diào)頻調(diào)幅波形產(chǎn)生是否有鍵按下是否有鍵按下結(jié)束結(jié)束圖2主程序流程圖六、收獲與體會(huì)本次課程設(shè)計(jì),讓我感受到了理論與實(shí)踐相結(jié)合的重要性和困難性。要想深入地學(xué)習(xí)到一門(mén)知識(shí)的內(nèi)容,僅僅停留在理論層面是不夠的,不僅理解不透,而且也不利于進(jìn)一步的深入。而在理論與實(shí)踐直接建立連接,也不是很容易的。從軟件方面來(lái)說(shuō),一個(gè)大的完整的程序肯定不是放在一起調(diào)試的,是將其分成幾個(gè)模塊后分別調(diào)試,調(diào)試成功后再組合在一起再整體調(diào)試。在模塊調(diào)試過(guò)程中,經(jīng)常遇到的一個(gè)問(wèn)題就是:程序看似合情合理,但就是不出結(jié)果或者結(jié)果不是預(yù)期想要的,這是一件非常苦惱的事,一些錯(cuò)誤可以在調(diào)試過(guò)程中找出來(lái),但調(diào)試過(guò)程并不能找出所有的錯(cuò)誤,對(duì)于這種情況,就需要改變思路,或者重新編寫(xiě)程序段,改變軟件,或者換用其他芯片,改變硬件。從硬件方面來(lái)說(shuō),仿真得出結(jié)果并不意味著實(shí)際電路連接也可以同樣得到結(jié)果,得考慮根據(jù)仿真電路里顯示的電平上下一點(diǎn)點(diǎn)去排查實(shí)際電路里各個(gè)點(diǎn)的電平是否正確等等問(wèn)題,能利用實(shí)際電路得出結(jié)果意味著理解又深入了一層。在編程語(yǔ)言方面,本次課程設(shè)計(jì)我選擇通過(guò)匯編語(yǔ)言來(lái)實(shí)現(xiàn)。匯編語(yǔ)言和C語(yǔ)言只是語(yǔ)言不通,而他們需要實(shí)現(xiàn)的目標(biāo)是一致的。就像到達(dá)同一目的地的兩條道路,不通之處在于:利用C語(yǔ)言寫(xiě)比擬簡(jiǎn)單、容易實(shí)現(xiàn)、速度較快;而利用匯編語(yǔ)言實(shí)現(xiàn)比擬困難,但是匯編語(yǔ)言對(duì)于人思路的啟發(fā)是非常有幫助的,更能鍛煉人的思想。我們?cè)趯?shí)際運(yùn)用中,以后的學(xué)習(xí)中,可能大局部程序都是用C語(yǔ)言,但不能因此而擯棄匯編語(yǔ)言??偟膩?lái)說(shuō),本次課程設(shè)計(jì)我收獲頗豐!不僅是知識(shí)方面的理解,更多的是學(xué)習(xí)態(tài)度方面的,學(xué)好一門(mén)知識(shí)既需要堅(jiān)持不懈又需要選取捷徑或者避重就輕,具體如何需要我們自己把握。七、參考文獻(xiàn)[1]王守中.51單片機(jī)開(kāi)放入門(mén)與典型實(shí)例.北京:人民郵電出版社,2007[2]高玉芹.單片機(jī)原理與應(yīng)用及C51編程技術(shù).北京:機(jī)械工業(yè)出版社,2023[3]網(wǎng)絡(luò)八、程序清單;------------------------------------------;文件名稱(chēng):keshezonghe.asm;程序功能:多功能信號(hào)發(fā)生器;------------------------------------------;------------------程序初始化------------;定義調(diào)幅調(diào)周期、顯示數(shù)據(jù)單元地址 BUFEQU30H ;30~34H連續(xù)4個(gè)字節(jié)存放顯示器數(shù)據(jù) FREEQU34H ;存放調(diào)周期基值倍數(shù)變量 AMPEQU35H ;存放調(diào)幅度基值倍數(shù)變量 FREQEQU36H ;存放周期變量 AMPQEQU37H ;存放幅值變量;DA轉(zhuǎn)換TLC5615芯片引腳定義 DIBITP2.2 ;芯片DIN引腳定義 CSBITP2.1 ;芯片CS引腳定義 SCKBITP2.0 ;芯片SCLK引腳定義;程序開(kāi)始執(zhí)行地址 ORG0000H ;程序代碼由地址0開(kāi)始執(zhí)行 JMPSTART;--------------主程序---------------------START: MOVFRE,#15 ;調(diào)周期倍數(shù)賦初值15MOVAMP,#3 ;調(diào)幅度倍數(shù)賦初值3 CLRP2.7 ;清零蜂鳴器引腳;-------------鍵盤(pán)掃描子程序------------- KEYSCAN: MOVR4,#00HKEY_L1: MOVR3,#0F7H ;掃描初值〔P3.3=0〕 MOVR1,#00H ;取碼指針KEY_L2: MOVA,R3 ;開(kāi)始行掃描 MOVP1,A MOVA,P1 MOVR4,A SETBC MOVR5,#04H KEY_L3: RLCA JNCKEY_KEY INCR1 DJNZR5,KEY_L3 MOVA,R3 SETBC RRCA MOVR3,A JCKEY_L2 JMPKEY_L1 KEY_KEY: ACALLKEY_DELAY KEY_D1: MOVA,P1 XRLA,R4 JZKEY_D1 MOVA,R1 CJNEA,#00H,M1 JMPJUCHIM1: CJNEA,#01H,M2 JMPSANJIAOM2: CJNEA,#02H,M3 JMPFANGBOM3: CJNEA,#03H,M4 JMPZHENGXIANM4: CJNEA,#04H,M5 JMPTLC549_AD1M5: CJNEA,#05H,M6 JMPTLC549_AD2M6: CJNEA,#06H,M7 JMPTLC549_AD3M7: CJNEA,#07H,M8 JMPTLC549_AD4M8: CJNEA,#08H,KEY_L1 JMPCONV_DISPKEY_DELAY: MOVR7,#60 MOVR6,#248KEY_DLY1: DJNZR6,$ DJNZR7,KEY_DLY1 RET;-----------鋸齒波生成局部--------------JUCHI: MOVP1,#0F0H MOVR0,#AMP MOVDPTR,#TABLE1 MOVR7,#0JUCHI_L1: MOVA,R7 MOVCA,@A+DPTR MOVB,@R0 MULAB ACALLDA_CON ACALLDELAYJUCHI INCR7 CJNER7,#20,JUCHI_L1 MOVA,P1 CJNEA,#0F0H,KEYSCAN JMPJUCHI;------------鋸齒波延時(shí)子程序------------DELAYJUCHI: MOVR1,FRE JUCHI_L2: MOVR6,#24 DJNZR6,$ DJNZR1,JUCHI_L2 RET;-----------三角波生成局部--------------SANJIAO: MOVP1,#0F0H MOVR0,#AMP MOVDPTR,#TABLE2 MOVR7,#0SANJIAO_L1: MOVA,R7 MOVCA,@A+DPTR MOVB,@R0 MULAB ACALLDA_CON ACALLDELAYSANJIAO INCR7 CJNER7,#20,SANJIAO_L1 MOVA,P1 CJNEA,#0F0H,SANJIAO_L2 JMPSANJIAOSANJIAO_L2: LJMPKEYSCAN;------------三角波延時(shí)子程序------------ DELAYSANJIAO: MOVR1,FRESANJIAO_L3: MOVR6,#24 DJNZR6,$ DJNZR1,SANJIAO_L3 RET;-----------方波生成局部-----------------FANGBO: MOVP1,#0F0H MOVR0,#AMP MOVDPTR,#TABLE3 MOVR7,#0FANGBO_L1: MOVA,R7 MOVCA,@A+DPTR MOVB,@R0 MULAB ACALLDA_CON ACALLDELAYFANGBO INCR7 CJNER7,#20,FANGBO_L1 MOVA,P1 CJNEA,#0F0H,FANGBO_L2 JMPFANGBOFANGBO_L2: LJMPKEYSCAN;------------方波延時(shí)子程序-------------- DELAYFANGBO: MOVR1,FREFANGBO_L3: MOVR6,#24 DJNZR6,$ DJNZR1,FANGBO_L3 RET;-----------正弦波生成局部--------------ZHENGXIAN: MOVP1,#0F0H MOVR0,#AMP MOVDPTR,#TABLE4 MOVR7,#0ZHENGXIAN_L1: MOVA,R7 MOVCA,@A+DPTR MOVB,@R0 MULAB ACALLDA_CON ACALLDELAYZHENGXIAN INCR7 CJNER7,#20,ZHENGXIAN_L1 MOVA,P1 CJNEA,#0F0H,ZHENGXIAN_L2 JMPZHENGXIANZHENGXIAN_L2: LJMPKEYSCAN;------------正弦波延時(shí)子程序------------ DELAYZHENGXIAN: MOVR1,FREZHENGXIAN_L3: MOVR6,#24 DJNZR6,$ DJNZR1,ZHENGXIAN_L3 RET;------------TLC5615芯片DA轉(zhuǎn)換子程序------DA_CON: MOVR4,A;把表值賦給高位R4 MOVR5,#0 ;把0賦給低位R5 MOVR2,#08H ;高位轉(zhuǎn)換循環(huán)次數(shù) MOVR3,#04H;低位轉(zhuǎn)換循環(huán)次數(shù) CLRC CLRSCK SETBCS NOP CLRCS MOVA,R4LOOPH: NOP ;高位轉(zhuǎn)換 RLCA MOVDI,C SETBSCK NOP CLRSCK DJNZR2,LOOPH MOVA,R5LOOPL: NOP ;低位轉(zhuǎn)換 RLCA MOVDI,C SETBSCK NOP CLRSCK DJNZR3,LOOPL SETBCS RET;------------掃描顯示局部-----------------CONV_DISP: MOVA,AMP MOVB,#1 MULAB MOVAMPQ,A MOVA,FRE MOVB,#1 MULAB MOVFREQ,A ACALLCONV JMPDISP;-----幅值、周期轉(zhuǎn)換為十進(jìn)制子程序------- CONV: MOVA,AMPQ MOVB,#10 DIVAB MOVDPTR,#TABLE MOVCA,@A+DPTR MOVBUF,A MOVA,B MOVCA,@A+DPTR MOVBUF+1,A MOVA,FREQ MOVB,#10 DIVAB MOVDPTR,#TABLE MOVCA,@A+DPTR MOVBUF+2,A MOVA,B MOVCA,@A+DPTR MOVBUF+3,A RET;-------------幅值、周期顯示局部----------DISP: MOVP1,#0F0HDISP_L1: MOVR0,#BUF MOVR2,#4 MOVACC,#10000000BS1: PUSHACC MOVA,@R0 MOVP0,A POPACC MOVP3,ACC MOVR5,#40 ACALLDELAYCONV_DISP RRA INCR0 DJNZR2,S1 MOVA,P1 CJNEA,#0F0H,DISP_L2 JMPDISP_L1DISP_L2: LJMPKEYSCAN ;-------------掃描顯示延時(shí)子程序----------DELAYCONV_DISP: MOVR6,#4D1CONV_DISP: MOVR7,#100 DJNZR7,$ DJNZR6,D1CONV_DISP DJNZR5,DELAYCONV_DISP RET;------------向上調(diào)幅局部-----------------TLC549_AD1: MOVP1,#0F0H INCAMP MOVA,AMP CJNEA,#06H,AD1_L0 MOVR4,#100 ;如果調(diào)到6倍〔6V〕那么報(bào)警EXT0_D21: MOVR5,#10 ACALLDELAYEXT01 SETBP2.7 MOVR5,#10 ACALLDELAYEXT01 CLRP2.7 DJNZR4,EXT0_D21 MOVAMP,#00H ;且清零可重新向上調(diào)AD1_L0: MOVA,P1AD1_L1: CJNEA,#0F0H,AD1_L1 SJMPAD1_L2AD1_L2: LJMPKEYSCANDELAYEXT01: MOVR6,#4EXT0_D11: MOVR7,#100 DJNZR7,$ DJNZR6,EXT0_D11 DJNZR5,DELAYEXT01 RET ;------------向下調(diào)幅局部------------

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論