引 言21世紀(jì),單片機(jī)的發(fā)展非常的迅速。單片機(jī)是把主要計(jì)算機(jī)功能部件都集成在一塊芯片上的微型計(jì)算機(jī)。它是一種集計(jì)數(shù)和多種接口于一體的微控制器,被廣泛應(yīng)用在智能產(chǎn)品和工業(yè)自動(dòng)化上,而51單片機(jī)是個(gè)單片機(jī)中最為典型和最有代表性的一種。
最近幾年來,隨著科技的飛速發(fā)展,單片機(jī)領(lǐng)域正在不斷的走向社會(huì)各個(gè)角落,還帶動(dòng)傳統(tǒng)控制檢測(cè)日新月異更新。在實(shí)時(shí)運(yùn)作和自動(dòng)控制的單片機(jī)應(yīng)用到系統(tǒng)中,單片機(jī)如今是作為一個(gè)核心部件來使用,僅掌握單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)其具體硬件結(jié)構(gòu),以及針對(duì)具體應(yīng)用對(duì)象特點(diǎn)的軟件結(jié)合,加以完善!皢纹瑱C(jī)原理及應(yīng)用課程設(shè)計(jì)”是電子類專業(yè)的學(xué)科基礎(chǔ)科,它是繼“匯編語言程序設(shè)計(jì)”,“接口技術(shù)”等課程之后開出的實(shí)踐環(huán)節(jié)課程。
第1章 緒 論
1.1 選題背景、意義當(dāng)今時(shí)代是一個(gè)新技術(shù)層出不窮的時(shí)代,在電子領(lǐng)域尤其是自動(dòng)化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng),正以前所未有的速度被單片機(jī)智能化控制所取代。單片機(jī)具有體積小、功能強(qiáng)、成本低、應(yīng)用面廣等優(yōu)點(diǎn),可以說智能化控制與自動(dòng)控制的核心就是單片機(jī)。本設(shè)計(jì)是以AT89C52芯片的電路為基礎(chǔ),外部加上輸入設(shè)備和顯示設(shè)備,以此來實(shí)現(xiàn)信號(hào)發(fā)生器的硬件電路,通過軟件程序來控制單片機(jī)實(shí)現(xiàn)波形的輸出。對(duì)于不同型號(hào)的單片機(jī)只需要相應(yīng)的改變一下地址即可。該軟、硬件系統(tǒng)具有很好的通用性,很高的實(shí)際使用價(jià)值,為廣大的單片機(jī)愛好者提供了很好的借鑒。
1.2基本功能簡(jiǎn)介
第二章 硬件設(shè)計(jì)與原理以AT89C52單片機(jī)為核心,起著控制作用。系統(tǒng)包括D/A轉(zhuǎn)換電路、復(fù)位電路、時(shí)鐘電路、按鍵電路。設(shè)計(jì)思路分為五個(gè)模塊:復(fù)位電路、晶振電路模塊、AT89C52、D/A轉(zhuǎn)換電路、按鍵電路這五個(gè)模塊。
2.1 總設(shè)計(jì)框圖
圖2-1 總設(shè)計(jì)框圖
2.2 硬件設(shè)計(jì)分析
2.2.1 電源的設(shè)計(jì)的選擇 方案一:采用電池供電,但是耗費(fèi)電源而且不節(jié)能環(huán)保顧不采用。
方案二:采用系統(tǒng)電源使用外接直流5伏。即就是usb數(shù)據(jù)線供電,才方案具有簡(jiǎn)單方便節(jié)能高效等特點(diǎn)。
基于以上分析,本次設(shè)計(jì)我采用方案二。
2.2.2 核心控制的選擇核心控制器主要用于對(duì)輸入,D/A轉(zhuǎn)換,信號(hào)輸出等模塊進(jìn)行控制。相當(dāng)于人的大腦故非常重要和復(fù)雜,控制器的選擇有以下兩種方案。
方案一:采用FPGA(現(xiàn)場(chǎng)可編程門列陣)作為系統(tǒng)的控制器。FPGA可以實(shí)現(xiàn)各種復(fù)雜的邏輯功能,規(guī)模大,密度高,它將所有器件集成在一塊芯片上,減小了體積,提高了穩(wěn)定性。但由于本設(shè)計(jì)對(duì)數(shù)據(jù)處理的速度要求不高,F(xiàn)PGA的高速處理的優(yōu)勢(shì)得不到充分體現(xiàn),并且由于其集成度高,使其成本偏高,同時(shí)由于芯片的引腳較多,實(shí)物硬件電路板布線復(fù)雜,加重了電路設(shè)計(jì)和實(shí)際焊接的工作。
方案二:采用單片機(jī)作為系統(tǒng)控制器的作為其核心的方案。單片機(jī)算術(shù)運(yùn)算功能強(qiáng)、軟件編程靈活、自由度大,可以用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點(diǎn),使其在各個(gè)領(lǐng)域應(yīng)用廣泛。
基于以上分析,本次設(shè)計(jì)我采用方案二。
2.2.3 鍵盤的選擇
鍵盤是單片機(jī)不可缺少的輸入設(shè)備,是實(shí)現(xiàn)人機(jī)對(duì)話的紐帶。鍵盤按結(jié)構(gòu)形式可以分為非編碼鍵盤和編碼鍵盤,前者用軟件方法產(chǎn)生鍵碼,而后者則用硬件方法來產(chǎn)生鍵碼。在單片機(jī)中使用的都是非編碼鍵盤,因?yàn)榉蔷幋a鍵盤結(jié)構(gòu)簡(jiǎn)單,成本低廉,非編碼鍵盤的類型很多,常用的有獨(dú)立式鍵盤,行列式鍵盤等。
方案一:獨(dú)立式鍵盤
獨(dú)立式鍵盤接口中使用幾根I/O線,就有幾個(gè)按鍵,這種類型的鍵盤,其按鍵比較少,且鍵盤中各按鍵的工作互不干擾。因此可以根據(jù)實(shí)際需要對(duì)鍵盤中的按鍵靈活編碼。獨(dú)立式鍵盤的缺點(diǎn)是需要占用比較多的I/O口線,當(dāng)單片機(jī)應(yīng)用系統(tǒng)鍵盤中需要的按鍵比較少或I/O口線比較富余時(shí),可以采用這樣類型的鍵盤。
方案二:行列式鍵盤
行列式鍵盤是用N條I/O線作為行線,M條I/O線作為列線組成的鍵盤,按鍵在行線和列線的每個(gè)交叉點(diǎn)上。這種形式的鍵盤結(jié)構(gòu),能夠有效地提高單片機(jī)系統(tǒng)中I/O的利用率。
CPU對(duì)鍵盤的掃描可以采用取程序控制的隨機(jī)方式,即只有在CPU空閑是時(shí)才去掃描鍵盤,響應(yīng)操作人員的鍵盤輸入,即利用單片機(jī)內(nèi)部定時(shí)器每隔一定時(shí)間對(duì)鍵盤掃描一次,這樣控制方式,不管鍵盤上有無鍵閉合,CPU總是定時(shí)的關(guān)心鍵盤狀態(tài)。在大多數(shù)情況下,CPU對(duì)鍵盤可能進(jìn)行空掃描。
根據(jù)以上的論述,我們采用方案一。
2.3 單片機(jī)最小系統(tǒng)51單片機(jī)是對(duì)目前所有兼容intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是intel的8031單片機(jī),后來隨著技術(shù)的發(fā)展,成為目前廣泛應(yīng)用的8為單片機(jī)之一。單片機(jī)是在一塊芯片內(nèi)集成了CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器和多功能I/O口等計(jì)算機(jī)所需要的基本功能部件的大規(guī)模集成電路,又稱為MCU。51系列單片機(jī)內(nèi)包含以下幾個(gè)部件:
一個(gè)8位CPU;一個(gè)片內(nèi)振蕩器及時(shí)鐘電路;
8KB的ROM程序存儲(chǔ)器;
一個(gè)256B的RAM數(shù)據(jù)存儲(chǔ)器;
尋址64KB外部數(shù)據(jù)存儲(chǔ)器和64KB外部程序存儲(chǔ)空間的控制電路;
32條可編程的I/O口線;
兩個(gè)16位定時(shí)/計(jì)數(shù)器;
一個(gè)可編程全雙工串行口;
5個(gè)中斷源、兩個(gè)優(yōu)先級(jí)嵌套中斷結(jié)構(gòu)。
如圖2-2-1所示為單片機(jī)基本構(gòu)造,其基本性能介紹如下:
圖2-2-1單片機(jī)
該單片機(jī)本身內(nèi)含40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中端口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,AT89C52可以按照常規(guī)方法進(jìn)行編程,但不可以在線編程。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲(chǔ)器可有效地降低開發(fā)成本。
主要特性如下表所示:
| |
| 可編程UARL通道 |
三個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷 | |
| |
| 可直接驅(qū)動(dòng)LED |
| |
表2-2-1 單片機(jī)主要功能描述
該單片機(jī)為40腳雙列直插封裝的8位通用微處理器,采用工業(yè)標(biāo)準(zhǔn)的C51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52相同,其主要用于會(huì)聚調(diào)整時(shí)的功能控制。功能包括對(duì)會(huì)聚主IC內(nèi)部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會(huì)聚調(diào)整控制,會(huì)聚測(cè)試圖控制,紅外遙控信號(hào)IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19腳)和XTAL2(18腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。VCC(40腳)和VSS(20腳)為供電端口,分別接+5V電源的正負(fù)端。P0~P3 為可編程通用I/O腳,其功能用途由軟件定義,在本設(shè)計(jì)中,P0端口(32~39腳)被定義為N1功能控制端口,分別與N1的相應(yīng)功能管腳相連接,13腳定義為IR輸入端,10腳和11腳定義為I2C總線控制端口,分別連接N1的SDAS(18腳)和SCLS(19腳)端口,12腳、27腳及28腳定義為握手信號(hào)功能端口,連接主板CPU的相應(yīng)功能端,用于當(dāng)前制式的檢測(cè)及會(huì)聚調(diào)整狀態(tài)進(jìn)入的控制功能。
P0口:P0口是一組8位漏極開路型雙向I/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對(duì)端口P0寫“1”時(shí),可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在Flash 編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。
P1口:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。與AT89C51不同之處是,P1.0和P1.1還可分別作為定時(shí)/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX)。Flash編程和程序校驗(yàn)期間,P1接收低8位地址。
P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。在訪問外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR指令)時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX @RI指令)時(shí),P2口輸出P2鎖存器的內(nèi)容。Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號(hào)。
P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能P3口還接收一些用于Flash 閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。
RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。
ALE/PROG:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)AL脈沖。對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條 MOVX 和MOVC指令才能將ALE激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無效。
PSEN:程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)單片機(jī)由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次PSEN信號(hào)。
EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H—FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。
XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。
XTAL2:振蕩器反相放大器的輸出端。
單片機(jī)最小原理圖如圖2-2-2所示。
圖2-2-2 單片機(jī)最小系統(tǒng)
單片機(jī)最小系統(tǒng)說明:
時(shí)鐘信號(hào)的產(chǎn)生:在MCS-51芯片內(nèi)部有一個(gè)高增益反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。而在芯片的外部,XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,從而構(gòu)成一個(gè)穩(wěn)定的自激振蕩器,這就是單片機(jī)的時(shí)鐘振蕩電路。
時(shí)鐘電路產(chǎn)生的振蕩脈沖經(jīng)過觸發(fā)器進(jìn)行二分頻之后,才成為單片機(jī)的時(shí)鐘脈沖信號(hào)。
一般地一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容 C3,C2的作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)行微調(diào)。C3,C2的典型值為30PF。

