單片機課程設(shè)計具體要求正文格式_第1頁
單片機課程設(shè)計具體要求正文格式_第2頁
單片機課程設(shè)計具體要求正文格式_第3頁
單片機課程設(shè)計具體要求正文格式_第4頁
單片機課程設(shè)計具體要求正文格式_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、河南理工大學(xué)本科課程設(shè)計報告摘要本設(shè)計是多功能信號發(fā)生器,以 AT89S52 單片機為核心,通過按鍵輸入控制輸出信號的類型、頻率和幅值,采用 DA 轉(zhuǎn)換芯片DAC0832輸出相應(yīng)的波形,同時以LED 顯示器進行實時顯示信號相關(guān)信息。我們采用 C 語言進行編程,可實現(xiàn)100-1Khz的方波,鋸齒波,三角波和正弦波四種波形的產(chǎn)生,且波形的頻率、幅值可通過按鍵調(diào)節(jié),并顯示在數(shù)碼管上。而且,波形的幅值還可通過電位器實現(xiàn)無極調(diào)幅,增加了可選幅值范圍。經(jīng)測試該設(shè)計方案線路優(yōu)化,結(jié)構(gòu)緊湊,性能優(yōu)越,滿足設(shè)計要求。關(guān)鍵字:單片機AT89S52,DAC0832,信號發(fā)生器目錄 1 概述 1.1選題背景及其意義

2、1.2單片機概述 1.3信號發(fā)生器分類 1.4主要電路元件介紹2 系統(tǒng)總體方案及硬件設(shè)計 2.1 方案總設(shè)計2.2硬件設(shè)計3 軟件設(shè)計 3.1軟件開發(fā)環(huán)境簡介 3.2Keil uVision4簡介Proteus7.10 簡介 3.3Keil 與Proteus 聯(lián)合調(diào)試仿真4 Proteus軟件仿真5課程設(shè)計體會參考文獻附1:源程序代碼附2:系統(tǒng)原理圖1 概述1.1 選題背景及其意義本文從信號發(fā)生器又稱信號源或振蕩器的背景,在生產(chǎn)實踐和科技領(lǐng)域中有著廣泛的應(yīng)用。各種波形曲線均可以用三角函數(shù)方程式來表示。能夠產(chǎn)生多種波形,如方波、鋸齒波、三角波、正弦波的電路被稱為函數(shù)信號發(fā)生器。在通信、廣播、電視

3、系統(tǒng),在工業(yè)、農(nóng)業(yè)、生物醫(yī)學(xué)領(lǐng)域內(nèi),函數(shù)信號發(fā)生器在實驗室和設(shè)備檢測中具有十分廣泛的用途。信號發(fā)生器作為一種常見的應(yīng)用電子儀器設(shè)備,傳統(tǒng)的可以完全由硬件電路搭接而成,如采用555振蕩電路發(fā)生正弦波、三角波和方波的電路便是可取的路徑之一,不用依靠單片機。但是這種電路存在波形質(zhì)量差,控制難,可調(diào)范圍小,電路復(fù)雜和體積大等缺點。在科學(xué)研究和生產(chǎn)實踐中,如工業(yè)過程控制,生物醫(yī)學(xué),地震模擬機械振動等領(lǐng)域常常要用到低頻信號源。而由硬件電路構(gòu)成的低頻信號其性能難以令人滿意,而且由于低頻信號源所需的RC很大;大電阻,大電容在制作上有困難,參數(shù)的精度亦難以保證;體積大,漏電,損耗顯著更是致命的弱點。一旦工作需求

4、功能有增加,則電路復(fù)雜程度會大大增加1.2 單片機概述單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器 CPU 隨機存儲器 RAM、只讀存儲器 ROM、多種 I/O 口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D 轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的計算機系統(tǒng)。單片機具有集成度高、系統(tǒng)結(jié)構(gòu)簡單、使用方便、實現(xiàn)模塊化、可靠性高、處理功能強、速度快等特點,因為被廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域。1.3 信號發(fā)生器分類信號發(fā)生器是指產(chǎn)生所需參數(shù)的電

