freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設計-基于52單片機的波形發(fā)生器的設計-資料下載頁

2025-01-16 23:33本頁面
  

【正文】 也給它帶來了很多不安全的因素。 C++在這方面做了很好的改進 ,在保留了指針操作的同時又增強了安全性。 Java 取消了指針操作,提高了安全性。 匯編語言,是一種功能很強的程序設計語言,匯編語言直接同計算機的底層軟件甚至硬件進行交互,它具 有如下一些優(yōu)點: (1)能夠直接訪問與硬件相關的存儲器或 I/O 端口; (2)能夠不受編譯器的限制,對生成的二進制代碼進行完全的控制; (3)能夠根據(jù)特定的應用對代碼做最佳的優(yōu)化,提高運行速度; (4)能夠最大限度地發(fā)揮硬件的功能。 匯編語言的機器代碼生成效率很高,能夠根據(jù)特定的應用對代碼做最佳的優(yōu)化,提高運行速度。 綜合以上匯編語言的優(yōu)點,波形發(fā)生器系統(tǒng)的軟件部分由匯編語言設計編程實現(xiàn)。 基于單片機的波形發(fā)生器的設計 18 系統(tǒng)整體軟件設計思想 系統(tǒng)的軟件設計是在 WAVE6000 的集成開發(fā)環(huán)境下,采用匯編語言完成了應用系統(tǒng)軟件 編程,包括主程序、產(chǎn)生四種常用信號的程序、按鍵功能子程序和顯示子程序等子程序模塊。模塊化的編程方法使得程序具有可讀性和易于維護的特點。 各個子程序模塊流程圖 系統(tǒng)軟件是由若干子程序構成,包括主程序、鍵盤輸入、頻率調(diào)整子程序、顯示子程序、延時子程序、各波形產(chǎn)生子程序等。 主程序流程圖 主程序設計思路 :首先給單片機上電,對 LCD1602 和中斷進行初始化設置,然后進行進行按鍵掃描,如果有按鍵按下就產(chǎn)生外部中斷 0 中斷,首先判斷方波選擇按鍵 SQ 是否按下,若按下對應的 LED 指示燈點亮;若沒按下繼 續(xù)判斷鋸齒波選擇按鍵 ST 是否按下,若按下對應的 LED 指示燈點亮;若沒按下繼續(xù)判斷三角波選擇按鍵 TRI 是否按下,若按下對應的 LED 指示燈點亮;若沒按下繼續(xù)判斷正弦波選擇按鍵 SIN 是否按下,若按下對應的 LED 指示燈點亮,若四個按鍵均未按下,跳到主程序,等待中斷的產(chǎn)生。主程序流程圖如圖 所示 [9]。 基于單片機的波形發(fā)生器的設計 19 Y N Y N Y N Y N 圖 主程序流程圖 頻率調(diào)整子程序 (1) 程序設計思路 按鍵部分我們通過 8位撥碼開關來實現(xiàn) 8位數(shù)字量通過 74ls165的并行輸入開 始 初始化,設置常量及指針 SQUK 按下 熄滅 SQUL 熄滅 SAWL 熄滅 TRIL 熄滅 SINL 點亮 SINL 調(diào)用方波輸出程序,輸出一個方周期的方波 點亮 TRIL 點亮 SAWL 點亮 SQUL 調(diào)用鋸齒波波輸出程序,輸出一個方周期的鋸齒波波 調(diào)用三角波輸出程序,輸出一個方周期的三角波 調(diào)用正弦波輸出程序,輸出一個方周期的正弦波 SAWK按下 TRIK 按下 SINK 按下 基于單片機的波形發(fā)生器的設計 20 串行輸出的數(shù)據(jù)存入單片機的累加器 A 中,然后將 A 中的值取反后送給寄存器R3,以 R3 為延時常數(shù)進行延時,使得階梯電壓沒升高一定的數(shù)值后就以 R3 為延時常數(shù)進行延時,從 而改變波形的輸出頻率,使頻率能夠實時隨著撥碼按鍵開關量的輸入而改變,實時性較強。 (2) 部分程序 START1: CLR ; 并行置入數(shù)據(jù) ,S/ =0 SETB ; 允許 串行移位 ,S/ =1 RXDATA1:MOV SCON,00010000B ; 設置串口方式 0,允許接收 ,啟動接收 JNB RI,$ ; 等待外部數(shù)據(jù) CLR RI ; 清除接收完標志 MOV A,SBUF ; 讀取數(shù)據(jù) CPL A MOV R3,A 顯示子程序流程圖 圖 顯示子 程序流程圖 [10] 入口 讀忙“ BF”信號 BF=1? 向控制器寫入要 訪問的外 RAM 地址 讀忙“ BF”信號 數(shù)據(jù)顯示完? BF=1? 讀 /寫顯示數(shù)據(jù) 返主程序 讀忙“ ”信號BF=1? N N N Y Y Y 基于單片機的波形發(fā)生器的設計 21 各波形產(chǎn)生子程序 (1) 鋸齒波產(chǎn)生子程序 1) 鋸齒波 產(chǎn)生原理 鋸齒波中的斜線用一個個小臺階來逼近,在一個周期內(nèi)從最小值開始逐步遞增, 當達到最大值后又回到最小值,如此循環(huán),當臺階間隔很小時,波形基本上近似于 直線。適當選擇循環(huán)的時間,可以得到不同周期的鋸齒波。鋸齒波發(fā)生原理與方波類似,只是高低兩個延時的常數(shù)不同,所以用延時法,來產(chǎn)生鋸齒波。先將 00H 給寄存器 R6 賦值,然后讓它不斷地自加 1,直到加到 255,DAC0832 可以又自動歸 0,然后再不斷地重復上述過程進而產(chǎn)生鋸齒波。 2) 鋸齒波 產(chǎn)生子程序 流程圖 如圖 所示。 圖 鋸齒波產(chǎn)生子程序流程圖 (2) 方波產(chǎn)生子程序 1) 方波產(chǎn)生原理 先給寄存器 R0 賦值 00H,并且將 0FFH 送給 P0 口( DAC0832 的八位數(shù)據(jù)輸入端與 P0 口相連)使得 DAC0832 電壓輸出端輸出高電平,然后讓它不斷地R7, Acc 清零 P0=R7 讀撥碼開關狀態(tài),取反后存入 R3 以 R3 為延時常數(shù),延時 R7=R7+1 R0=254? 7 255? 返回 Y N 基于單片機的波形發(fā)生器的設計 22 自加 2,直到加到 254,重新給寄存器 R0 賦值 00H,并且將 00H 送給 P0 口,使得 DAC0832 電壓輸出端輸出低電平,然后讓它不斷地自加 2,直到加到 254,可以又自動歸 0,然后再不斷地重復上述過程進而產(chǎn)生方波。 2) 方波 產(chǎn)生子程序 流程圖 見圖 。 圖 方波產(chǎn)生子程序流程圖 設 R0=9 P0 口輸出 0FFH 讀撥碼開關狀態(tài),取反后存入 R3 以 R3 為延時常數(shù),延時 R0=R0+2 R0=254? R0 清零 P0 口輸出 00H 讀撥碼開關狀態(tài),取反后存入 R3 以 R3 為延時常數(shù),延時 R0=R0+2 ? R0=254? 返回 Y N 設 R0=0 口輸出讀撥碼開關狀態(tài),取反后存入以 為延時常數(shù),延時?清零口輸出讀撥碼開關狀態(tài),取反后存入以 為延時常數(shù),延時??返回N Y 基于單片機的波形發(fā)生器的設計 23 (3) 三角波產(chǎn)生子程序 1) 三角波產(chǎn)生子程序 流程圖見圖 。 圖 三角波 產(chǎn)生子程序流程圖 2) 三角 波產(chǎn)生原理 設 R7=0 P0=R7 讀撥碼開關狀態(tài),取反后存入 R3 以 R3 為延時常數(shù),延時 R7=R7+2 R0=254? P0=R7 讀撥碼開關狀態(tài),取反后存入 R3 以 R3 為延時常數(shù),延時 R7=R72 R7=2? R7=0? 返回 Y N Y N 基于單片機的波形發(fā)生器的設計 24 先給寄存器 R7 賦值 00H,然后讓它不斷地自加 2,每次 R7 加 2 后都要進行一次 DA 轉換,直到加到 255,然后讓它不斷地自減 2,每次 R7 減 2 后都要進行一次 DA 轉換,直到減到 00,可以又自動歸 0,然后再不斷地重復上述過程進而產(chǎn)生三角波。 (4) 正弦波產(chǎn)生 子程序 1) 正弦波產(chǎn)生子程序 流程圖見圖 。 圖 正弦波 產(chǎn)生子程序流程圖 R0 指向正弦數(shù)據(jù)表頭 根據(jù) R0 查表,輸 出數(shù)據(jù) 讀撥碼開關狀態(tài),取反后存入 R3 R0=R0+1 數(shù),延時 R0=254? R0=R01 根據(jù) R0 查表,輸出數(shù)據(jù) 以 R3 為延時常數(shù),延時 R0=R01 R0=9? R0=0? 返回 Y N Y N 以 R3 為延時常數(shù),延時 讀撥碼開關狀態(tài),取反后存入 R3 基于單片機的波形發(fā)生器的設計 25 2 ) 正弦波產(chǎn)生原理 方法一: 采用分立元件構成非穩(wěn)態(tài)的多諧振振蕩器,根據(jù)具體需要加入積分電路等構成波形發(fā)生器。但這種波形發(fā)生器輸出 頻率范圍窄,而且電路參數(shù)設定較繁瑣,輸出的波形易受外界環(huán)境影響,不穩(wěn)定,對電路硬件要求很高,不易實現(xiàn)。 故不采用本方法來產(chǎn)生正弦波。 方法二: DAC0832 是 8 位的 D/A 轉換器件,其工作電壓是 0—5V,當輸入00H 數(shù)字量的時候,輸出為 0V 電壓;當輸入 07FH 數(shù)字量的時候,輸出為 電壓;當輸入 0FFH 數(shù)字量的時候,輸出為 5V 電壓。單片機的 I/O 輸出均為 +5 V 的 TTL 電平,因此產(chǎn)生的正弦波(以正弦波為例)幅值為 + V。將一個周期內(nèi)的正弦波形等分為 256 份,對應 256 個數(shù)字量,利用查數(shù)據(jù)表的方式來實現(xiàn) 波形的產(chǎn)生。將這些單極性方式下的數(shù)字量轉換為正弦值模擬量輸出。而每次送到 DAC0832 的八位數(shù)字量是根據(jù)查正弦波形數(shù)據(jù)表格而得到 。 基于單片機的波形發(fā)生器的設計 26 5 系統(tǒng)軟硬件調(diào)試與數(shù) 據(jù) 處理 軟件仿真及 軟件 程序調(diào)試 軟件仿真 環(huán)境 在 軟件中進行硬件電路的原理圖的繪制和仿真,在仿真的過程中,由于考慮到單片機的可用 I/O 口只有 32 個,若將 8 位撥碼開關直接接到單片機的一個 I/O 口會導致 LCD 的顯示接口不能與單片機有效的連接,因此最后采用 8 位并入串出的移位寄存器 74LS165 來實現(xiàn)兩根數(shù)據(jù)線就可以與單片機連接,達到單片機實時采集撥碼開關的 8 位數(shù)字量來改變波形的頻率。 軟件 程序調(diào)試 系統(tǒng)軟件調(diào)試是通過程序調(diào)節(jié)從而使電路系統(tǒng)更好的工作,以期得到更接近準確的數(shù)據(jù),從而使電路工作輸出更精確,更接近實際。 本設計主要做了以下程序調(diào)試: ( 1) 編寫完成了通過四個按鍵實現(xiàn)四種波形的輸出,但是此時的波形的頻率和幅度不可調(diào)。 ( 2) 通過我在圖書館查資料,編寫完成了可以通過 8 位撥碼開關的數(shù)字量送給單片機的 累加器 A,然后取反后在送給寄存器 R3 中,然后然 R3 減 1,直到減到 0 為止 ,利用此段延時作為兩個階梯電壓之間的時間差, 從而達到實時改變四種波形的頻率的目的。 ( 3) 為了節(jié)省單片機的 I/O 口資源,加了 8 位并入串出的移位寄存器74LS165 來將撥碼開關的 8 位數(shù)字量送給單片機,經(jīng)單片機處理后改變波形的頻率。但是在加入程序后由于將 MOV SCON, 00010000B 誤寫為 MOV SCON, 00010000H 導致無法實現(xiàn)頻率可調(diào),最后改正后,即將正確的 74LS165的程序加入到每個波形的處理子程序中后,四種波形頻率均可調(diào) [10]。 ( 4) 編寫完成了能夠使 LCD1602 顯示 40H46HRAM 單元的內(nèi)容程序,但是此程序不能 顯示波形的頻率和幅度,經(jīng)過我修改程序將撥碼開關的 8 位數(shù)字量采集后送到寄存器 R0
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1