基于51單片機的波形發(fā)生器畢業(yè)論文_第1頁
已閱讀1頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  基于單片機原理的波形發(fā)生器</p><p><b>  摘要:</b></p><p>  本系統采用單片機C8051為控制核心,輸出數字量,然后由DAC0832把數字量轉換成模擬量;但是輸出的是電流,需要用運放(OP07),把電流轉換成電壓量。顯示利用的是LCD1602的液晶,顯示其波形,幅值。按鍵應用的是獨立按鍵,用來波形的切換,幅值,頻率的

2、調解。其運算核心,我們通過MATLAB對正弦波,三角板,正弦波進行采樣,得到一組組數據,然后同過數組存儲;利用中斷對數組進行掃描。其頻率的調解就是調節(jié)其中斷間隔的時間,幅值就是調節(jié)其數字的大小(同時乘以某個小于1的數)。為了波形的合成,我們采用的點的個數都是20個。</p><p>  關鍵詞:AT-89C51 DAC0832 獨立按鍵 OP07</p><p>  The D

3、esign of Waveform Generator Based on 51</p><p><b>  Abstract:</b></p><p>  This system adopts single-chip C8051 as the control core, digital output, and then by DAC0832 convert digit

4、al to analog; But the output is current, the need to use operational amplifier (OP07), the amount of current into a voltage. Display using the LCD1602 LCD, display the waveform amplitude. Key applications is independent,

5、 switch to waveform, amplitude, frequency of mediation. Its core operation, we use MATLAB to sine wave, triangle, the sine wave samples, groups of data, and then with an arr</p><p>  Keywords:AT-89C51 DAC0

6、832 Separate button OP07</p><p><b>  一、題目要求及分析</b></p><p>  設計任務:設計制作一個波形發(fā)生器,該波形發(fā)生器能產生正弦波、方波、三角波和由用戶編輯的特定形狀波形。</p><p><b>  示意圖如下:</b></p><p>

7、<b>  圖1 設計要求圖</b></p><p><b>  設計要求:</b></p><p>  1.具有產生正弦波、方波、三角波三種周期性波形的功能;</p><p>  2.用鍵盤輸入編輯生成上述三種波形(同周期)的線性組合波形,以及由基波及其諧波(5次以下)線性組合的波形。</p><p&

8、gt;  3.具有波形存儲功能。</p><p>  4.輸出波形的頻率范圍為100Hz~20kHz(非正弦波頻率按10次諧波計算);重復頻率可調,頻率步進間隔≤100Hz。</p><p>  5.輸出波形幅度范圍O~5V(峰—峰值),可按步進0.1V(峰—峰值)調整。</p><p>  6.具有顯示輸出波形的類型、重復頻率(周期)和幅度的功能。</p&g

9、t;<p>  7.增加紅外配置功能(串口配置程序或其他方式)</p><p>  二、總體系統方案設計</p><p>  題目要求實現的任務是設計并制作一個函數信號發(fā)生器,能夠產生正弦波、方波、三角波,要求不用DDS和專用的波形產生芯片,頻率范圍在1Hz~1MHZ可調,在頻率范圍為1HZ~10KHz時,步進不大于10Hz在頻率范圍為10KHz~1MHz時,步進不大于100

10、Hz,并且電壓范圍在0~5V可調,步進為0.1V,能夠實時的顯示波形的類型及其頻率和幅值?,F在對以下方案進論證和驗證。</p><p><b>  2.1總體設計思路</b></p><p>  根據題目的要求,經過仔細的考慮各種要素,制定了整體方案:以AT89C51單片機為控制核心,P0口接DAC0832信號輸入并進行數模轉換,P1口接矩陣鍵盤,P2口接液晶顯示器L

