函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)(12864實(shí)現(xiàn)動(dòng)態(tài)波形顯示)_第1頁(yè)
函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)(12864實(shí)現(xiàn)動(dòng)態(tài)波形顯示)_第2頁(yè)
函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)(12864實(shí)現(xiàn)動(dòng)態(tài)波形顯示)_第3頁(yè)
函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)(12864實(shí)現(xiàn)動(dòng)態(tài)波形顯示)_第4頁(yè)
函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)(12864實(shí)現(xiàn)動(dòng)態(tài)波形顯示)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(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è)計(jì)(論文)任務(wù)書 電氣與電子工程學(xué)院 系 自動(dòng)化 專業(yè) 132 班級(jí) 一、 課程設(shè)計(jì)(論文)題目 簡(jiǎn)易信號(hào)發(fā)生器的設(shè)計(jì) 二、 課程設(shè)計(jì)(論文)工作自 2016 年 1 月 5 日起至 2016 年 1 月 14 日止。三、 課程設(shè)計(jì)(論文)的內(nèi)容要求: 課程設(shè)計(jì)不僅僅要求學(xué)生完成所規(guī)定的題目要求,同時(shí)還要培養(yǎng)學(xué)生良好的科學(xué)態(tài)度和嚴(yán)謹(jǐn)?shù)脑O(shè)計(jì)習(xí)慣。課程設(shè)計(jì)報(bào)告要求內(nèi)容如下: (1)設(shè)計(jì)思想和設(shè)計(jì)說(shuō)明 (2)硬件原理框圖 (3)硬件原理圖與軟件配合介紹 (4)程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的單元分配 (5)程序流程圖 (6)系統(tǒng)功能描述 (7)設(shè)計(jì)調(diào)試過(guò)程總結(jié) (8)附錄里面包括:芯片資料、源程序清單

2、和符合制圖規(guī)范的硬件原理圖的圖紙。 設(shè)計(jì)要求內(nèi)容: 用/實(shí)現(xiàn)正弦信號(hào),三角波信號(hào),方波信號(hào)的輸出,并且在上顯示出當(dāng)前波形。要求輸出信號(hào)的頻率和幅度可調(diào)。 設(shè)計(jì)內(nèi)容: (1)滿足設(shè)計(jì)要求內(nèi)容。 (2)擴(kuò)展鋸齒波波形輸出。 (3)漢字顯示當(dāng)前波形形狀與當(dāng)前頻率的大小 學(xué)生簽名 年 月 日課程設(shè)計(jì)(論文)評(píng)審意見(1)題目復(fù)雜程度: 復(fù)雜( )、較復(fù)雜( )、一般( )、簡(jiǎn)單( )(2)總體方案的選擇是否正確:正確()、較正確()、欠正確()、不正確() (3) 系統(tǒng)能否滿足任務(wù)要求:滿足()、較滿足()、欠滿足()、不滿足() (4) 元器件選擇是否合理:合理()、較合理()、欠合理()、不太合理

3、() (5) 學(xué)習(xí)實(shí)踐態(tài)度:好()、較好()、一般()、不太好() (6) 獨(dú)立工作能力:強(qiáng)()、較強(qiáng)()、一般()、較差() (7) 回答問(wèn)題是否正確:正確()、較正確()、基本正確()、大多不正確() (8) 圖表是否符合標(biāo)準(zhǔn):符合()、較符合()、基本符合()、大多不符合() (9) 撰寫是否規(guī)范整潔:規(guī)范整潔()、較規(guī)范()、欠規(guī)范()、不太規(guī)范() 總評(píng)成績(jī):優(yōu)( )、良( )、中( )、及格( )、不及格( )評(píng)閱人 職稱副教授 2016 年 1 月 日目錄一、課程設(shè)計(jì)及要求及目的2二、設(shè)計(jì)思想及設(shè)計(jì)說(shuō)明21 函數(shù)發(fā)生器模塊22 LCD液晶顯示模塊2三、硬件設(shè)計(jì)3四、程序設(shè)計(jì)流程3

4、五、系統(tǒng)模塊化設(shè)計(jì)41、函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)41.1、DAC0832的介紹41.2、發(fā)生器的功能設(shè)計(jì)51.3、函數(shù)發(fā)生器的外圍電路組成62、液晶顯示模塊62.1 AMPIRE128X64液晶顯示屏的原理介紹62.2波形漢字顯示程序設(shè)計(jì)83、中斷系統(tǒng)的使用10六、程序字節(jié)分配10七、功能描述與設(shè)計(jì)調(diào)試總結(jié)111、功能描述112、設(shè)計(jì)調(diào)試總結(jié)11八 設(shè)計(jì)總結(jié)13九、參考文獻(xiàn)14附錄1:程序代碼15附錄2:設(shè)計(jì)圖紙2929一、課程設(shè)計(jì)及要求及目的通過(guò)課程設(shè)計(jì)環(huán)節(jié)加深對(duì)單片機(jī)原理及應(yīng)用技術(shù)的理解,提高理論結(jié)合實(shí)踐的能力,提高單片機(jī)系統(tǒng)設(shè)計(jì)和開發(fā)的能力,初步學(xué)習(xí)一個(gè)完整的單片機(jī)系統(tǒng)的研發(fā)過(guò)程,并培養(yǎng)嚴(yán)謹(jǐn)

