應(yīng)用電子技術(shù)畢業(yè)論文_第1頁
應(yīng)用電子技術(shù)畢業(yè)論文_第2頁
應(yīng)用電子技術(shù)畢業(yè)論文_第3頁
應(yīng)用電子技術(shù)畢業(yè)論文_第4頁
應(yīng)用電子技術(shù)畢業(yè)論文_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、常州機電職業(yè)技術(shù)學院畢業(yè)設(shè)計(論文)作 者: 陸珍麗 學 號:40931434 系 部: 電氣工程系 專 業(yè): 應(yīng)用電子專業(yè) 題 目: 單片機控制多功能信號發(fā)生器 指導者: 朱小剛章春華評閱者: 2012年 5月 畢業(yè)設(shè)計(論文)中文摘要 單片微型計算機(簡稱單片機)作為微型計算機的一個很重要的分支,自它誕生以來至今,以其極高的性能價格比以及一系列人所共識的優(yōu)點,受到越來越多的工程技術(shù)人員的重視?,F(xiàn)在,單片機已廣泛地應(yīng)用在智能儀器儀表、機電設(shè)備過程控制、自動檢測、家用電器和數(shù)據(jù)處理等各個方面,有著廣闊的發(fā)展前景。 本文介紹一種用at89c51單片機構(gòu)成的波形發(fā)生器,可產(chǎn)生方波、三角波、正弦波、

2、鋸齒波等多種波形,波形的周期可用程序改變,并可根據(jù)需要選擇單極性輸出或雙極性輸出,具有線路簡單、結(jié)構(gòu)緊湊、性能優(yōu)越等特點。文章給出了源代碼,通過仿真測試,其性能指標達到了設(shè)計要求。關(guān)鍵詞:單片機;dac;信號發(fā)生器畢業(yè)設(shè)計(論文)外文摘要title: microprocessor controlled multi-function signal generator abstract:single chip microcomputer ( referred to as the single chip microcomputer ) as a very important branch, sinc

3、e its birth date, with its high performance price ratio and a series of well known advantages, being more and more the attention of project technology personnel. now, scm has been widely used in intelligent instrumentation, electrical and mechanical equipment process control, automatic detection, ho

4、usehold appliances and data processing and other aspects, there are broad prospects for development. this paper introduces a kind of at89c51single chip waveform generator, can produce square wave, triangle wave, sine wave, sawtooth wave and other wave, waveform cycle can be used to change procedures

5、, and in accordance with the need to select the output unipolar or bipolar output, has simple circuit, compact structure, superior performance characteristics. the article gives the source code, through simulation test, the performance indicators have reached the design requirements.keywords :single

6、 chip microcomputer; dac; signal generator 目錄1 緒論 近年來,單片微型計算機以其強大的生命力飛速發(fā)展,在工業(yè)控制、智能儀器儀表、智能化設(shè)備和家用電器等領(lǐng)域得到了廣泛的應(yīng)用,因而引起了各行各業(yè)的極大關(guān)注,有著廣闊的發(fā)展前景。論文設(shè)計的是一個單片機控制多功能信號發(fā)生器。2 單片機概述2.1 單片機基礎(chǔ)知識 一臺能夠工作的計算機要有這樣幾個部份構(gòu)成:cpu(進行運算、控制)、ram(數(shù)據(jù)存儲)、rom(程序存儲)、輸入/輸出設(shè)備(例如:串行口、并行輸出口等)。在個人計算機上這些部份被分成若干塊芯片,安裝一個稱之為主板的印刷線路板上。而在單片機中,這些部份

7、,全部被做到一塊集成電路芯片中了,所以就稱為單片(單芯片)機,而且有一些單片機中除了上述部份外,還集成了其它部份如a/d,d/a等。隨著大規(guī)模集成電路技術(shù)的發(fā)展,中央處理器(cpu)、隨機存取存儲器(ram)、只讀存儲器(rom)、(i/o)接口、定時器/計數(shù)器和串行通信接口,以及其他一些計算機外圍電路等均可集成在一塊芯片上構(gòu)成單片微型計算機,簡稱為單片機。單片機具有體積小、成本低,性能穩(wěn)定、使用壽命長等特點。其最明顯的優(yōu)勢就是可以嵌入到各種儀器、設(shè)備中,這是其他計算機和網(wǎng)絡(luò)都無法做到的9,10。我們平常老是講8051,又有什么8031,現(xiàn)在又有89c51,它們之間究竟是什么關(guān)系? mcs51