11、CD1602,由程序控制P0口產生波形(分別是正弦波、方波、三角波),再由按鍵及按鍵次數控制產生波形的種類及頻率和幅值在一定范圍內可調,并且能夠按任意鍵實現波形頻率和幅值的設定(不通過步進按鍵設定來控制)。由運放OP07實現DAC0832輸出電流到電壓的轉換,即實現數字信號到模擬信號的轉換。在LCD上實時的顯示波形的頻率和幅值,波形在示波器上產生。其波形的存儲方式,我們通過按鍵確定,一旦按鍵按下后,就把當時的波形對應的參數存儲起來,例如

12、幅度值,頻率值等參數。波形的合成:為了波形的合成,我們在采樣的時候,對正弦波,三角波,方波都只取樂20個點;因為點越少,其頻率達到的值就會越大;合成時就是對幅值點進行一個疊加后賦給DAC0832輸出一組波形。紅外,通過外部中斷高低電平的延時的時間來進行解碼。</p><p><b>  2.2總體框圖</b></p><p>  本系統總體框圖如圖2所示:</p

13、><p><b>  圖2系統總體框圖</b></p><p><b>  2.3信號發(fā)生部分</b></p><p>  方案一:采用模擬分立元件或單片壓控函數發(fā)生器,可以產生正弦波、方波、三角波,通過調整外部元件可以改變輸出頻率,但采用模擬元器件由于元件分散性太大,因而產生頻率穩(wěn)定性較差,精度低,地抗干擾能力低,成本高,而

14、且靈活心性較差,不能實現任意波形以及波形運算輸出等智能化的功能。</p><p>  方案二:采用鎖相式頻率合成方案,鎖相式頻率合成一個高穩(wěn)定度和精確度的大量離散技術,他在一定程度上解決了既要頻率穩(wěn)定精確又要頻率在較大的范圍內可調的矛盾,但是頻率受VCO可便頻率范圍的影響,高低頻率比不可能做的很高,而且只能產生正弦波或方波,不能滿足任意波形的要求。</p><p>  方案三:采用單片機和

15、數模轉換DAC0832實現波形的產生。波形的產生是通過AT89C51執(zhí)行方波波形程序,向D/A轉換器的輸入端按一定的規(guī)律發(fā)生數據,從而在DA轉換電路輸出端得到相應的電壓波形。在AT89C51的P1口接矩陣按鍵,通過軟件編程來選擇波形、幅值、頻率,每種波形對應一個按鍵,此方案原理簡單,實現起來比較容易。</p><p>  經比較,方案三能夠更好的實現題目的要求,三種波形的產生可有程序控制,并通過按鍵選擇波形的輸出

16、,在示波器上顯示波形。波形的周期與頻率步進也可以用程序控制,具有線路簡單、結構緊湊等優(yōu)點。在本設計的基礎上,加上LCD顯示器,則可以通過按鍵設定波形頻率,并在LCD顯示頻率、幅值電壓。輸出的波形穩(wěn)定,精度高,濾波好,抗干擾效果好,連接簡單,性價比高。綜上所述,我們選擇第三種方案。</p><p><b>  2.4顯示部分</b></p><p>  方案一:數碼管顯

17、示,由于本題要求實時的顯示輸出信號的幅度、頻率,而數字不能顯示字符。</p><p>  方案二:LED點陣顯示,LED點陣顯示雖然能夠顯示數字和字符,但是顯示的效果不好,而且不易編程。</p><p>  方案三:LCD液晶顯示,LCD液晶顯示不但能顯示字符和數字,而且效果較好,且容易實現。</p><p><b>  2.5按鍵部分</b>

18、</p><p>  方案一:采用獨立按鍵,他的按鍵的數目比少,但是它的結構簡單,方便操作,執(zhí)行效率高等優(yōu)勢。</p><p>  方案二:采用矩陣鍵盤,它以較少得IO口實現了按鍵的功能,隨之其操作比較復雜。</p><p>  經對比,由于我們需求的按鍵比較少,但是對執(zhí)行的效率比較高,所以采用獨立按鍵。</p><p><b> 

