西南交通大學(xué)-簡(jiǎn)易函數(shù)發(fā)生器課程設(shè)計(jì)_第1頁(yè)
西南交通大學(xué)-簡(jiǎn)易函數(shù)發(fā)生器課程設(shè)計(jì)_第2頁(yè)
西南交通大學(xué)-簡(jiǎn)易函數(shù)發(fā)生器課程設(shè)計(jì)_第3頁(yè)
西南交通大學(xué)-簡(jiǎn)易函數(shù)發(fā)生器課程設(shè)計(jì)_第4頁(yè)
西南交通大學(xué)-簡(jiǎn)易函數(shù)發(fā)生器課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課程名稱:電子技術(shù)課程設(shè)計(jì)設(shè)計(jì)題目: 簡(jiǎn)易函數(shù)發(fā)生器 院 系: 電氣工程系 專 業(yè): 城軌供電本 年 級(jí): xxxxxx 姓 名: xxxx x 學(xué) 號(hào): xxxxxxxxxx 指導(dǎo)教師: 關(guān)海川 西南交通大學(xué)峨眉校區(qū)2016 年 06 月 16 日西南交通大學(xué)本科課程設(shè)計(jì)(論文) 第28頁(yè)課 程 設(shè) 計(jì) 任 務(wù) 書專 業(yè) 城軌供電 姓 名 學(xué) 號(hào) 開題日期: 2016 年 03 月 01 日 完成日期: 2016 年 06月 16 日題 目 簡(jiǎn)易函數(shù)發(fā)生器 一、 設(shè)計(jì)的目的 信號(hào)發(fā)生器也叫做振蕩器或是信號(hào)源,在現(xiàn)在的科技生產(chǎn)實(shí)踐中有著廣泛而重要的應(yīng)用?,F(xiàn)在的特殊波形發(fā)生器在價(jià)格上不夠經(jīng)濟(jì),有

2、些昂貴。而基于AT89C51單片機(jī)的函數(shù)信號(hào)發(fā)生器可以滿足此要求。根據(jù)傅里葉變換,各種波形均可以用三角函數(shù)的相關(guān)式子表示出來(lái)。函數(shù)信號(hào)發(fā)生器能夠產(chǎn)生多種波形,如三角波、鋸齒波、矩形波、方波和正弦波。 二、設(shè)計(jì)的內(nèi)容及要求1) 采用MCS51作為主控芯片; 2) 采用D/A轉(zhuǎn)換和放大處理,輸出信號(hào); 3) 要求能輸出方波、三角波、鋸齒波和正弦波4種信號(hào),頻率可調(diào),學(xué)會(huì)將本學(xué)期學(xué)習(xí)的單片機(jī)與實(shí)際問(wèn)題進(jìn)行結(jié)合并得出自己的體會(huì)。 ,學(xué)會(huì)將本學(xué)期學(xué)習(xí)的單片機(jī)與實(shí)際問(wèn)題進(jìn)行結(jié)合并得出自己的體會(huì)。 4)學(xué)會(huì)請(qǐng)教老師與能力更好的同學(xué),進(jìn)行討論研究,并做出自己的設(shè)計(jì)。 三、指導(dǎo)教師評(píng)語(yǔ) 四、成 績(jī) 指導(dǎo)教師 (

3、簽章) 2016 年 06 月 16 日承 諾本人鄭重承諾:所呈交的設(shè)計(jì)(論文)是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行設(shè)計(jì)(研究)所取得的成果,除文中特別加以標(biāo)注引用的內(nèi)容外,本文不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫的設(shè)計(jì)(研究)成果。對(duì)本設(shè)計(jì)(研究)做出貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。如被發(fā)現(xiàn)設(shè)計(jì)(論文)中存在抄襲、造假等學(xué)術(shù)不端行為,本人愿承擔(dān)一切后果。 學(xué)生簽名:2016 年 06月 16日摘 要信號(hào)發(fā)生器也叫做振蕩器或是信號(hào)源,在現(xiàn)在的科技生產(chǎn)實(shí)踐中有著廣泛而重要的應(yīng)用?,F(xiàn)在的特殊波形發(fā)生器在價(jià)格上不夠經(jīng)濟(jì),有些昂貴。而基于AT89C51單片機(jī)的函數(shù)信號(hào)發(fā)生器可以滿足此要求。根據(jù)傅