5、信號的儀器。因其應(yīng)用廣泛,種類繁多,特性各異,分類也不盡一致。按信號波形可分為正弦信號、函數(shù)信號、脈沖信號和隨機信號發(fā)生器等四大類;按頻率覆蓋范圍分為低頻信號發(fā)生器、高頻信號發(fā)生器和微波信號發(fā)生器;按輸出電平可調(diào)節(jié)范圍和穩(wěn)定度分為簡易信號發(fā)生器、標(biāo)準(zhǔn)信號發(fā)生器和功率信號發(fā)生器;按頻率改變的方式分為調(diào)諧式信號發(fā)生器、掃頻式信號發(fā)生器、程控式信號發(fā)生器和頻率合成式信號發(fā)生器等。信號發(fā)生器又稱信號源或振蕩器,在生產(chǎn)實踐和科技領(lǐng)域中有著廣泛的應(yīng)用。 1.4主要電路元件介紹 1) 單片機簡介 AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROMFlash Programmable and Era

6、sable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高并且價廉的方案。AT89C51現(xiàn)在AT89S51/52已經(jīng)逐漸取代了AT89C51/52。

7、VCC:供電電壓。 GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須接上拉電阻。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為低八位地址接收。at89c51

8、P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們

9、被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示: (1)口管腳 備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(計時器0外部輸入)P3.5 T1(計時器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。at8

10、9c51ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有

11、效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。 2)DAC0832簡介 DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個DA芯片以其價格低廉、接口簡單、轉(zhuǎn)換控制容易等優(yōu)點,在單片機應(yīng)用系統(tǒng)中得到

12、廣泛的應(yīng)用。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。2.1 )DAC0832的主要特性參數(shù)* 分辨率為8位; * 電流穩(wěn)定時間1us; * 可單緩沖、雙緩沖或直接數(shù)字輸入; * 只需在滿量程下調(diào)整其線性度; * 單一電源供電(+5V+15V); * 低功耗,20mW。2.2 )DAC0832結(jié)構(gòu)* D0D7:8位數(shù)據(jù)輸入線,TTL電平,有效時間應(yīng)大于90ns(否則鎖存器的數(shù)據(jù)會出錯); * ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效; * CS:片選信號輸入線(選通數(shù)據(jù)鎖存器),低電平有效; * WR1:數(shù)據(jù)鎖存器寫選通輸入線,負脈沖(脈寬應(yīng)大

13、于500ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當(dāng)LE1為高電平時,數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負跳變時將輸入數(shù)據(jù)鎖存; 圖 DAC0832的邏輯框圖和引腳排列 XFER:數(shù)據(jù)傳輸控制信號輸入線,低電平有效,負脈沖(脈寬應(yīng)大于500ns)有效; WR2:DAC寄存器選通輸入線,負脈沖(脈寬應(yīng)大于500ns)有效。由WR2、XFER的邏輯組合產(chǎn)生LE2,當(dāng)LE2為高電平時,DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負跳變時將數(shù)據(jù)鎖存器的內(nèi)容打入DAC寄存器并開始D/A轉(zhuǎn)換。 IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化; IOUT2:電流輸出端2,

14、其值與IOUT1值之和為一常數(shù); Rfb:反饋信號輸入線,改變Rfb端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度; Vcc:電源輸入端,Vcc的范圍為+5V+15V; VREF:基準(zhǔn)電壓輸入線,VREF的范圍為-10V+10V; AGND:模擬信號地 DGND:數(shù)字信號地 3 )數(shù)碼顯示管3.1) 原理及分類一位 LED 顯示器由 8 個發(fā)光二極管組成,其中 7 個發(fā)光二極管 a-h控制 7 個筆畫段的亮或暗,另一位控制一個小數(shù)點的亮和暗。LED 顯示器有共陰極和共陽極 2 種形式,其結(jié) 圖 3-3 數(shù)碼管結(jié)構(gòu)圖 構(gòu)如圖3-3所示。共陽極顯示器是發(fā)光二極管的陽極連接在一起,當(dāng)需要顯示某字符時,只需要將共陽