19、 三、硬件電路</b></p><p>  本系統由單片機、波形轉換(D/A)電路、顯示接口電路、鍵盤電路、電源電路、串口電路等六部分組成。電路圖如圖3.1所示:</p><p><b>  圖3硬件電路原理圖</b></p><p>  3.1功能與基本原理</p><p>  功能:形成掃描碼、鍵值識別、

20、案件處理、參數設置、字符設置等形成液晶顯示波形的類型及頻率和幅值;通過定時器0產生定時中斷,形成波形的數字編碼,并輸出到D/A接口電路和顯示驅動電路。</p><p>  AT89C51外接12M晶振作為時鐘頻率,并采用電源復位設計。復位電路采用上電復位,其工作原理是,當通電時,電容兩端相當于短路,于是TST引腳為高電平,然后對電容充電。RST端電壓慢慢下降,降到一定程度,即為低電平,單片機開始工作。產生方波程序

21、思路:對于小于100Hz的頻率,根據定時器溢出時間1us,將頻率值換算為定時器溢出次數,當達到規(guī)定的次數時,將輸出管腳的狀態(tài)取反達到方波的產生;對于大于100HZ的頻率,直接根據頻率值設置其定時溢出的時間,當溢出時間達到時,將輸出管腳取反達到方波的產生。產生三角波程序思路:要產生峰值電壓為5V的三角波,一個周期需要定時510次,由此便可以計算出每次定時溢出的時間,再將每次定時的電壓加權便可以達到三角波的波形;產生正弦波程序思路:給正弦波

22、的一個周期設定table表,由20個數據,相當于每個周期定時255次,則每次定時溢出的時間便可計算出,每個點的電壓加權便可得到正弦波的電壓,即,形成正弦波。</p><p><b>  3.2資源分配</b></p><p>  軟、硬件設計是比不可少的,為了滿足功能和指標的要求,資源分配為:單片機用12MHz晶振,P0口與DAC0832相連;P1口接矩陣按鍵,實現頻

23、率、幅值以及波形的選擇;P2口接LCD1602液晶顯示器,實時顯示波形的頻率、幅值、類型。</p><p>  3.2.1顯示接口電路</p><p>  功能:驅動LCD液晶顯示、掃描按鈕。</p><p>  由LCD1602液晶顯示器和矩陣按鍵組成。當某一按鍵按下時,掃描程序掃描到之后,通過P2口將數字信號發(fā)送到LCD1602,LCD1602液晶專門用于顯示字

24、母、數字、符號等點陣式LCD,其外接電壓時5V。掃描利用軟件程序實現,當某一按鍵按下時,掃描立即檢測到,隨即調用子程序,執(zhí)行相應的功能。其與單片機連接如圖4所示:</p><p><b>  圖4顯示部分電路圖</b></p><p>  3.3波形轉換(D/A)電路</p><p>  功能:將波形樣值得編碼轉換成模擬值,完成波形的輸出。&l

25、t;/p><p>  由一片DAC0832和LF356運放組成。DAC0832是一個具有兩個輸入數據寄存器的8位DAC。目前生產的DAC芯片分為兩類,一類芯片內部設置有數據寄存器,不需要外加電路就可以直接與微型計算機接口。另一類芯片內沒有數據寄存器,輸出信號隨數據輸入線的狀態(tài)的變化而變化,因此不能直接與微型計算機接口,必須通過并行口與微型計算機接口。DAC0832是具有20條引線的雙列直插式CMOS器件,它內部具有兩

26、級數據寄存器,完成8位電流D/A轉換,股不需要外加電路。DAC0832是電流輸出型,示波器上顯示波形,通常需要電壓信號,電流信號到電壓信號的轉換可以用運算放大器LF356實現。</p><p>  單片機想DAC0832發(fā)送數字編碼,產生不同的輸出。先利用采樣定理對各種波形進行抽樣,然后把各種采樣值進行編碼,收到的數字量存入各個波形表,執(zhí)行程序時通過查表的方法依次取出,經過D/A轉換后輸出就可以得到波形。假如N個