5、細(xì)致的科研態(tài)度。熟悉掌握常用的單片機(jī)設(shè)計(jì)軟件以及一些網(wǎng)上個(gè)人研發(fā)的實(shí)用小軟件。例如51單片機(jī)最常用keil和protues軟件以及個(gè)人研發(fā)的單片機(jī)小精靈、漢字取模軟件、串口助手等。要求設(shè)計(jì)一個(gè)單片機(jī)應(yīng)用系統(tǒng),利用keil和proteus軟件完成系統(tǒng)軟硬件的設(shè)計(jì)及模擬調(diào)試,在有條件的情況下完成對(duì)事物的操作。本文設(shè)計(jì)了一種以STC89C51為核心的簡(jiǎn)易信號(hào)產(chǎn)生電路,該電路使用DAC0832數(shù)模轉(zhuǎn)換器件對(duì)單片機(jī)輸出的數(shù)字量進(jìn)行轉(zhuǎn)換,使用數(shù)組定義的方式完成不同波形的輸出,并通過(guò)外部中斷實(shí)現(xiàn)對(duì)輸出波形形狀和波形頻率等的控制,該設(shè)計(jì)以LCD16824液晶顯示屏對(duì)波形的類別、形狀、頻率等信息以中文或圖形的方

6、式輸出顯示。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)設(shè)計(jì)具有體積小,性能穩(wěn)定,反應(yīng)速度快,可以迅速簡(jiǎn)便的實(shí)現(xiàn)多種波形輸出的優(yōu)點(diǎn)。二、設(shè)計(jì)思想及設(shè)計(jì)說(shuō)明該設(shè)計(jì)主要由信號(hào)發(fā)生器的設(shè)計(jì)和LCD液晶顯示兩部分組成,其中,信號(hào)發(fā)生器的設(shè)計(jì)為本設(shè)計(jì)的重點(diǎn)內(nèi)容,但設(shè)計(jì)過(guò)程較為簡(jiǎn)單。LCD液晶顯示為本設(shè)計(jì)的輔助模塊,使的使用者對(duì)該信號(hào)發(fā)生器更容易操作,是本設(shè)計(jì)過(guò)程中耗時(shí)最多的階段,可以說(shuō)是本設(shè)計(jì)的難點(diǎn)。1 函數(shù)發(fā)生器模塊 該模塊使用DA轉(zhuǎn)換芯片DAC0832對(duì)單片機(jī)輸出的8位二進(jìn)制的數(shù)字量進(jìn)行數(shù)字到模擬信號(hào)的轉(zhuǎn)化,由于DAC0832為電流型輸出,所以在輸出端口使用一級(jí)運(yùn)放LM324實(shí)現(xiàn)將電流輸出轉(zhuǎn)為電壓輸出,之后使用二級(jí)運(yùn)放實(shí)現(xiàn)

7、對(duì)輸出信號(hào)的放大,使輸出波形的幅值可調(diào),在設(shè)計(jì)的端口使用RC低通濾波器對(duì)輸出波形進(jìn)行濾波,使所得到的波形更加平滑。在軟件設(shè)計(jì)方面,為了與LCD顯示屏聯(lián)合使用,該設(shè)計(jì)沒(méi)有使用正弦、方波、三角波、鋸齒波的波形函數(shù)作為輸出數(shù)字量,而是使用64個(gè)單元的數(shù)組定義每一個(gè)波形,由此,也可以更加方便的增加其他波形的輸出。2 LCD液晶顯示模塊該模塊使用protues中提供的AMPIRE128X64液晶顯示屏,該顯示屏無(wú)中英文字庫(kù),所以設(shè)計(jì)過(guò)程中需要對(duì)自己需要的字符和漢字進(jìn)行取模,本設(shè)計(jì)將該顯示屏分為兩部分,整屏幕的前四分之一用于顯示“函數(shù)”“正弦”“方波”“三角”“鋸齒”“頻率”和峰峰值等信息。后面的部分用于

8、顯示輸出波形的形狀。該模塊的關(guān)鍵點(diǎn)在于AMPIRE128X64這款液晶顯示屏的控制方法、矩陣排列方式以及與市場(chǎng)上常見的LCD16824的區(qū)別于共性和區(qū)別。共性點(diǎn)在于控制、讀寫等指令的相同,以及該端口的強(qiáng)大的鎖存功能。區(qū)別主要在于該12864將整個(gè)屏幕分為兩塊,分別使用外部控制信號(hào)CS1與CS2選擇開通。三、硬件設(shè)計(jì)該設(shè)計(jì)的硬件連接圖如圖一所示,箭頭線上為管腳的連接方式。具體的連接方式見附錄1:簡(jiǎn)易信號(hào)發(fā)生器的設(shè)計(jì)圖紙。圖一 系統(tǒng)硬件連接簡(jiǎn)圖四、程序設(shè)計(jì)流程 該程序的設(shè)計(jì)流程圖如圖二所示,系統(tǒng)首先將輸出波形定義為正弦波輸出,且頻率定義為400HZ,并將該信息在LCD液晶顯示頻上顯示出來(lái),之后進(jìn)入