15、極端接高電平,a-h 中某些位接低電平即可。共陰極顯示器是發(fā)光二極管的陰極連接在一起,當(dāng)需要顯示某字符時,只需要將共陰極端接低電平,a-h 中某些位接高電平即可。3.2) 顯示器的工作方式顯示器的工作方式分為靜態(tài)顯示方式和動態(tài)顯示方式兩種。 靜態(tài)顯示方式 靜態(tài)顯示方式就是顯示器在顯示一個字符時,相應(yīng)的發(fā)光二極管恒定的導(dǎo)通或截止,例如 a、b、c、e、f 導(dǎo)通,g 截止時顯示“0”,這種使顯示器顯示字符的字形數(shù)據(jù)常稱為段數(shù)據(jù)。靜態(tài)顯示方式的每一個七段顯示器,需要由一個 8 位并行口控制。優(yōu)點是顯示穩(wěn)定,提高了工作效率,缺點是位數(shù)較多時顯示口隨之增加。 動態(tài)顯示方式動態(tài)顯示方式是一位一位的輪流點亮

16、各位顯示器,對于每一位顯示器來說,每隔一段時間點亮一次。顯示器的亮度既與導(dǎo)通電流有關(guān),也與點亮?xí)r間和間隔時間的比例有關(guān)。調(diào)整電流和時間參數(shù)可以實現(xiàn)亮度較高較穩(wěn)定的顯示,如顯示器的位數(shù)不大于 8 位,則控制顯示器公共極的電位只需要一個 8 位口(位數(shù)據(jù)口),控制字形也需要一個 8 位口(段數(shù)據(jù)口)。 2 系統(tǒng)總體方案及硬件設(shè)計 2.1 方案總設(shè)計 2.1.1方案原理 該設(shè)計設(shè)計一個多功能信號發(fā)生器,我們采用的是 AT89S52 單片機用軟件實現(xiàn)信號的輸出。該單片機是一個微型計算機,包括中央處理器 CPU,RAM,ROM、I/O 接口電路、定時計數(shù)器、串行通訊等,是波形設(shè)計的核心。該信號發(fā)生器原理

17、框圖如圖 2.1,總體原理為:利用 AT89S52 單片機構(gòu)造多功能信號發(fā)生器,可產(chǎn)生正弦波,方波,三角波,鋸齒波四種波形,通過 C 語言對單片機的編程即可產(chǎn)生相應(yīng)的波形信號,并可以通過鍵盤進行各種功能的轉(zhuǎn)換和信號頻率的控制,當(dāng)輸出的數(shù)字信號通過數(shù)模轉(zhuǎn)換成模擬信號也就得到所需要的信號波形,通過運算放大器的放大輸出波形,同時讓顯示器顯示輸出的波形信息。 系統(tǒng)總框圖 2.1.2方案設(shè)計 本方案其主要模塊包括復(fù)位電路、時鐘信號、鍵盤控制、D/A 轉(zhuǎn)化及 LED 顯示。其各個模塊的工作原理如下:1.復(fù)位電路是為單片機復(fù)位使用,使單片機接口初始化;89C51 等 CMOS51 系列單片機的復(fù)位引腳 RE

18、T 是施密特觸發(fā)輸入腳,內(nèi)部有一個上拉低電阻,當(dāng)振蕩器起振以后,在 RST 引腳上輸出 2 個機器周期以上的高電平,器件變進入復(fù)位狀態(tài)開始,此時 ALE、PSEN、P0、P1、P2、P4 輸出高電平,RST 上輸入返回低電平以后,變退出復(fù)位狀態(tài)開始工作。該方案采用的是人工開關(guān)復(fù)位,在系統(tǒng)運行時,按一下開關(guān),就在 RST 斷出現(xiàn)一段高電平,使器件復(fù)位。2.時鐘信號是產(chǎn)生單片機工作的時鐘信號,控制著計算機的工作節(jié)奏,可以通過提高時鐘頻率來提高 CPU 的速度。AT89S52 內(nèi)部有一個可控的反相放大器,引腳 XTAL1、XTAL2 為反相放大器輸入端和輸出端,在 XTAL1、XTAL2 上外接 1