27、點構成波形的一個周期,則DAC0832輸出N個樣點值后,樣值點形成運動軌跡,即,一個周期。重復輸出N個點后,成為第二個周期。利用單片機的晶振控制輸出周期的速度,也就是控制輸出的波形的頻率。這樣就控制了輸出波形的及其幅值和頻率,例如:正弦波,取20個樣值點。具體連接的電路圖如圖5所示:</p><p>  圖5D/A轉換的電路連接圖</p><p><b>  3.4紅外電路<

28、;/b></p><p><b>  圖6紅外電路</b></p><p>  紅外的工作原理:51單片機對遙控的解碼和我們前面所講的串口并口通信不同,他不是單純的用高電平代表1,低電平代表0。這一點大家要從思想上面轉變過來。他是發(fā)送一連串的數據幀,這個數據幀就是一連串的二進制代碼,單片機通過區(qū)分高電平的持續(xù)時間來區(qū)別紅外編碼的。我們就以HC6800單片機上的紅

29、外接頭為例來說明,當高電平的脈沖寬度為1.12ms的時候單片機認為它為0,當高電平的脈沖寬度為2.25的時候單片機認為它為1。單片機是通過判斷脈沖的寬度來得到信息位為0還是為1的。當我們按下遙控器的按鍵時,遙控器將發(fā)出如圖2的一串二進制代碼,我們稱它為一幀數據。根據各部分的功能??蓪⑺鼈兎譃?部分,分別為引導碼、地址碼、地址碼、數據碼、數據反碼。遙控器發(fā)射代碼時.均是低位在前。高位在后。由圖2分析可以得到.引導碼高電平為4.5ms,低電

30、平為4.5ms。當接收到此碼時.表示一幀數據的開始。單片機可以準備接收下面的數據。地址碼由8位二進制組成,共256種.圖中地址碼重發(fā)了一次。主要是加強遙控器的可靠性.如果兩次地址碼不相同.則說明本幀數據有錯.應丟棄。不同的設備可以擁有不同的地址碼.因此。同種編碼的遙控器只要設</p><p><b>  3.5復位電路</b></p><p>  這種復位電路的工作原

31、理是:單片機的復位電路在剛接通電時,剛開始電容是沒有電的,電容內的電阻很低,通電后,5V的電通過電阻給電容進行充電,電容兩端的電會由0V慢慢的升到4V左右(此時間很短一般小于0.3秒),RC構成的微分電路在上電瞬間產生一個微分脈沖,其寬度大于兩個機器周期,89C51將復位。正因為這樣,復位腳的電由低電位升到高電位,引起了內部電路的復位工作,RST端電壓慢慢下降,降到一定電壓值以后,即為低電平,單片機開始正</p><

32、p>  常工作(這是單片機的上電復位,也叫初始化復位);當按下復位鍵時,電容兩端放電,電容又回到0V了,于是又進行了一次復位工作(這是手動復位原理)。</p><p><b>  圖7復位電路</b></p><p><b>  3.6外部時鐘電路</b></p><p>  圖3采用11.0592MHz的晶振和兩個

33、22pf的電容組成時鐘電路部分</p><p><b>  圖8外部時鐘電路</b></p><p>  3.7 LCD顯示部分電路</p><p>  為了節(jié)約成本,采用1602來作為顯示器,用獨立按鍵來控制不同的顯示,能完成基本的顯示功能。</p><p>  圖9LCD液晶顯示電路</p><p

34、><b>  3.8電源部分</b></p><p>  本電源設計了兩個接口,方便不同接口的電源接入,并且在電源部分加上濾波電容,起過濾接入電源的雜波的作用,為了電路中得到+12V、-12V和+5V的直流工作電壓,用變壓器變壓后再通過芯片和電容設計出所需要的電路。</p><p><b>  圖10電源電路</b></p>