8、是指由美國intel公司(對了,就是大名鼎鼎的intel)生產(chǎn)的一系列單片機的總稱,這一系列單片機包括了好些品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機都是在8051的基礎(chǔ)上進行功能的增、減、改變而來的,所以人們習慣于用8051來稱呼mcs51系列單片機,而8031是前些年在我國最流行的單片機,所以很多場合會看到8031的名稱。intel公司將mcs51的核心技術(shù)授權(quán)給了很多其它公司,所以有很多公司在做以8051為核心的單片機,當然,功能或多或少有些改變,以滿足不同的需求,其中89c51就是這幾年在我國非常流行的單片機,

9、它是由美國atmel公司開發(fā)生產(chǎn)的。2.2 單片機的內(nèi)部、外部結(jié)構(gòu)2.2.1單片機的外部結(jié)構(gòu)拿到一塊芯片,想要使用它,首先必須要知道怎樣連線,我們用的一塊稱之為89c51的芯片,下面我們就看一下如何給它連線。 1、 電源:這當然是必不可少的了。單片機使用的是5v電源,其中正極接40引腳,負極(地)接20引腳。 2、 振蒎電路:單片機是一種時序電路,必須提供脈沖信號才能正常工作,在單片機內(nèi)部已集成了振蕩器,使用晶體振蕩器,接18、19腳。只要買來晶振,電容,連上就可以了,按圖1接上即可。 3、 復位引腳:按圖1中畫法連好,至于復位是何含義及為何需要復要復位,在單片機功能中介紹。 4、 ea引腳:

10、ea引腳接到正電源端。 至此,一個單片機就接好,通上電,單片機就開始工作了。我們的第一個任務(wù)是要用單片機點亮一只發(fā)光二極管led,顯然,這個led必須要和單片機的某個引腳相連,否則單片機就沒法控制它了,那么和哪個引腳相連呢?單片機上除了剛才用掉的5個引腳,還有35個,我們將這個led和1腳相連。(見圖1,其中r1是限流電阻)按照這個圖的接法,當1腳是高電平時,led不亮,只有1腳是低電平時,led才發(fā)亮。因此要1腳我們要能夠控制,也就是說,我們要能夠讓1引腳按要求變?yōu)楦呋虻碗娖?。即然我們要控?腳,就得給它起個名字,總不能就叫它一腳吧?叫它什么名字呢?設(shè)計51芯片的intel公司已經(jīng)起好了,就

11、叫它p1.0,這是規(guī)定,不可以由我們來更改。 圖1.1名字有了,我們又怎樣讓它變高或變低呢?叫人做事,說一聲就可以,這叫發(fā)布命令,要計算機做事,也得要向計算機發(fā)命令,計算機能聽得懂的命令稱之為計算機的指令。讓一個引腳輸出高電平的指令是setb,讓一個引腳輸出低電平的指令是clr。因此,我們要p1.0輸出高電平,只要寫setb p1.0,要 p1.0輸出低電平,只要寫 clr p1.0就可以了?,F(xiàn)在我們已經(jīng)有辦法讓計算機去將p10輸出高或低電平了,但是我們怎樣才能計算機執(zhí)行這條指令呢?總不能也對計算機也說一聲了事吧。要解決這個問題,還得有幾步要走。第一,計算機看不懂setb clr之類的指令,我

12、們得把指令翻譯成計算機能懂的方式,再讓計算機去讀。計算機能懂什么呢?它只懂一樣東西數(shù)字。因此我們得把setb p1.0變?yōu)椋╠2h,90h ),把clr p1.0變?yōu)?(c2h,90h ),至于為什么是這兩個數(shù)字,這也是由51芯片的設(shè)計者-intel規(guī)定的,我們不去研究。第二步,在得到這兩個數(shù)字后,怎樣讓這兩個數(shù)字進入單片機的內(nèi)部呢?這要借助于一個硬件工具編程器。我們將編程器與電腦連好,運行編程器的軟件,然后在編緝區(qū)內(nèi)寫入(d2h,90h)見圖2,寫入好,拿下片子,把片子插入做好的電路板,接通電源什么?燈不亮?這就對了,因為我們寫進去的指令就是讓圖2p10輸出高電平,燈當然不亮,要是亮就錯了。