19、2MHZ 晶振和 30pF 電容便組成振蕩器。時鐘信號常用于 CPU 定時和計數(shù)。3.鍵盤模塊是是用于控制信號輸入的類型,當(dāng)按鍵按下時,可以通過單片機編AT89S52單片機數(shù)/模準(zhǔn)換器、DAC0832、LM324、運放放大、接口電路、鍵盤輸入程讀取閉合的鍵號,實現(xiàn)相應(yīng)的信號輸出。其步驟主要是a、判斷是否有鍵按下;b、去抖動,延時 20ms 左右;c、識別被按下的鍵號;d、處理,實現(xiàn)功能。4.D/A 轉(zhuǎn)換也稱為數(shù)模轉(zhuǎn)換,是把數(shù)字量變換成模擬量的線性電路。單片機產(chǎn)生的數(shù)字信號通過 DAC0832 轉(zhuǎn)化成模擬信號,輸出相應(yīng)的電流值,通過LM324 集成運算放大器可以取出模擬量得電壓值,最后利用示波器

20、獲得輸出的模擬信號的波形;衡量數(shù)模轉(zhuǎn)換的性能指標(biāo)有分辨率、轉(zhuǎn)換時間、精度、線性度等。LED 顯示器用由若干個發(fā)光二極管按一定的規(guī)律排列而成,是一種能夠?qū)㈦娔苻D(zhuǎn)化為可見光的固態(tài)的半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光用于是顯示相關(guān)輸出波形的信息,包括信號的類型、頻率和幅值。2.1.3設(shè)計功能 1.產(chǎn)生方波、鋸齒波、三角波、正弦波四種波形頻率100HZ-1KHZ,按鍵可實現(xiàn)步進100HZ調(diào)節(jié)。2.產(chǎn)生-5V- +5V的幅值的波形信號,幅值調(diào)節(jié)可選按鍵步進0.1V,也可選擇用電位器無極調(diào)節(jié)。3.顯示采用 8 位 LED 顯示器,前兩位顯示幅值;后四位顯示頻率。4.按鍵輸入采用8個按鍵實現(xiàn)輸入,P00-P

21、07。2.2硬件設(shè)計 2.2.1硬件原理 對于該低頻信號發(fā)生器的設(shè)計,我們采用了以AT89S52單片機芯片作為核心處理器,編程實現(xiàn)各種不同類型信號的產(chǎn)生,最后通過 DA 轉(zhuǎn)換輸出到示波器。結(jié)構(gòu)簡單,思路僅僅有條,而根據(jù)設(shè)計的基本要求,我們又把其細分為不同的功能模塊,各個功能模塊相互聯(lián)系,相互協(xié)調(diào),通過單片機程序構(gòu)成一個統(tǒng)一的整體,其整體電路原理框圖如圖所示:2.2.2時鐘電路 單片機的時鐘信號通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩方式。在引腳XTAL1 和 XTAL2 外接晶體振蕩器,構(gòu)成了內(nèi)部振蕩方式。由于單片機內(nèi)部有一個高增益的反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩,并產(chǎn)生振動時鐘