9、主函數(shù),并不斷調(diào)用正弦波的數(shù)組使之按照正弦波規(guī)律變化,經(jīng)過(guò)外部DA轉(zhuǎn)化實(shí)現(xiàn)正弦波輸出。與此同時(shí),外部中斷隨時(shí)可以打破主循環(huán),通過(guò)外部中斷0將其他波形定義為當(dāng)前輸出波形,每按一次,波形變化一次,循環(huán)往復(fù),并在該中斷服務(wù)程序中改變LCD顯示波形、頻率等信息。而在外部中斷1中,只改變波形頻率,只需要刷新頻率顯示部分即可。整個(gè)程序設(shè)計(jì)代碼在附錄2中:程序代碼圖二 程序流程圖五、系統(tǒng)模塊化設(shè)計(jì)1、函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)1.1、DAC0832的介紹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

10、轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。其內(nèi)部結(jié)構(gòu)如圖三所示圖三 DAC0832的結(jié)構(gòu)圖 該芯片有三種工作方式,分別為但緩沖、雙緩沖和直通方式。在該控制系統(tǒng)中使用其直通方式。接線方式為將數(shù)據(jù)口與單片機(jī)P1口相連、XREF、WR2、WR1、CS控制端口全部接地,ILE接高電平。在這種接線方式下,只要數(shù)據(jù)端口接收到數(shù)據(jù)立刻就能轉(zhuǎn)化為模擬信號(hào)輸出,使得系統(tǒng)的實(shí)時(shí)性好,響應(yīng)速度快。1.2、發(fā)生器的功能設(shè)計(jì)89C51是整個(gè)波形發(fā)生器的核心部分,通過(guò)程序的編寫和執(zhí)行,產(chǎn)生各種各樣的信號(hào),并從按鍵接收改變數(shù)據(jù),進(jìn)行各種功能波形的轉(zhuǎn)換。當(dāng)數(shù)字信號(hào)電路到達(dá)轉(zhuǎn)換電路,將其轉(zhuǎn)

11、換成模擬信號(hào)也就是所需要的輸出波形。波形的輸出通過(guò)波形數(shù)據(jù)表完成,該波形數(shù)據(jù)表是將信號(hào)一個(gè)周期等間距地分離成64個(gè)點(diǎn),儲(chǔ)存在單片機(jī)得ROM內(nèi)。這些數(shù)據(jù)可以通過(guò)MATLAB軟件生成,例如正弦表,MATLAB生成的程序如下:x=0:2*pi/64:2*pi; y=round(sin(x)*127)+128 (1)該函數(shù)信號(hào)發(fā)生部分的主要程序段如下所示,P2=*(which_bx+kk); /which_bx選擇哪一種波形顯示,為這種波形數(shù)據(jù)的首地址 kk+;if(kk=64) kk=0; while(delay_time) delay_time-;通過(guò)調(diào)節(jié)delay_time的大小可以調(diào)節(jié)輸出頻率

12、的大小,經(jīng)過(guò)實(shí)際運(yùn)行測(cè)得當(dāng)delay_time為0時(shí),運(yùn)行一次的時(shí)間為,則頻率為400hz,這是該函數(shù)信號(hào)發(fā)生器的最大輸出頻率。1.3、函數(shù)發(fā)生器的外圍電路組成該部分使用一級(jí)運(yùn)放實(shí)現(xiàn)對(duì)輸出電流轉(zhuǎn)為輸出電壓,并使用二級(jí)運(yùn)放經(jīng)過(guò)滑動(dòng)變阻器放大輸出電壓,使得電壓可調(diào),最后通過(guò)低通濾波器RC網(wǎng)絡(luò)進(jìn)行濾波,實(shí)現(xiàn)波形的輸出。選擇二級(jí)運(yùn)放的前置電阻為5K,滑動(dòng)變阻器的最大阻值為10K,則最大可以將輸出的峰值電壓5V變?yōu)?0V。電壓的調(diào)節(jié)范圍是(010V)。該模塊的電路圖如圖所示。圖四 函數(shù)發(fā)生器的外圍電路組成2、液晶顯示模塊2.1 AMPIRE128X64液晶顯示屏的原理介紹該AMPIRE128*64液晶顯