13、現(xiàn)在我們再撥下這塊芯片,重新放回到編程器上,將編緝區(qū)的內(nèi)容改為(c2h,90h),也就是clr p1.0,寫片,拿下片子,把片子插進電路板,接電,好,燈亮了。因為我們寫入的()就是讓p10輸出低電平的指令。這樣我們看到,硬件電路的連線沒有做任何改變,只要改變寫入單片機中的內(nèi)容,就可以改變電路的輸出效果。2.2.2單片機內(nèi)部結(jié)構(gòu)分析 我們來思考一個問題,當我們在編程器中把一條指令寫進單片要內(nèi)部,然后取下單片機,單片機就可以執(zhí)行這條指令,那么這條指令一定保存在單片機的某個地方,并且這個地方在單片機掉電后依然可以保持這條指令不會丟失,這是個什么地方呢?這個地方就是單片機內(nèi)部的只讀存儲器即rom(re

14、ad only memory)。為什么稱它為只讀存儲器呢?剛才我們不是明明把兩個數(shù)字寫進去了嗎?原來在89c51中的rom是一種電可擦除的rom,稱為flash rom,剛才我們是用的編程器,在特殊的條件下由外部設(shè)備對rom進行寫的操作,在單片機正常工作條件下,只能從那面讀,不能把數(shù)據(jù)寫進去,所以我們還是把它稱為rom。2.3 單片機基本概念2.3.1數(shù)的本質(zhì)和物理現(xiàn)象我們知道,計算機可以進行數(shù)學運算,這可令我們非常的難以理解,計算機嗎,我們雖不了解它的組成,但它總只是一些電子元器件,怎么可以進行數(shù)學運算呢?我們做數(shù)學題如37+45是這樣做的,先在紙上寫37,然后在下面寫45,然后大腦運算,最

15、后寫出結(jié)果,運算的原材料:37、45和結(jié)果:82都是寫在紙上的,計算機中又是放在什么地方呢?為了解決這個問題,先讓我們做一個實驗:這里有一盞燈,我們知道燈要么亮,要么不亮,就有兩種狀態(tài),我們可以用0和1來代替這兩種狀態(tài),規(guī)定亮為1,不亮為0。現(xiàn)在放上兩盞燈,一共有幾種狀態(tài)呢?我們列表來看一下:狀態(tài) 表達 0 0 0 1 1 0 1 1 請大家自已寫上3盞燈的情況000 001 010 011 100 101 110 111我們來看,這個000,001,101 不就是我們學過的的二進制數(shù)嗎?本來,燈的亮和滅只是一種物理現(xiàn)象,可當我們把它們按一按的順序排更好后,燈的亮和滅就代表了數(shù)字了。讓我們再抽

16、象一步,燈為什么會亮呢?看電路1,是因為輸出電路輸出高電平,給燈通了電。因此,燈亮和滅就可以用電路的輸出是高電平還是低電平來替代了。這樣,數(shù)字就和電平的高、低聯(lián)系上了。(請想一下,我們還看到過什么樣的類似的例子呢?(海軍之)燈語、旗語,電報,甚至紅、綠燈)2.3.2 位、字節(jié)的含義位的含義:通過上面的實驗我們已經(jīng)知道:一盞燈亮或者說一根線的電平的高低,可以代表兩種狀態(tài):0和1。實際上這就是一個二進制位,因此我們就把一根線稱之為一“位”,用bit表示。字節(jié)的含義: 一根線可以表于0和1,兩根線可以表達00,01,10,11四種狀態(tài),也就是可以表于0到3,而三根可以表達0-7,計算機中通常用8根線

17、放在一起,同時計數(shù),就可以表過到0-255一共256種狀態(tài)。這8根線或者8位就稱之為一個字節(jié)(byte)。不要問我為什么是8根而不是其它數(shù),因為我也不知道。(計算機世界是一個人造的世界,不是自然界,很多事情你無法問為什么,只能說:它是一種規(guī)定,大家在以后的學習過程中也要注意這個問題)2.3.3總線:我們知道,一個電路總是由元器件通過電線連接而成的,在模擬電路中,連線并不成為一個問題,因為各器件間一般是串行關(guān)系,各器件之間的連線并不很多,但計算機電路卻不一樣,它是以微處理器為核心,各器件都要與微處理器相連,各器件之間的工作必須相互協(xié)調(diào),所以就需要的連線就很多了,如果仍如同模擬電路一樣,在各微處理

18、器和各器件間單獨連線,則線的數(shù)量將多得驚人,所以在微處理機中引入了總線的概念,各個器件共同享用連線,所有器件的8根數(shù)據(jù)線全部接到8根公用的線上,即相當于各個器件并聯(lián)起來,但僅這樣還不行,如果有兩個器件同時送出數(shù)據(jù),一個為0,一個為1,那么,接收方接收到的究竟是什么呢?這種情況是不允許的,所以要通過控制線進行控制,使器件分時工作,任何時候只能有一個器件發(fā)送數(shù)據(jù)(可以有多個器件同時接收)。器件的數(shù)據(jù)線也就被稱為數(shù)據(jù)總線,器件所有的控制線被稱為控制總線。在單片機內(nèi)部或者外部存儲器及其它器件中有存儲單元,這些存儲單元要被分配地址,才能使用,分配地址當然也是以電信號的形式給出的,由于存儲單元比較多,所以