35、<p><b>  3.9獨立按鍵部分</b></p><p>  圖八為用獨立按鍵來控制不同的輸出波形</p><p><b>  圖11獨立按鍵</b></p><p>  3.10串口通信模塊</p><p>  圖中通過MAX232進行TTL電平和232電平轉換,從而單片機和上位機

36、之間通信提供通道。</p><p><b>  圖12串口通信電路</b></p><p>  通信電路的目的就是讓通信雙發(fā)的電平匹配,單片機用的是TTL電平,上位機的串口用的是232電平。TTL電平的邏輯1的電壓范圍是+3.3V到+5V,邏輯0的電壓范圍是0到+3.3V;232電平的邏輯1的電壓范圍是-15V到-5V,邏輯0的電壓范圍是+5V到+15V。因此設計串口

37、通信電路就是讓這兩種電平統一。</p><p><b>  四、軟件設計</b></p><p>  主程序和子程序都存放在AT89C51單片機中。主程序的功能是:開機以后負責查鍵,即做出鍵盤掃描及顯示工作,然后根據用戶所按的鍵轉到相應的子程序進行處理。子程序的功能有:延時子程序、中斷程序、顯示子程序、按鍵子程序,按鍵子程序中有任意頻率的設置的數字鍵(0~9)及確定鍵

38、、幅值和頻率的加和減鍵、幅值頻率的轉換鍵、波形的轉換鍵等共15個鍵。主程序的流程圖如圖4.1所示:</p><p>  完成全部硬件和軟件過后,將程序下載到單片機中進行測試,通過反復測試,反復的修改函數的功能,同時完善硬件的功能,使系統達到最優(yōu)控制。</p><p><b>  4.1程序流程圖</b></p><p><b>  圖

39、13程序流程圖</b></p><p>  4.2 LCD顯示流程圖</p><p>  圖14 LCD顯示框圖</p><p><b>  五、系統仿真</b></p><p><b>  5.1仿真電路圖</b></p><p>  通過Proteus軟件和電

40、路原理圖繪制出如下仿真電路圖,對程序和電路功能進行測試</p><p>  圖15 proteus仿真電路圖</p><p><b>  5.2輸出波形圖</b></p><p>  將編寫好的程序下載到單片機中進行仿真,通過反復測試,反復的修改函數的功能,使系統輸出如下波形:</p><p><b>  圖1

41、6正弦波</b></p><p><b>  圖17方波</b></p><p><b>  圖18三角波</b></p><p>  圖19正弦波、方波、三角波三種波形疊加后的波形</p><p><b>  六、硬件和軟件測試</b></p>&l

42、t;p><b>  6.1硬件調試</b></p><p>  整個硬件調試過程基本順利,由于采用了分單元模塊制作,各個單元電路工作穩(wěn)定,給調試工作帶來很大的方便。</p><p>  放大模塊部分在實物模擬時,出現發(fā)送信號不穩(wěn)定、跳變的問題,經過仔細的檢查,電路連線路勁和線路連接問題,最終發(fā)現電路連接是出現連接未牢固的問題,從而得以解決。</p>

43、<p><b>  6.2軟件調試</b></p><p>  雖然對于單片機的變成較熟悉,但是還存在一些問題,主要有以下問題:</p><p> ?。?)在寫調幅值的程序時,按照自己的想法寫好,下載帶單片機中,發(fā)現,每按一次鍵,幅值一次性增大到5V或者一次性減為0V,經過對程序的分析得知,當按下鍵時,程序循環(huán)很多次,為次添加一條鍵按下時死循環(huán)的語句使每次

44、按下鍵幅值加一次后的只保持住,從而解決了問題。</p><p> ?。?)當幅值和顯示調試成功后,寫調頻程序時,在硬件電路中調試時發(fā)現,三種波形融合到一起出現,在經過添加定時器中斷的方法,結果使P0口不能夠輸出模擬信號,經過努力,最后終于解決了這個問題。</p><p>  (3)由于AT89C51本身性能的問題,而且硬件方面又沒有用倍頻電路,產生的三角波和方波的頻率沒有達到1MHz,只達