13、示頻不自帶中英文字庫(kù),是一種圖形點(diǎn)陣液晶顯示器,它主要由行主要由行驅(qū)動(dòng)器/列驅(qū)動(dòng)器及128×64全點(diǎn)陣液晶顯示器組成??赏瓿蓤D形顯示,也可以顯示8×4個(gè)(16×16點(diǎn)陣)漢字。其管腳定義表一所示表一 AMPIRE128X64的管腳定義管腳名稱LEVER管腳功能描述VSS0電源地VDD+5.0V電源電壓V0液晶顯示器驅(qū)動(dòng)電壓D/I(RS)H/LD/I=“H”,表示DB7DB0為顯示數(shù)據(jù)D/I=“L”,表示DB7DB0為顯示指令數(shù)據(jù)R/WH/LR/W=“H”,E=“H”數(shù)據(jù)被讀到DB7DB0R/W=“L”,E=“HL”數(shù)據(jù)被寫到IR或DREH/LR/W=“L”,E信號(hào)

14、下降沿鎖存DB7DB0R/W=“H”,E=“H”DDRAM數(shù)據(jù)讀到DB7DB0DB0DB7H/L數(shù)據(jù)線CS1H/LH:選擇芯片(右半屏)信號(hào)CS2H/LH:選擇芯片(左半屏)信號(hào)RETH/L復(fù)位信號(hào),低電平復(fù)位VOUT-10VLCD驅(qū)動(dòng)負(fù)電壓LED+-LED背光板電源LED-LED背光板電源在使用12864LCD前先必須了解以下功能器件才能進(jìn)行編程。12864內(nèi)部功能器件及相關(guān)功能如下:1. 指令寄存器(IR) IR是用于寄存指令碼,與數(shù)據(jù)寄存器數(shù)據(jù)相對(duì)應(yīng)。當(dāng)D/I=0時(shí),在E信號(hào)下降沿的作用下,指令碼寫入IR。2數(shù)據(jù)寄存器(DR) DR是用于寄存數(shù)據(jù)的,與指令寄存器寄存指令相對(duì)應(yīng)。當(dāng)D/I=

15、1時(shí),在下降沿作用下,圖形顯示數(shù)據(jù)寫入DR,或在E信號(hào)高電平作用下由DR讀到DB7DB0數(shù)據(jù)總線。DR和DDRAM之間的數(shù)據(jù)傳輸是模塊內(nèi)部自動(dòng)執(zhí)行的。3忙標(biāo)志:BF BF標(biāo)志提供內(nèi)部工作情況。BF=1表示模塊在內(nèi)部操作,此時(shí)模塊不接受外部指令和數(shù)據(jù)。BF=0時(shí),模塊為準(zhǔn)備狀態(tài),隨時(shí)可接受外部指令和數(shù)據(jù)。 利用STATUS READ指令,可以將BF讀到DB7總線,從檢驗(yàn)?zāi)K之工作狀態(tài)。4XY地址計(jì)數(shù)器 XY地址計(jì)數(shù)器是一個(gè)9位計(jì)數(shù)器。高3位是X地址計(jì)數(shù)器,低6位為Y地址計(jì)數(shù)器,XY地址計(jì)數(shù)器實(shí)際上是作為DDRAM的地址指針,X地址計(jì)數(shù)器為DDRAM的頁(yè)指針, Y地址計(jì)數(shù)器為DDRAM的Y地址指針

16、。 X地址計(jì)數(shù)器是沒(méi)有記數(shù)功能的,只能用指令設(shè)置。 Y地址計(jì)數(shù)器具有循環(huán)記數(shù)功能,各顯示數(shù)據(jù)寫入后,Y地址自動(dòng)加1,Y地址指針從0到63。5顯示數(shù)據(jù)RAM(DDRAM) DDRAM是存儲(chǔ)圖形顯示數(shù)據(jù)的。數(shù)據(jù)為1表示顯示選擇,數(shù)據(jù)為0表示顯示非選擇。6Z地址計(jì)數(shù)器 Z地址計(jì)數(shù)器是一個(gè)6位計(jì)數(shù)器,此計(jì)數(shù)器具備循環(huán)記數(shù)功能,它是用于顯示行掃描同步。當(dāng)一行掃描完成,此地址計(jì)數(shù)器自動(dòng)加1,指向下一行掃描數(shù)據(jù),RST復(fù)位后Z地址計(jì)數(shù)器為0。Z地址計(jì)數(shù)器可以用指令DISPLAY START LINE預(yù)置。因此,顯示屏幕的起始行就由此指令控制,即DDRAM的數(shù)據(jù)從哪一行開始顯示在屏幕的第一行。此模塊的DDRA

17、M共64行,屏幕可以循環(huán)滾動(dòng)顯示64行。12864LCD的指令系統(tǒng)有以下兩種,第一類是基本指令包括10組、第二類為擴(kuò)充指令。指令系統(tǒng)如下表所示:表二:(RE=0)基本指令指令                     指 令 碼功能RSR/WD7D6D5D4D3D2D1D0清除顯示000 0 0 0 0 0 0 1將DDRAM填滿"20H",并且設(shè)定DDRAM的地址計(jì)數(shù)器(AC)