4、里葉變換,各種波形均可以用三角函數(shù)的相關(guān)式子表示出來(lái)。函數(shù)信號(hào)發(fā)生器能夠產(chǎn)生多種波形,如三角波、鋸齒波、矩形波、方波和正弦波。 本文通過(guò)在單片機(jī)的外圍加上鍵盤,控制波形的種類和輸出頻率的大小,加上L示波器顯示出相應(yīng)信息。單片機(jī)輸出為數(shù)字信號(hào),于是在輸出端用DAC0832進(jìn)行D/A轉(zhuǎn)換,再通過(guò)兩級(jí)運(yùn)放對(duì)波形進(jìn)行調(diào)整。最終在示波器上顯示出來(lái)。 關(guān)鍵詞:信號(hào)發(fā)生器 AT89C51 D/A轉(zhuǎn)換 波形調(diào)整 AbstractSignal generator is also called source or oscillator. It has been widely used in production

5、practice or the field of science and technology. Now, the price of the special waveform generator is not economic and some expensive. While the function signal generator based on AT89C51 can satisfy this requirement. As we know, it can be represented with trigonometric function equation for kinds of

6、 waveform curve. The one can produce various waveform, such as triangle wave, sawtooth wave, rectangle wave, square wave and sine wave is often called function signal generator. Function signal generator is broad-spectrum in circuit experiment and test equipment. It can control the type and the outp

7、ut frequency of the waveform when the microcontroller are equipped with the keyboard. Also when it coupled with the LED it can be displayed. It can be sure that it is digital signal that come from the microcontroller. So we should add the DAC0832 on the output side for D/A conversion. With the two l

8、evels of op-amp we can adjust waveform. Finally display on the oscilloscope. Keywords:signal generator, AT89C51, D/A conversion,wave adjust目錄第一章 緒論1第二章 系統(tǒng)的主要功能說(shuō)明22.1系統(tǒng)的主要功能22.2波形介紹22.2.1正弦波22.2.2方波22.2.3鋸齒波32.2.4三角波32.3系統(tǒng)的設(shè)計(jì)思路4第三章 元器件介紹53.1單片機(jī)AT89C5153.1.1基本組成53.2數(shù)模轉(zhuǎn)換器DAC083273.3示波器顯示103.4其他元器件說(shuō)明11第

9、四章 硬件設(shè)計(jì)124.1工作原理124.2單片機(jī)及外圍電路設(shè)計(jì)124.3輸入模塊設(shè)計(jì)134.3.1獨(dú)立式按鍵134.3.2 矩陣式鍵盤134.5顯示模塊設(shè)計(jì)154.6系統(tǒng)硬件設(shè)計(jì)圖16第五章 軟件設(shè)計(jì)185.1程序分析185.2程序流程圖185.3程序設(shè)計(jì)19小結(jié)與體會(huì)33II 第一章 緒論 波形發(fā)生器亦稱為函數(shù)發(fā)生器,作為實(shí)驗(yàn)用信號(hào)源,是現(xiàn)今各種電子電路實(shí)驗(yàn)設(shè)計(jì)應(yīng)用中必不可少的儀器設(shè)備之一。按其信號(hào)波形可分為正弦信號(hào)發(fā)生器、函數(shù)信號(hào)發(fā)生器、脈沖信號(hào)發(fā)生器、隨機(jī)信號(hào)發(fā)生器四大類。眾所周知,在實(shí)驗(yàn)以及一些科學(xué)研究中常用到的一些基本測(cè)試信號(hào),如在示波器、電視機(jī)等儀器中,用作時(shí)基電路的鋸齒波以及在實(shí)