45、到2KHz,但是方波達到了1MHz。</p><p><b>  七、設計心得</b></p><p>  本次課程設計,我系統電路的主要設計,在做課程設計的時間了我學到了很多東西,總的來說有如下收獲:</p><p> ?。?)通過對電路的設計,對51系列單片機的原理和功能有了進一步的了解,學到了更多的電路知識,如復位電路的原理,晶振電路的作

46、用,旁路電容的作用,上拉電阻的功能,串口通信電路,熟悉了ULN2003芯片的原理和功能,認識了溫濕度傳感器DHT21,并且能對其進行應用。</p><p> ?。?)通過原理圖和PCB圖的繪制,學會了AltumDesigner軟件的使用,并且能用它完成一些簡單的電路設計,并且對元器件的封裝有了一定的了解和認識。</p><p> ?。?)通過元器件的購買和電路板的焊接,增強了自身的實踐動手

47、能力,對電路原理的應用有了更深刻的認識。</p><p> ?。?)在測試階段,尤其是在硬件電路的檢查階段,有很深的體會,有時候一個簡單的錯誤就有可能造成電路無法正常工作,通過找錯排錯,更加熟悉了電路的原理和51單片機的工作原理。</p><p> ?。?)通過本次課程設計,我更加深刻的認識到團隊合作的重要性,小組成員分工合作,是設計成功的關鍵,只有大家團結一致,才能更快更好的完成任務,但

48、是從本課程設計中,我也看到了自身還存在許多不足,在實踐動手能力方面比較弱,對一些電路知識掌握得不是很好。</p><p><b>  八、參考文獻</b></p><p>  [1]童詩白,華成英.模擬電子技術基礎〔M〕.北京:高等教育出版社,2003.345-362</p><p>  [2]潘永雄,沙河,劉向陽.電子線路CAD實用教程〔M〕

49、.西安:西安電子科技大學出版社,2001.13-118.</p><p>  [3]張毅剛,彭喜源,譚曉昀,曲春波.MCS-51單片機應用設計[M].哈爾濱:哈爾濱工業(yè)大學出版社,1997.53-61</p><p><b>  九、</b></p><p><b>  致 謝</b></p><p&g

50、t;  本次畢業(yè)設計共歷時兩個多月的時間,在各位老師和同學們的關心幫助下才得以順利完成。在這段時間里,不僅大大提高了我的實踐經驗,也使我學到了許多書本上不曾接觸的只是,開拓了視野,增廣了知識面,醉重要的是學會了如何利用信息資源幫助自己尋早資料,提高了自己的徐學能力。我對本課題的內容本來知道的很少,經過了這次的學習和知道老師的悉心教導,現在已經對它有了深刻的認識,雖然無法達到專業(yè)水平,但也是有了巨大的收獲,感覺自己受益匪淺。</p&

51、gt;<p>  在論文完成之際,我首先謹向在我做畢業(yè)設計期間給予我無微不至的關懷、誨人不倦的老師致以崇高的敬意和真誠的謝意;起床對朝夕相處的同學和在畢業(yè)設計期間給予我支持和幫助的朋友送上我深深的謝意!</p><p><b>  十、附件</b></p><p><b>  源代碼</b></p><p>

52、  JUCHIEQU50H</p><p>  SANJIEQU51H</p><p>  FANGBEQU52H</p><p>  TIXINEQU53H</p><p>  KUEQU55H</p><p>  ORG0000H;程序入口</p><p>  AJ

53、MPMAIN;指向主程序</p><p>  ORG0003H;主程序入口地址</p><p>  AJMPINTT0;指向按鍵中斷程序</p><p>  ORG0030H;中斷程序入口地址</p><p>  MAIN:;主程序</p><p>  MOVP2,#00H;將P2

54、口初始化為0</p><p>  SETBEA;開總中斷</p><p>  SETBEX0;開啟外部中斷0</p><p>  SETBIT0;將外部中斷0設置為下降沿有效</p><p>  MOVDPTR,#00FFH;設置輸入寄存器地址</p><p>  MOVJUCHI,#00H;