18、到"00H"地址歸位000 0 0 0 0 0 1 X設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到"00H",并且將游標(biāo)移到開頭原點(diǎn)位置;這個(gè)指令不改變DDRAM 的內(nèi)容顯示狀態(tài)開/關(guān)000 0 0 0 1 D C BD=1: 整體顯示 ON C=1: 游標(biāo)ON B=1:游標(biāo)位置反白允許進(jìn)入點(diǎn)設(shè)定000 0 0 0 0 1 I/D S指定在數(shù)據(jù)的讀取與寫入時(shí),設(shè)定游標(biāo)的移動(dòng)方向及指定顯示的移位游標(biāo)或顯示移位控制000 0 0 1 S/C R/L X X設(shè)定游標(biāo)的移動(dòng)與顯示的移位控制位;這個(gè)指令不改變DDRAM 的內(nèi)容功能設(shè)定000 0 1 DL X RE X X

19、DL=0/1:4/8位數(shù)據(jù) RE=1: 擴(kuò)充指令操作 RE=0: 基本指令操作設(shè)定CGRAM地址000 1 AC5 AC4 AC3 AC2 AC1 AC0設(shè)定CGRAM 地址設(shè)定DDRAM地址001 0 AC5 AC4 AC3 AC2 AC1 AC0設(shè)定DDRAM 地址(顯示位址)第一行:80H87H,第二行:90H97H讀取忙標(biāo)志和地址01BF AC6 AC5 AC4 AC3 AC2 AC1 AC0讀取忙標(biāo)志(BF)可以確認(rèn)內(nèi)部動(dòng)作是否完成,同時(shí)可以讀出地址計(jì)數(shù)器(AC)的值寫數(shù)據(jù)到RAM10數(shù)據(jù)將數(shù)據(jù)D7D0寫入到內(nèi)部的RAM (DDRAM/CGRAM/IRAM/GRAM)讀出RAM的值1

20、1數(shù)據(jù)從內(nèi)部RAM讀取數(shù)據(jù)D7D0(DDRAM/CGRAM/IRAM/GRAM)2.2波形漢字顯示程序設(shè)計(jì)該模塊的電路原理圖如圖五所示,其中控制端口為P3口相連。圖五 顯示模塊電路圖顯示程序部分的組成包括基礎(chǔ)部分、輔助部分和顯示部分組成。用該部程序模塊組成如圖六所示圖六 顯示模塊的程序組成查看忙不忙,是當(dāng)lcd處于內(nèi)部運(yùn)行狀態(tài)的時(shí)候,此時(shí)忙不忙標(biāo)志位為0的時(shí)候,不接受外界寫入的數(shù)據(jù)和命令,因此在讀命令和數(shù)據(jù)之前必須先檢測(cè)lcd忙不忙,然后進(jìn)行命令控制與數(shù)據(jù)輸入。輔助部分的程序是對(duì)整個(gè)屏幕的顯示進(jìn)行選擇,清除等操作,為顯示程序提供輸入入口。AMPIRE128*64共計(jì)有8頁(yè),可以理解為8大行,每

21、大行有8小行,有2個(gè)半屏,每個(gè)半屏有0到第63列,總計(jì)有128列。即整個(gè)顯示屏為64*128個(gè)LED組成,在該設(shè)計(jì)中屏幕的占用情況如圖七所示。圖七12864的屏幕占用情況漢字的顯示包括顯示“函數(shù)”、“正弦”、“三角”、“方波”、“鋸齒”,“頻率”。英文的顯示有“HZ”、“Vp”以及數(shù)字的顯示(顯示頻率以及峰峰值)。由于該LCD自帶無(wú)字庫(kù),因此,需要對(duì)要顯示的部分進(jìn)行取模。按照12864的數(shù)據(jù)讀取是每一頁(yè)的第一行為低端口,第八行為高輸出口,且每次數(shù)據(jù)讀取之后自動(dòng)對(duì)列數(shù)加一,因此取模方式為從左到右、從上到下。設(shè)計(jì)中使用曉奇工作室制作的液晶漢字模提取軟件。波形的顯示程序顯示的波形為3/2個(gè)周期的波形

22、。由于定義的波形數(shù)組共計(jì)64個(gè)數(shù),正好占據(jù)整個(gè)屏幕的3/4,共計(jì)96列,每一個(gè)數(shù)對(duì)應(yīng)列,即每一列都有一個(gè)數(shù)據(jù)。由于該屏幕有64行,而模擬量最大為255,因此,每行代表4個(gè)大小,通過(guò)這種方式就可以使整個(gè)屏幕顯示出連續(xù)正常的波形。坐標(biāo)軸包括X、Y軸的繪制,該部分只要在理解12864顯示原理的基礎(chǔ)上就可以很輕松的畫出來(lái)。3、中斷系統(tǒng)的使用該設(shè)計(jì)使用外部中斷0來(lái)切換當(dāng)前顯示波形,使用外部中斷1來(lái)切換輸出頻率。巧妙的使用指針工具使得最初方案的代碼消減了一大半。中斷服務(wù)程序在切換完成波形和頻率的轉(zhuǎn)換之后分別對(duì)屏幕清屏處理再次顯示(波形切換)、刷新處理(頻率改變)。六、程序字節(jié)分配51單片機(jī)中片內(nèi)數(shù)據(jù)存儲(chǔ)器