19、,用于地址分配的線也較多,這些線被稱為地址總線。2.3.4數(shù)據(jù)、地址、指令:之所以將這三者放在一起,是因為這三者的本質(zhì)都是一樣的數(shù)字,或者說都是一串0和1組成的序列。換言之,地址、指令也都是數(shù)據(jù)。指令:由單片機芯片的設(shè)計者規(guī)定的一種數(shù)字,它與我們常用的指令助記符有著嚴格的一一對應(yīng)關(guān)系,不可以由單片機的開發(fā)者更改。地址:是尋找單片機內(nèi)部、外部的存儲單元、輸入輸出口的依據(jù),內(nèi)部單元的地址值已由芯片設(shè)計者規(guī)定好,不可更改,外部的單元可以由單片機開發(fā)者自行決定,但有一些地址單元是一定要有的(詳見程序的執(zhí)行過程)。數(shù)據(jù):這是由微處理機處理的對象,在各種不同的應(yīng)用電路中各不相同,一般而言,被處理的數(shù)據(jù)可能

20、有這么幾種情況:1地址(如mov dptr,#1000h),即地址1000h送入dptr。2方式字或控制字(如mov tmod,#3),3即是控制字。3常數(shù)(如mov th0,#10h)10h即定時常數(shù)。4實際輸出值(如p1口接彩燈,要燈全亮,則執(zhí)行指令:mov p1,#0ffh,要燈全暗,則執(zhí)行指令:mov p1,#00h)這里0ffh和00h都是實際輸出值。又如用于led的字形碼,也是實際輸出的值。理解了地址、指令的本質(zhì),就不難理解程序運行過程中為什么會跑飛,會把數(shù)據(jù)當成指令來執(zhí)行了。2.3.5 p0口、p2口和p3的第二功能用法初學時往往對p0口、p2口和p3口的第二功能用法迷惑不解,認

21、為第二功能和原功能之間要有一個切換的過程,或者說要有一條指令,事實上,各端口的第二功能完全是自動的,不需要用指令來轉(zhuǎn)換。如p3.6、p3.7分別是wr、rd信號,當微片理機外接ram或有外部i/o口時,它們被用作第二功能,不能作為通用i/o口使用,只要一微處理機一執(zhí)行到movx指令,就會有相應(yīng)的信號從p3.6或p3.7送出,不需要事先用指令說明。事實上不能作為通用i/o口使用也并不是不能而是(使用者)不會將其作為通用i/o口使用。你完全可以在指令中按排一條setb p3.7的指令,并且當單片機執(zhí)行到這條指令時,也會使p3.7變?yōu)楦唠娖剑褂谜卟粫@么去做,因為這通常這會導致系統(tǒng)的崩潰(即死機

22、)。23.6程序的執(zhí)行過程 單片機在通電復位后8051內(nèi)的程序計數(shù)器(pc)中的值為0000,所以程序總是從0000單元開始執(zhí)行,也就是說:在系統(tǒng)的rom中一定要存在0000這個單元,并且在0000單元中存放的一定是一條指令。2.3.7堆棧 堆棧是一個區(qū)域,是用來存放數(shù)據(jù)的,這個區(qū)域本身沒有任何特殊之處,就是內(nèi)部ram的一部份,特殊的是它存放和取用數(shù)據(jù)的方式,即所謂的先進后出,后進先出,并且堆棧有特殊的數(shù)據(jù)傳輸指令,即push和pop,有一個特殊的專為其服務(wù)的單元,即堆棧指針sp,每當執(zhí)一次push指令時,sp就(在原來值的基礎(chǔ)上)自動加1,每當執(zhí)行一次pop指令,sp就(在原來值的基礎(chǔ)上)自

23、動減1。由于sp中的值可以用指令加以改變,所以只要在程序開始階段更改了sp的值,就可以把堆棧設(shè)置在規(guī)定的內(nèi)存單元中,如在程序開始時,用一條mov sp,#5fh指令,就時把堆棧設(shè)置在從內(nèi)存單元60h開始的單元中。一般程序的開頭總有這么一條設(shè)置堆棧指針的指令,因為開機時,sp的初始值為07h,這樣就使堆棧從08h單元開始往后,而08h到1fh這個區(qū)域正是8031的第二、三、四工作寄存器區(qū),經(jīng)常要被使用,這會造成數(shù)據(jù)的渾亂。不同作者編寫程序時,初始化堆棧指令也不完全相同,這是作者的習慣問題。當設(shè)置好堆棧區(qū)后,并不意味著該區(qū)域成為一種專用內(nèi)存,它還是可以象普通內(nèi)存區(qū)域一樣使用,只是一般情況下編程者不

