版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于單片機(jī)的函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)與仿真電子信息科學(xué)與技術(shù)專業(yè)學(xué)生摘要:本系統(tǒng)利用80c51設(shè)計(jì)一個(gè)函數(shù)信號(hào)發(fā)生器,詳細(xì)說明了其實(shí)現(xiàn)過程。本系統(tǒng)使用匯編語言編寫,用80c51單片機(jī)來實(shí)現(xiàn)各模塊功能,使用proteus進(jìn)行仿真。本文描述使用匯編語言和proteus仿真實(shí)現(xiàn)函數(shù)信號(hào)發(fā)生器的基本功能,實(shí)現(xiàn)了方波、三角波、正弦波、鋸齒波,頻率可調(diào)為10hz、100hz、500hz、1000hz。本文給出了源程序、各模塊的連接圖以及仿真圖,并做出了詳細(xì)的分析。關(guān)鍵詞:匯編語言,proteus,函數(shù)信號(hào)發(fā)生器,80c51design and simulation of the function signal
2、 generator based on mcuelectronics and information science and technology candidate: liu pinganadvisor: cai jianhuaabstract: this system uses 80c51 designed a function signal generator, describes detailedly the implementation process. the system uses the assembler language, realizing every function
3、uses 80c51, applying proteus to simulate in order to realize the function every modules. this article describes the use of assembler language and proteus simulation, to achieve the basic functions of the function signal generator, realized square-wave, triangle wave, sine wave, saw-tooth wave , and
4、the frequency adjustable for 10hz,100hz,500hz,1000hz . this article gives the original program and the simulating diagram and the combination of all of the modules, gives detail analysis of every simulating diagram as well.keywords: assembler language, proteus, function signal generator, 80c511.引言1.
5、1單片機(jī)概述隨著大規(guī)模集成電路技術(shù)的發(fā)展,中央處理器(cpu)、隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、(i/o)接口、定時(shí)器/計(jì)數(shù)器和串行通信接口,以及其他一些計(jì)算機(jī)外圍電路等均可集成在一塊芯片上構(gòu)成單片微型計(jì)算機(jī),簡稱為單片機(jī)。單片機(jī)具有體積小、成本低,性能穩(wěn)定、使用壽命長等特點(diǎn)。其最明顯的優(yōu)勢就是可以嵌入到各種儀器、設(shè)備中,這是其他計(jì)算機(jī)和網(wǎng)絡(luò)都無法做到的1,2。1.2信號(hào)發(fā)生器的分類信號(hào)發(fā)生器應(yīng)用廣泛,種類繁多,性能各異,分類也不盡一致。按照頻率范圍分類可以分為:超低頻信號(hào)發(fā)生器、低頻信號(hào)發(fā)生器、視頻信號(hào)發(fā)生器、高頻波形發(fā)生器、甚高頻波形發(fā)生器和超高頻信號(hào)發(fā)生器。按照輸出波形分
6、類可以分為:正弦信號(hào)發(fā)生器和非正弦信號(hào)發(fā)生器,非正弦信號(hào)發(fā)生器又包括:脈沖信號(hào)發(fā)生器,函數(shù)信號(hào)發(fā)生器、掃頻信號(hào)發(fā)生器、數(shù)字序列波形發(fā)生器、圖形信號(hào)發(fā)生器、噪聲信號(hào)發(fā)生器等。按照信號(hào)發(fā)生器性能指標(biāo)可以分為一般信號(hào)發(fā)生器和標(biāo)準(zhǔn)信號(hào)發(fā)生器。前者指對(duì)輸出信號(hào)的頻率、幅度的準(zhǔn)確度和穩(wěn)定度以及波形失真等要求不高的一類信號(hào)發(fā)生器。后者是指其輸出信號(hào)的頻率、幅度、調(diào)制系數(shù)等在一定范圍內(nèi)連續(xù)可調(diào),并且讀數(shù)準(zhǔn)確、穩(wěn)定、屏蔽良好的中、高檔信號(hào)發(fā)生器1,2。1.3研究內(nèi)容本文是做基于單片機(jī)的信號(hào)發(fā)生器的設(shè)計(jì),將采用編程的方法來實(shí)現(xiàn)三角波、鋸齒波、矩形波、正弦波的發(fā)生。根據(jù)設(shè)計(jì)的要求,對(duì)各種波形的頻率進(jìn)行程序的編寫,并
7、將所寫程序裝入單片機(jī)的程序存儲(chǔ)器中。在程序運(yùn)行中,當(dāng)接收到來自外界的命令,需要輸出某種波形時(shí)再調(diào)用相應(yīng)的中斷服務(wù)子程序和波形發(fā)生程序,經(jīng)電路的數(shù)/模轉(zhuǎn)換器和運(yùn)算放大器處理后,從信號(hào)發(fā)生器的輸出端口輸出。2. 方案的設(shè)計(jì)與選擇2.1 方案的比較 方案一:采用單片函數(shù)發(fā)生器(如8038),8038可同時(shí)產(chǎn)生正弦波、方波等,而且方法簡單易行,用d/a轉(zhuǎn)換器的輸出來改變調(diào)制電壓,也可以實(shí)現(xiàn)數(shù)控調(diào)整頻率,但產(chǎn)生信號(hào)的頻率穩(wěn)定度不高。方案二:采用鎖相式頻率合成器,利用鎖相環(huán),將壓控振蕩器(vco)的輸出頻率鎖定在所需頻率上,該方案性能良好,但難以達(dá)到輸出頻率覆蓋系數(shù)的要求,且電路復(fù)雜。方案三:采用單片機(jī)編
8、程的方法來實(shí)現(xiàn)。該方法可以通過編程的方法來控制信號(hào)波形的頻率和幅度,而且在硬件電路不變的情況下,通過改變程序來實(shí)現(xiàn)頻率的變換。此外,由于通過編程方法產(chǎn)生的是數(shù)字信號(hào),所以信號(hào)的精度可以做的很高。鑒于方案一的信號(hào)頻率不夠穩(wěn)定和方案二的電路復(fù)雜,頻率覆蓋系數(shù)難以達(dá)標(biāo)等缺點(diǎn),所以決定采用方案三的設(shè)計(jì)方法。它不僅采用軟硬件結(jié)合,軟件控制硬件的方法來實(shí)現(xiàn),使得信號(hào)頻率的穩(wěn)定性和精度的準(zhǔn)確性得以保證,而且它使用的幾種元器件都是常用的元器件,容易得到,且價(jià)格便宜,使得硬件的開銷達(dá)到最省3,4。2.2 設(shè)計(jì)原理 輸出數(shù)字信號(hào)可以通過數(shù)/模轉(zhuǎn)換器轉(zhuǎn)換成模擬信號(hào),因此可通過產(chǎn)生數(shù)字信號(hào)再轉(zhuǎn)換成模擬信號(hào)的方法來獲得
9、所需要的波形。80c51單片機(jī)本身就是一個(gè)完整的微型計(jì)算機(jī),具有組成微型計(jì)算機(jī)的各部分部件:中央處理器cpu、隨機(jī)存取存儲(chǔ)器ram、只讀存儲(chǔ)器rom、i/o接口電路、定時(shí)器/計(jì)數(shù)器以及串行通訊接口等,只要將80c51再配置鍵盤及其接口、顯示器及其接口、數(shù)模轉(zhuǎn)換及波形輸出、指示燈及其接口等四部分,即可構(gòu)成所需的波形發(fā)生器,其信號(hào)發(fā)生器構(gòu)成原理框圖如圖2.1所示。濾波放大d/a轉(zhuǎn)換器接口電路89c51單片機(jī)圖2.1 信號(hào)發(fā)生器原理框圖 如圖2.1所示80c51是整個(gè)波形發(fā)生器的核心部分,通過程序的編寫和執(zhí)行,產(chǎn)生各種各樣的信號(hào),并從鍵盤接收數(shù)據(jù),進(jìn)行各種功能的轉(zhuǎn)換。當(dāng)數(shù)字信號(hào)經(jīng)過接口電路到達(dá)轉(zhuǎn)換電
10、路,將其轉(zhuǎn)換成模擬信號(hào)也就是所需要的輸出波形。2.3 設(shè)計(jì)思想(1)利用單片機(jī)產(chǎn)生方波、正弦波、三角波和鋸齒波等信號(hào)波形,信號(hào)的頻率。(2)將一個(gè)周期的信號(hào)分離成256個(gè)點(diǎn)(按x軸等分),每兩點(diǎn)之間的時(shí)間間隔為,用單片機(jī)的定時(shí)器產(chǎn)生,其表示式為: 。如果單片機(jī)的晶振為12mhz,采用定時(shí)器方式0,則定時(shí)器的初值為: (2.1)定時(shí)時(shí)間常數(shù)為: (2.2) (2.3)mod32表示除32取余數(shù)(3)正弦波的模擬信號(hào)是d/a轉(zhuǎn)換器的模擬量輸出,其計(jì)算公式為: 其中 (2.4) 其中 (2.5)那么對(duì)應(yīng)著存放在計(jì)算機(jī)里的這一點(diǎn)的數(shù)據(jù)為: (4)一個(gè)周期被分離成256個(gè)點(diǎn),對(duì)應(yīng)的四種波形的256個(gè)數(shù)據(jù)
11、存放在以tab1tab4為起始地址的存儲(chǔ)器中。2.4 設(shè)計(jì)功能本方案利用8255a擴(kuò)展8個(gè)獨(dú)立式按鍵,6個(gè)led顯示器。其中“s0”號(hào)鍵代表方波輸出,“s1”號(hào)鍵代表正弦波輸出,“s2”號(hào)鍵代表三角波輸出,“s3” 號(hào)鍵代表鋸齒波輸出。 “s4”號(hào)鍵為10hz的頻率信號(hào),“s5”號(hào)鍵為100hz的頻率信號(hào),“s6”號(hào)鍵為500hz的頻率信號(hào),“s7”號(hào)鍵為1khz的頻率信號(hào),6個(gè)led顯示器輸出信號(hào)的頻率值,選用共陽極led。利用dac0832實(shí)現(xiàn)頻率可調(diào)的信號(hào)源。頻率范圍:10hz,100hz,500hz,1000hz。輸出波形幅度為05v。3. 硬件設(shè)計(jì)3.1硬件原理框圖硬件原理方框圖如圖
12、3.1所示。波形輸出放大電路顯示電路數(shù)/模轉(zhuǎn)換電路鍵盤電路單片機(jī)復(fù)位電路圖3.1 硬件原理框圖 如圖3.1所示80c51單片機(jī)為硬件系統(tǒng)的核心,單片機(jī)對(duì)鍵盤掃描讀入鍵值確定波形與頻率,通過顯示電路顯示頻率值,通過數(shù)模轉(zhuǎn)換器放大電路輸出波形,通過示波器可以觀察波形與頻率,復(fù)位電路用于系統(tǒng)復(fù)位重啟。3.2主控電路圖3.2 主控電路圖如圖3.2所示,80c51從p0口接收來自鍵盤的信號(hào),并通過p2口輸出一些控制信號(hào),將其輸入到8255a的信號(hào)控制端,用于控制其信號(hào)的輸入、輸出。如果有鍵按下,則在讀控制端會(huì)產(chǎn)生一個(gè)讀信號(hào),使單片機(jī)讀入信號(hào)。如果有信號(hào)輸出,則在寫控制端產(chǎn)生一個(gè)寫信號(hào),并將所要輸出的信號(hào)
13、通過8255a的pb口輸出,并在數(shù)碼管上顯示出來。3.3 數(shù)/模轉(zhuǎn)換電路由于單片機(jī)產(chǎn)生的是數(shù)字信號(hào),要想得到所需要的波形,就要把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),所以該文選用價(jià)格低廉、接口簡單、轉(zhuǎn)換控制容易并具有8位分辨率的數(shù)模轉(zhuǎn)換器dac0832。dac0832主要由8位輸入寄存器、8位dac寄存器、8位d/a轉(zhuǎn)換器以及輸入控制電路四部分組成。圖3.3 數(shù)模轉(zhuǎn)換電路由圖3.3可知,dac0832的片選地址為7fffh,當(dāng)p25有效時(shí),若p0口向其送的數(shù)據(jù)為00h, 則u1 的輸出電壓為0v。若p0口向其送的數(shù)據(jù)為0ffh時(shí), 則u1的輸出電壓為-5v. 故當(dāng)u1 輸出電壓為0v時(shí),vout = - 5
14、v.當(dāng)輸出電壓為- 5v時(shí),可得:vout = +5v,所以輸出波形的電壓變化范圍為- 5v+ 5v. 故可推得當(dāng)p0所送數(shù)據(jù)為80h時(shí),vout為0v6。公式如右所示:3.4 按鍵接口電路圖3.4 按鍵接口電路圖3.4為鍵盤接口電路的原理圖,圖中鍵盤和8255a的pa口相連,80c51的p0口和8255a的d0口相連,80c51不斷的掃描鍵盤,看是否有鍵按下,如有,則根據(jù)相應(yīng)按鍵作出反應(yīng)。其中“s0”號(hào)鍵代表方波輸出,“s1”號(hào)鍵代表正弦波輸出,“s2”號(hào)鍵代表三角波輸出。 “s3”號(hào)鍵代表鋸齒波輸出,“s4”號(hào)鍵為10hz的頻率信號(hào),“s5”號(hào)鍵為100hz的頻率信號(hào),“s6”號(hào)鍵為500
15、hz的頻率信號(hào),“s7”號(hào)鍵為1khz的頻率信號(hào)73.5 時(shí)鐘電路8051單片機(jī)有兩個(gè)引腳(xtal1,xtal2)用于外接石英晶體和微調(diào)電容,從而構(gòu)成時(shí)鐘電路,其電路圖如圖3.5所示。圖3.5 時(shí)鐘電路如圖3.5所示電容c1、c2對(duì)振蕩頻率有穩(wěn)定作用,其容量的選擇為30pf,振蕩器選擇頻率為12mhz的石英晶體。由于頻率較大時(shí),三角波、正弦波、鋸齒波中每一點(diǎn)的延時(shí)時(shí)間為幾微秒,故延時(shí)時(shí)間還要加上指令時(shí)間才能獲得較大的頻率波形9。3.6 顯示電路圖3.6 led顯示電路如圖3.6所示顯示電路是用來顯示波形信號(hào)的頻率,使得整個(gè)系統(tǒng)更加合理,從經(jīng)濟(jì)的角度出發(fā),所以顯示器件采用led數(shù)碼管顯示器。而
16、且led數(shù)碼管是采用共陽極接法,當(dāng)主控端口輸出一個(gè)低電平后,與其相對(duì)應(yīng)的數(shù)碼管即變亮,顯示所需數(shù)據(jù)10。4. 軟件設(shè)計(jì)4.1 程序流程圖本文中子程序的調(diào)用是通過按鍵的選擇來實(shí)現(xiàn),在取得按鍵相應(yīng)的鍵值后,啟動(dòng)計(jì)時(shí)器和相應(yīng)的中斷服務(wù)程序,再直接查詢程序中預(yù)先設(shè)置的數(shù)據(jù)值,通過轉(zhuǎn)換輸出相應(yīng)的電壓,從而形成所需的各種波形。按下復(fù)位鍵后系統(tǒng)對(duì)8255a初始化,再通過鍵盤按鈕確認(rèn)頻率與波形選擇。首先判斷信號(hào)頻率值,如符合所需的頻率,則重置時(shí)間常數(shù),并通過顯示器顯示出來,不符則返回。在中斷結(jié)束后,還要來判斷波形是否符合,如符合,則顯示其頻率,不符則返回,重新判斷。主程序的流程圖:判斷信號(hào)頻率中斷設(shè)置開中斷顯
17、示頻率值判斷波形yy根據(jù)頻率值置新的時(shí)間常數(shù)8255a初始化開始nn圖4.1 主程序流程圖如圖4.1所示,在程序開始運(yùn)行之后,首先是對(duì)8255a進(jìn)行初始化,之后判斷信號(hào)頻率值,如符合所需的頻率,則重置時(shí)間常數(shù),并通過顯示器顯示出來,不符則返回。在中斷結(jié)束后,還要來判斷波形是否符合,如符合,則顯示其頻率,不符則返回,重新判斷。下面說明主程序流程圖的程序?qū)崿F(xiàn):1.開始:org 0000h 程序開始執(zhí)行,首先覺得跳轉(zhuǎn)到主程序ajm mainorg 000bh 定時(shí)器0中斷入口地址,跳轉(zhuǎn)到中斷服務(wù)程序ljmp tc0org 0030h2.8255a初始化:mov dptr,#7f00h 指向8255a
18、命令字端口地址mov a,#06h 設(shè)置a口為輸入,b口、c口為輸出movx dptr,a 命令字(8255a初始化)3.判斷信號(hào)頻率:mov dptr,#7f01h 指向a口地址movx a,dptr 讀入a口的開關(guān)數(shù)據(jù)jnb acc.4,k10h 判斷是否“4鍵”,是則轉(zhuǎn)輸出10hz信號(hào)jnb acc.5,k100h 判斷是否“5鍵”,是則轉(zhuǎn)輸100hz信號(hào)jnb acc.6,k500h 判斷是否“6鍵”,是則轉(zhuǎn)輸出500hz信號(hào)jnb acc.7,k1k 判斷是否“7鍵”,是則轉(zhuǎn)輸出1khz信號(hào)ajmp main 無鍵按下則返回等待4.根據(jù)頻率值置新的時(shí)間常數(shù),以顯示10hz 為例,其他
19、原理相同不做論述:k10h:mov 30h,#00h 顯示10hzmov 31h,#00h 初始化顯示緩沖段mov 32h,#00hmov 33h,#00hmov 34h,#01hmov 35h,#00hlcall led1 調(diào)顯示子程序mov tmod,#00h 寫定時(shí)器工作方式 mov tl0,#15h 置新的時(shí)間常數(shù)mov th0,#9ehajmp pd5.顯示頻率值,下面以顯示10hz 為例,其他原理相同不做論述:k10h:mov 30h,#00h 顯示10hzmov 31h,#00hmov 32h,#00hmov 33h,#00hmov 34h,#01hmov 35h,#00hlca
20、ll led1 調(diào)用顯示子程序6.顯示子程序:led1: mov r3,#06h 設(shè)置6個(gè)led顯示mov r2,#01h 選通第一位led數(shù)據(jù)mov r1,#30h 送顯示緩沖區(qū)首址gn1:mov dptr,#7f03h 指向c口地址mov a,r2 位選通數(shù)據(jù)送amovx dptr,a 位選通數(shù)據(jù)送c口rl a 通下一位mov r2,a 位選通數(shù)據(jù)送r2中保存mov a, r1 取鍵值mov dptr,#tab 送led顯示軟件譯碼表首址movc a,a+dptr 查表求出鍵值顯示的段碼mov dptr,#7f02h 指向b口地址mov dptr,a 段碼送顯示lcall loop1 調(diào)延
21、時(shí)子程序inc r1 指向下一位顯示緩沖區(qū)地址djnz r3,gn1 循環(huán)顯示6個(gè)ledret7.中斷設(shè)置開中斷:gn: setb tr0 啟動(dòng)定時(shí)器setb et0 開定時(shí)器0中斷setb ea 開總中斷8判斷波形:pd:jnb acc.0,ke0 “0”號(hào)鍵按下,若是則轉(zhuǎn)方波輸出jnb acc.1,ke1 “1”號(hào)鍵按下,若是則轉(zhuǎn)正弦方波輸出jnb acc.2,ke2 “2”號(hào)鍵按下,若是則轉(zhuǎn)三角波輸出jnb acc.3,ke3 “3”號(hào)鍵按下,若是則轉(zhuǎn)鋸齒波輸出ljmp pd 無鍵按下則返回等待波形子程序的流程圖:y方波?發(fā)出d/a轉(zhuǎn)換值查表求出數(shù)據(jù)正弦波?發(fā)出d/a轉(zhuǎn)換值查表求出數(shù)據(jù)正
22、弦波?發(fā)出d/a轉(zhuǎn)換值查表求出數(shù)據(jù)鋸齒波發(fā)出d/a轉(zhuǎn)換值查表求出數(shù)據(jù)返回中斷服務(wù)程序開始yynnn圖4.2 子程序流程圖如圖4.2所示,在中斷服務(wù)子程序開始后,通過判斷來確定各種波形的輸出,當(dāng)判斷選擇的不是方波后,則轉(zhuǎn)向?qū)φ也ǖ呐袛?,如此反?fù)。下面說明子程序流程圖的程序?qū)崿F(xiàn):1.中斷服務(wù)程序開始:ljmp tc0 絕對(duì)跳轉(zhuǎn)到中斷服務(wù)程序2.判斷是否是方波及處理方法:tc0:cjne r7,#00h,tc1 判斷是否是方波,不是則跳轉(zhuǎn)mov dptr,#tab1 送方波數(shù)據(jù)表首址mov a,r6 發(fā)送數(shù)據(jù)寄存器movc a,a+dptrmov dptr,#0afffh 指向dac0832(2)
23、movx dptr,a dac0832(2)輸出mov a,r6inc a mov r6,acjne a,#32,ql1mov r6,#00hajmp ql13.判斷是否是正弦波及處理方法:tc1:cjne r7,#01h,tc2 判斷是否是正弦波,不是則跳轉(zhuǎn)mov dptr,#tab2 送正弦波數(shù)據(jù)表首址mov a,r6movc a, a+dptrmov dptr,#0afffh 指向dac0832(2)movx dptr,a dac0832(2)輸出mov a,r6inc amov r6,acjne a,#32,ql1mov r6,#00hajmp ql14.判斷是否是三角波及處理方法:t
24、c2:cjne r7,#02h,ql1 判斷是否是三角波,不是則跳轉(zhuǎn)mov dptr,#tab3 送三角波數(shù)據(jù)表首址mov a,r6movc a,a+dptrmov dptr,#0afffh 指向dac0832(2)movx dptr,a dac0832(2)輸出mov a,r6inc amov r6,acjne a,#32,ql1mov r6,#00hajmp ql15.判斷是否是鋸齒波及處理方法:tc3:cjne r7,#03h,ql1 判斷是否是鋸齒波,不是則跳轉(zhuǎn)mov dptr,#tab4 送鋸齒波數(shù)據(jù)表首址mov a,r6movc a, a+dptrmov dptr,#0afffh
25、指向dac0832(2)movx dptr,a dac0832(2)輸出mov a,r6inc amov r6,acjne a,#32,ql1mov r6,#00h四種波形的仿真波形圖如下:在仿真環(huán)境下,運(yùn)行仿真軟件,按要求操作鍵盤將會(huì)出現(xiàn)如下波形圖,各個(gè)波形的仿真圖有四種不同的頻率,在此不一一列出波形圖。圖4.3方波如圖4.3方波圖,橫坐標(biāo)為時(shí)間軸每小格表示1.33ms,縱坐標(biāo)為幅值軸每小格為1.00mv。當(dāng)“s0”鍵按下是將產(chǎn)生方波,鍵“s4”“s7”決定方波的頻率?!皊4”號(hào)鍵為10hz的頻率信號(hào),“s5”號(hào)鍵為100hz的頻率信號(hào),“s6”號(hào)鍵為500hz的頻率信號(hào),“s7”號(hào)鍵為1k
26、hz的頻率信號(hào)。圖4.4正弦波如圖4.4正弦波圖,橫坐標(biāo)為時(shí)間軸每小格表示1.33ms縱坐標(biāo)為幅值軸每小格為1.00mv。當(dāng)“s1”鍵按下是將產(chǎn)生正弦波,鍵“s4”“s7”決定正弦波的頻率?!皊4”號(hào)鍵為10hz的頻率信號(hào),“s5”號(hào)鍵為100hz的頻率信號(hào),“s6”號(hào)鍵為500hz的頻率信號(hào),“s7”號(hào)鍵為1khz的頻率信號(hào)。圖4.5三角波如圖4.5三角波圖,橫坐標(biāo)為時(shí)間軸每小格表示1.33ms縱坐標(biāo)為幅值軸每小格為1.00mv。當(dāng)“s2”鍵按下是將產(chǎn)生三角波,鍵“s4”“s7”決定三角波的頻率?!皊4”號(hào)鍵為10hz的頻率信號(hào),“s5”號(hào)鍵為100hz的頻率信號(hào),“s6”號(hào)鍵為500hz的
27、頻率信號(hào),“s7”號(hào)鍵為1khz的頻率信號(hào)。圖4.6鋸齒波 如圖4.6鋸齒圖,橫坐標(biāo)為時(shí)間軸每小格表示1.33ms縱坐標(biāo)為幅值軸每小格為1.00mv。當(dāng)“s3”鍵按下是將產(chǎn)生鋸齒波,鍵“s4”“s7”決定鋸齒波的頻率?!皊4”號(hào)鍵為10hz的頻率信號(hào),“s5”號(hào)鍵為100hz的頻率信號(hào),“s6”號(hào)鍵為500hz的頻率信號(hào),“s7”號(hào)鍵為1khz的頻率信號(hào)。5. 結(jié)論基于單片機(jī)的函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)與仿真已全部完成,所設(shè)計(jì)的函數(shù)信號(hào)發(fā)生器有一定的實(shí)用價(jià)值和經(jīng)濟(jì)價(jià)值。能按預(yù)期的效果通過按鍵“s0”“s3”實(shí)現(xiàn)了方波,正弦波,三角波,鋸齒波四種波形切換,鍵“s4”“s7”決定鋸齒波的頻率,波形標(biāo)準(zhǔn)美
28、觀頻率穩(wěn)定可調(diào)。并且在數(shù)碼管上顯示出波形的頻率。在函數(shù)信號(hào)發(fā)生器系統(tǒng)的4個(gè)模塊中,最重要的是主控模塊,其它還有顯示模塊,按鍵模塊,信號(hào)輸出模塊。各模塊完成后,將它們組合成完整的函數(shù)信號(hào)發(fā)生器系統(tǒng)。在設(shè)計(jì)過程中還需改進(jìn)的地方是在頻率的選擇上,頻率選擇只能是10hz、100hz、500hz、1000hz,理想情況下頻率選擇應(yīng)該更加精確。本文所用的匯編語言為機(jī)器語言,相對(duì)來說復(fù)雜難懂,移植性差,可讀性差,但是代碼效率高,其本質(zhì)作用在于直接控制硬件,因而會(huì)受到硬件環(huán)境的限制,因此做系統(tǒng)是編程語言的選擇尤為重要。答謝: 設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多編程問題,最后在蔡劍華老師的辛勤指導(dǎo)下,終于游
29、逆而解。同時(shí),在蔡劍華老師那里我學(xué)得到很多實(shí)用的知識(shí),再次我表示感謝!同時(shí),對(duì)給過我?guī)椭呐诵畚?,朱三星同學(xué)表示忠心的感謝!參考文獻(xiàn)1 程全.基于at89c52實(shí)現(xiàn)的多種波形發(fā)生器的設(shè)計(jì)j.周口師范學(xué)院學(xué)報(bào),2005.22(5):5758.2 周明德.微型計(jì)算機(jī)系統(tǒng)原理及應(yīng)用m.北京:清華大學(xué)出版社,2002.341364.3 劉樂善.微型計(jì)算機(jī)接口技術(shù)及應(yīng)用m.北京:北京航空航天大學(xué)出版社,2001.258264.4 童詩白.模擬電路技術(shù)基礎(chǔ)m.北京:高等教育出版社,2000.171202.5 杜華.任意波形發(fā)生器及應(yīng)用j.國外電子測量技術(shù),2005.1:3840.6 張友德.單片微型機(jī)原理
30、、應(yīng)用與實(shí)踐m.上海:復(fù)旦大學(xué)出版社,2004.4044. 7 程朗.基于8051單片機(jī)的雙通道波形發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)j.計(jì)算機(jī)工程與應(yīng)用,2004.8:100103.8 張永瑞.電子測量技術(shù)基礎(chǔ)m.西安:西安電子科技大學(xué)出版社,2006.61101.9 李葉紫. mcs-51單片機(jī)應(yīng)用教程m.北京:清華大學(xué)出版社,2004.232238.10 intel, microcontroller handbook, 1988m.附錄1 電路原理圖附錄2 源程序源程序:org 0000hajm mainorg 000bhljmp tc0org 0030hmain:mov dptr,#9fffh 指向d
31、ac0832(1)mov a,70hmovx dptr,a dac0832(1)輸出mov dptr,#7f00h 指向8255a命令字端口地址mov a,#06h 設(shè)置a口為輸入,b口、c口為輸出movx dptr,a 命令字mov dptr,#7f01h 指向a口地址movx a,dptr 讀入a口的開關(guān)數(shù)據(jù)jnb acc.4,k10h 判斷是否“4”,是則轉(zhuǎn)輸出10hz信號(hào)jnb acc.5,k100h 判斷是否“5”,是則轉(zhuǎn)輸100hz信號(hào)jnb acc.6,k500h 判斷是否“6”,是則轉(zhuǎn)輸出500hz信號(hào)jnb acc.7,k1k 判斷是否“7”,是則轉(zhuǎn)輸出1khz信號(hào)ajmp
32、mainled1: mov r3,#06h 設(shè)置6個(gè)led顯示mov r2,#01h 選通第一位led數(shù)據(jù)mov r1,#30h 送顯示緩沖區(qū)首址gn1:mov dptr,#7f03h 指向c口地址mov a,r2 位選通數(shù)據(jù)送amovx dptr,a 位選通數(shù)據(jù)送c口rl a 選通下一位mov r2,a 位選通數(shù)據(jù)送r2中保存mov a, r1 取鍵值mov dptr,#tab 送led顯示軟件譯碼表首址movc a,a+dptr 查表求出鍵值顯示的段碼mov dptr,#7f02h 指向b口地址mov dptr,a 段碼送顯示lcall loop1 調(diào)延時(shí)子程序inc r1 指向下一位顯示
33、緩沖區(qū)地址djnz r3,gn1 循環(huán)顯示6個(gè)ledretloop1:mov r4,#08h 延時(shí)子程序loop:mov r5,#0a0hdjnz r5,$djnz r4,loopretk10h:mov 30h,#00h 顯示10hzmov 31h,#00hmov 32h,#00hmov 33h,#00hmov 34h,#01hmov 35h,#00hlcall led1 調(diào)顯示子程序mov tmod,#00hmov tl0,#15hmov th0,#9ehajmp pdk100h:mov 30h,#00h 顯示100hzmov 31h,#00hmov 32h,#00hmov 33h,#01h
34、mov 34h,#00hmov 32h,#01hmov 33h,#00hmov 34h,#00hmov 35h,#00hlcall led1 調(diào)顯示子程序mov tmod,#00hmov tl0,#01hmov th0,#0ffhpd:jnb acc.0,ke0 判斷是否“0”號(hào)鍵按下,若是則轉(zhuǎn)方波輸出jnb acc.1,ke1 判斷是否“1”號(hào)鍵按下,若是則轉(zhuǎn)正弦方波輸出jnb acc.2,ke2 判斷是否“2”號(hào)鍵按下,若是則轉(zhuǎn)三角波輸出jnb acc.3,ke3 判斷是否“3”號(hào)鍵按下,若是則轉(zhuǎn)鋸齒波輸出ljmp pdke0:mov r7,#00hlcall led1 調(diào)顯示子程序mov
35、 r6,#00hajmp gnke1:mov r7,#02hlcall led1 調(diào)顯示子程序mov r6,#00hajmp gnke2:mov r7,#02hlcall led1 調(diào)顯示子程序mov r6,#00hajmp gn ke3:mov r7,#02hlcall led1 調(diào)顯示子程序mov r6,#00hgn: setb tr0setb et0setb ealop1:jnb acc.4,k10h 判斷是否“4”號(hào)鍵,若是則轉(zhuǎn)輸出10hz信號(hào)jnb acc.5,k100h 判斷是否“5”號(hào)鍵,若是則轉(zhuǎn)輸出100hz信號(hào)jnb acc.6,k500h 判斷是否“6”號(hào)鍵,若是則轉(zhuǎn)輸出5
36、00hz信號(hào)jnb acc.7,k1k 判斷是否“7”號(hào)鍵,若是則轉(zhuǎn)輸出1khz信號(hào)ajmp lop1tc0:cjne r7,#00h,tc1 發(fā)送方波程序mov dptr,#tab1 送方波數(shù)據(jù)表首址mov a,r6 發(fā)送數(shù)據(jù)寄存器movc a,a+dptrmov dptr,#0afffh 指向dac0832(2)movx dptr,a dac0832(2)輸出mov a,r6inc a mov r6,acjne a,#32,ql1mov r6,#00hajmp ql1tc1:cjne r7,#01h,tc2 發(fā)送正弦波程序mov dptr,#tab2 送正弦波數(shù)據(jù)表首址mov a,r6mo
37、vc a, a+dptrmov dptr,#0afffh 指向dac0832(2)movx dptr,a dac0832(2)輸出mov a,r6inc amov r6,acjne a,#32,ql1mov r6,#00hajmp ql1tc2:cjne r7,#02h,ql1 發(fā)送三角波程序mov dptr,#tab3 送三角波數(shù)據(jù)表首址mov a,r6movc a,a+dptrmov dptr,#0afffh 指向dac0832(2)movx dptr,a dac0832(2)輸出mov a,r6inc amov r6,acjne a,#32,ql1mov r6,#00hajmp ql1t
38、c3:cjne r7,#03h,ql1 發(fā)送鋸齒波程序mov dptr,#tab4 送鋸齒波數(shù)據(jù)表首址mov a,r6movc a, a+dptrmov dptr,#0afffh 指向dac0832(2)movx dptr,a dac0832(2)輸出mov a,r6inc amov r6,acjne a,#32,ql1mov r6,#00hql1: retitab: db 0c0h,0f9h,0a4h,0b0h,99h,82h,0f8h,80htab1: db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0
39、ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0
40、ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh,
41、 0ffh db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh, 0ffh, 0ffh db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 0
42、0h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db
43、00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00htab2: db 80h, 83h, 86h, 89h, 8dh,90h,93h,96h db 99h, 9ch, 9fh,0a2h,0a5h,0a8h,0abh,0aeh db 0b1h, 0b4h,0b7h,0bah,0bch,0bfh,0c2h,0c5h db 0c7h, 0cah,0cch,0cfh,0d1h, 0d4h,0d6h,0d8h db
44、 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,0f2h,0f1h,0efh,
45、0eeh,0ech,0eah db 0e9h, 0e7h,0e5h,0e3h,0e1h, 0deh,0ddh,0dah db 0d8h, 0d6h,0d4h,0d1h,0cfh, 0cch,0cah,0c7h db 0c5h, 0c2h,0bfh,0bch,0bah, 0b7h,0b4h,0b1h db 0aeh, 0abh,0a8h,0a5h,0a2h, 9fh, 9ch, 99h db 96h, 93h, 90h, 8dh, 89h, 86h, 83h, 80h db 80h, 7ch, 79h, 78h, 72h, 6fh, 6ch, 69h db 66h, 63h, 60h, 5dh,
46、 5ah, 57h, 55h, 51h db 4eh, 4ch, 48h, 45h, 43h, 40h, 3dh, 3ah db 38h, 35h, 33h, 30h, 2eh, 2bh, 29h, 27h db 25h, 22h, 20h, 1eh, 1ch, 1ah, 18h, 16h db 15h, 13h, 11h, 10h, 0eh, 0dh, 0bh, 0ah db 09h, 08h, 07h, 06h, 05h, 04h, 03h, 02h db 02h, 01h, 00h, 00h, 00h, 00h, 00h, 00h db 00h, 00h, 00h, 00h, 00h,
47、00h, 01h, 02h db 02h, 03h, 04h, 05h, 06h, 07h, 08h, 09h db 0ah, 0bh, 0dh, 0eh, 10h, 11h, 13h, 15h db 16h, 18h, 1ah, 1ch, 1eh, 20h, 22h, 25h db 27h, 29h, 2bh, 2eh, 30h, 33h, 35h, 38h db 3ah, 3dh, 40h, 43h, 45h, 48h, 4ch, 4eh db 51h, 55h, 57h, 5ah, 5dh, 60h, 63h, 66h db 69h, 6ch, 6fh, 72h, 76h, 79h, 7ch, 80htab3: db 00h,02h,04h,06h,08h,0ah,0ch,0eh db 10h,12h,14h,16h,18h,1ah,1ch,1eh db 20h,22h,24h,26h,28h,2ah,2ch,2eh db 30h,32h,34h,36h,38h,3ah,3ch,3eh db 40h,42h,44h,46h,48h,4ah,4ch,4eh db 50h,52h,54h,56h,58h,5ah,5ch,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 奢侈包寄售合同范例
- 心靈表達(dá)課程設(shè)計(jì)教案
- 路面修繕合同范例
- 拖車勞務(wù)費(fèi)合同范例
- 微機(jī)應(yīng)用課課程設(shè)計(jì)
- 按鈕制作課程設(shè)計(jì)
- 大學(xué)討厭課程設(shè)計(jì)
- 幼兒園感官花園課程設(shè)計(jì)
- 幼兒園現(xiàn)場命題課程設(shè)計(jì)
- 幼兒甜酸苦咸課程設(shè)計(jì)
- 期末綜合卷(含答案) 2024-2025學(xué)年蘇教版數(shù)學(xué)六年級(jí)上冊(cè)
- 2025春夏運(yùn)動(dòng)戶外行業(yè)趨勢白皮書
- 中醫(yī)筋傷的治療
- 【MOOC】英文技術(shù)寫作-東南大學(xué) 中國大學(xué)慕課MOOC答案
- 護(hù)理產(chǎn)科健康教育
- 《〈論語〉十二章》說課稿 2024-2025學(xué)年統(tǒng)編版高中語文選擇性必修上冊(cè)
- 2024年21起典型火災(zāi)案例及消防安全知識(shí)專題培訓(xùn)(消防月)
- 人教版四年級(jí)上冊(cè)數(shù)學(xué)【選擇題】專項(xiàng)練習(xí)100題附答案
- 從創(chuàng)意到創(chuàng)業(yè)智慧樹知到期末考試答案章節(jié)答案2024年湖南師范大學(xué)
- DL-T 1476-2023 電力安全工器具預(yù)防性試驗(yàn)規(guī)程
- 國開《Windows網(wǎng)絡(luò)操作系統(tǒng)管理》形考任務(wù)4-配置故障轉(zhuǎn)移群集服務(wù)實(shí)訓(xùn)
評(píng)論
0/150
提交評(píng)論