23、共計(jì)有128個(gè)字節(jié),該設(shè)計(jì)中使用62.7個(gè)字節(jié)的數(shù)據(jù)存儲(chǔ)器空間。共有程序存儲(chǔ)器4KB=4096個(gè)字節(jié),該設(shè)計(jì)使用的程序存儲(chǔ)器空間為4000b,故滿足。無(wú)片外數(shù)據(jù)存儲(chǔ)器的使用。七、功能描述與設(shè)計(jì)調(diào)試總結(jié)1、功能描述該系統(tǒng)使用AT89C52為主控單元,通過(guò)其控制DAC0832進(jìn)行數(shù)模轉(zhuǎn)換,完成方波,正弦波,鋸齒波和三角波的輸出。其中鋸齒波是擴(kuò)展功能。通過(guò)液晶顯示屏12864對(duì)波形和頻率和峰峰值進(jìn)行顯示,以便于使用者的友好使用。并通過(guò)中斷進(jìn)行波形輸出與頻率的轉(zhuǎn)化。波形的峰峰值是通過(guò)外部電路設(shè)計(jì)的,波形漢字顯示是擴(kuò)展功能。技術(shù)參數(shù)。電壓調(diào)節(jié)范圍是010V,當(dāng)滑動(dòng)變阻器滑動(dòng)50%時(shí),理論值輸出電壓的峰峰

24、值為5V,虛擬示波器顯示為5.005V;當(dāng)滑動(dòng)變阻器滑動(dòng)100%時(shí),理論值輸出電壓的峰峰值為10V,虛擬示波器顯示為9.975V。故技術(shù)參數(shù)符合設(shè)計(jì)要求。該信號(hào)發(fā)生器的輸出波形頻率最大為400hz,頻率可調(diào),其設(shè)定頻率變化參數(shù)為表三所示。表三 調(diào)頻取值單位(Hz)400372325289260236217200186173單位(Hz)162153144137132124118113108104單位(Hz)100969389868481787674單位(Hz)70686665636260595754單位(HZ)5250484644434240-2、設(shè)計(jì)調(diào)試總結(jié)該設(shè)計(jì)過(guò)程中存在第一個(gè)障礙是波形的輸

25、出在峰值的地方出現(xiàn)急速下降,波形顯示不合理,在protues中的虛擬示波器顯示波形如八所示。八 調(diào)試過(guò)程中的系統(tǒng)波形經(jīng)過(guò)檢查發(fā)現(xiàn)錯(cuò)誤的根源在于一級(jí)運(yùn)放輸出口沒(méi)有經(jīng)過(guò)電阻直接接在了二級(jí)運(yùn)放的輸出端。經(jīng)過(guò)調(diào)整之后的數(shù)碼管顯示波形如圖九所示??梢姶藭r(shí)的波形已經(jīng)達(dá)到了理想的輸出效果。九 調(diào)整后的輸出波形設(shè)計(jì)過(guò)程中的第二個(gè)問(wèn)題是液晶顯示問(wèn)題,發(fā)現(xiàn)市場(chǎng)上普遍使用的12684與protues中所用的12684的顯示原理不太相同,尤其在分屏顯示與顯示寄存器的地址分布上。而讀寫控制時(shí)序大致相同。后來(lái)參考網(wǎng)上的protues中l(wèi)cd12684的圖形顯示程序,并對(duì)照說(shuō)明書對(duì)該部分有了認(rèn)識(shí),尤其是在頁(yè)地址與行地址,列

26、地址的問(wèn)題上,理解了lcd12684原理之后對(duì)寫起來(lái)后面的顯示程序部分就如魚得水的,原來(lái)以為還要兩三天才能解決,結(jié)果熬了會(huì)夜就寫完了。LCD顯示情況如圖十所示圖十12864波形顯示由后兩張圖可以看出,波形在變化時(shí)有不連續(xù)的地方,這也符合發(fā)生器本身的特點(diǎn),因此,未進(jìn)行連線處理。由此可知,該設(shè)計(jì)滿足設(shè)計(jì)要求性能可靠。八 設(shè)計(jì)總結(jié)九、參考文獻(xiàn)1徐春輝.單片微機(jī)原理及應(yīng)用M.北京:電子工業(yè)出版社,2013.2周潤(rùn)景,張麗娜.基于protues的電路及單片機(jī)系列設(shè)計(jì)與仿真M.北京:北京航空航天大學(xué)出版社,2006.3張毅剛,彭元喜,姜守達(dá)等.MCS-51單片機(jī)應(yīng)用設(shè)計(jì)M.哈爾濱:哈爾濱工業(yè)大學(xué)出版社.2