22、脈沖。晶振通常選用 6MHZ、12MHZ、24MHZ。本設(shè)計中時鐘電路圖如圖4-2,我們選擇了12MHZ和晶振分別接引腳XTAL1和XTAL2,電容 C1,C2 均選擇為 30pF,對振蕩器的頻率有穩(wěn)定作用,當(dāng)頻率較大時,正弦波、方波、三角波及鋸齒波中每一點的延時時間為幾微妙,故延時時間還要加上指令時間才能獲得較大的頻率波形。2.2.3復(fù)位電路 2.2.4數(shù)碼管電路 2.2.5 DAC0832模數(shù)轉(zhuǎn)換電路 根據(jù)對DAC0832的數(shù)據(jù)鎖存器和DAC寄存器的不同的控制方式,DAC0832有三種工作方式:直通方式、單緩沖方式和雙緩沖方式。本設(shè)計選用直通方式。DAC0832的數(shù)據(jù)口和單片機的P2口相連

23、。CSDA:片選信號輸入線(選通數(shù)據(jù)鎖存器),低電平有效;WR:數(shù)據(jù)鎖存器寫選通輸入線,負脈沖(脈寬應(yīng)大于500ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當(dāng)LE1為高電平時,數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負跳變時將輸入數(shù)據(jù)鎖存;2.2.6LM324運放電路和低通濾波電路 LM324的5管腳與DAC0832的(IOUT2)12管腳相連,LM324的6管腳與DAC0832的(IOUT1)11管腳相連,LM324的7管腳與DAC0832的REF(9)管腳相連. 2.2.7按鍵和波形指示LED電路圖 4-7 波形指示LED和按鍵電路本系統(tǒng)有4中波形產(chǎn)生分別是:方波、鋸齒波、三角

24、波和正弦波。每種波形對應(yīng)相應(yīng)的LED燈,當(dāng)選擇方波模式時單片機的P3.5輸出高電平DS1就亮了,顯示出,現(xiàn)在的波形模式是方波,同理DS2-鋸齒波,DS3三角波,DS4正弦波。由于需要實現(xiàn)波形、幅值和頻率的可調(diào),所以,通過8個按鍵實現(xiàn)輸入。4個按鍵是波形模式選擇,4個按鍵分別是幅值加、減,頻率加、減。其對應(yīng)關(guān)系見下表。表4.1 按鍵功能及I/O情況方波鋸齒波三角波正弦波幅值加幅值減頻率加頻率減按鍵K8K7K1K2K6K3K5K4I/OP0.7P0.6P0.0P0.1P0.5P0.2P0.4P0.3 3軟件開發(fā) 3.1軟件開發(fā)環(huán)境簡介3.1.1 Keil uVision4簡介Keil C51是美國

25、Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令你事半功倍。優(yōu)點:1.Keil C51生成的目標(biāo)代碼效率非常之高,多

26、數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。 2.與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。 Keil C51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面3.1.2 Proteus7.10 簡介Proteus軟件是英國Labcenter electronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內(nèi)推廣

27、剛起步,但已受到單片機愛好者、從事單片機教學(xué)的教師、致力于單片機開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品完整設(shè)計。是目前世界上唯一將電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件三合一的設(shè)計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種

28、編譯器。功能特點:Proteus軟件具有其它EDA工具軟件(例:multisim)的功能。這些功能是: 1原理布圖 2PCB自動或人工布線 3SPICE電路仿真 革命性的特點 1互動的電路仿真 用戶甚至可以實時采用諸如RAM,ROM,鍵盤,馬達,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 2仿真處理器及其外圍電路 可以仿真51系列、AVR、PIC、ARM、等常用主流單片機。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設(shè)計開發(fā)環(huán)境。3.1.3 Keil 與Proteu

29、s 聯(lián)合調(diào)試仿真把Keil 與Proteus 聯(lián)合調(diào)試將大大加快開發(fā)進度。用Proteus把硬件電路搭載出來,用keil寫c程序,把寫好要調(diào)試的程序下載到Proteus仿真的單片機里,然后,更改程序調(diào)試參數(shù)。在Proteus里邊有示波器,可以用示波器查看程序的運行結(jié)果,不斷調(diào)試,摘到達到滿意的效果時在進行實物調(diào)試,這樣不僅加快了調(diào)試的進程,而且使單片機的rom的擦寫次數(shù)明顯減少,增加了單片機的使用壽命。變量、數(shù)組、端口初始化函數(shù)初始化定時器T0初始化,開中斷開始按鍵掃描波形模式選擇加查表及定時器0定時時間計算頻率幅值加減選擇減給DAC0832值數(shù)碼管顯示指示LED顯示3.2主程序3.3按鍵處理

30、程序程序位于函數(shù)keyscan()中,keyscan()函數(shù)位于主循環(huán)中,每循環(huán)一次調(diào)用一次,檢測鍵盤是否按下,如果按下去延時抖動,然后檢測到底是哪個按鍵按下,針對不同的按鍵按下采取不同的動作。因為按鍵采用的是掃描法,故需要注意消抖的處理,在此用軟件法去抖動即可。軟件法去抖動的實質(zhì)是軟件延時,即檢測到某一鍵狀態(tài)變化后延時一段時間,再檢測該按鍵的狀態(tài)是否保持著,如是則作為按鍵處理,否則,視為抖動,不予理睬。去抖動的延時時間一般參考資料多描述為20ms左右,在實際應(yīng)用中應(yīng)大于20ms。否則,會導(dǎo)致按一次多處理,影響程序正常執(zhí)行。NNYY按鍵掃描入口延時得到鍵值返回有按鍵按下?該鍵按下?圖5-2 按

31、鍵掃描及處理程序流程圖表 5.1各按鍵功能及I/O情況方波鋸齒波三角波正弦波幅值加幅值減頻率加頻率減按鍵K8K7K1K2K6K3K5K4I/OP0.7P0.6P0.0P0.1P0.5P0.2P0.4P0.3按鍵是以上表中的中的定義方式工作的,不同的按鍵按下就會有不同的參數(shù),程序根據(jù)這些參數(shù)來執(zhí)行,從而產(chǎn)生不同的波形,不同的頻率,在數(shù)碼管上顯示不同的信息。3.4 數(shù)碼管輸出程序分析數(shù)碼管顯示入口關(guān)位碼送段碼開位碼返回 圖 5-3 數(shù)碼管顯示流程圖數(shù)碼管輸出程序是送段選碼和位選碼的程序,位于主程序中。輪流點亮6個數(shù)碼管,每大約5ms變換一次,由于輪換的次數(shù)太快,由于視覺暫留效應(yīng),看上去是6個數(shù)碼管

32、看上去好像一直點亮。3.5 各種波形產(chǎn)生思路3.5.1 方波產(chǎn)生方波的產(chǎn)生比較簡單,只需要根據(jù)按鍵輸入的幅值和頻率計算出相應(yīng)的DA數(shù)據(jù)送給數(shù)據(jù)就可以產(chǎn)生相應(yīng)的波形。具體來說,例如產(chǎn)生500Hz的2.5V的波形。首先,要計算出定時器的定時頻率,由于,方波只有兩種狀態(tài),峰值和0值。峰值時由按鍵設(shè)定的,其中峰值占一個周期的一半,即要定時產(chǎn)生1000Hz的定時器頻率,每進一次中斷函數(shù)就把DA的數(shù)據(jù)更新為上次值的取反。讓DA數(shù)據(jù)在峰值和0之間依次切換即可。3.5.2 鋸齒波產(chǎn)生思路首先,根據(jù)按鍵設(shè)定的波形頻率,選擇一個周期內(nèi)合適的點數(shù),根據(jù)點數(shù)和峰值計算相鄰2個點的幅度的步進值,根據(jù)點數(shù)和頻率設(shè)定相鄰2

33、點的時間值,計算出定時器的初值,然后,定時輸出刷新DA的數(shù)據(jù)就可以產(chǎn)生一定頻率和幅值的波形。3.5.3 三角波產(chǎn)生思路首先,根據(jù)按鍵設(shè)定的波形頻率,選擇一個周期內(nèi)合適的點數(shù),根據(jù)點數(shù)和峰值計算相鄰2個點的幅度的步進值,根據(jù)點數(shù)和頻率設(shè)定相鄰2點的時間值,計算出定時器的初值,然后,設(shè)置一個變量每進一次定時中斷DA數(shù)據(jù)就加幅值步進,當(dāng)?shù)扔诳傸c數(shù)的一半時,每進一次定時中斷就把DA數(shù)據(jù)減幅值步進直到DA數(shù)據(jù)為0,計數(shù)變量清零。每進一次定時中斷輸出刷新DA的數(shù)據(jù)就可以產(chǎn)生一定頻率和幅值的三角波。3.5.4 正弦波產(chǎn)生思路首先,寫一個表格,然后根據(jù)按鍵設(shè)定的波形頻率,選擇一個周期內(nèi)合適的點數(shù),根據(jù)點數(shù)和峰