圖2-2-2 晶振電路
單片機(jī)復(fù)位使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài)下,并從這個(gè)狀態(tài)開始工作。單片機(jī)復(fù)位條件:必須使9腳加上持續(xù)兩個(gè)機(jī)器周期(即24個(gè)振蕩周期)的高電平。

圖2-2-2 復(fù)位電路
利用單片機(jī)的ISP功能通過與電腦串口連接,在電腦端運(yùn)行ISP下載控制軟件STC-ISP.EXE(可到mcu-memory網(wǎng)站下載)即可對(duì)芯片進(jìn)行燒錄。需要注意的是單片機(jī)要上電復(fù)位即冷啟動(dòng)才會(huì)運(yùn)行其內(nèi)部已固化的系統(tǒng)ISP程序與電腦端ISP下載控制軟件通訊。另外由于是串口通訊,有讀者會(huì)認(rèn)為用戶系統(tǒng)目標(biāo)板上要用通訊標(biāo)準(zhǔn)晶振如11.0592M等與電腦端通訊。其實(shí)并非這樣,用戶系統(tǒng)目標(biāo)板上的晶振頻率選擇并沒有多大限制,只要不超過33M,理論上可選擇任一頻率的晶振。電腦端ISP下載控制軟件會(huì)自動(dòng)檢測(cè)出用戶系統(tǒng)目標(biāo)板上所使用晶振的頻率,并計(jì)算出合適的波特率,但不會(huì)超過用戶在ISP下載控制軟件中設(shè)定的最高波特率與之通信并開始燒錄。
由于該系列單片機(jī)EA管腳內(nèi)部已上拉到VCC,所以用戶程序如不在外部的存儲(chǔ)器中可懸空不接,晶振旁的電容C1最好去掉不接利于起振,C1可能造成用戶下載程序不成功。在編程方面,任何老的編譯器/匯編器均可使用,如果使用KEILC51編譯器,器件需選擇標(biāo)準(zhǔn)的Intel8052,頭文件包含標(biāo)準(zhǔn)的<reg52.h>,如果頭文件中未聲明新增的特殊功能寄存器可用“sfr”及“sbit”在頭文件中添加聲明地址,如果是匯編程序則用“DATA”或“EQU”在程序中聲明地址即可。
C51單片機(jī)與C52單片機(jī)比較:C52單片機(jī)有3個(gè)定時(shí)器,8KB的ROM程序存儲(chǔ)器,。
2.4按鍵輸入電路按鍵是由一組按壓式或觸摸式開關(guān)構(gòu)成的陣列,是一種常用的輸入設(shè)備。鍵盤可分為編碼式鍵盤和非編碼式鍵盤兩種。
1.編碼鍵盤通過硬件電路產(chǎn)生被按按鍵的鍵碼,這種鍵盤所需程序簡(jiǎn)單,但硬件電路復(fù)雜、價(jià)格昂貴通常不被單片機(jī)系統(tǒng)采用。
2.非編碼鍵盤常用一些按鍵排列成行列矩陣,其硬件邏輯與按鍵編碼不存在嚴(yán)格的對(duì)應(yīng)關(guān)系,而要由所用的程序來決定。非編碼鍵盤的硬件接口簡(jiǎn)單,但是要占用較多的CPU時(shí)間,通常采用可編程鍵盤管理芯片來克服這個(gè)缺點(diǎn)。
在接線時(shí)由于有四個(gè)引腳,連接時(shí)需要用萬用表進(jìn)行測(cè)量,然后接通兩個(gè)引腳,原理圖如下。
要進(jìn)行數(shù)據(jù)的計(jì)算就必須先進(jìn)行數(shù)據(jù)的輸入,也就必須確定按鍵輸入的數(shù)值是什么,這就需要對(duì)鍵盤進(jìn)行掃描,從而確定究竟是哪個(gè)鍵按下。