27、003.4附錄1:程序代碼#include <reg51.h>#include <math.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define lcdcol_add 0x40 #define page_add 0xb8sbit bx_adjust=P32; /函數(shù)發(fā)生器定義sbit pl_adjust=P33; /中斷輸入接口uchar bxxz=0,pl=0,delay_time=0,kk,pp; /為函數(shù)發(fā)生模塊提供中間變量uchar *whi

28、ch_bx,*which_bx2; /選擇哪一種波形uint pl_num;/* 12864LCD引腳定義 */sbit LCD_RS = P37; /寄存器選擇輸入 sbit LCD_RW = P36; /液晶讀/寫控制sbit LCD_EN = P35; /液晶使能控制sbit LCD_RST = P34; /液晶復(fù)位端口sbit LCD_CS1 = P30; /右半屏控制sbit LCD_CS2 = P31; /左半屏控制uchar code pinglv64= 0x40,0x7C,0x40,0xFF,0x48,0x6C,0x4A,0xF2, 0x12,0x1A,0xD6,0x12,0x

29、12,0xFB,0x12,0x00, 0x00,0x14,0xA4,0x44,0x04,0x24,0xB5,0x6E, 0x24,0x94,0x04,0x44,0xA6,0x14,0x00,0x00, 0x08,0x87,0x40,0x2F,0x10,0x0F,0x80,0x8F, 0x40,0x20,0x1F,0x20,0x40,0xCF,0x00,0x00, 0x08,0x09,0x08,0x08,0x09,0x09,0x09,0xFF, 0x09,0x09,0x0B,0x08,0x08,0x0D,0x08,0x00 ;uchar code hanshu64= 0x00,0xF0,0x00

30、,0x22,0x42,0x82,0x02,0xF2, 0x12,0x8A,0x46,0x62,0x00,0xF0,0x00,0x00, 0x10,0x92,0x54,0x30,0xFF,0x50,0x94,0x32, 0xD8,0x17,0x10,0x10,0xF0,0x18,0x10,0x00, 0x00,0xFF,0x40,0x48,0x44,0x52,0x60,0x5F, 0x40,0x42,0x44,0x4C,0x40,0xFF,0x00,0x00, 0x02,0x82,0x4E,0x33,0x22,0x52,0x8E,0x40, 0x23,0x14,0x08,0x16,0x61,0x

31、C0,0x40,0x00;uchar code zx64= 0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0xFE, 0x82,0x82,0x82,0xC2,0x83,0x02,0x00,0x00, 0x02,0xE2,0x22,0x22,0x3E,0x08,0x08,0x88, 0x49,0x3A,0x08,0x08,0x88,0x0C,0x08,0x00, 0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x7F, 0x40,0x40,0x40,0x40,0x40,0x60,0x40,0x00, 0x00,0x43,0x82,0x42,0x3E

32、,0x00,0x20,0x31, 0x29,0x25,0x23,0x21,0x30,0x60,0x00,0x00;uchar code jc64= 0x10,0x28,0xE7,0x24,0x24,0x24,0x00,0xFE, 0x92,0x92,0xF2,0x92,0x92,0xDF,0x82,0x00, 0x40,0x40,0x40,0x7E,0x40,0x40,0x40,0x7F, 0x44,0x44,0x46,0x44,0x40,0x60,0x40,0x00, 0x01,0x01,0x3F,0x11,0x49,0x25,0x18,0x07, 0xFC,0x44,0x47,0x44,0

33、x44,0xFE,0x04,0x00, 0x00,0x00,0xFF,0x40,0x50,0x48,0x44,0x43, 0x44,0x48,0x58,0x40,0xFF,0x00,0x00,0x00,;uchar code fb64= 0x10,0x10,0x10,0x10,0x10,0xF1,0x92,0x96, 0x90,0x90,0x90,0xD0,0x90,0x18,0x10,0x00, 0x20,0x42,0x04,0x0C,0x80,0xF8,0x88,0x88, 0x88,0xFF,0x88,0x88,0xA8,0x18,0x00,0x00, 0x00,0x80,0x40,0x

34、20,0x18,0x07,0x00,0x00, 0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00, 0x04,0x04,0xFE,0x41,0x30,0x8F,0x40,0x22, 0x14,0x08,0x14,0x22,0x41,0xC0,0x40,0x00,;uchar code sj64= 0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84, 0x84,0x84,0x84,0xC4,0x86,0x04,0x00,0x00, 0x20,0x10,0x08,0xF4,0x93,0x92,0x92,0xF2, 0x9A,0x96,0x9

35、2,0x90,0xF8,0x10,0x00,0x00, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00, 0x80,0x40,0x20,0x1F,0x04,0x04,0x04,0x7F, 0x04,0x04,0x44,0x84,0x7F,0x00,0x00,0x00,;uchar code table= 0x3E,0x51,0x49,0x45,0x3E, / -0- 0x00,0x42,0x7F,0x40,0x00, / -1-0x62,0x51,0x49,0x49,0x46, /