34、值計算相鄰2個點的幅度的步進值,根據(jù)點數(shù)和頻率設(shè)定相鄰2點的時間值,計算出定時器的初值,然后,設(shè)置一個變量每進一次定時中斷DA數(shù)據(jù)就加幅值步進,當(dāng)?shù)扔诳傸c數(shù)的一半時,每進一次定時中斷就查表把DA數(shù)據(jù)減幅值步進直到DA數(shù)據(jù)為0,計數(shù)變量清零。每進一次定時中斷查表輸出刷新DA的數(shù)據(jù)就可以產(chǎn)生一定頻率和幅值的三角波。 4 Proteus軟件仿真 圖一仿真電路圖 圖二輸出波形圖 正弦波 方波 三角波 5課程設(shè)計體會 在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設(shè)計但這次設(shè)計真的讓我長進了很多。對于單片機設(shè)計,其硬件電路是比較簡單的,主要是解決程序設(shè)計的問題,而程序設(shè)計是一個很靈活的東西,

35、它反映了你解決問題的邏輯思維和創(chuàng)新能力,它才是一個設(shè)計的靈魂所在。因此在整個設(shè)計過程中大部分時間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣銜接各個子程序才是關(guān)鍵的問題所在,這需要對單片機的結(jié)構(gòu)很熟悉。因此可以說單片機的設(shè)計是軟件和硬件的結(jié)合,二者是密不可分的。要設(shè)計一個成功的電路,必須要有耐心,要有堅持的毅力。在整個電路的設(shè)計過程中,花費時間最多的是各個單元電路的連接及電路的細節(jié)設(shè)計上,如在多種方案的選擇中,我們仔細比較分析其原理以及可行的原因。這就要求我們對硬件系統(tǒng)中各組件部分有充分透徹的理解和研究,并能對之靈活應(yīng)用。完成這次設(shè)計后,我在書本理論知識的基礎(chǔ)上又有了更深層次的理解。