24、會把它當成普通內(nèi)存用了。2.3.8單片機的開發(fā)過程 這里所說的開發(fā)過程并不是一般書中所說的從任務(wù)分析開始,我們假設(shè)已設(shè)計并制作好硬件,下面就是編寫軟件的工作。在編寫軟件之前,首先要確定一些常數(shù)、地址,事實上這些常數(shù)、地址在設(shè)計階段已被直接或間接地確定下來了。如當某器件的連線設(shè)計好后,其地址也就被確定了,當器件的功能被確定下來后,其控制字也就被確定了。然后用文本編緝器(如edit、cced等)編寫軟件,編寫好后,用編譯器對源程序文件編譯,查錯,直到?jīng)]有語法錯誤,除了極簡單的程序外,一般應(yīng)用仿真機對軟件進行調(diào)試,直到程序運行正確為止。運行正確后,就可以寫片(將程序固化在eprom中)。在源程序被編

25、譯后,生成了擴展名為hex的目標文件,一般編程器能夠識別這種格式的文件,只要將此文件調(diào)入即可寫片。在此,為使大家對整個過程有個認識,舉一例說明:org 0000hljmp startorg 040hstart:mov sp,#5fh ;設(shè)堆棧loop:nopljmp loop ;循環(huán)end ;結(jié)束表1:03000000020040bb:0700400075815f000200431f表202 00 40 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

26、ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 75 81 5f 00 02 00 43表3表1為源程序,表2是匯編后得到的hex文件,表3是由hex文件轉(zhuǎn)換成的目標文件,也就是最終寫入eprom的文件,它由編程器轉(zhuǎn)換得到,也可以由hexbin一類的程序轉(zhuǎn)換得到。學過手工匯編者應(yīng)當不難找出表3與表1的一一對應(yīng)關(guān)系,值得注意的是從02 00 40后開始的一長串ff,直到75 81,這是由于偽指令:org 040h造成的結(jié)果。2.3.9仿真、仿真機 仿真是單片機開發(fā)過程中非

27、常重要的一個環(huán)節(jié),除了一些極簡單的任務(wù),一般產(chǎn)品開發(fā)過程中都要進行仿真,仿真的主要目的是進行軟件調(diào)試,當然借助仿真機,也能進行一些硬件排錯。一塊單片機應(yīng)用電路板包括單片機部份及為達到使用目的而設(shè)計的應(yīng)用電路,仿真就是利用仿真機來代替應(yīng)用電路板(稱目標機)的單片機部份,對應(yīng)用電路部份進行測試、調(diào)試。仿真有cpu仿真和rom仿真兩種,所謂cpu仿真是指用仿真機代替目標機的cpu,由仿真機向目標機的應(yīng)用電路部份提供各種信號、數(shù)據(jù),進行調(diào)試的方法。這種仿真可以通過單步運行、連續(xù)運行等多種方法來運行程序,并能觀察到單片機內(nèi)部的變化,便于改正程序中的錯誤。所謂rom仿真,就是用仿真機代替目標機的rom,目

28、標機的cpu工作時,從仿真機中讀取程序,并執(zhí)行。這種仿真其實就是將仿真機當成一片eprom,只是省去了擦片、寫片的麻煩,并沒有多少調(diào)試手段可言。通常這是二種不同類型的仿真機,也就是說,一臺仿真機不能既做cpu仿真,又做rom仿真??赡艿那闆r下,當然以cpu仿真好。2.4信號發(fā)生器的分類信號發(fā)生器應(yīng)用廣泛,種類繁多,性能各異,分類也不盡一致。按照頻率范圍分類可以分為:超低頻信號發(fā)生器、低頻信號發(fā)生器、視頻信號發(fā)生器、高頻波形發(fā)生器、甚高頻波形發(fā)生器和超高頻信號發(fā)生器。按照輸出波形分類可以分為:正弦信號發(fā)生器和非正弦信號發(fā)生器,非正弦信號發(fā)生器又包括:脈沖信號發(fā)生器,函數(shù)信號發(fā)生器、掃頻信號發(fā)生器