10、驗(yàn)中常被用作信號(hào)源,觀察波形失真情況等的正弦波都可以由函數(shù)信號(hào)發(fā)生器產(chǎn)生。除此之外,函數(shù)信號(hào)發(fā)生器在其他領(lǐng)域如同喜、廣播、工業(yè)等領(lǐng)域內(nèi)也有很重要作用。目前,市場(chǎng)上常見的波形發(fā)生器多為純硬件搭接而成,且波形種類有限,多為鋸齒、正弦、方波、三角等波形。 信號(hào)發(fā)生器作為一種常見的應(yīng)用電子儀器設(shè)備,傳統(tǒng)的可以完全由硬件電路搭接而成,如采用555振蕩電路發(fā)生正弦波、三角波和方波的電路便是可取的路徑之一,不用依靠單片機(jī)。但是這種電路存在波形質(zhì)量差,控制難,可調(diào)范圍小,電路復(fù)雜和體積大等缺點(diǎn)。在科學(xué)研究和生產(chǎn)實(shí)踐中,如工業(yè)過(guò)程控制,生物醫(yī)學(xué)、地震模擬震動(dòng)等領(lǐng)域常常要用到低頻信號(hào)源。而由硬件電路構(gòu)成的低頻信號(hào)

11、其性能難以令人滿意,而且由于低頻信號(hào)源所需的RC很大;大電阻,大電容在制作上有困難,參數(shù)的精度亦難以保證;體積大,漏電,損耗顯著更是其致命的弱點(diǎn)。一旦工作需求有增加,則電路復(fù)雜程度會(huì)大大增加。當(dāng)今是科學(xué)技術(shù)及儀器設(shè)備高度智能化飛速發(fā)展的信息社會(huì),電子技術(shù)的進(jìn)步,給人們帶來(lái)了根本性的轉(zhuǎn)變?,F(xiàn)代電子領(lǐng)域中,單片機(jī)的應(yīng)用正在不斷的走向深入,這必將導(dǎo)致傳統(tǒng)控制與檢測(cè)技術(shù)的日益革新。單片機(jī)構(gòu)成的儀器具有高可靠性、高性能價(jià)格比,在智能儀表系統(tǒng)和辦公自動(dòng)化等諸多領(lǐng)域得以極為廣泛的應(yīng)用。并走入家庭,從洗衣機(jī)、微波爐到音響、汽車,處處可見其應(yīng)用。因此,單片機(jī)技術(shù)開發(fā)和應(yīng)用水平已逐步成為一個(gè)國(guó)家工業(yè)發(fā)展水平的標(biāo)志

12、之一。第二章 系統(tǒng)的主要功能說(shuō)明2.1系統(tǒng)的主要功能 該函數(shù)信號(hào)發(fā)生器可以輸出四種波形,有正弦波,鋸齒波,三角波,方波。在此基礎(chǔ)上進(jìn)一步實(shí)現(xiàn)對(duì)波形頻率和占空比的調(diào)節(jié),并用液晶屏分兩行顯示波形名稱和波形頻率。函數(shù)信號(hào)發(fā)生器內(nèi)部器件主要有單片機(jī)AT89C51,電源,鍵盤模塊顯示模塊構(gòu)成。 該系統(tǒng)不但滿足了課程設(shè)計(jì)題目的基本要求,而且增設(shè)了LED波形指示燈,數(shù)碼管頻率顯示器等原件,使操作更簡(jiǎn)單,使用界面更人性化。2.2波形介紹2.2.1正弦波正弦信號(hào)可用如下形式表示f (t)=Asin(t+ ) (1)其中,A 為振幅, 是角頻率, 為初相位。正弦函數(shù)為一周期信號(hào)如下圖1所示:圖1 正弦波2.2.2

13、方波方波函數(shù)是我們常用且所熟知的簡(jiǎn)單波形函數(shù),做脈沖等,其表示形式如下: (2)方波波形如下:圖2 圖形當(dāng)方波下半段幅值為0時(shí),就為矩形波,一個(gè)原理,所以不再贅述矩形波。2.2.3鋸齒波鋸齒波如圖3所示:圖3 鋸齒波圖形2.2.4三角波三角波波形如下圖所示:圖42.3系統(tǒng)的設(shè)計(jì)思路 第三章 元器件介紹3.1單片機(jī)AT89C513.1.1基本組成AT89C51內(nèi)部結(jié)構(gòu)AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。AT89C20