55、初始化</p><p>  MOVSANJI,#00H</p><p>  MOVFANGB,#00H</p><p>  MOVTIXIN,#00H</p><p>  ;***************************************************</p><p><b> 

56、 START:</b></p><p>  MOVA,KU;將鍵碼送累加器A</p><p>  CJNEA,#00H,W1;將累加器A和00H比較,如果相等,則00鍵按下 順序執(zhí)行,否則跳到W1再判斷01鍵是否按下 </p><p>  MOVSANJI,#00H;屏蔽其他波形</p&g

57、t;<p>  MOVFANGB,#00H</p><p>  MOVTIXIN,#00H</p><p>  AJMPJCB;跳轉到鋸齒波形</p><p>  W1:CJNEA,#01H,W2;判斷01鍵是否按下</p><p>  MOVJUCHI,#00H;屏蔽其他波形</p><

58、;p>  MOVFANGB,#00H</p><p>  MOVTIXIN,#00H</p><p>  AJMPSJB;跳轉到三角波形</p><p>  W2:CJNEA,#02H,W3;判斷02鍵是否按下</p><p>  MOVTIXIN,#00H</p><p>  MOVJUCH

59、I,#00H;屏蔽其他波形</p><p>  MOVSANJI,#00H</p><p>  AJMPFB;跳轉到方波</p><p>  W3:CJNEA,#03H,W4;判斷03鍵是否按下,沒有按下,跳轉回去繼續(xù)循環(huán)掃描</p><p>  MOVJUCHI,#00H;屏蔽其他波形</p><p&

60、gt;  MOVSANJI,#00H</p><p>  MOVFANGB,#00H</p><p>  AJMPTXB;跳轉到梯形波</p><p>  W4:AJMPSTART</p><p>  ;**********************************************</p><

61、p>  INTT0:;中斷程序</p><p>  ;***********鍵盤掃描子程序KEY*****************</p><p>  KEY:ACALLKS;調按鍵查詢子程序,判斷是否有鍵按下</p><p>  JNZK1;有鍵按下,轉移 WEI1跳轉</p><p>  ACALLDEL

62、AY;無鍵按下,調延時程序去抖</p><p>  AJMPK4;繼續(xù)查詢按鍵</p><p>  ;***********鍵盤逐列掃描程序***********************************</p><p>  K1:ACALLDELAY</p><p>  ACALLKS;再次判別是否有鍵按下<

63、/p><p>  JNZK2;有鍵按下,轉移</p><p><b>  AJMPK4</b></p><p>  K2:MOVR3,#0FEH;首列掃描字送R3</p><p>  MOVR4,#00H;首列號送R4</p><p>  K3MOVA,R3</p>

64、<p>  MOVP2,A;列掃描字送P2口</p><p>  MOVP1,#0FFH;初始化P1口</p><p>  MOVA,P1;讀取行掃描值</p><p>  JBACC.0,L1;第零行無鍵按下轉查第一行為1跳轉</p><p>  MOVA,#00H;第零行有鍵按下,行首鍵號送A&l

65、t;/p><p>  AJMPLK;轉求鍵號</p><p>  L1:JBACC.1,NEXT;第一行無鍵按下,轉查下一列</p><p>  MOVA,#03H</p><p>  AJMPLK;鍵掃描結束,返回</p><p>  ;*******************************

66、*****************************</p><p><b>  NEXT:</b></p><p>  INCR4;修改列號</p><p>  MOVA,R3</p><p>  JNBACC.2,KEY;三列掃描完返回按鍵查詢狀態(tài)</p><p> 

67、 RLA;未掃描完,改為下列掃描字</p><p>  MOVR3,A;掃描字暫存R3</p><p>  AJMPK3;轉列掃描程序</p><p>  LK:ADDA,R4;形成鍵碼送A</p><p><b>  MOVKU,A</b></p><p>  PUSH