圖2-2-3 按鍵電路
這些常開開關(guān)組成了調(diào)節(jié)按鍵,硬件電路簡(jiǎn)單,在程序設(shè)計(jì)上也不復(fù)雜,只要在程序中消除在按鍵過程中產(chǎn)生的“毛刺”現(xiàn)象就可以了。這里采用最常用的方法即延時(shí)法,其的原理為:因?yàn)椤懊獭泵}沖一般持續(xù)時(shí)間短,約為幾ms,而按鍵的時(shí)間一般遠(yuǎn)遠(yuǎn)大于這個(gè)時(shí)間,所以當(dāng)單片機(jī)檢測(cè)到有按鍵動(dòng)靜后再延時(shí)一段時(shí)間(這里取10ms)后再判斷此電平是否保持原狀態(tài),如果是則為有效按鍵,否則無效。
2.5 D/A轉(zhuǎn)換電路DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個(gè)DA芯片以其價(jià)格低廉、接口簡(jiǎn)單、轉(zhuǎn)換控制容易等優(yōu)點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。
主要參數(shù)
* 分辨率為8位;
* 電流穩(wěn)定時(shí)間1us;
* 可單緩沖、雙緩沖或直接數(shù)字輸入;
* 只需在滿量程下調(diào)整其線性度;
* 單一電源供電(+5V~+15V);
* 低功耗,20mW。
* D0~D7:8位數(shù)據(jù)輸入線,TTL電平,有效時(shí)間應(yīng)大于90ns(否則鎖存器的數(shù)據(jù)會(huì)出錯(cuò));
* ILE:數(shù)據(jù)鎖存允許控制信號(hào)輸入線,高電平有效;
* CS:片選信號(hào)輸入線(選通數(shù)據(jù)鎖存器),低電平有效;
* WR1:數(shù)據(jù)鎖存器寫選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當(dāng)LE1為高電平時(shí),數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負(fù)跳變時(shí)將輸入數(shù)據(jù)鎖存;
* XFER:數(shù)據(jù)傳輸控制信號(hào)輸入線,低電平有效,負(fù)脈沖(脈寬應(yīng)大于500ns)有效;
* WR2:DAC寄存器選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由WR2、XFER的邏輯組合產(chǎn)生LE2,當(dāng)LE2為高電平時(shí),DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負(fù)跳變時(shí)將數(shù)據(jù)鎖存器的內(nèi)容打入DAC寄存器并開始D/A轉(zhuǎn)換。
* IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化;
* IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù);
* Rfb:反饋信號(hào)輸入線,改變Rfb端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度;
* Vcc:電源輸入端,Vcc的范圍為+5V~+15V;
* VREF:基準(zhǔn)電壓輸入線,VREF的范圍為-10V~+10V;
* AGND:模擬信號(hào)地;
* DGND:數(shù)字信號(hào)地。
工作方式
根據(jù)對(duì)DAC0832的數(shù)據(jù)鎖存器和DAC寄存器的不同的控制方式,DAC0832有三種工作方式:直通方式、單緩沖方式和雙緩沖方式。
DAC0832引腳功能電路應(yīng)用原理圖DAC0832是采樣頻率為八位的D/A轉(zhuǎn)換芯片,集成電路內(nèi)有兩級(jí)輸入寄存器,使DAC0832芯片具備雙緩沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要(如要求多路D/A異步輸入、同步轉(zhuǎn)換等)。所以這個(gè)芯片的應(yīng)用很廣泛,關(guān)于DAC0832應(yīng)用的一些重要資料見下圖: D/A轉(zhuǎn)換結(jié)果采用電流形式輸出。若需要相應(yīng)的模擬電壓信號(hào),可通過一個(gè)高輸入阻抗的線性運(yùn)算放大器實(shí)現(xiàn)。運(yùn)放的反饋電阻可通過RFB端引用片內(nèi)固有電阻,也可外接。DAC0832邏輯輸入滿足TTL電平,可直接與TTL電路或微機(jī)電路連接。
DAC0832引腳功能說明:
DI0~DI7:數(shù)據(jù)輸入線,TLL電平。
ILE:數(shù)據(jù)鎖存允許控制信號(hào)輸入線,高電平有效。
CS:片選信號(hào)輸入線,低電平有效。
WR1:為輸入寄存器的寫選通信號(hào)。
XFER:數(shù)據(jù)傳送控制信號(hào)輸入線,低電平有效。
WR2:為DAC寄存器寫選通輸入線。
Iout1:電流輸出線。當(dāng)輸入全為1時(shí)Iout1最大。
Iout2: 電流輸出線。其值與Iout1之和為一常數(shù)。
Rfb:反饋信號(hào)輸入線,芯片內(nèi)部有反饋電阻.
Vcc:電源輸入線 (+5v~+15v)
Vref:基準(zhǔn)電壓輸入線 (-10v~+10v)
AGND:模擬地,摸擬信號(hào)和基準(zhǔn)電源的參考地.
DGND:數(shù)字地,兩種地線在基準(zhǔn)電源處共地比較好.


