版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第1章 緒論1.1 概述波形發(fā)生器亦稱函數(shù)發(fā)生器,作為實驗用信號源,是現(xiàn)今各種電子電路實驗設計應用中必不可少的儀器設備之一。目前,市場上常見的波形發(fā)生器多為純硬件的搭接而成,且波形種類有限,多為鋸齒、正弦、方波、三角等波形。當今是科學技術及儀器設備高度智能化飛速發(fā)展的信息社會,電子技術的進步,給人們帶來了根本性的轉變?,F(xiàn)代電子領域中,單片機的應用正在不斷的走向深入,這必將導致傳統(tǒng)控制與檢測技術的日益革新。單片機構成的儀器具有高可靠性、高性能價格比,在智能儀表系統(tǒng)和辦公自動化等諸多領域得以極為廣泛的應用,并走入家庭,從洗衣機、微波爐到音響汽車,處處可見其應用。因此,單片機技術開發(fā)和應用水平已逐步
2、成為一個國家工業(yè)發(fā)展水平的標志之一。信號發(fā)生器作為一種常見的應用電子儀器設備,傳統(tǒng)的一般可以完全由硬件電路搭接而成,如采用555振蕩電路發(fā)生正弦波、三角波和方波的電路便是可取的路徑之一,不用依靠單片機。但是這種電路存在波形質量差,控制難,可調范圍小,電路復雜和體積大等缺點。在科學研究和生產實踐中,如工業(yè)過程控制,生物醫(yī)學,地震模擬機械振動等領域常常要用到低頻信號源。而由硬件電路構成的低頻信號其性能難以令人滿意,而且由于低頻信號源所需的rc要很大。大電阻,大電容在制作上有困難,參數(shù)的精度亦難以保證。體積大,漏電,損耗顯著更是其致命的弱點。一旦工作需求功能有增加,則電路復雜程度會大大增加。利用單片
3、機采用程序設計方法來產生低頻信號,其頻率底線很低。具有線路相對簡單,結構緊湊,價格低廉,頻率穩(wěn)定度高,抗干擾能力強,用途廣泛等優(yōu)點,并且能夠對波形進行細微調整,改良波形,使其滿足系統(tǒng)的要求。只要對電路稍加修改,調整程序,即可完成功能升級。1.2 設計要求本課題利用at89c51單片機和兩片dac0832數(shù)模轉換器,組成數(shù)字式低頻信號發(fā)生器,要求:(1)該裝置用鍵盤控制輸出方波、三角波、正弦波;(2)用鍵盤控制輸出幅度和頻率的變化,并將幅值和頻率用數(shù)碼管顯示,幅度范圍1v5v,頻率范圍010khz。1.3硬件電路的實現(xiàn)原理與構思1.3.1at89c51單片機控制兩片dac0832的原理圖輸出基準
4、電壓at89c51單片機dac0832dac0832圖1.1 at89c51控制兩片dac0832原理圖因為at89c51單片機自身便有一個64k的程序存儲器,所以不用擴展外加程序存儲器。由單片機編程即可由單片機輸出所需要信號的數(shù)字量,再由d/a數(shù)模轉換器將數(shù)字量轉化為模擬電流輸出,通過運放轉化為模擬電壓輸出。因為d/a數(shù)模轉換器的最大輸出電壓是由其輸入的基準電壓來控制的,所以只要能控制d/a的基準電壓便可以控制輸出幅度,實現(xiàn)幅度可調。所以設計用兩片dac0832來輸出信號,第一片d/a用來輸出信號,第二片d/a用來控制第一片d/a的基準點壓。其中用p0口作為兩片d/a的數(shù)據總線,p2口的p2
5、.0和p2.1口用來控制兩片d/a的選通。1.3.2鍵盤顯示電路的構思由于本設計要求控制波形的幅度和頻率,所需按鍵較多,所以設計選用p1口來擴展44鍵盤。由于44鍵盤的設計已很普遍,所以在本文中不加以介紹。本設計中要求用數(shù)碼管顯示輸出信號的幅度和頻率等信息,而這些信息在信號輸出的時候是不需要時刻改變的,所以設計中選用靜態(tài)數(shù)碼管顯示,由單片機的串行通信口輸出顯示數(shù)據。這樣可以節(jié)省單片機的端口來做其它的用途,給予了裝置可優(yōu)化性。at89c51單片機74ls16474ls164數(shù)碼管數(shù)碼管圖 1.2顯示電路方框圖圖中只給出兩位數(shù)碼管的顯示,可以按要求任意擴展n位數(shù)碼顯示,每擴展一片74ls164,可
6、以增加一位led顯示器。所要顯示的數(shù)據由rxd串行發(fā)送出去,由74ls164轉化為并行輸出,再由led顯示。這樣,在顯示數(shù)據輸送完畢之后,主程序可以不必掃描顯示器,從而使cpu能用于其它工作。1.4軟件設計的構思1.4.1幅度控制由于d/a數(shù)模轉換器輸出的最大幅度可以用其基準電壓來控制,所以控制第二片d/a數(shù)模轉換器輸出給第一片d/a數(shù)模轉換器的電壓值就可控制信號幅度。因此,送入第二片的值是幾個固定的值。由于dac0832內部具有鎖存器,所以只需向第二片d/a送值一次,直到下一次改變信號幅度。1.4.2頻率控制單片機內部數(shù)據只有0、1之分,所產生的信號也都是離散信號。為了能夠讓單片機輸出所需的
7、數(shù)字信號,我們采用對信號采樣、量化的方法來實現(xiàn)由單片機產生所需信號。在本設計中,對信號的四分之一周期采樣19個幅度值,通過反復查表來輸出幅度值,而整個信號是通過正查表和逆向查表來實現(xiàn)的。采樣的點越密,信號失真度也就越小。兩次采樣點的輸出時間間隔是由定時、計數(shù)器來控制的,因此,通過控制不同的計數(shù)初值就可以控制整個信號的頻率。計數(shù)時間=信號周期/72。計數(shù)次數(shù)=計數(shù)時間/機器周期。對應的,計數(shù)初值=65536計數(shù)次數(shù)。單片機只能產生離散頻率的信號,所以所得到的信號頻率不是連續(xù)的,而是離散的頻率點。由于這部分計算位數(shù)較多,不適合用單片機編程來計算計數(shù)初值,所以本設計中將各頻率的計數(shù)初值算出,讓單片機
8、按控制命令來查表控制頻率。正弦波和三角波的頻率控制方法都與上述方法相同,而方波的頻率控制是半周期計數(shù),經過半周期只需改變輸出為最大或最小電平即可。本設計為低頻信號發(fā)生器,在頻率只有幾十赫茲的時候計數(shù)次數(shù)將很大,因此計數(shù)器的工作方式選為工作方式1,每次計數(shù)器溢出時需要重新裝入計數(shù)初值。1.5 本章小結本章主要介紹了低頻信號發(fā)生器目前的應用和發(fā)展現(xiàn)狀。對課題進行了說明和論證,并提出了解決方案的初步方法,列出了總體方案框圖。系統(tǒng)方案的論證是十分重要的,它是設計工作的開始,也給出了實現(xiàn)設計的工作步驟。有了充分的準備,設計才能有條不紊開始實施。第2章 硬件電路設計2.1 電路總體方框圖輸出單片機鍵盤電路
9、顯示電路d/a數(shù)模轉換電路放大輸出電路圖2.1 電路總體方框圖2.2 各部分電路設計2.2.1 輸入電路設計按鍵是本設計的輸入設備,是控制單片機的唯一途徑。設計中與一共使用了17個按鍵,44鍵盤和一個復位鍵。44鍵盤中包含了09的數(shù)字鍵和三個波形選擇鍵,一個清除鍵和一個確認鍵。由于功能鍵較多,所以在輸入控制命令的時候非常方便。由于機械的彈性作用,一個按鍵開關在閉合時不會穩(wěn)定的接通,在斷開時也不會立即斷開。因而在閉合和斷開的時候,均會伴有一連串的抖動,抖動時間的長度一般在5ms10ms。由于按鍵抖動引起一次按鍵被誤讀多次,所以為了確保cpu的正確處理,必須對按鍵信息進行消除抖動處理。消抖的處理方
10、法基本上分為軟件消抖和硬件消抖兩種方法。在本設計中,采用了軟件消抖的方法。具體應用是在掃描鍵盤時,通過延時10ms后,再掃描鍵盤,確認的確是有鍵按下的時候,跳到讀鍵值的子程序,等待按鍵的動作完成,然后才繼續(xù)執(zhí)行其它操作。2.2.2 復位電路的設計一個系統(tǒng)能否正常工作,首先要檢查其復位電路是否工作正常。rst為外部復位信號的輸入引腳。在mcs51器件內部,rst接到一個施密特觸發(fā)器的輸入端。這樣可以濾掉低于施密特觸發(fā)電平的噪聲干擾信號。在振蕩器運行時,rst引腳上保持至少兩個機器周期的高電平輸入信號,復位過程即可完成。為響應這一過程,cpu發(fā)出內部復位信號。內部復位操作是在發(fā)現(xiàn)rst為高電平后的
11、第二個機器周期進行的,并且此后的每個周期都重復進行復位操作,直到rst變成低電平為止。外部復位信號與內部時鐘是不同步的。rst引腳電平在每個機器周期的s5p2均被采樣一次。采樣到邏輯1后,各引腳可維持它們的現(xiàn)行活動長達19個振蕩周期之久,即在外部復位信號加到rst引腳后,仍維持1930個振蕩周期。復位電路的連接方法有很多,有上電復位電路、采用反向器的復位電路、按鍵電平復位和按鍵脈沖復位。本設計中采用的是按鍵電平復位,并帶有上電復位功能,其設計簡單,采用電阻分壓的方式給rst提供高電平。這種設計使用元件少,而且計算簡便,只要兩個分壓電阻的阻值選擇適當,可以使得分壓值達到復位需要,也可以使時間常數(shù)
12、不太大,及時復位。具體電路如圖2.2所示:圖2.2 復位電路方框圖2.2.3時鐘電路部分考慮成本和性能問題,本設計采用內部時鐘電路。利用at89c51內部一個高增益的反向放大器,把一個晶體振蕩器和兩個電容器組成自激振蕩電路,接于xtal1和xtal2之間,電路如圖所示。圖2.3 外部時鐘電路原理圖圖中晶體振蕩器是石英晶體或陶瓷結構,振蕩頻率一般選在1.2mhz12mhz之間,單片機常選擇6mhz或12mhz,c1,c2在30pf左右;對于陶瓷振蕩器,c1,c1約為47pf左右。2.2.4顯示電路的設計顯示數(shù)據由單片機串口輸出,因此必須有由移位寄存器來驅動數(shù)碼管顯示。本設計中采用74ls164移
13、位寄存器來實現(xiàn)串行數(shù)據轉化為并行數(shù)據。由于采用靜態(tài)顯示方法,為了減輕單片機的負載,選用共陽型的led數(shù)碼管顯示,并且在每個數(shù)碼管的共陽極接一個保護電阻來保護電路。圖2.4 顯示電路圖2.2.5d/a轉換器連接電路和運算放大電路的設計本設計中產生的信號幅度為-5v+5v,所以兩片d/a的輸出均采用雙極性電壓輸出,采用的運算放大器選用的是lf356,電路圖如圖2.5所示:第二片d/a轉換器輸出的信號經過運算放大器轉換成電壓信號后作為第一片d/a轉換器的基準電壓,這樣就可以達到控制輸出幅度的作用。圖2.5 輸出電路圖此電路的電壓特性是:輸出v=(b-128)。2.3 單片機簡介at89c51是一種低
14、功耗、高性能的片內含有4kb快閃可編程/擦除只讀存儲器的8位cmos微控制器,使用高密度、非易丟失存儲技術制造,并且與80c51引腳和指令系統(tǒng)完全兼容。芯片上的flash存儲器允許在線編程或采用通用的非易丟失存儲編程器重復編程。at89c51將具有多種功能的8位cpu與flash存儲器結合在一個芯片上,為很多嵌入式控制應用提供了非常靈活而又價格適宜的方案,其性能價格比遠高于8751。1. 89c51的性能及特點89c51的主要性能包括: 與msc51微控制器產品系列兼容。 片內有4kb可在線重復編程的快閃擦寫存儲器。 存儲器可循環(huán)寫入/擦除1000次。 存儲數(shù)據保存時間為10年。 寬工作電壓范
15、圍:vcc可為2.7v6v。 全靜態(tài)工作:可從0hz至16hz。 程序存儲器具有3級加密保護。 1288位內部ram。 32條可編程i/o線。 兩個16位定時器/計數(shù)器。 中斷結構具有5個中斷源和2個優(yōu)先級。 可編程雙工串行通道。 空閑狀態(tài)維持低功耗和掉電狀態(tài)保存存儲內容。2. 片內快閃存儲器由于eeprom具有在線改寫,并在掉電后仍能保存數(shù)據的特點,可為用戶的特殊應用提供便利。但是,擦除和寫入對于要求數(shù)據高速吞吐的應用還顯得時間過長,這是eeprom芯片的主要性能缺陷。表2.1給出了幾種典型eeprom芯片的主要性能特點。由表2.1可見,所列各種芯片的字節(jié)擦除時間和寫入時間基本上為10ms,
16、這樣長的時間對于許多實際應用是不能接受的。因此,為了將存儲器集成到微控制器芯片內,設法縮短此類存儲器的擦除和寫入時間是一個首要問題。片內快閃存儲器的概念就是在這種背景下提出來的。表2.1幾種典型eeprom芯片主要性能型號28162816a28172817a去數(shù)時間/ms250200/250250200/250擦/寫電壓/v215215字節(jié)擦除時間/ms109151010寫入時間/ms1091510103. 89c51的基本組成在89c51芯片上,集中了微型計算機的各個組成部分,它包括: 一個8位微處理器。 片內數(shù)據存儲器ram,用于存放可以讀/寫的數(shù)據,如運算的中間結果、最終結果以及欲顯示的
17、數(shù)據等。 片內快閃存儲器eeprom,用于存放程序、一些原始數(shù)據和表格。 四個8位并行i/o接口。 兩個16位定時器/計數(shù)器。 五個中斷源的中斷控制系統(tǒng)。 一個全雙工uart的串行i/o口,用于實現(xiàn)單片機與微機之間的串行通信。 片內振蕩器和時鐘產生電路,但石英晶體和微調電容需要外接。最高允許振蕩器頻率為24mhz。4. 89c51的內部結構和一般微處理器相比,89c51增加了四個8位i/o口,一個串行口,4kb fperom,128b ram,很多工作寄存器及特殊功能寄存器。各部分的功能如下。(1) 中央處理單元cpu是89c51的核心,是計算機的控制和指揮中心,由運算器和控制器兩個部分電路組
18、成。 運算器運算器包括一個可進行8位算術運算和邏輯運算的單元alu,8位的暫存器1、暫存器2,8位的累加器acc,寄存器b和程序狀態(tài)寄存器psw等。alu:可對4位、8位和16位數(shù)據進行操作,能做例如加、減、乘、除、bcd數(shù)十進制調整及比較等算術運算和與、或、異或、求補碼及循環(huán)移位等邏輯操作。acc:累加器acc經常作為一個運算數(shù)暫存器2進入alu的輸入端,與另一個來自寄存器1的運算數(shù)進行運算,運算結果又送回acc。在指令中用助記符a來表示。psw:程序狀態(tài)字寄存器,8位,用于指示指令執(zhí)行后的狀態(tài)信息,相當于一般微處理器的標志寄存器。psw中各位狀態(tài)供程序查詢和判別用。b:8位寄存器,在乘、除
19、運算時它用來存放一個操作數(shù)和運算后的一部分結果;不做乘、 除運算時,作通用寄存器使用。 控制器控制器包括程序計數(shù)器pc、指令寄存器ir、指令譯碼器id、振蕩器及定時電路等。程序計數(shù)器pc:由兩個8位的計數(shù)器pch及pcl組成,共16位。pc實際上是程序的字節(jié)地址計數(shù)器,pc中的內容是將要執(zhí)行的下一條指令的地址。改變pc的內容就可以改變程序執(zhí)行的方向。指令寄存器ir及指令譯碼器id:由pc中的內容指定rom地址,取出來的指令經指令寄存器ir送至指令譯碼器id,由id對指令譯碼并送pla產生一定序列的控制信號,以執(zhí)行指令所規(guī)定的操作。振蕩器及定時電路:89c51單片機片內振蕩電路,只需外接石英晶體
20、和頻率微調電容,其頻率范圍為1.2mhz12mhz。該脈沖信號作為89c51工作的基本節(jié)拍及時間的最小單位。(2) 存儲器89c51的存儲器有片內外之分。片內存儲器集成在芯片內部;片外存儲器又稱外部存儲器。片內和片外存儲器中,又有rom和ram之分。 rom存儲器89c51片內程序存儲器容量為4kb,地址從0000h開始,用于存放程序和表格常數(shù)。 ram存儲器89c51的ram存儲器有片內外之分:片內ram共128b,地址范圍為00h7fh;片外ram共64kb,地址范圍為0000hffffh。為了指示是到片內ram尋址還是到片外ram尋址,89c51的指令系統(tǒng)設計了不同的數(shù)據傳送指令符。 特
21、殊功能寄存器sfrcpu訪問片內rom指令用mov,訪問片外ram指令用movx。片內ram共128b,分為工作寄存器區(qū)、位尋址和便簽區(qū)。1工作寄存器區(qū)這32個ram單元共分四組,每組占8個ram單元,分別用代號r0r7表示。r0r7可以指向四組中任一組,由psw中rs1、rs2的狀態(tài)決定。2位尋址區(qū)這16個ram單元具有雙功能。它們既可以像普通ram單元一樣按字節(jié)存取,也可以對每個ram單元中的任何一位單獨存取,就是位尋址。3便簽區(qū)便簽區(qū)共有80個ram單元,用于存放用戶數(shù)據或作堆棧區(qū)使用。89c51對便簽區(qū)中每個ram單元是按字節(jié)存取的。在21個sfr寄存器中,用戶可通過直接尋址指令對它們
22、進行字節(jié)存取,也可以對acc、b、psw等11個寄存器進行位尋址。(3) i/o端口i/o端口又稱為i/o接口,是89c51對外部實現(xiàn)控制和信息交換的必經之路,它們都是雙向端口。每個端門各有8條i/o線,均可輸入/輸出。可以把i/o口當作一般特殊功能寄存器來尋址。圖2.6 at89c51單片機引腳圖5. 89c51的引腳及其功能at89c51采用了40管腳雙列直插封裝形式。其引腳分為電源引腳、輸入/輸出端口引腳、控制信號引腳和時鐘電路引腳這四類。其引腳如圖2.6所示: 電源引腳vcc:為+5v供電電壓引腳。 gnd:為接地引腳。 i/o端口引腳89c51共有四個并行i/o端口,每個端口有8個端
23、口線,用于傳送數(shù)據/地址。由于每個端口的結構不相同,因此它們在功能和用途上的差別很大。p0口:p0口共有8個引腳,其中p0.7為最高位,p0.0為最低位。這8條引腳有兩種不同的功能,分別使用于兩種不同情況。第一種情況是89c51不帶片外存儲器,p0口可以作為通用i/o口使用,p0.0p0.7用于傳送cpu的輸入/輸出數(shù)據。這時,輸出數(shù)據可以得到鎖存,不需要外接專用鎖存器,輸入數(shù)據可以得到緩沖,增加了數(shù)據輸入的可靠性;第二種情況是89c51帶片外存儲器,p0.0p0.7在cpu訪問片外存儲器時用于傳送片外存儲器的低8位地址,然后傳送cpu對片外存儲器的讀寫數(shù)據。p1口:p1口是一個內部提供上拉電
24、阻的8位雙向i/o口,其緩沖器可接收輸出4ttl門電流。p1口管腳寫入“1”后,被內部上拉為高電平,用作輸入;被外部下拉為低電平時,將輸出電流。p2口:p2口的第一功能和p0口的第一功能相同,即它可以作為通用i/o口使用。它的第二功能和p0口引腳的第二功能相配合,用于輸出片外存儲器的高8位地址,共同選中片外存儲器單元,但并不能像p0口那樣還可以傳送存儲器的讀寫數(shù)據。p3口:作輸入/輸出時同p1口。p3口也可作為89c51的一些特殊功能口。如表2.2所示: 控制信號引腳rst:復位信號輸入端,高電平有效。它可以使89c51處于復位工作狀態(tài)。復位后,89c51的四個端口p0、p1、p2、p3為全高
25、,即它們的值均為ffh。ale/prog:地址鎖存允許/編程端。在flash編程期間,此引腳用于輸入編程脈沖。平時,ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩頻率的1/6。因此,它可用作外部輸出的脈沖。/psen:外部程序存儲器的選通信號端。在外部程序存儲器取址期間,每個機器周期兩次/psen有效。但在訪問外部數(shù)據存儲器時,這兩次有效的/psen信號將不出現(xiàn)。/ea/vpp:外部程序存儲器地址允許輸入端/編程電壓輸入端。 時鐘電路引腳xtal1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入端。在采用外部時鐘時,該引腳必須接地。xtal2:來自反向振蕩器的輸出。若采用外部時鐘電路時,該
26、引腳輸入外部時鐘脈沖。表2.2 p3口第二功能p3口第二功能注 釋p3.0rxd串行數(shù)據接收口p3.1txd串行數(shù)據發(fā)送口p3.2into外部中斷0輸入p3.3int1外部中斷1輸入p3.4t0計數(shù)器0計數(shù)輸入p3.5t1計數(shù)器1計數(shù)輸入p3.6wr外部ram寫選通信號p3.7rd外部ram讀選通信號6. 定時器/計數(shù)器89c51內部有兩個16位可編程的定時器/計數(shù)器,命名為t0和t1。t0由兩個8位寄存器tho和tlo拼裝而成,其中tho為高8位,tlo為低8位。t1也和t0類同。tho、tlo、th1和tl1均為特殊功能寄存器中的一個,用戶可以通過指令對它們存儲數(shù)據。t0和t1的最大計數(shù)值
27、為65535,即需要65535個脈沖才能把它們從全“0”變?yōu)槿?”。下面介紹定時器的控制。定時器共有兩個控制字,由軟件寫入tmod和tcon兩個8位寄存器,用來設置t0、t1的操作模式和控制功能。當89c51系統(tǒng)復位時,兩個寄存器所有位都被清零。 工作模式寄存器tmodtmod用于控制t0和t1的工作模式,其各位的定義格式如表2.3所示。表2.3 工作模式寄存器tmod的位定義tmod d7 d6 d5 d4 d3 d2 d1 d0gatec/tm1m0gatec/tm1m0其中低四位用于t0,高四位用于t1。以下介紹各位的功能。m1和m0:操作模式控制位。兩位可形成四種編碼,對應于四種操作
28、模式,見表2.4。表2.4 定時器/計數(shù)器的工作模式m1 m0工作模式功能描述0 0模式013位計數(shù)器0 1模式116位計數(shù)器1 0模式2自動再裝入8位計數(shù)器1 1模式3定時器0:分成兩個8位計數(shù)器c/t:計數(shù)器/定時器方式選擇位。c/t=0,設置為定時方式。定時器計數(shù)89c51片內脈沖,亦即對機器周期計數(shù)。c/t=1,設置為計數(shù)方式。gate:門控位。gate=0時,只要用軟件使tro置1就可以啟動定時器,而不管into的電平是高還是低。gate=1時,只有into引腳為高電平且由軟件使tro置1時,才能啟動定時器工作。 控制寄存器tcon定時器控制寄存器tcon除可用于字節(jié)尋址外,各位還可
29、位尋址。各位的定義格式如下表所式:表2.5 控制寄存器tcon的位定義tcon8fh8eh8dh8ch8bh8ah89h88h(88h)tr1tf0tf0tr0ie1it1ie0it0tf1:t1溢出標志位。當t1溢出時,由硬件自動使tf置“1”,并且申請中斷。響應中斷進入中斷服務程序后,tf1又被硬件自動清0。tf1也可被軟件清0。tf0:t0溢出標志位。其功能和操作情況同tf1。tr1:t1運行控制位??赏ㄟ^軟件置1或清0啟動或關閉t1。在程序中用指令“setb tr1”使tr1位置1,定時器t1便開始計數(shù)。tro:t0運行控制位。其功能和操作情況同tr1。ie1、it1、ie0、it0:
30、外部中斷請求及請求方式控制位。2.4 其它芯片簡介2.4.1 dac0832功能簡介1、芯片簡介d/a轉換器的功能在于把對其輸入的數(shù)字信號轉換成與此數(shù)值成正比的模擬電壓或電流。dac0832是以cmos工藝制造的8位d/a轉換芯片,價格低廉,接口簡單,在單片機制系統(tǒng)中得到了廣泛的應用。dac0832主要由兩個8位寄存器和一個8位d/a轉換器組成。其運作原理可從它的20個引腳之功能中領略到。d0d7:8位數(shù)據輸入引腳,d7為最高位。ile:輸入數(shù)據鎖存允許信號,輸入,高電平有效。cs:芯片選擇信號,輸入,低電平有效。wr1:輸入鎖存器的寫選通信號,輸入,低電平有效。從上述三信號的邏輯關系中可以看
31、出,當ile為高電平,cs和wr1均為低電平時,輸入鎖存器的鎖存允許信號ie1將為高電平。此時輸入鎖存器的內容根據輸入數(shù)據變化,但當le1由于三輸入信號的變化而跳變成低電平時,則來自d0d7的輸入數(shù)據被鎖定在輸入鎖存器中。wr2:寄存器的寫選通信號,輸入,低電平有效。xfer:數(shù)據傳送控制信號,輸入,低電平有效。若wr2和xfer兩信號均為低電平,則dac寄存器的鎖存信號le2為高電平,此時輸入鎖存器的輸入數(shù)據被傳送至dac寄存器中;但當le2因上述兩信號的變化而跳變成低電平時,第二級,即dac寄存器中的數(shù)據被鎖定。d/a轉換器隨時對dac寄存器中的數(shù)據進行d/a轉換。vref:基準電壓(可為
32、-10v+10v)輸入引腳?;鶞孰妷簺Q定d/a轉換器輸出電壓的范圍:若vref接+10v,則輸出電壓范圍為0-10v;若接-5v,則輸出電壓為+5v0v。rfb:內部反饋電阻對外引腳,用以輸入來自片外運算放大器的反饋信號。iout1和iout2:電流輸出引腳。dac0832屬電流輸出型,且兩輸出電流之和為常數(shù)。欲得到與輸入數(shù)字量成正比的電壓輸出,必須外接運算放大器,把此兩引腳輸出電信號轉換成電壓形式。對于這類d/a轉換器,通常以電流建立時間來表示其轉換速度。所謂電流建立時間,系指輸入數(shù)字量由全0變成1時,輸出電流自初始值達到滿量程lsb/2所需要的時間。本芯片的電流建立時間為1s。vcc:供電
33、電源引腳,可接+5v+10v電壓。dgnd:數(shù)字量地,即vcc、數(shù)據、地址及控制信號的0電平輸入引腳。agnd:模擬量地,即vref及模擬電壓的地線。 2、與mcs51單片機的接口從前面對dac0832內部結構的講述中得知,其前級輸入鎖存器和dac寄存器可允許數(shù)據進入其中,亦可鎖定數(shù)據,拒絕新數(shù)據進入。這拒絕于內部信號le1和le2各自受外部信號控制的情況。據此我們可歸納出三點:單緩沖方式:le2和le1受控于同一組外部信號,兩級積存器同時鎖存數(shù)據。雙緩沖方式:le2和le1分別受不同信號控制,兩級寄存器先后接收數(shù)據。直通方式:le1和le2均恒為1,外來數(shù)據直接通過前兩級到達d/a轉換器。2
34、.4.274ls164簡介雙列直插式74ls164引腳定義:qaqh為并行輸出的數(shù)據,單片機串口輸出的數(shù)據從ab輸入;clr信號用于清除輸出數(shù)據(通常用在移位完成時);內部數(shù)據移位依靠時鐘clk信號上升沿(由單片機tx提供)控制。2.4.3 led數(shù)碼管簡介欲顯示十進制或十六進制數(shù)字及某些其他簡單字符,可選用七段led顯示器。ag七段及十進制小數(shù)點dp均為一發(fā)光二極管。若系共陽結構,則它們的陽極為一公共點,接電源正極。八只發(fā)光二極管的陰極互相獨立,哪一段陰極接地,哪一段即發(fā)光,陰極也接高電平者便成暗狀。如果是共陰結構,那么陰極公共點接地,各陽極獨立,接高電平者發(fā)光,陽極接地者呈暗狀。根據以上討
35、論可知,欲在一個led顯示器上顯示某特定字符,必須向某公共點及各段施加正確的電壓。對公共點的施壓操作稱為位選;對各段的操作為段選。段選碼亦稱字形碼。2.5 本章小結本章主要介紹了實現(xiàn)設計目的的硬件解決方案。文中對各部分電路進行了細致的論證。介紹了主要應用的集成芯片的使用方法和基本資料。第3章 軟件部分的設計3.1 軟件總體流程軟件是整個系統(tǒng)的靈魂。如果沒有軟件,整個系統(tǒng)就是一個空殼。本設計中軟件分為初始化模塊、顯示模塊、鍵盤掃描模塊、鍵值處理模塊和波形產生模塊。整個軟件的流程圖如圖3.1:圖3.1 整體軟件流程圖3.2 各部分軟件設計3.2.1 初始化模塊的設計初始化模塊的作用是將用戶需要的內
36、存單元清0,清除系統(tǒng)原始數(shù)據對系統(tǒng)的影響。之后在顯示電路中顯示全0,對以后的觀察數(shù)據輸入情況有很大幫助。本設計中主要用到了30h到50h的內存空間。因此,此部分主要對這部分單元清0,并且將數(shù)據存儲指針置數(shù)。具體程序如下:org 0000hajmp start org 0050hstart: acall firsta ;調用初始化main: acall keysca;調用鍵盤掃描acallkeyred;調用讀鍵值acallkeypc;調用鍵值處理acall display;調用顯示ajmp main ;出錯處理ajmp startfirsta:mov r0, #30h;初始化mov r1, #2
37、0h;30h50h循環(huán)清零clloop:mov r0, #00h;(r1為個數(shù)指針)inc r0djnz r1, clloopmov weicod, #43h acall displayret3.2.2 顯示模塊的設計顯示模塊的作用是讓用戶了解系統(tǒng)內部的數(shù)據存儲情況。可以判斷是否有誤操作。本設計中共顯示5位,有波形、幅度和頻率。由于采用的輸出方式為串行輸出方式和靜態(tài)led顯示,最先輸出的數(shù)據將距離串行口越遠,所以在輸出時可以按用戶需要從高地址開始輸出,提高可視化。設計中將輸入數(shù)據存放在40h到44h的地址空間,所以只要按順序將它們依次送到串行口輸出即可。程序如下:display:mov sco
38、n,#00hmov r1,#05h ;顯示五位mov r0, #44h mov dptr, #distabloop: mov a, r0 movc a, a+dptr mov sbuf, a ;cpu自動開始發(fā)送wait: jnb ti, wait clr ti dec r0 djnz r1, loop retdistab:db 03h,9fh,25h,0dh,99h ;01234db 49h,41h,1fh,01,09h ;567893.2.3 鍵盤掃描程序的設計鍵盤掃描程序的作用是從鍵盤獲取按鍵信息,根據按鍵信息來執(zhí)行命令操作。這部分是用戶對系統(tǒng)進行操作的唯一途徑。這部分程序的正確編寫是確
39、保人機正常對話的前提保證。鍵盤掃描程序流程圖如圖3.2所示:圖3.2 鍵盤掃描流程圖鍵盤全掃描的作用是判斷是否有按鍵按下。其方法是先在p1口輸出0f0h,再從p1口讀數(shù)據,若高四位不全為1的話,則說明有按鍵按下。由于采用的按鍵是機械按鍵,會有一定的抖動,一般抖動持續(xù)510ms,影響判斷。為了消除干擾,在判斷有按鍵按下后要調用延時程序消除抖動,然后再判斷是否有按鍵按下。鍵盤逐行掃描的作用是在已經判斷有鍵按下之后確定鍵值。其方法是使p1的行線依次為0,其余各位均為1,然后讀p1口,保存行字,屏蔽掉低四位,如果高四為不全為1,則本行有按鍵按下。保存列字,再與行字組合,取反后就得到按鍵的特征值。最后用
40、查表的方法就可以得到鍵值。3.2.4 鍵值處理的程序設計鍵值處理的作用是按照鍵值來選擇命令操作,以達到操作的目的。鍵值處理是否合理,直接影響人機對話的順利進行。因為設計中一共只有16個按鍵,所以首先要判斷鍵值是否合法,若鍵值大于16則視為非法,返回主程序。判斷鍵值合法后還要判斷按鍵是功能鍵還是數(shù)字鍵,之后再選擇相應的操作。數(shù)字鍵處理程序:由于本設計中為了簡化程序,要求必須首先選擇波形,當波形未設置時,數(shù)字鍵是無效的,必須返回。所以本段程序要首先判斷波形位是否已經設定。若數(shù)字鍵合法,就按照輸入的先后順序將鍵值送入規(guī)定的地址單元。當5位數(shù)據送滿之后,系統(tǒng)雖然掃描鍵盤,但對數(shù)字鍵只做放棄處理。功能鍵
41、處理程序:功能鍵包括三個波形按鍵、一個清除鍵和一個確認鍵。波形鍵按下時,將向波形存儲單元送入相應的數(shù)值。正弦波為1,三角波為2,方波為3。清除鍵的作用是對用戶所用的地址單元清0,以便重新輸入鍵值。確認鍵的作用比較關鍵。一旦確認鍵按下,則系統(tǒng)不再進行鍵盤掃描,而是按照輸入的數(shù)據進行信號是幅度和頻率選擇處理,然后進入相應的波形輸出程序。由于設計的整個系統(tǒng)比較簡單,用途也只是使用于一般場合,所以系統(tǒng)中沒有采用中斷的方法來改變系統(tǒng)的運行。當系統(tǒng)開始輸出信號之后,相當于系統(tǒng)已經進入了一個不斷輸出信號的死循環(huán)程序。用戶只能通過復位鍵才能停止系統(tǒng)并重新操作。這樣大大簡化了程序設計,但并不影響系統(tǒng)的性能。對于
42、這種不太復雜的系統(tǒng),采用這種簡單的程序操作是十分有利的。頻率的處理是系統(tǒng)信號可調性的一個關鍵。由于系統(tǒng)的時鐘和采樣密度的限制,本設計在頻率點的選擇上并沒有均等地設定頻率點。而是選擇10hz、20hz100hz、200hz800hz。根據這一特性,采用列表的方法將這些頻率點依次列出,并且在最前面加上0頻率的值。然后在查表處理的時候先判斷頻率百位是否為0,如果百位不為0,則將百位的數(shù)據加9,再進行查表。如果百位為0,則直接用其數(shù)據作為變址查表。具體程序如下:frcy: mov a, 42h ;取頻率 cjne a, #00h, hund2 ;看百位是否為0 mov a, 41h mov dptr,
43、 #frctab rl a mov r0, a movc a, a+dptr inc r0 mov r6, a mov a, r0 movc a, a+dptr mov r5, a lcall fdclyhund2: mov dptr, #frctab ;百位有數(shù)據 mov a, 42h add a, #9 rl a mov r0, a movc a, a+dptr inc r0 mov r6, a mov a, r0 movc a, a+dptr mov r5, a lcall fdclyfrctab:db 00h,00h,0fah,93h,0fdh,4ah,0feh,31hdb 0feh,
44、0a5h,0feh,0eah,0ffh,19hdb 0ffh,3ah,0ffh,52h,0ffh,66h,0ffh,75h db 0ffh,0bbh,0ffh,0d2h,0ffh,0ddhdb 0ffh,0e4h,0ffh,0e9h,0ffh,0ech,0ffh,0efh;10-800hz,三角波和正弦波17個頻率點計數(shù)初值對于這種頻率間隔較大的列表采用了這種查詢方法,如果對于密集的頻率點就要采用比較復雜的查詢方法。對于本設計而言,重在討論實現(xiàn)參數(shù)可調的信號輸出的方法,所以在細節(jié)方面略有欠缺。只要在此基礎上調整一些細節(jié)程序便可以增多頻率點。3.2.5 波形產生模塊的設計波形產生模塊是設計是否實
45、現(xiàn)的關鍵。本次設計要求輸出三種波形,其精度如何,關鍵都在于波形產生模塊設計的合理性。本設計中采用的是用單片機產生信號,而單片機只能產生數(shù)字信號,無論是信號頻率還是信號幅度都是離散的點,所以采用按照控制要求查表輸出的方法來輸出信號。其中方波的產生方法比較簡單只要定時地向外輸出0ffh和00h即可。正弦波和三角波的產生原理比較相近,在此以正弦波產生方法為例加以介紹。正弦波的產生是通過對標準正弦波進行采樣輸出而得到的,采樣間隔越小,正弦波的輸出精度就越高,失真度越小。本設計中為了提高信號的精度,對信號的四分之一周期采樣19個點。每隔一定的時間間隔送出一個幅度值,幅度值可以用查表的方法得到。信號的頻率
46、可以用控制每兩個輸出的時間間隔來完成。這部分控制是由定時計數(shù)器來實現(xiàn)的。向計數(shù)器裝入計數(shù)初值,當計數(shù)器溢出時就表示時間到,查表輸出下一個數(shù)。各個頻率點的計數(shù)初值是人工計算列表,在用程序查表得到的。這一部分程序是在確認鍵處理中進行的。由于所計算的時間間隔是一個理論值,在實際中會因為系統(tǒng)的傳輸延時而使頻率略微偏離所設計的頻率點。同樣的,點的輸出是靠程序實現(xiàn)的,而程序指令的執(zhí)行也是需要一定的機器周期的,而且不同的指令執(zhí)行需要的機器周期是不同的,所以在頻率控制這一方面很難達到十分精準,只能盡量降低誤差。正弦波的軟件流程圖如圖3.3。3.3 本章小結本章主要介紹了系統(tǒng)的軟件解決方案,詳細給出了對課題的理
47、解和解決思路。對整體軟件進行了分模塊闡述,對大部分內容附加了流程圖加以詳解。 圖3.3 正弦波產生流程圖第4章 系統(tǒng)的安裝與調試4.1 系統(tǒng)設計的安裝與調試。設計是最終要投入實際應用的,因此,整個設計的安裝、調試便是設計的重要環(huán)節(jié)。系統(tǒng)的調試分為硬件焊接和軟件調試。硬件焊接是整個調試的基礎,而軟件調試又是系統(tǒng)是否正常工作的核心內容。因此,這兩部分調試要按照嚴格的順序,并要有嚴格認真的態(tài)度來對待。4.2 系統(tǒng)的各部分調試4.2.1 系統(tǒng)的硬件調試硬件的調試要從硬件電路焊接開始,硬件電路的焊接也是整個調試過程的基礎。在硬件焊接之前,我們仔細檢查了根據自己的電路圖所需要的各個元件,核對其型號和數(shù)值,
48、以免出現(xiàn)錯焊的現(xiàn)象。在檢查之后,盡量按照電路模塊擺放各元件,使電路美觀,并且為各部分留出充裕的空間,這樣會為電路的調試和檢查電路提供很大的方便。在這些準備工作做好后,開始焊接電路。焊接的時候是一部分一部分的焊上去,焊完之后要仔細檢查電路的焊接情況,用萬用表檢查電路是否有短路現(xiàn)象,尤其是電源和地之間的短路現(xiàn)象,如果短路現(xiàn)象沒有被發(fā)現(xiàn)的話,將導致整個系統(tǒng)的非正常工作,甚至是系統(tǒng)崩潰。檢查無誤后,可以用偉福仿真器來將相應的程序部分在電路上進行仿真,這樣可以檢查電路的工作情況,也是分級調試的重要方法。在整個電路焊接完成后,首先測量系統(tǒng)的整體內阻,一個正常的系統(tǒng)都會有一定的內阻,如果內阻為0,則必須立即
49、找到短路點,否則將導致電源的損壞。硬件的檢查還要將一些元件通電測試,看其是否工作正常。例如:電路焊接好后,要將單片機插在插座上,通電,然后用示波器看其晶體振蕩器兩端是否有方波產生。如果出現(xiàn)方波,則表示晶體振蕩器完好。之后還要測量單片機的30引腳,看它是否也會輸出方波,并且其輸出頻率是晶體振蕩器的1/6。這些工作都是保證單片機能夠正常工作的前提。4.2.2 系統(tǒng)的軟件調試系統(tǒng)的軟件相當于系統(tǒng)的內臟,軟件的正確編寫是系統(tǒng)能否按要求工作的前提。由于對軟件知識的缺乏,對最初的軟件調試出現(xiàn)了很多困難。在對程序指令及運行時序的了解之后,程序完成的比較順利。在軟件編寫的開始,我先畫了軟件的流程圖,然后按照程
50、序流程圖來編寫相應的子程序,使程序易于理解和更正。程序的編寫要層次分明,盡量減少復雜多變的跳轉指令,因為伴隨著跳轉指令的增加,系統(tǒng)執(zhí)行指令的時序常常出現(xiàn)錯亂,并且經常出現(xiàn)邏輯錯誤。在發(fā)現(xiàn)這個問題之后,盡量運用一些可重復調用的子程序,盡量避免程序的錯亂。最先進行調試的模塊是鍵盤模塊。在這部分調試中,用仿真器仿真,在計算機中可以很明了的看到系統(tǒng)的內存單元是否按照要求存入按鍵的相應信息,如果沒有檢測到任何信息,說明硬件部分沒有響應,一定出現(xiàn)了電路故障,通過這樣的檢查可以反復檢測系統(tǒng)。由于有了計算機的幫助,在仿真調試的時候可以了解到系統(tǒng)每執(zhí)行完一條指令后的狀態(tài),程序運行的步驟,也更加了解了程序。這對今
51、后的編程都有很大的幫助。在顯示模塊的調試中,首先測量數(shù)碼管是否有壞段,確認數(shù)碼管不亮的地方不是由軟件及其他電路引起的故障。然后用仿真器仿真,觀察顯示是否正常。開始時,進行單步仿真,可以清楚的看到顯示的移位,如果沒有正常的移位的話,則是時鐘信號或移位寄存器的連接有問題。在實際的調試中,由于電路沒什么大的問題,這部分電路調試比較順利。單片機與d/a的轉化、波形產生部分的程序調試比較復雜。這部分的仿真調試主要是查看波形產生程序的工作是否正常,還有監(jiān)視數(shù)據輸出端口,也就是p0口是數(shù)據是否變化。對兩片d/a的選通信號也是重要的監(jiān)視對象。4.3 在調試過程中遇到的問題在鍵盤的調試中,發(fā)現(xiàn)第三列的鍵都不能被
52、系統(tǒng)檢測。而通過單片機的行線和列線的連通情況看卻沒有問題。用萬用表測量按鍵的連接也沒有問題,最后發(fā)現(xiàn)與vcc連接的上拉電阻短路,這表明無論這一列鍵是否有按下,p1.6口始終為高電平,所以系統(tǒng)無法識別。找到原因后就開始找短路點,電路連線并不多,但卻沒有發(fā)現(xiàn)焊接造成的短路,但故障原因不會錯,最終,發(fā)現(xiàn)是萬用板本身有兩個不該連的點連上了,導致了電路的短路。在把連接點斷開后,一切正常。故障得到了解決。在顯示電路的調試中,發(fā)現(xiàn)數(shù)碼管不能接收數(shù)據。首先用萬用表檢查移位寄存器的各管腳的電壓,發(fā)現(xiàn)8、9管腳總是相等,測量電阻則顯示短路。發(fā)現(xiàn)這一問題后立即查找短路點,結果還是一個板子上的短路,而非人為短路。解決
53、這一問題后一切正常。通過對這兩個故障的排查,總結出電路短路是調試中的最大問題,所以在今后的調試中都要仔細排查這一問題。在波形產生模塊的調試中,發(fā)現(xiàn)d/a始終無法接收的數(shù)據。用仿真器單步仿真的過程中發(fā)現(xiàn)p0口根本沒有變化。根據這個現(xiàn)象,仔細檢查了軟件的編寫。問題出在沒有向p0口送數(shù)據,原來的程序指令是向d/a的地址里送數(shù)據,這種方法我也是第一次使用,結果不能實現(xiàn)。在此情況下我更改了指令,直接向p0口送數(shù)據,結果p0口開始按要求傳送數(shù)據,故障解決。由此問題我學到了關于編程的解決問題,指令也許沒有錯,但是在特定的功能上有些指令是不能替代的,也必須多加調試才能解決。調試的過程中,當信號不能正常輸出時,很難判斷問題出在哪里。這個時候,將軟件仿真暫停,然后可以用萬用表測量由單片機輸出給d/a轉換器各位的電平,也可以測量d/a轉換器的輸出管腳,看輸出的電平是否符合理論要求。用這種方法可以檢測到具體是哪個電路出了問題,是檢查電路的一個好方法。在實際接收波形信號時,發(fā)現(xiàn)頻率總是和要求有一定差距。分析其原因是計數(shù)器的定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二四年度一次性技術咨詢服務采購合同12篇
- 2025年度速錄服務與智能語音助手融合合同3篇
- 2025年度企業(yè)安全生產責任協(xié)議書范本6篇
- 2025年度高空作業(yè)安全生產責任與保障協(xié)議3篇
- 2025年豬圈建造與新能源利用合同模板3篇
- 二零二四年專業(yè)債務清收公司委托合同3篇
- 2025版螺旋鋼管智能制造與自動化升級合同4篇
- 二零二五年度跨境電商園區(qū)場地租賃及物流服務合同2篇
- 2024租養(yǎng)雞場的合同范本
- 二零二四事業(yè)單位項目合作合同示范文本2篇
- 衡水市出租車駕駛員從業(yè)資格區(qū)域科目考試題庫(全真題庫)
- 護理安全用氧培訓課件
- 《三國演義》中人物性格探析研究性課題報告
- 注冊電氣工程師公共基礎高數(shù)輔導課件
- 土方勞務分包合同中鐵十一局
- 乳腺導管原位癌
- 冷庫管道應急預案
- 司法考試必背大全(涵蓋所有法律考點)
- 公共部分裝修工程 施工組織設計
- 《學習教育重要論述》考試復習題庫(共250余題)
- 裝飾裝修施工及擔保合同
評論
0/150
提交評論