29、、數(shù)字序列波形發(fā)生器、圖形信號發(fā)生器、噪聲信號發(fā)生器等。按照信號發(fā)生器性能指標可以分為一般信號發(fā)生器和標準信號發(fā)生器。前者指對輸出信號的頻率、幅度的準確度和穩(wěn)定度以及波形失真等要求不高的一類信號發(fā)生器。后者是指其輸出信號的頻率、幅度、調(diào)制系數(shù)等在一定范圍內(nèi)連續(xù)可調(diào),并且讀數(shù)準確、穩(wěn)定、屏蔽良好的中、高檔信號發(fā)生器5。2.5 研究內(nèi)容本文是做基于單片機的信號發(fā)生器的設(shè)計,將采用編程的方法來實現(xiàn)三角波、鋸齒波、矩形波、正弦波的發(fā)生。根據(jù)設(shè)計的要求,對各種波形的頻率和幅度進行程序的編寫,并將所寫程序裝入單片機的程序存儲器中。在程序運行中,當接收到來自外界的命令,需要輸出某種波形時再調(diào)用相應(yīng)的中斷服務(wù)

30、子程序和波形發(fā)生程序,經(jīng)電路的數(shù)/模轉(zhuǎn)換器和運算放大器處理后,從信號發(fā)生器的輸出端口輸出。 3 信號發(fā)生器方案的設(shè)計與論證3.1 方案的比較方案一:采用單片函數(shù)發(fā)生器(如8038),8038可同時產(chǎn)生正弦波、方波等,而且方法簡單易行,用d/a轉(zhuǎn)換器的輸出來改變調(diào)制電壓,也可以實現(xiàn)數(shù)控調(diào)整頻率,但產(chǎn)生信號的頻率穩(wěn)定度不高。方案二:采用鎖相式頻率合成器,利用鎖相環(huán),將壓控振蕩器(vco)的輸出頻率鎖定在所需頻率上,該方案性能良好,但難以達到輸出頻率覆蓋系數(shù)的要求,且電路復雜。方案三:采用單片機編程的方法來實現(xiàn)。該方法可以通過編程的方法來控制信號波形的頻率和幅度,而且在硬件電路不變的情況下,通過改變

31、程序來實現(xiàn)頻率的變換。此外,由于通過編程方法產(chǎn)生的是數(shù)字信號,所以信號的精度可以做的很高。鑒于方案一的信號頻率不夠穩(wěn)定和方案二的電路復雜,頻率覆蓋系數(shù)難以達標等缺點,所以決定采用方案三的設(shè)計方法。它不僅采用軟硬件結(jié)合,軟件控制硬件的方法來實現(xiàn),使得信號頻率的穩(wěn)定性和精度的準確性得以保證,而且它使用的幾種元器件都是常用的元器件,容易得到,且價格便宜,使得硬件的開銷達到最省1,7。3.2 設(shè)計原理數(shù)字信號可以通過數(shù)/模轉(zhuǎn)換器轉(zhuǎn)換成模擬信號,因此可通過產(chǎn)生數(shù)字信號再轉(zhuǎn)換成模擬信號的方法來獲得所需要的波形。89c51單片機本身就是一個完整的微型計算機,具有組成微型計算機的各部分部件:中央處理器cpu、

32、隨機存取存儲器ram、只讀存儲器rom、i/o接口電路、定時器/計數(shù)器以及串行通訊接口等,只要將89c51再配置鍵盤及其接口、顯示器及其接口、數(shù)模轉(zhuǎn)換及波形輸出、指示燈及其接口等四部分,即可構(gòu)成所需的波形發(fā)生器,其信號發(fā)生器構(gòu)成原理框圖如圖3.1所示2。 輸出濾波放大d/a轉(zhuǎn)換器接口電路89c51單片機圖3.1 信號發(fā)生器原理框圖89c51是整個波形發(fā)生器的核心部分,通過程序的編寫和執(zhí)行,產(chǎn)生各種各樣的信號,并從鍵盤接收數(shù)據(jù),進行各種功能的轉(zhuǎn)換和信號幅度的調(diào)節(jié)。當數(shù)字信號經(jīng)過接口電路到達轉(zhuǎn)換電路,將其轉(zhuǎn)換成模擬信號也就是所需要的輸出波形。3.3 設(shè)計思想(1)利用單片機產(chǎn)生方波、正弦波、三角波

33、和鋸齒波等信號波形,信號的頻率和幅度可變。(2)將一個周期的信號分離成256個點(按x軸等分),每兩點之間的時間間隔為t,用單片機的定時器產(chǎn)生,其表示式為:t=t/256。如果單片機的晶振為12mhz,采用定時器方式0,則定時器的初值為: x=213t/tmec (3.1)定時時間常數(shù)為: tl =(8192t)/mod256 (3.2) th=(8192t)/256 (3.3)mod32表示除32取余數(shù)(3)正弦波的模擬信號是d/a轉(zhuǎn)換器的模擬量輸出,其計算公式為: y=(a/2sint)+a/2 (其中a=vref) (3.4) t=nt (n=1256) (3.5)那么對應(yīng)著存放在計算機