圖2-2-4 轉(zhuǎn)換電路
第三章 軟件設(shè)計(jì)與分析3.1 軟件設(shè)計(jì)的組成該系統(tǒng)由調(diào)節(jié)部分——頻率子函數(shù)、調(diào)節(jié)部分——方波的占空比子函數(shù)、波形發(fā)生子函數(shù)、定時(shí)器0中斷子函數(shù)、定時(shí)器1中斷子函數(shù)、主函數(shù)和數(shù)據(jù)定義這幾部分組成。
在程序開始運(yùn)行之后,首先是對(duì)單片機(jī)進(jìn)行初始化,之后判斷信號(hào)頻率值,如符合所需的頻率,則重置時(shí)間常數(shù),不符則返回。在中斷結(jié)束后,還要來判斷波形是否符合,如符合,則顯示其頻率,不符則返回,重新判斷。
在中斷服務(wù)子程序開始后,通過判斷來確定各種波形的輸出,當(dāng)判斷選擇的不是方波后,則轉(zhuǎn)向?qū)φ也ǖ呐袛啵绱朔磸?fù)。如果選擇的是方波,則用查表的方法求出相應(yīng)的數(shù)據(jù),并通過D/A轉(zhuǎn)換器將數(shù)據(jù)轉(zhuǎn)換成模擬信號(hào),形成所需波形信號(hào)。
3.2定時(shí)程序設(shè)計(jì)定時(shí)器T1用于倒計(jì)時(shí),每次中斷為50ms,當(dāng)計(jì)數(shù)標(biāo)志為20時(shí)即為一秒,顯示數(shù)字減一。其流程圖如下
圖3-3-2 倒計(jì)時(shí)中斷流程圖
第五章 系統(tǒng)調(diào)試與軟件仿真\系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,二者密不可分。我們?cè)O(shè)計(jì)好的硬件電路和軟件程序必須經(jīng)過聯(lián)合調(diào)試才能驗(yàn)證其正確性。因?yàn)榇蠹叶记宄䞍烧呦嗷ソY(jié)合才能發(fā)揮最佳功效。
5.1 硬件調(diào)試硬件調(diào)試分為單元電路調(diào)試和聯(lián)機(jī)調(diào)試,單元電路調(diào)試在硬件電路設(shè)計(jì)中已經(jīng)進(jìn)行對(duì)電路進(jìn)行檢驗(yàn)。
線路檢查:根據(jù)硬件邏輯設(shè)計(jì)圖,仔細(xì)檢查電路是否正確,并且核對(duì)元器件的型號(hào)、規(guī)格和安裝是否符合要求,必要時(shí)可用萬用表檢測(cè)線路通斷情況。先用萬用表檢查各管腳之間是否有短路、虛焊、漏焊現(xiàn)象。檢查無誤后,測(cè)試各個(gè)芯片是否有損,待檢查完畢后,將各個(gè)芯片插入各自的槽位。
電源調(diào)試:電路的第一次通電測(cè)試很重要,調(diào)試方法有兩種:一種是斷開電路穩(wěn)壓電源的輸出端,檢查空載時(shí)電源的工作情況;另一種是拔下電路上的主要繼承芯片,檢查電源的負(fù)載能力。確保電源無故障并符合性能要求。
5.2 Keil uVision2軟件調(diào)試軟件調(diào)試是通過對(duì)用戶程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的語法錯(cuò)誤與邏輯錯(cuò)誤并加以排除糾正的過程。
本設(shè)計(jì)用到了Keil uVision2軟件,首先打開Keil uVision2,將程序輸入;然后進(jìn)行調(diào)試,將程序中的語法錯(cuò)誤和邏輯錯(cuò)誤糾正,調(diào)試完畢后,創(chuàng)建HEX文件,HEX文件用于燒寫芯片,將制定程序?qū)懭胍言O(shè)計(jì)好的電路板中,使其能根據(jù)我們的要求實(shí)現(xiàn)相應(yīng)的功能;最后將HEX文件燒寫入芯片,運(yùn)行電路,讓其實(shí)現(xiàn)信號(hào)發(fā)生器的功能
總結(jié)經(jīng)過近一個(gè)月的努力,終于順利完成了畢業(yè)設(shè)計(jì)。剛開始,我們頭緒不是很清楚,不知道從哪里入手,但通過老師的耐心指導(dǎo)并和同學(xué)認(rèn)真研究設(shè)計(jì)課題,跑圖書館查資料、確定基本設(shè)計(jì)方案、對(duì)所用芯片功能進(jìn)行查找、調(diào)試、上機(jī)仿真等,經(jīng)歷了一次次的困難,卻積累了很多寶貴的經(jīng)驗(yàn)。在整個(gè)設(shè)計(jì)的過程中遇到的問題主要有以下三點(diǎn),第一:基礎(chǔ)知識(shí)掌握的不牢固,主要表現(xiàn)在一些常用的電路的形式和功能不清楚,對(duì)書本上的內(nèi)容理解不夠透徹。第二:對(duì)一些常用的應(yīng)用軟件缺少應(yīng)用,體現(xiàn)在畫電路圖和系統(tǒng)的仿真的時(shí)候,對(duì)這些軟件的操作不熟練,浪費(fèi)了很多時(shí)間。第三:相關(guān)知識(shí)掌握的不夠全面,缺少系統(tǒng)設(shè)計(jì)的經(jīng)驗(yàn)。
這次設(shè)計(jì)進(jìn)一步端了我的學(xué)習(xí)態(tài)度,學(xué)會(huì)了實(shí)事求是,嚴(yán)謹(jǐn)?shù)淖黠L(fēng),對(duì)自己要嚴(yán)格要求,不能夠一知半解,要力求明明白白。急于求成是不好的,我有所感受。如果省略了那些必要的步驟,急于求成,不僅會(huì)浪費(fèi)時(shí)間,還會(huì)適得其反。我覺得動(dòng)手之前,頭腦里必須清楚該怎么做,這一點(diǎn)是很重要的。就目前來說,我的動(dòng)手能力雖然差一點(diǎn),但我想,通過我的不懈努力,在這方面,我總會(huì)得到提高。這一點(diǎn),我堅(jiān)信。因?yàn)閯e人能做到的,我也一定能做到。
在此次的畢業(yè)設(shè)計(jì)中我最大的體會(huì)就是進(jìn)一步認(rèn)識(shí)到了理論聯(lián)系實(shí)踐的重要性。一份耕耘,一份收獲。通過這段時(shí)間的設(shè)計(jì),讓我明白科學(xué)的思維方法和學(xué)習(xí)方法是多么重要,只有這樣才能夠有很高的效率,才能夠讓自己的工作更完美。總而言之,此次畢業(yè)設(shè)計(jì)讓我學(xué)到了好多平時(shí)在課堂上學(xué)不到的東西,增加了我的知識(shí)運(yùn)用能力,增強(qiáng)我的實(shí)際操作能力。謝謝老師給我們提供這么好的機(jī)會(huì),為我們之后走向社會(huì)奠定了一個(gè)好的基礎(chǔ)。
本次畢業(yè)設(shè)計(jì)讓我學(xué)到了很多,也學(xué)會(huì)到了要怎么樣去面對(duì)困難,不要對(duì)知識(shí)一知半截,要有的求實(shí)的能力,通過老師的幫助我學(xué)到了很多在平時(shí)的沒有注意到的動(dòng)?xùn)|西及知識(shí),更美沒有深入的的去理解,通過這次我要更加的明確自己。更要注重自己在各方面的鍛煉能力,把握機(jī)會(huì)。這次的設(shè)計(jì)非常的感謝老師們。
致謝三年的大學(xué)生活接近尾聲,我的畢業(yè)設(shè)計(jì)也順利的完成了,這里首先向我的指導(dǎo)老師陳東鳳表示最誠摯的感謝,同時(shí)也感謝那些幫助過我的同學(xué)們。
在本次的畢業(yè)設(shè)計(jì)中陳老師給我提供了極大的幫助,首先在一開始的選題中我便遇到了難題,由于當(dāng)時(shí)選題的時(shí)候過于疏忽大意,沒有認(rèn)真的加以分析,所選擇的題目并不是自己愛好的方向,陳老師便告訴我,最重要的就是找對(duì)方向找準(zhǔn)目標(biāo),選擇一個(gè)自己擅長(zhǎng)和喜歡的方向不僅能夠促使我們積極的完成設(shè)計(jì),而且對(duì)于自己來說也是充滿著興趣,這樣做出來的東西會(huì)更加完美和輕松,所以我毅然的改題,選擇了一個(gè)自己喜歡的方向,其次,在畢業(yè)設(shè)計(jì)的過程中,陳老師不厭其煩的為我們講解了畢業(yè)設(shè)計(jì)中可能出現(xiàn)的問題,并為我們提供了完整的畢業(yè)設(shè)計(jì)模板無論我遇到什么樣的問題,她總能很耐心的為我們講解,同時(shí)她每個(gè)周一要求見面一次,督促我們抓緊時(shí)間完成畢業(yè)設(shè)計(jì),每次見面她都要求我詳解上周所做的東西以及自己下周要做的東西,有問題或者不合理的地方她便為我指出來,加以指導(dǎo)。陳老師認(rèn)真負(fù)責(zé)的態(tài)度讓我倍受感激。同時(shí)在此也感謝胡銀飛同學(xué),他解決了許多我在畢業(yè)設(shè)計(jì)中遇到的問題,特別是剛開始軟件的學(xué)習(xí)中,他給了我很大的幫助。
在此向所有畢業(yè)設(shè)計(jì)的過程中給予我?guī)椭睦蠋熀屯瑢W(xué)最誠摯的謝意。
附錄
原理圖

元件清單

3.3 各部分軟件分析
3.3.1 調(diào)節(jié)部分——頻率子函數(shù)