36、 -2-0x21,0x41,0x49,0x4D,0x33, / -3-0x18,0x14,0x12,0x7F,0x10, / -4-0x27,0x45,0x45,0x45,0x39, / -5-0x3C,0x4A,0x49,0x49,0x31, / -6-0x01,0x71,0x09,0x05,0x03, / -7-0x36,0x49,0x49,0x49,0x36, / -8-0x46,0x49,0x49,0x29,0x1E, / -9- 0x7F,0x08,0x08,0x08,0x7F, / -H 0x61,0x51,0x49,0x45,0x43, / -Z- 0x1F,0x20,0x40,

37、0x20,0x1F, / -V- 0x7F,0x09,0x09,0x09,0x06, / -P- 0x00,0x36,0x36,0x00,0x00, / -:- 0x00,0x60,0x60,0x00,0x00, / -.- ; uchar code sinx64= /以下為波形代碼128,114,102,90,78,66,55,45,36,28,20,14,9,5,2,1,1,1,3,7,11,17,24,32,41,50,61,72,84,96,108,121,133,146,158,170,182,193,204,213,222,230,237,243,247,251,253,254,2

38、54,252,249,245,240,234,226,218,209,199,188,176,167,158,145,135;uchar code juchi64=255,251,247,243,239,235,231,227,223,219,215,210,206,202,198,194,190,186,182,178,174,170,166,162,158,154,150,146,142,138,134,130,125,121,117,113,109,105,101,97,93,89,85,81,77,73,69,61,57,53,49,45,40,36,32,28,24,20,16,12

39、,8,4,0;uchar code fangbo64=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,;uchar code sanjiao64=0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,14

40、4,152,160,168,176,184,192,200,208,216,224,232,240,248,248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0;void lcd_delay(uint t)unsigned int i,j;for(i=0;i<t;i+);for(j=0;j<10;j+);void bx_delay() /延時(shí)1msint a,b;for(a=1;a>0;a-)for(b=1

41、22;b>0;b-);void lcd_busy() uchar dat,DATA; LCD_RW = 1; LCD_RS = 0; do DATA=0x00; LCD_EN=1; lcd_delay(2); dat=DATA; LCD_EN=0; dat=0x80&dat; while(!(dat=0x00); void lcd_wcmd(uchar cmd) / cmd 命令字節(jié) lcd_busy(); / 等待不忙 LCD_RS = 0; LCD_RW = 0; P0 = cmd; /把命令寫入 lcd_delay(2); LCD_EN = 1; lcd_delay(2);

42、 LCD_EN = 0;void lcd_wdat(uchar dat) / 寫數(shù)據(jù)到LCD lcd_busy(); LCD_RS = 1; LCD_RW = 0; P0 = dat; lcd_delay(2); LCD_EN = 1; lcd_delay(2); LCD_EN = 0; void lcd_init() /LCD的初始化 lcd_delay(100); LCD_CS1=1; LCD_CS2=1; lcd_delay(100); lcd_wcmd(0x3e); lcd_wcmd(0xb8); /頁(yè)地址 lcd_wcmd(0xc0); /行地址 lcd_wcmd(0x3f); lc

43、d_wcmd(0x40); /列地址 void clr_screen() /清屏操作 uchar j,k; LCD_CS1=0;LCD_CS2=0; lcd_wcmd(0xb8); lcd_wcmd(0x40); for(k=0;k<8;k+) lcd_wcmd(page_add+k); for(j=0;j<64;j+) lcd_wcmd(lcdcol_add+j); lcd_wdat(0x00); void select(uchar x) /選擇左半屏還是右半屏 switch(x) case 1:LCD_CS1=0;LCD_CS2=1;break; /左屏, case 2:LCD

44、_CS1=1;LCD_CS2=0;break; /右屏, default :LCD_CS2=0;LCD_CS1=0; void setpos(uchar row , uchar col) /選擇行,列, lcd_wcmd(0xb8+row); lcd_wcmd(0x40+col); void disp1(uchar code *hz) /顯示漢字上半?yún)^(qū),兩個(gè) uchar n; for(n=0;n<32;n+) lcd_wdat(*(hz+n);void disp2(uchar code *hz) /顯示漢字下半?yún)^(qū) , uchar m; for(m=32;m<64;m+) lcd_w

45、dat(*(hz+m);void disp_pl(uint dat) /顯示頻率 uchar mm,z; select(1); setpos(6,0); mm=dat/100; mm=5*mm; for(z=mm;z<mm+5;z+) lcd_wdat(tablez); mm=(dat%100)/10; mm=5*mm; for(z=mm;z<5+mm;z+) lcd_wdat(tablez); mm=dat%10; mm=5*mm; for(z=mm;z<5+mm;z+) lcd_wdat(tablez); for(z=50;z<60;z+) lcd_wdat(tablez); void clc_pl() /清除頻率顯示 uchar mm; select(1); setpos(6,0);

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論