36、同時在本次設(shè)計的過程中,我還學(xué)會了高效率的查閱資料、運用工具書、利用網(wǎng)絡(luò)查找資料。我發(fā)現(xiàn),在我們所使用的書籍上有一些知識在實際應(yīng)用中其實并不是十分理想,各種參數(shù)都需要自己去調(diào)整。偶而還會遇到錯誤的資料現(xiàn)象,這就要求我們應(yīng)更加注重實踐環(huán)節(jié)。最后還要在此感謝指導(dǎo)老師們和我的同學(xué),他們在整個過程中都給予了我充分的幫助與支持。參考文獻 1 譚浩強.C 程序設(shè)計. 北京:清華大學(xué)出版社,20022 王為青,程國剛. 單片機 Keil Cx51 應(yīng)用開發(fā)技術(shù).北京:人民郵電大學(xué)出版社,20073道客巴巴 基于單片機的信號發(fā)生器設(shè)計2010-04-04張友德,趙志英,涂時亮. 單片機微型機原理、應(yīng)用和實驗.

37、 上海:復(fù)旦大學(xué)出版社,2006.105丁向榮,謝俊,王彩申. 單片機 C 語言編程與實踐. 北京:電子工業(yè)出版社,2009.8 附1 源程序代碼1.主程序:#include"h.h"void main()timer_init();while(1)keysccan();display();if(buttonflag=1)/有按鍵動作再執(zhí)行switch(boxing)case 0:led=0x20;/方波指示燈 th=tab2f-1;/周期設(shè)定 tl=tab3f-1;/周期設(shè)定 break;case 1:led=0x10;/鋸齒波指示燈 th=255;/周期設(shè)定 tl=tab