14、51是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。主要特性: 與MCS-51 兼容 4K字節(jié)可編程閃爍存儲(chǔ)器 壽命:1000寫/擦循環(huán) 數(shù)據(jù)保留時(shí)間:10年 全靜態(tài)工作:0Hz-24Hz 三級(jí)程序存儲(chǔ)器鎖定 128*8位內(nèi)部RAM 32可編程I/O線 兩個(gè)16位定時(shí)器/計(jì)數(shù)器 5個(gè)中斷源 可編程串行通道 低功耗的閑置和掉電模式 片內(nèi)振蕩器和時(shí)鐘電路 管腳說(shuō)明: VCC:供電電壓 GND:接地 P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收

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

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

17、的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示: 口管腳 備選功能 P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 /INT0(外部中斷0)單片機(jī)引腳圖3.2數(shù)模轉(zhuǎn)換器DAC0832 DAC0832是一個(gè)8位的D/A轉(zhuǎn)換器,為DAC0830的一種。DAC0832內(nèi)部主要由8為輸入寄存器、8位DAC寄存器、8位D/A轉(zhuǎn)換器和控制邏輯電路組成。由于DAC0832與單片機(jī)接口方便,其轉(zhuǎn)換與控制較易實(shí)現(xiàn),所以在實(shí)際工作中有其重要的作用,使用的也較為頻繁。其內(nèi)部結(jié)構(gòu)及引腳圖如圖所示。 DAC0832的內(nèi)部結(jié)構(gòu) DAC0832的引腳圖 DAC0832是D/A轉(zhuǎn)換

18、器的一類,屬電流型,所以后要跟著I/V轉(zhuǎn)換。數(shù)字輸入端可以有單緩沖、雙緩沖或直通方式輸入。當(dāng)引腳、直接接地時(shí),ILE接電源,DAC0832處于直通工作方式。這種狀態(tài)下,有輸入就立即有輸出,處理方式簡(jiǎn)單,但只能通過(guò)獨(dú)立的I/O接口連接。當(dāng)連接ILE、和引腳,使得兩鎖存器分別工作在直通與受控狀態(tài),或者兩個(gè)同事被控制,則DAC0832處于單緩沖工作方式1。只要數(shù)據(jù)DAC0832寫入8位輸入鎖存器,就立即開始轉(zhuǎn)換。雙緩沖方式即將對(duì)8位DAC寄存器與對(duì)鎖存器的控制分開進(jìn)行,占用的I/O口相對(duì)較大。DAC0832結(jié)構(gòu):(1) D0D7:8位數(shù)據(jù)輸入線,TTL電平,有效時(shí)間應(yīng)大于90ns(否則鎖存器的數(shù)據(jù)會(huì)

19、出錯(cuò));(2) ILE:數(shù)據(jù)鎖存允許控制信號(hào)輸入線,高電平有效;(3)CS:片選信號(hào)輸入線(選通數(shù)據(jù)鎖存器),低電平有效;(4)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ù)鎖存;(5)XFER:數(shù)據(jù)傳輸控制信號(hào)輸入線,低電平有效,負(fù)脈沖(脈寬應(yīng)大于500ns)有效;(6) WR2:DAC寄存器選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由WR2、XFER的邏輯組合產(chǎn)生LE2,當(dāng)LE2為高電平時(shí),DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負(fù)跳

20、變時(shí)將數(shù)據(jù)鎖存器的內(nèi)容打入DAC寄存器并開始D/A轉(zhuǎn)換。(7)IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化;(8)IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù);(9)Rfb:反饋信號(hào)輸入線,改變Rfb端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度;(10) Vcc:電源輸入端,Vcc的范圍為+5V+15V;(11) VREF:基準(zhǔn)電壓輸入線,VREF的范圍為-10V+10V;(12) AGND:模擬信號(hào)地(13 )DGND:數(shù)字信號(hào)地3.3示波器顯示下圖即為Proteus的示波器,下圖中右下腳帶有波形的為示波器原理圖,其中A和B分別為示波器的channel1(ch1)和channe