68、ACC;鍵碼入棧保護</p><p>  ;**********************************************</p><p><b>  K4:</b></p><p>  ACALLKS;等待鍵釋放</p><p><b>  JNZK4</b>&

69、lt;/p><p>  POPACC;鍵釋放,彈棧送A</p><p>  RETI;中斷返回</p><p>  ;**********按鍵查詢子程序**************************************</p><p>  KS:MOVA,#00H</p><p>  MOVP2,

70、#00H;全掃描字送p2口</p><p>  MOVP1,#0FFH</p><p>  MOVA,P1;讀入P1口狀態(tài)</p><p>  CPLA;變正邏輯,高電平表示有鍵按下</p><p>  ANLA,#0FH;屏蔽高四位</p><p>  RET;子程序返回</p

71、><p>  ;****************鋸齒波***********************</p><p><b>  JCB:</b></p><p>  MOVA,JUCHI;轉換初值</p><p>  WW:MOVX@DPTR,A;D/A轉換</p><p>  INC

72、A;A自加1</p><p><b>  NOP;延時</b></p><p>  CJNEA,#255,WW;判斷A是否加到255,若沒有返回到WW繼續(xù)加</p><p>  MOVJUCHI,A</p><p>  AJMPSTART</p><p>  ;********

73、**********三角波********************</p><p><b>  SJB:</b></p><p>  MOVA,SANJI;轉換初值</p><p>  EE:MOVX@DPTR,A;D/A轉換</p><p><b>  INCA</b></p

74、><p><b>  NOP</b></p><p>  CJNEA,#255,EE</p><p><b>  DEC A</b></p><p>  QQ:MOVX@DPTR,A</p><p><b>  DECA</b></p&

75、gt;<p><b>  NOP</b></p><p>  CJNEA,#00,QQ</p><p>  MOVSANJI,A</p><p>  AJMPSTART</p><p>  ;******************方波*********************</p>&l

76、t;p><b>  FB:</b></p><p>  MOVA,FANGB</p><p>  MOVX@DPTR,A</p><p>  ACALLDELAY3</p><p>  ACALLDELAY3</p><p><b>  CPLA</b>&

77、lt;/p><p>  MOVX@DPTR,A</p><p>  ACALLDELAY3</p><p>  ACALLDELAY3</p><p>  MOVFANGB,A</p><p><b>  POPACC</b></p><p>  AJMPSTAR

78、T</p><p>  ;***************梯形波**********************</p><p><b>  TXB:</b></p><p>  MOVA,TIXIN</p><p>  SS:MOVX@DPTR,A</p><p><b>  IN

79、CA</b></p><p>  ACALLDELAY3</p><p>  CJNEA,#255,SS</p><p>  ACALLDELAY3</p><p>  ACALLDELAY3</p><p><b>  DECA</b></p><p&

80、gt;  ZZ:MOVX@DPTR,A</p><p><b>  DECA</b></p><p>  ACALLDELAY3</p><p>  CJNEA,#00,ZZ</p><p>  ACALLDELAY3</p><p>  ACALLDELAY3</p>

81、<p>  MOVTIXIN,A</p><p>  AJMPSTART</p><p>  ;*******************************************************1ms</p><p>  DELAY3:MOVR0,#7DH</p><p><b>  DEL7:NOP&

82、lt;/b></p><p><b>  NOP</b></p><p>  DJNZR0,DEL7</p><p><b>  RET</b></p><p>  ;*******************************************50毫秒延時子程序</p>

83、;<p>  DELAY2:MOVR0,#05</p><p>  DEL5:MOVR1,#10</p><p>  DEL4:MOVR2,7DH</p><p><b>  DEL3:NOP</b></p><p><b>  NOP</b></p>&l

84、t;p>  DJNZR2,DEL3</p><p>  DJNZR1,DEL4</p><p>  DJNZR0,DEL5</p><p><b>  RET</b></p><p>  ;******************************************</p><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論