38、5f-1;/ dj=tab4fz-1/tab6f-1;/步進計算 break;case 2:led=0x08;/三角波指示燈 th=255;/周期設(shè)定 tl=tab7f-1;/ ds=tab4fz-1/tab8f-1;/步進計算 break;case 3:led=0x04; th=255;/周期設(shè)定 tl=tab11f-1;/ break; P3=led;/指示波形2.頭文件:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit we=P36;sbit du=P37;sbit led1=P

39、35;sbit led2=P34;sbit led3=P33;sbit led4=P32;uchar th=236,tl=120;/定時器初值設(shè)定uchar i;uchar led,fz=50;/指示燈和幅值50代表5.0uchar f=5;/1頻率代表100uchar boxing=0;/0方波1鋸齒波2三角波3正弦波uchar buttonflag;/按鍵動作標(biāo)志uchar dj;/鋸齒波兩點之間的步進;uchar ds;/三角波兩點之間的步進uchar sq;/方波切換標(biāo)志uchar scount;/三角波點數(shù)計數(shù)uchar dz;/正弦波步進uchar zcount;/正弦波計數(shù)uch

40、ar code tab0=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/共陰數(shù)碼管顯示0f/uchar code tab1=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/位選編碼uchar code tab1=0xfe,0xfd,0xef,0xdf,0xbf,0x7f;/位選編碼uchar code tab2=236,246,249,251,252,252,253,253,253,254;/方波Thuchar code tab3=150,78,

41、148,53,45,214,75,165,234,35;/方波TLuchar code tab4=5,10,15,20,26,31,36,41,46,51, 56,61,66,71,77,82,87,92,97,102, 107,112,117,122,128,133,138,143,148,153, 158,163,168,173,179,184,189,194,199,204, 209,214,219,224,230,235,240,245,250,255;/幅值uchar code tab5=161,181,200,210,200,212,206,200,208,215;/鋸齒TLuch

42、ar code tab6=80,50,40,35,25,25,19,15,15,15;/鋸齒波點數(shù)uchar code tab7=153,180,196,197,198,200,194,194,192,187;/三角波TLuchar code tab8=40,25,20,15,12,10,8,7,6,5;/三角波點數(shù)的一半uchar code tab9=80,50,40,30,24,20,16,14,12,10;/三角波點數(shù)uchar code tab10=135,145,158,167,176,188,199,209,/正弦64 218,226,234,240,245,249,252,254

43、,254,253,251,247,243,237,230,222,213,204,193,182,170,158,146,133,121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66,78,90,102,114,128 ;/正弦波表格uchar code tab11=123,253,176,131,160,179,119,138,154,169;/正弦波tluchar code tab12=64,64,32,16,16,16,8,8,8,8;/正弦波點數(shù)uchar code tab13=135,15

44、8,176,199,/正弦32 218,234,245,252,254,251,243,230,213,193,170,146,121,96,72,50,32,17,7,1,0,5,14,28,45,66,90,114 ;/正弦波表格uchar code tab14=135,176,/正弦16 218,245,254,243,213,170,121,72,32,7,0,14,45,90;/正弦波表格 uchar code tab15=135,/正弦8 218,254,213,121,32,0,45;/正弦波表格 uchar code tab16=135,209,/正弦10 254,230,158,61,7,14,78,128 ;/正弦波表格void delay(uchar i)uchar x,y;for(x=i;x>1;x-)for(y=100;y>1;y-);void timer_init()TMOD=1;TH0=th;TL0=tl

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論