21、l2(ch2)輸入口,想用ch1就接A,同理,想用ch2就接B。 我們調(diào)試示波器時(shí),會(huì)有這樣的經(jīng)驗(yàn),波形水平漂移,一般首先判斷是否觸發(fā)信號(hào)的問(wèn)題。示波器只是簡(jiǎn)單地顯示與觸發(fā)時(shí)間相關(guān)的采樣內(nèi)容,它不停的觸發(fā),每次觸發(fā)時(shí),它都會(huì)采樣待測(cè)波形,將點(diǎn)放在屏幕上,不會(huì)試圖在各點(diǎn)之間畫線。如果觸發(fā)器和輸入波形是穩(wěn)定的,則一組點(diǎn)會(huì)緊密排列成一根與待測(cè)信號(hào)近似的波形曲線;如果由于垂直噪聲或時(shí)序抖動(dòng)等問(wèn)題,觸發(fā)時(shí)間或波形是不穩(wěn)定的,屏幕就會(huì)顯示一組點(diǎn)的漂移。3.4其他元器件說(shuō)明晶振電路使用12MHZ的晶體振蕩器,30PF的電容。復(fù)位電路采用10UF的電容,10K的電阻。波形指示區(qū)采用四個(gè)綠色LED燈。頻率顯示器

22、電路中除3個(gè)7段數(shù)碼管外還使用了3個(gè)三極管。波形信號(hào)的放大電路上采用了兩個(gè)放大器。主要元器件列表:原件名稱備注元件名稱備注單片機(jī)AT89C51LED燈數(shù)模轉(zhuǎn)換器DAC0832運(yùn)算放大器鎖存器74LS373三極管NPN并行接口芯片8255A晶振12MH示波器7段數(shù)碼管共陰極第四章 硬件設(shè)計(jì)4.1工作原理 本系統(tǒng)由單片機(jī)AT89C51對(duì)不同的模塊進(jìn)行統(tǒng)一調(diào)配控制以達(dá)到設(shè)計(jì)目的。首先是輸入模塊,為節(jié)省引腳,此處設(shè)計(jì)為矩陣鍵盤。軟件選用反轉(zhuǎn)法掃描。此功能由P口控制。數(shù)據(jù)讀入后,經(jīng)單片機(jī)程序分析,分別控制三個(gè)輸出部分:.四個(gè)LED燈,通過(guò)其亮滅顯示當(dāng)前輸出的波形類型,此功能由P3.0、P3.1、P3.3

23、、P3.4四個(gè)引腳控制;三個(gè)共陰極數(shù)碼顯示管,用以顯示當(dāng)前波形的頻率。示波器。P0口分時(shí)復(fù)用,控制數(shù)碼管顯示后對(duì)數(shù)模轉(zhuǎn)換器DAC0832輸出波形數(shù)據(jù),信號(hào)經(jīng)放大電路放大,然后送至示波器顯示。外圍原件此處省略不講,軟件部分見下章。4.2單片機(jī)及外圍電路設(shè)計(jì)如圖所示,晶振頻率為12MHz,電容C1、C2均為10uF。復(fù)位電路中,電容C3的作用是在按鈕按下時(shí)儲(chǔ)存電能,電阻R11用作在按鈕斷開時(shí)保護(hù)電路。P3.2口接高電平和按鈕,用來(lái)實(shí)現(xiàn)外部中斷的下降沿觸發(fā)。4.3輸入模塊設(shè)計(jì)輸入以按鍵方式輸入,在51單片機(jī)中,按鍵方式有兩種:獨(dú)立式按鍵和矩陣式按鍵。4.3.1獨(dú)立式按鍵獨(dú)立式按鍵是直接用I/O口線構(gòu)