34、里的這一點的數(shù)據(jù)為: ( (3.6) (4)一個周期被分離成256個點,對應(yīng)的四種波形的256個數(shù)據(jù)存放在以tab1-tab4為起始地址的存儲器中。3.4 設(shè)計功能(1)本方案利用8155擴展8個獨立式按鍵,6個led顯示器。其中“s0”號鍵代表方波輸出,“s1”號鍵代表正弦波輸出,“s2”號鍵代表三角波輸出,“s3” 號鍵代表鋸齒波輸出。(2)“s4”號鍵為10hz的頻率信號,“s5”號鍵為100hz的頻率信號,“s6”號鍵為500hz的頻率信號,“s7”號鍵為1khz的頻率信號,6個led顯示器輸出信號的頻率值,選用共陽極led。(3)利用兩片dac0832實現(xiàn)幅度可調(diào)的信號源,(其中一片

35、用來調(diào)節(jié)幅度,另外一片用來實現(xiàn)信號源的輸出)。(4)頻率范圍:101000hz。(5)輸出波形幅度為05v。4 信號發(fā)生器硬件、軟件設(shè)計4.1信號發(fā)生器的硬件設(shè)計 4.1.1硬件原理框圖硬件原理方框圖如圖4.1所示。波形輸出放大電路復位電路顯示電路數(shù)/模轉(zhuǎn)換電路鍵盤電路單片機圖4.1 硬件原理框圖 4.1.2 主控電路at89c51單處機內(nèi)部設(shè)置兩個16位可編程的定時器/計數(shù)器t0和t1,它們具有計數(shù)器方式和定時器方式兩種工作方式及4種工作模式。在波形發(fā)生器中,將其作定時器使用,用它來精確地確定波形的兩個采樣點輸出之間的延遲時間。模式1采用的是16位計數(shù)器,當t0或t1被允許計數(shù)后,從初值開始

36、加計數(shù),最高位產(chǎn)生溢出時向cpu請求中斷。中斷系統(tǒng)是使處理器具有對外界異步事件的處理能力而設(shè)置的。當中央處理器cpu正在處理某件事的時候外界發(fā)生了緊急事件,要求cpu暫停當前的工作,轉(zhuǎn)而去處理這個緊急事件。在波形發(fā)生器中,只用到片內(nèi)定時器計數(shù)器溢出時產(chǎn)生的中斷請求,即是在at89c51輸出一個波形采樣點信號后,接著啟動定時器,在定時器未產(chǎn)生中斷之前,at89c51等待,直到定時器計時結(jié)束,產(chǎn)生中斷請求,at89c51響應(yīng)中斷,接著輸出下一個采樣點信號,如此循環(huán)產(chǎn)生所需要的信號波形6。如圖4.2所示,at89c51從p0口接收來自鍵盤的信號,并通過p2口輸出一些控制信號,將其輸入到8155的信號

37、控制端,用于控制其信號的輸入、輸出。如果有鍵按下,則在讀控制端會產(chǎn)生一個讀信號,使單片機讀入信號。如果有信號輸出,則在寫控制端產(chǎn)生一個寫信號,并將所要輸出的信號通過8155的pb口輸出,并在數(shù)碼管上顯示出來。圖4.2 主控電路圖4.1.3 數(shù)/模轉(zhuǎn)換電路由于單片機產(chǎn)生的是數(shù)字信號,要想得到所需要的波形,就要把數(shù)字信號轉(zhuǎn)換成模擬信號,所以該文選用價格低廉、接口簡單、轉(zhuǎn)換控制容易并具有8位分辨率的數(shù)模轉(zhuǎn)換器dac0832。dac0832主要由8位輸入寄存器、8位dac寄存器、8位d/a轉(zhuǎn)換器以及輸入控制電路四部分組成。但實際上,dac0832輸出的電量也不是真正能連續(xù)可調(diào),而是以其絕對分辨率為單位

38、增減,是準模擬量的輸出。dac0832是電流型輸出,在應(yīng)用時外接運放使之成為電壓型輸出。由圖4.3可知,dac0832的片選地址為7fffh,當p25有效時,若p0口向其送的數(shù)據(jù)為00h, 則u1 的輸出電壓為0v;若p0口向其送的數(shù)據(jù)為0ffh時, 則u1的輸出電壓為-5v. 故當u1 輸出電壓為0v時,由公式 得:vout = - 5v.當輸出電壓為- 5v時,可得:vout = +5v,所以輸出波形的電壓變化范圍為- 5v+ 5v. 故可推得,當p0所送數(shù)據(jù)為80h時,vout為0v4。圖4.3 數(shù)模轉(zhuǎn)換電路4.1.4 按鍵接口電路圖4.4為鍵盤接口電路的原理圖,圖中鍵盤和8155的pa

39、口相連,at89c51的p0口和8155的d0口相連,at89c51不斷的掃描鍵盤,看是否有鍵按下,如有,則根據(jù)相應(yīng)按鍵作出反應(yīng)。其中“s0”號鍵代表方波輸出,“s1”號鍵代表正弦波輸出,“s2”號鍵代表三角波輸出。 “s3”號鍵代表鋸齒波輸出,“s4”號鍵為10hz的頻率信號,“s5”號鍵為100hz的頻率信號,“s6”號鍵為500hz的頻率信號,“s7”號鍵為1khz的頻率信號3。 圖4.4 按鍵接口4.1.5 時鐘電路8051單片機有兩個引腳(xtal1,xtal2)用于外接石英晶體和微調(diào)電容,從而構(gòu)成時鐘電路,其電路圖如圖4.5所示。電容c1、c2對振蕩頻率有穩(wěn)定作用,其容量的選擇為3

40、0pf,振蕩器選擇頻率為12mhz的石英晶體。由于頻率較大時,三角波、正弦波、鋸齒波中每一點的延時時間為幾微秒,故延時時間還要加上指令時間才能獲得較大的頻率波形9。圖4.5 時鐘電路4.1.6 顯示電路顯示電路是用來顯示波形信號的頻率,使得整個系統(tǒng)更加合理,從經(jīng)濟的角度出發(fā),所以顯示器件采用led數(shù)碼管顯示器。而且led數(shù)碼管是采用共陽極接法,當主控端口輸出一個低電平后,與其相對應(yīng)的數(shù)碼管即變亮,顯示所需數(shù)據(jù)。其器件模型如圖4.6所示。圖4.6 led顯示電路4.2 信號發(fā)生器的軟件設(shè)計4.2.1 程序流程圖本文中子程序的調(diào)用是通過按鍵的選擇來實現(xiàn),在取得按鍵相應(yīng)的鍵值后,啟動計時器和相應(yīng)的中

41、斷服務(wù)程序,再直接查詢程序中預(yù)先設(shè)置的數(shù)據(jù)值,通過轉(zhuǎn)換輸出相應(yīng)的電壓,從而形成所需的各種波形。主程序的流程圖如圖4.7所示,在程序開始運行之后,首先是對8155進行初始化,之后判斷信號頻率值,如符合所需的頻率,則重置時間常數(shù),并通過顯示器顯示出來,不符則返回。在中斷結(jié)束后,還要來判斷波形是否符合,如符合,則顯示其頻率,不符則返回,重新判斷。圖4.7 主程序流程圖圖4.8為各波形子程序的流程圖。如圖所示,在中斷服務(wù)子程序開始后,通過判斷來確定各種波形的輸出,當判斷選擇的不是方波后,則轉(zhuǎn)向?qū)φ也ǖ呐袛啵绱朔磸?。如果選擇的是方波,則用查表的方法求出相應(yīng)的數(shù)據(jù),并通過d/a轉(zhuǎn)換器將數(shù)據(jù)轉(zhuǎn)換成模擬信

42、號,形成所需波形信號。圖4.8 子程序流程圖總結(jié)與展望這種基于單片機的信號發(fā)生器已經(jīng)展示出很好的性能,而且有著很高的性價比。此外,它產(chǎn)生的波形與模擬電路的波形相比,波形有著更好的平滑性,其周期性也更加穩(wěn)定。已經(jīng)越來越多的應(yīng)用到各種電子設(shè)備當中,給人們的日常生活帶來了方便。在論文中簡單介紹了它的用途和發(fā)展趨勢,根據(jù)它的一些基本知識,按照自己的想法設(shè)計了一類信號發(fā)生器,具體包括了設(shè)計方案以及相關(guān)參數(shù)的選取和計算,根據(jù)工作基本原理加入了一些相關(guān)的輔助電路,并編寫了相關(guān)的應(yīng)用程序。有些指標還有待于進一步提高。例如,在精度及其它功能的擴展上還有較大的潛力可以挖掘,這些都有待于我們通過對電路的改進和對元器件的最佳選擇來進一步

溫馨提示

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

評論

0/150

提交評論