|
1
基于單片機原理的波形發生器
摘要:
本系統采用單片機 C8051為控制核心 ,輸出數字量 ,然后由 DAC0832 把數字量轉
換成模擬量 ;但是輸出的是電流 ,需要用運放 (OP07),把電流轉換成電壓量。顯示利用的
是 LCD1602 的液晶,顯示其波形,幅值。按鍵應用的是獨立按鍵,用來波形的切換,
幅值,頻率的調解。其運算核心,我們通過 MATLAB 對正弦波,三角板,正弦波進
行采樣,得到一組組數據,然后同過數組存儲;利用中斷對數組進行掃描。其頻率的
調解就是調節其中斷間隔的時間,幅值就是調節其數字的大小(同時乘以某個小于 1
的數)。為了波形的合成,我們采用的點的個數都是 20個。
一、題目要求及分析
設計任務:設計制作一個波形發生器,該波形發生器能產生正弦波、方波、三角
波和由用戶編輯的特定形狀波形。
示意圖如下:
圖 1 設計要求圖
設計要求:
1.具有產生正弦波、方波、三角波三種周期性波形的功能;
2.用鍵盤輸入編輯生成上述三種波形 (同周期) 的線性組合波形, 以及由基波及其
諧波( 5 次以下)線性組合的波形。
3.具有波形存儲功能。
3
4.輸出波形的頻率范圍為 100Hz~20kHz(非正弦波頻率按 10 次諧波計算);重復
頻率可調,頻率步進間隔≤ 100Hz。
5.輸出波形幅度范圍 O~5V(峰—峰值),可按步進 0.1V(峰—峰值)調整。
6.具有顯示輸出波形的類型、重復頻率(周期)和幅度的功能。
7.增加紅外配置功能(串口配置程序或其他方式)
二、總體系統方案設計
題目要求實現的任務是設計并制作一個函數信號發生器,能夠產生正弦波、 方波、
三角波,要求不用 DDS 和專用的波形產生芯片,頻率范圍在 1Hz~1MHZ 可調,在頻
率范圍為 1HZ~10KHz 時,步進不大于 10Hz 在頻率范圍為 10KHz~1MHz 時,步進不
大于 100Hz,并且電壓范圍在 0~5V 可調,步進為 0.1V,能夠實時的顯示波形的類型
及其頻率和幅值。現在對以下方案進論證和驗證。
2.1 總體設計思路
根據題目的要求,經過仔細的考慮各種要素,制定了整體方案:以 AT89C51 單片
機為控制核心, P0 口接 DAC0832 信號輸入并進行數模轉換, P1 口接矩陣鍵盤, P2
口接液晶顯示器 LCD1602,由程序控制 P0 口產生波形(分別是正弦波、方波、三角
波),再由按鍵及按鍵次數控制產生波形的種類及頻率和幅值在一定范圍內可調, 并且
能夠按任意鍵實現波形頻率和幅值的設定 (不通過步進按鍵設定來控制) 。由運放 OP07
實現 DAC0832 輸出電流到電壓的轉換,即實現數字信號到模擬信號的轉換。在 LCD
上實時的顯示波形的頻率和幅值,波形在示波器上產生。其波形的存儲方式,我們通
過按鍵確定,一旦按鍵按下后,就把當時的波形對應的參數存儲起來,例如幅度值,
頻率值等參數。波形的合成:為了波形的合成,我們在采樣的時候,對正弦波,三角
波,方波都只取樂 20 個點;因為點越少,其頻率達到的值就會越大;合成時就是對幅
值點進行一個疊加后賦給 DAC0832 輸出一組波形。 紅外,通過外部中斷高低電平的延
時的時間來進行解碼。
2.2 總體框圖
本系統總體框圖如圖 2 所示:
4
圖 2 系統總體框圖
2.3 信號發生部分
方案一:采用模擬分立元件或單片壓控函數發生器,可以產生正弦波、方波、三
角波,通過調整外部元件可以改變輸出頻率, 但采用模擬元器件由于元件分散性太大,
因而產生頻率穩定性較差,精度低,地抗干擾能力低,成本高,而且靈活心性較差,
不能實現任意波形以及波形運算輸出等智能化的功能。
方案二:采用鎖相式頻率合成方案,鎖相式頻率合成一個高穩定度和精確度的大
量離散技術,他在一定程度上解決了既要頻率穩定精確又要頻率在較大的范圍內可調
的矛盾,但是頻率受 VCO 可便頻率范圍的影響, 高低頻率比不可能做的很高, 而且只
能產生正弦波或方波,不能滿足任意波形的要求。
方案三:采用單片機和數模轉換 DAC0832 實現波形的產生。波形的產生是通過
AT89C51 執行方波波形程序,向 DA 轉換器的輸入端按一定的規律發生數據,從而在
DA 轉換電路輸出端得到相應的電壓波形。在 AT89C51 的 P1 口接矩陣按鍵,通過軟
件編程來選擇波形、幅值、頻率,每種波形對應一個按鍵,此方案原理簡單,實現起
來比較容易。
經比較,方案三能夠更好的實現題目的要求,三種波形的產生可有程序控制,并
通過按鍵選擇波形的輸出,在示波器上顯示波形。波形的周期與頻率步進也可以用程
序控制,具有線路簡單、結構緊湊等優點。在本設計的基礎上,加上 LCD 顯示器,則
可以通過按鍵設定波形頻率,并在 LCD 顯示頻率、幅值電壓。輸出的波形穩定,精度
5
高,濾波好,抗干擾效果好,連接簡單,性價比高。綜上所述,我們選擇第三種方案。
2.4 顯示部分
方案一:數碼管顯示,由于本題要求實時的顯示輸出信號的幅度、頻率,而數字
不能顯示字符。
方案二:LED 點陣顯示, LED 點陣顯示雖然能夠顯示數字和字符,但是顯示的效
果不好,而且不易編程。
方案三: LCD 液晶顯示, LCD 液晶顯示不但能顯示字符和數字,而且效果較好,
且容易實現。
2.5 按鍵部分
方案一:采用獨立按鍵,他的按鍵的數目比少,但是它的結構簡單,方便操作,
執行效率高等優勢。
方案二:采用矩陣鍵盤, 它以較少得 IO 口實現了按鍵的功能, 隨之其操作比較復
雜。
經對比,由于我們需求的按鍵比較少,但是對執行的效率比較高,所以采用獨立
按鍵。
三、硬件電路
本系統由單片機、波形轉換( DA)電路、顯示接口電路、鍵盤電路、電源電路、
串口電路等六部分組成。電路圖如圖 3.1 所示:
6
圖 3 硬件電路原理圖
3.1 功能與基本原理
功能:形成掃描碼、鍵值識別、案件處理、參數設置、字符設置等形成液晶顯示
波形的類型及頻率和幅值;通過定時器 0 產生定時中斷,形成波形的數字編碼,并輸
出到 DA 接口電路和顯示驅動電路。
AT89C51 外接 12M 晶振作為時鐘頻率, 并采用電源復位設計。 復位電路采用上電
復位,其工作原理是,當通電時,電容兩端相當于短路,于是 TST 引腳為高電平,然
后對電容充電。 RST 端電壓慢慢下降,降到一定程度,即為低電平,單片機開始工作。
產生方波程序思路:對于小于 100Hz 的頻率,根據定時器溢出時間 1us,將頻率值換
算為定時器溢出次數, 當達到規定的次數時, 將輸出管腳的狀態取反達到方波的產生;
7
對于大于 100HZ 的頻率,直接根據頻率值設置其定時溢出的時間, 當溢出時間達到時,
將輸出管腳取反達到方波的產生。 產生三角波程序思路: 要產生峰值電壓為 5V 的三角
波,一個周期需要定時 510 次,由此便可以計算出每次定時溢出的時間,再將每次定
時的電壓加權便可以達到三角波的波形;產生正弦波程序思路:給正弦波的一個周期
設定 table 表,由 20 個數據,相當于每個周期定時 255 次,則每次定時溢出的時間便
可計算出,每個點的電壓加權便可得到正弦波的電壓,即,形成正弦波。
3.2 資源分配
軟、硬件設計是比不可少的,為了滿足功能和指標的要求,資源分配為:單片機
用 12MHz 晶振, P0 口與 DAC0832 相連;P1 口接矩陣按鍵,實現頻率、幅值以及波
形的選擇; P2 口接 LCD1602 液晶顯示器,實時顯示波形的頻率、幅值、類型。
3.2.1 顯示接口電路
功能:驅動 LCD 液晶顯示、掃描按鈕。
由 LCD1602 液晶顯示器和矩陣按鍵組成。 當某一按鍵按下時, 掃描程序掃描到之
后,通過 P2 口將數字信號發送到 LCD1602,LCD1602 液晶專門用于顯示字母、 數字、
符號等點陣式 LCD ,其外接電壓時 5V。掃描利用軟件程序實現,當某一按鍵按下時,
掃描立即檢測到,隨即調用子程序,執行相應的功能。其與單片機連接如圖 4 所示:
圖 4 顯示部分電路圖
8
3.3 波形轉換( DA)電路
功能:將波形樣值得編碼轉換成模擬值,完成波形的輸出。
由一片 DAC0832 和 LF356 運放組成。 DAC0832 是一個具有兩個輸入數據寄存器
的 8 位 DAC 。目前生產的 DAC 芯片分為兩類,一類芯片內部設置有數據寄存器,不
需要外加電路就可以直接與微型計算機接口。另一類芯片內沒有數據寄存器,輸出信
號隨數據輸入線的狀態的變化而變化,因此不能直接與微型計算機接口,必須通過并
行口與微型計算機接口。 DAC0832 是具有 20 條引線的雙列直插式 CMOS 器件,它內
部具有兩級數據寄存器,完成 8 位電流 DA 轉換,股不需要外加電路。 DAC0832 是電
流輸出型,示波器上顯示波形,通常需要電壓信號,電流信號到電壓信號的轉換可以
用運算放大器 LF356 實現。
單片機想 DAC0832 發送數字編碼, 產生不同的輸出。 先利用采樣定理對各種波形
進行抽樣,然后把各種采樣值進行編碼,收到的數字量存入各個波形表,執行程序時
通過查表的方法依次取出,經過 DA 轉換后輸出就可以得到波形。假如 N 個點構成波
形的一個周期,則 DAC0832 輸出 N 個樣點值后,樣值點形成運動軌跡,即,一個周
期。重復輸出 N 個點后,成為第二個周期。利用單片機的晶振控制輸出周期的速度,
也就是控制輸出的波形的頻率。這樣就控制了輸出波形的及其幅值和頻率,例如:正
弦波,取 20 個樣值點。具體連接的電路圖如圖 5 所示:
圖 5DA 轉換的電路連接圖
9
3.4 紅外電路
圖 6 紅外電路
紅外的工作原理: 51 單片機對遙控的解碼和我們前面所講的串口并口通信不同,
他不是單純的用高電平代表 1,低電平代表 0。這一點大家要從思想上面轉變過來。他
是發送一連串的數據幀,這個數據幀就是一連串的二進制代碼,單片機通過區分高電
平的持續時間來區別紅外編碼的。 我們就以 HC6800 單片機上的紅外接頭為例來說明,
當高電平的脈沖寬度為 1.12ms的時候單片機認為它為 0,當高電平的脈沖寬度為 2.25
的時候單片機認為它為 1。單片機是通過判斷脈沖的寬度來得到信息位為 0 還是為 1
的。當我們按下遙控器的按鍵時,遙控器將發出如圖 2 的一串二進制代碼,我們稱它
為一幀數據。根據各部分的功能。可將它們分為 5 部分,分別為引導碼、地址碼、地
址碼、數據碼、數據反碼。遙控器發射代碼時.均是低位在前。高位在后。由圖 2 分
析可以得到.引導碼高電平為 4.5ms,低電平為 4.5ms。當接收到此碼時.表示一
幀數據的開始。單片機可以準備接收下面的數據。地址碼由 8 位二進制組成,共 256
種.圖中地址碼重發了一次。 主要是加強遙控器的可靠性. 如果兩次地址碼不相同. 則
說明本幀數據有錯.應丟棄。不同的設備可以擁有不同的地址碼.因此。同種編碼的
遙控器只要設置地址碼不同,也不會相互干擾。 。在同一個遙控器中.所有按鍵發出的
地址碼都是相同的。數據碼為 8 位,可編碼 256 種狀態,代表實際所按下的鍵。數據
反碼是數據碼的各位求反,通過比較數據碼與數據反碼.可判斷接收到的數據是否正
10
確。如果數據碼與數據反碼之間的關系不滿足相反的關系.則本次遙控接收有誤.數
據應丟棄。在同一個遙控器上.所有按鍵的數據碼均不相同。在圖 2 中,數據碼為十
六進制的 0CH,數據反碼為十六進制的 0F3H(注意低位在前 ).兩者之和應為 0FFH。
3.5 復位電路
這種復位電路的工作原理是:單片機的復位電路在剛接通電時,剛開始電容是沒
有電的,電容內的電阻很低,通電后, 5V 的電通過電阻給電容進行充電,電容兩端的
電會由 0V 慢慢的升到 4V 左右(此時間很短一般小于 0.3 秒), RC 構成的微分電路
在上電瞬間產生一個微分脈沖,其寬度大于兩個機器周期, 89C51 將復位。正因為這
樣,復位腳的電由低電位升到高電位,引起了內部電路的復位工作, RST 端電壓慢慢
下降,降到一定電壓值以后,即為低電平,單片機開始正
常工作(這是單片機的上電復位,也叫初始化復位);當按下復位鍵時,電容兩
端放電,電容又回到 0V 了,于是又進行了一次復位工作(這是手動復位原理)。
圖 7 復位電路
3.6 外部時鐘電路
圖 3 采用 11.0592MHz 的晶振和兩個 22pf 的電容組成時鐘電路部分
圖 8 外部時鐘電路
3.7 LCD 顯示部分電路
為了節約成本,采用 1602來作為顯示器,用獨立按鍵來控制不同的顯示,能完成
基本的顯示功能。
圖 9LCD 液晶顯示電路
3.8 電源部分
本電源設計了兩個接口,方便不同接口的電源接入,并且在電源部分加上濾波電
容,起過濾接入電源的雜波的作用,為了電路中得到 +12V、-12V 和+5V 的直流工作電
壓,用變壓器變壓后再通過芯片和電容設計出所需要的電路。
11
圖 10 電源電路
3.9 獨立按鍵部分
圖八為用獨立按鍵來控制不同的輸出波形
圖 11 獨立按鍵
3.10 串口通信模塊
圖中通過 MAX232 進行 TTL 電平和 232 電平轉換,從而單片機和上位機之間通
信提供通道。
圖 12 串口通信電路
12
通信電路的目的就是讓通信雙發的電平匹配, 單片機用的是 TTL 電平,上位機的
串口用的是 232 電平。 TTL 電平的邏輯 1 的電壓范圍是 +3.3V 到+5V,邏輯 0 的電壓
范圍是 0 到+3.3V;232電平的邏輯 1 的電壓范圍是 -15V 到-5V,邏輯 0 的電壓范圍是 +5V
到+15V。因此設計串口通信電路就是讓這兩種電平統一。
四、軟件設計
主程序和子程序都存放在 AT89C51 單片機中。 主程序的功能是: 開機以后負責查
鍵,即做出鍵盤掃描及顯示工作,然后根據用戶所按的鍵轉到相應的子程序進行處理。
子程序的功能有:延時子程序、中斷程序、顯示子程序、按鍵子程序,按鍵子程序中
有任意頻率的設置的數字鍵( 0~9)及確定鍵、幅值和頻率的加和減鍵、幅值頻率的轉
換鍵、波形的轉換鍵等共 15 個鍵。主程序的流程圖如圖 4.1 所示:
完成全部硬件和軟件過后,將程序下載到單片機中進行測試,通過反復測試,反
復的修改函數的功能,同時完善硬件的功能,使系統達到最優控制。
4.1 程序流程圖
13
圖 13 程序流程圖
4.2 LCD 顯示流程圖
圖 14 LCD 顯示框圖
五、系統仿真
5.1 仿真電路圖
通過 Proteus 軟件和電路原理圖繪制出如下仿真電路圖,對程序和電路功能進行
測試
圖 15 proteus仿真電路圖
5.2 輸出波形圖
將編寫好的程序下載到單片機中進行仿真,通過反復測試,反復的修改函數的功
能,使系統輸出如下波形:
14
圖 16 正弦波
圖 17 方波
圖 18 三角波
圖 19 正弦波、方波、三角波三種波形疊加后的波形
15
六、硬件和軟件測試
6.1 硬件調試
整個硬件調試過程基本順利,由于采用了分單元模塊制作,各個單元電路工作穩
定,給調試工作帶來很大的方便。
放大模塊部分在實物模擬時,出現發送信號不穩定、跳變的問題,經過仔細的檢
查,電路連線路勁和線路連接問題,最終發現電路連接是出現連接未牢固的問題,從
而得以解決。
6.2 軟件調試
雖然對于單片機的變成較熟悉,但是還存在一些問題,主要有以下問題:
(1)在寫調幅值的程序時,按照自己的想法寫好,下載帶單片機中,發現,每按
一次鍵,幅值一次性增大到 5V 或者一次性減為 0V,經過對程序的分析得知,當按下
鍵時,程序循環很多次,為次添加一條鍵按下時死循環的語句使每次按下鍵幅值加一
次后的只保持住,從而解決了問題。
(2)當幅值和顯示調試成功后,寫調頻程序時,在硬件電路中調試時發現,三種
波形融合到一起出現, 在經過添加定時器中斷的方法, 結果使 P0 口不能夠輸出模擬信
號,經過努力,最后終于解決了這個問題。
(3)由于 AT89C51 本身性能的問題,而且硬件方面又沒有用倍頻電路,產生的
三角波和方波的頻率沒有達到 1MHz ,只達到 2KHz,但是方波達到了 1MHz 。
七、設計心得
本次課程設計,我系統電路的主要設計,在做課程設計的時間了我學到了很多東
西,總的來說有如下收獲:
(1)通過對電路的設計,對 51 系列單片機的原理和功能有了進一步的了解,學
到了更多的電路知識,如復位電路的原理,晶振電路的作用,旁路電容的作用,上拉
電阻的功能, 串口通信電路, 熟悉了 ULN2003 芯片的原理和功能,認識了溫濕度傳感
器 DHT21 ,并且能對其進行應用。
(2)通過原理圖和 PCB 圖的繪制,學會了 AltumDesigner 軟件的使用,并且能
16
用它完成一些簡單的電路設計,并且對元器件的封裝有了一定的了解和認識。
(3)通過元器件的購買和電路板的焊接,增強了自身的實踐動手能力,對電路原
理的應用有了更深刻的認識。
(4)在測試階段,尤其是在硬件電路的檢查階段,有很深的體會,有時候一個簡
單的錯誤就有可能造成電路無法正常工作,通過找錯排錯,更加熟悉了電路的原理和
51 單片機的工作原理。
(5)通過本次課程設計,我更加深刻的認識到團隊合作的重要性,小組成員分工
合作,是設計成功的關鍵,只有大家團結一致,才能更快更好的完成任務,但是從本
課程設計中,我也看到了自身還存在許多不足,在實踐動手能力方面比較弱,對一些
電路知識掌握得不是很好。
八、參考文獻
[1] 童詩白,華成英 . 模擬電子技術基礎 〔M〕. 北京: 高等教育出版社, [2]
潘永雄,沙河,劉向陽 . 電子線路 CAD實用教程〔 M〕. 西安:西安電子科技大
學出版社, 2001.13-118.
[3] 張毅剛,彭喜源,譚曉昀,曲春波 .MCS-51單片機應用設計 [M]. 哈爾
濱:哈爾濱工業大學出版社, 1997.53-61
九、
致 謝
本次畢業設計共歷時兩個多月的時間,在各位老師和同學們的關心幫助下才
得以順利完成。在這段時間里,不僅大大提高了我的實踐經驗,也使我學到了許多書
本上不曾接觸的只是,開拓了視野,增廣了知識面,醉重要的是學會了如何利用信息
資源幫助自己尋早資料, 提高了自己的徐學能力。我對本課題的內容本來知道的很少,
經過了這次的學習和知道老師的悉心教導,現在已經對它有了深刻的認識,雖然無法
達到專業水平,但也是有了巨大的收獲,感覺自己受益匪淺。
在論文完成之際,我首先謹向在我做畢業設計期間給予我無微不至的關懷、誨人
不倦的老師致以崇高的敬意和真誠的謝意;起床對朝夕相處的同學和在畢業設計期間
給予我支持和幫助的朋友送上我深深的謝意!
17
十、附件
源代碼
JUCHI EQU 50H
SANJI EQU 51H
FANGB EQU 52H
TIXIN EQU 53H
KU EQU 55H
ORG 0000H ; 程序入口
AJMP MAIN ; 指向主程序
ORG 0003H ; 主程序入口地址
AJMP INTT0 ; 指向按鍵中斷程序
ORG 0030H ; 中斷程序入口地址
MAIN: ; 主程序
MOV P2,#00H ; 將 P2口初始化為 0
SETB EA ; 開總中斷
SETB EX0 ; 開啟外部中斷 0
SETB IT0 ; 將外部中斷 0 設置為下降沿有效
MOV DPTR,#00FFH ; 設置輸入寄存器地址
MOV JUCHI,#00H ; 初始化
MOV SANJI,#00H
MOV FANGB,#00H
MOV TIXIN,#00H
;***************************************************
START:
MOV A,KU ; 將鍵碼送累加器 A
CJNE A,#00H,W1 ; 將累加器 A 和 00H 比較,如果相等,則 00 鍵按下
順序執行,否則跳到 W1再判斷 01鍵是否按下
MOV SANJI,#00H ; 屏蔽其他波形
MOV FANGB,#00H
18
MOV TIXIN,#00H
AJMP JCB ; 跳轉到鋸齒波形
W1:CJNE A,#01H,W2 ; 判斷 01 鍵是否按下
MOV JUCHI,#00H ; 屏蔽其他波形
MOV FANGB,#00H
MOV TIXIN,#00H
AJMP SJB ; 跳轉到三角波形
W2:CJNE A,#02H,W3 ; 判斷 02 鍵是否按下
MOV TIXIN,#00H
MOV JUCHI,#00H ; 屏蔽其他波形
MOV SANJI,#00H
AJMP FB ; 跳轉到方波
W3:CJNE A,#03H,W4 ; 判斷 03 鍵是否按下,沒有按下,跳轉回去繼續循環掃描
MOV JUCHI,#00H ; 屏蔽其他波形
MOV SANJI,#00H
MOV FANGB,#00H
AJMP TXB ; 跳轉到梯形波
W4:AJMP START
;**********************************************
INTT0: ; 中斷程序
;*********** 鍵盤掃描子程序 KEY*****************
KEY:ACALL KS ; 調按鍵查詢子程序,判斷是否有鍵按下
JNZ K1 ; 有鍵按下,轉移 WEI1 跳轉
ACALL DELAY ; 無鍵按下,調延時程序去抖
AJMP K4 ; 繼續查詢按鍵
;*********** 鍵盤逐列掃描程序 ***********************************
K1:ACALL DELAY
ACALL KS ; 再次判別是否有鍵按下
JNZ K2 ; 有鍵按下,轉移
19
AJMP K4
K2:MOV R3,#0FEH ; 首列掃描字送 R3
MOV R4,#00H ; 首列號送 R4
K3MOV A,R3
MOV P2,A ; 列掃描字送 P2口
MOV P1,#0FFH ; 初始化 P1口
MOV A,P1 ; 讀取行掃描值
JB ACC.0,L1 ; 第零行無鍵按下轉查第一行為 1 跳轉
MOV A,#00H ; 第零行有鍵按下,行首鍵號送 A
AJMP LK ; 轉求鍵號
L1:JB ACC.1,NEXT ; 第一行無鍵按下,轉查下一列
MOV A,#03H
AJMP LK ; 鍵掃描結束,返回
;************************************************************
NEXT:
INC R4 ; 修改列號
MOV A,R3
JNB ACC.2,KEY ; 三列掃描完返回按鍵查詢狀態
RL A ; 未掃描完,改為下列掃描字
MOV R3,A ; 掃描字暫存 R3
AJMP K3 ; 轉列掃描程序
LK:ADD A,R4 ; 形成鍵碼送 A
MOV KU,A
PUSH ACC ; 鍵碼入棧保護
;**********************************************
K4:
ACALL KS ; 等待鍵釋放
JNZ K4
POP ACC ; 鍵釋放,彈棧送 A
20
RETI ; 中斷返回
;********** 按鍵查詢子程序 **************************************
KS:MOV A,#00H
MOV P2,#00H ; 全掃描字送 p2 口
MOV P1,#0FFH
MOV A,P1 ; 讀入 P1口狀態
CPL A ; 變正邏輯,高電平表示有鍵按下
ANL A,#0FH ; 屏蔽高四位
RET ; 子程序返回
;**************** 鋸齒波***********************
JCB:
MOV A,JUCHI ; 轉換初值
WW:MOVX @DPTR,A ;DA轉換
INC A ;A 自加 1
NOP ; 延時
CJNE A,#255,WW ; 判斷 A是否加到 255,若沒有返回到 WW繼續加
MOV JUCHI,A
AJMP START
;****************** 三角波 ********************
SJB:
MOV A,SANJI ; 轉換初值
EE:MOVX @DPTR,A ;DA轉換
INC A
NOP
CJNE A,#255,EE
DEC A
QQ:MOVX @DPTR,A
DEC A
NOP
|
評分
-
查看全部評分
|