24、成的單個(gè)按鍵電路,其特點(diǎn)是每個(gè)按鍵單獨(dú)占用一根I/O口線,每個(gè)按鍵的工作不會(huì)影響其它I/O口線的狀態(tài)。 獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,但每個(gè)按鍵必須占用一根I/O口線,因此,在按鍵較多時(shí),I/O口線浪費(fèi)較大,不宜采用。4.3.2 矩陣式鍵盤 I/O端線分為行線和列線,按鍵跨接在行線和列線上,按鍵按下時(shí),行線與列線發(fā)生短路。 特點(diǎn):占用I/O端線較少; 軟件結(jié)構(gòu)教復(fù)雜。適用于按鍵較多的場(chǎng)合。 矩陣式鍵盤中,行、列線分別連接到按鍵開關(guān)的兩端,行線通過(guò)上拉電阻接到5V上。當(dāng)無(wú)鍵按下時(shí),行線處于高電平狀態(tài);當(dāng)有鍵按下時(shí),行、列線將導(dǎo)通,此時(shí),行線電平將由與此行線相連的列線電平?jīng)Q定。這是識(shí)別按鍵

25、是否按下的關(guān)鍵。然而,矩陣鍵盤中的行線、列線和多個(gè)鍵相連,各按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,因此,必須將行線、列線信號(hào)配合起來(lái)作適當(dāng)處理,才能確定閉合鍵的位置。按鍵按下時(shí),與此鍵相連的行線與列線導(dǎo)通,行線在無(wú)鍵按下時(shí)處在高電平。顯然,如果讓所有的列線也處在高電平,那么,按鍵按下與否不會(huì)引起行線電平的變化,因此,必須使所有列線處在低電平。只有這樣,當(dāng)有鍵按下時(shí),該鍵所在的行電平才會(huì)由高電平變?yōu)榈碗娖?。CPU根據(jù)行電平的變化,便能判定相應(yīng)的行有鍵按下。8號(hào)鍵按下時(shí),第2行一定為低電平。然而,第2行為低電平時(shí),能否肯定是8號(hào)鍵按下呢? 回答是否定的,因?yàn)?、10、11

26、號(hào)鍵按下,同樣會(huì)使第2行為低電平。為進(jìn)一步確定具體鍵,不能使所有列線在同一時(shí)刻都處在低電平,可在某一時(shí)刻只讓一條列線處于低電平,其余列線均處于高電平,另一時(shí)刻,讓下一列處在低電平,依此循環(huán),這種依次輪流每次選通一列的工作方式稱為鍵盤掃描。采用鍵盤掃描后,再來(lái)觀察8號(hào)鍵按下時(shí)的工作過(guò)程,當(dāng)?shù)?列處于低電平時(shí),第2行處于低電平,而第1、2、3列處于低電平時(shí),第2行卻處在高電平,由此可判定按下的鍵應(yīng)是第2行與第0列的交叉點(diǎn),即8號(hào)鍵。 為節(jié)省接口,鍵盤設(shè)計(jì)為4*4矩陣鍵盤,通過(guò)P1口的高四位和低四位分別對(duì)鍵盤的行和列進(jìn)行掃描,從而檢測(cè)出按下的鍵。4.5顯示模塊設(shè)計(jì)波形選擇此處為設(shè)計(jì)要求外的第二處創(chuàng)新

27、點(diǎn),為了告訴操作者示波器當(dāng)前顯示波的波形,我采用了四個(gè)LED燈對(duì)相應(yīng)的波形進(jìn)行指示,通過(guò)觀察燈的亮滅就能加以區(qū)分。波形顯示此處是整個(gè)系統(tǒng)的第二核心,當(dāng)P0口對(duì)頻率顯示信號(hào)輸出完畢后,數(shù)模轉(zhuǎn)換器開關(guān)打開,P0開始為其輸送波形信號(hào)。輸入的信號(hào)經(jīng)功率放大器放大后送至示波器顯示。4.6系統(tǒng)硬件設(shè)計(jì)圖第五章 軟件設(shè)計(jì)5.1程序分析本設(shè)計(jì)采用簡(jiǎn)單方便的C語(yǔ)言編寫程序。為了使編程時(shí)思路清晰,采用模塊化的編寫方式,即分功能編寫子程序,再由主函數(shù)根據(jù)需要依次調(diào)用。按照思路,程序進(jìn)入主函數(shù)后需先對(duì)要用到的外部中斷和定時(shí)計(jì)數(shù)器進(jìn)行初始化,然后進(jìn)入波形輸出的無(wú)限循環(huán)中,在此過(guò)程中由中斷系統(tǒng)對(duì)輸出進(jìn)行控制,首先程序控制

28、P1口掃描鍵盤,重新輸入波形和頻率的信息,輸入的數(shù)據(jù)經(jīng)程序處理后輸出數(shù)據(jù)送至LED波形指示燈和數(shù)碼管頻率顯示器對(duì)輸入信息進(jìn)行顯示。之后P0口為數(shù)模轉(zhuǎn)換器輸送波形數(shù)據(jù),使示波器顯示波形。5.2程序流程圖5.3程序設(shè)計(jì)包括主函數(shù)初始化程序:延時(shí)程序:因?yàn)镃語(yǔ)言編寫的程序必須經(jīng)過(guò)編譯才能應(yīng)用于單片機(jī),而不同的語(yǔ)句編譯后指令的周期不確定,故延時(shí)函數(shù)不宜使用簡(jiǎn)單的for語(yǔ)句或while語(yǔ)句。本處使用單片機(jī)的定時(shí)計(jì)數(shù)器計(jì)時(shí),在很大程度上提高了延時(shí)時(shí)間的精準(zhǔn)性。 鍵盤輸入程序:本處使用鍵盤的掃描方法為反轉(zhuǎn)法,其原理是給端口賦值兩次,通過(guò)檢測(cè)兩次的結(jié)果而得到按鍵的信息。例如:1.給P1口賦值0x0f,即000

29、01111,假設(shè)第一個(gè)鍵按下了,則這時(shí)P1口的實(shí)際值為00001110; 2.給P1口再賦值0xf0,即11110000,如果第一個(gè)鍵按下了,則這時(shí)P1口的實(shí)際值為11100000; 3.把兩次P1口的實(shí)際值相加得11101110,即0xee。 由此我們便得到了按下第一個(gè)鍵時(shí)所對(duì)應(yīng)的數(shù)值0xee,以此類推可得出其他15個(gè)按鍵對(duì)應(yīng)的數(shù)值,有了這種對(duì)應(yīng)關(guān)系,矩陣鍵盤編程問(wèn)題也就解決了,也就是程序的算法已經(jīng)有了。波形函數(shù)具體程序如下:#include#include#define DAC0832 XBYTE0x0200#define sled1 XBYTE0x0100#define sled2 XB

30、YTE0x0101#define sled3 XBYTE0x0102#define sled XBYTE0x0103#define uchar unsigned char#define uint unsigned intuchar input();uint f;sbit p30=P30;sbit p31=P31;sbit p33=P33;sbit p34=P34;sbit p35=P35;sbit p36=P36;sbit p37=P37;uchar old; uchar a4;uchar k=0;uchar code smg=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7

31、d,0x07,0x7f,0x6f,0x39,0x3e,0x00; uchar code table=0xe7,0xeb,0xed,0xee,0xd7,0xdb,0xdd,0xde,0xb7,0xbb,0xbd,0xbe,0x77,0x7b,0x7d,0x7e; uchar code table2= 0x80,0x83,0x85,0x88,0x8A,0x8D,0x8F,0x92, 0x94,0x97,0x99,0x9B,0x9E,0xA0,0xA3,0xA5, 0xA7,0xAA,0xAC,0xAE,0xB1,0xB3,0xB5,0xB7, 0xB9,0xBB,0xBD,0xBF,0xC1,0x

32、C3,0xC5,0xC7, 0xC9,0xCB,0xCC,0xCE,0xD0,0xD1,0xD3,0xD4, 0xD6,0xD7,0xD8,0xDA,0xDB,0xDC,0xDD,0xDE, 0xDF,0xE0,0xE1,0xE2,0xE3,0xE3,0xE4,0xE4, 0xE5,0xE5,0xE6,0xE6,0xE7,0xE7,0xE7,0xE7, 0xE7,0xE7,0xE7,0xE7,0xE6,0xE6,0xE5,0xE5, 0xE4,0xE4,0xE3,0xE3,0xE2,0xE1,0xE0,0xDF, 0xDE,0xDD,0xDC,0xDB,0xDA,0xD8,0xD7,0xD6,

33、 0xD4,0xD3,0xD1,0xD0,0xCE,0xCC,0xCB,0xC9, 0xC7,0xC5,0xC3,0xC1,0xBF,0xBD,0xBB,0xB9, 0xB7,0xB5,0xB3,0xB1,0xAE,0xAC,0xAA,0xA7, 0xA5,0xA3,0xA0,0x9E,0x9B,0x99,0x97,0x94, 0x92,0x8F,0x8D,0x8A,0x88,0x85,0x83,0x80, 0x7D,0x7B,0x78,0x76,0x73,0x71,0x6E,0x6C, 0x69,0x67,0x65,0x62,0x60,0x5D,0x5B,0x59, 0x56,0x54,0x

34、52,0x4F,0x4D,0x4B,0x49,0x47, 0x45,0x43,0x41,0x3F,0x3D,0x3B,0x39,0x37, 0x35,0x34,0x32,0x30,0x2F,0x2D,0x2C,0x2A, 0x29,0x28,0x26,0x25,0x24,0x23,0x22,0x21, 0x20,0x1F,0x1E,0x1D,0x1D,0x1C,0x1C,0x1B, 0x1B,0x1A,0x1A,0x1A,0x19,0x19,0x19,0x19, 0x19,0x19,0x19,0x19,0x1A,0x1A,0x1A,0x1B, 0x1B,0x1C,0x1C,0x1D,0x1D,

35、0x1E,0x1F,0x20, 0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29, 0x2A,0x2C,0x2D,0x2F,0x30,0x32,0x34,0x35, 0x37,0x39,0x3B,0x3D,0x3F,0x41,0x43,0x45, 0x47,0x49,0x4B,0x4D,0x4F,0x52,0x54,0x56, 0x59,0x5B,0x5D,0x60,0x62,0x65,0x67,0x69, 0x6C,0x6E,0x71,0x73,0x76,0x78,0x7B,0x7D;void chushihua()/初始化 sled=0x80;IT0=1; E

36、X0=1; EA=1; PX0=1; TMOD=0x20; TR1=1; void delay()/延時(shí) while(!TF1); TF1=0; void delayms(uint j)uchar mm; while(j-) for(mm=0;mm216;mm+); void xshz(uchar h,uchar m,uchar p)/顯示子程序 sled1=smgh; sled2=smgm; sled3=smgp; void xsh()/顯示 if(k=3) xshz(a0,a1,a2); if(k=2) xshz(12,a0,a1); if(k=1) xshz(12,12,a0); if(

37、k=0) xshz(10,0,11); uchar input() /輸入 uchar hang,lie,rr;rr=0; P1=0xf0; if(P1&0xf0)!=0xf0) delayms(20); if(P1&0xf0)!=0xf0) hang=P1&0xf0; P1=0x0f; lie=P1&0x0f; rr=hang+lie; if(rr=table0) return(33); else if(rr=table1) return(44); else if(rr=table4) return(1); else if(rr=table5) return(2); else if(rr=t

38、able2) return(55); else if(rr=table3) return(66); else if(rr=table6) return(3); else if(rr=table7) return(0); else if(rr=table8) return(4); else if(rr=table9) return(5); else if(rr=table10) return(6); else if(rr=table11) return(11); else if(rr=table12) return(7); else if(rr=table13) return(8); else

39、if(rr=table14) return(9); else if(rr=table15) return(22); else return(12); void fang()/方波 uchar i; DAC0832=0; for(i=0;i128;i+) delay(); DAC0832=0xff; for(i=0;i128;i+) delay(); void jvchi()/鋸齒波 unsigned char x; for(x=0;x255;x+) DAC0832=x; delay();void tran()/三角波 unsigned char y; for(y=0;y0;y-) DAC0832=y; delay(); void sin()/正弦波 unsigned char mm; for(mm=0;mm255;mm+) DAC0832=table2mm;delay();void zhongduan() interrupt 0 /中斷 uchar e,f=0; f=0; k=0; while(input()=12); a0=input(); if(a0=33) p30=0;p31=1;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論