




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于EDA的數(shù)字頻率信號源的設(shè)計摘 要當今是科技以及儀表設(shè)備高度智能化飛速發(fā)展的信息社會,電子技術(shù)的發(fā)展,給人們帶來了根本性的轉(zhuǎn)變?,F(xiàn)代電子領(lǐng)域中,單片機的應(yīng)用正在不斷地走向深入,這必將導(dǎo)致傳統(tǒng)控制與檢測技術(shù)日益革新。單片機構(gòu)成儀器具有高可靠性,高性價比,在智能儀表系統(tǒng)和辦公自動化中得到廣泛應(yīng)用,因此,基于單片機的函數(shù)信號發(fā)生器普及是一種趨勢。本文設(shè)計低頻信號發(fā)生器,以 AT89C51 單片機為核心,通過鍵盤輸入控制信號類型 和頻率的的選擇,采用 DA 轉(zhuǎn)換芯片輸出相應(yīng)的波形,同時以液晶1602進行實時顯示信號相關(guān)信息。采用C 語言進行編程,可實現(xiàn)方波,三角波,鋸齒波和正弦波四種波形的產(chǎn)生,且
2、波形的頻率可調(diào)。經(jīng)測試該設(shè)計方案線路優(yōu)化,結(jié)構(gòu)緊湊,性能優(yōu)越, 滿足設(shè)計要求。【關(guān)鍵詞】:數(shù)字信號源,AT89C51,模數(shù)轉(zhuǎn)換,運放AbstractToday is the rapid development of science and technology as well as the rapid development of instrumentation information society, the development of electronic technology, has brought a fundamental change. In the modern electr
3、onic field, the application of the single chip computer is going deeper and deeper, which will lead to the change of the traditional control and detection technology. SCM constitute the instrument with high reliability, high cost, in the intelligent instrument system and office automation has been w
4、idely used, therefore, based on the function of MCU signal generator is a trend. In this paper, the design of low frequency signal generator, AT89C51 single-chip microcomputer as the core, through the keyboard input control the type and frequency of the signal, the DA conversion chip corresponding t
5、o the output waveform, also in 1602 LCD were real-time display signal related information. Using C language programming, can realize square wave, triangle wave, saw tooth wave and sine wave four kinds of waveform generation, and the frequency of the waveform can be adjusted. The design of the design
6、 of the line optimization, compact structure, superior performance, to meet the design requirements.【Key words】: Digital signal source, AT89C51, ADC, Op目 錄一、引言11.1選題依據(jù)及意義11.2研究主要內(nèi)容和方法11.3本文結(jié)構(gòu)安排2二、系統(tǒng)整體方案設(shè)計32.1方案設(shè)計32.1.1信號發(fā)生模塊32.1.2單片機控制模塊32.1.3輸出顯示模塊32.1.4鍵盤模塊42.1.5電路設(shè)計最終方案42.2工作原理和系統(tǒng)基本框架4三、硬件設(shè)計63.1電
7、源模塊設(shè)計63.2單片機最小系統(tǒng)63.3數(shù)模轉(zhuǎn)換電路73.4按鍵模塊83.5液晶顯示模塊93.6 運放驅(qū)動模塊103.7 存儲模塊11四、軟件設(shè)計124.1軟件開發(fā)環(huán)境介紹124.2主函數(shù)程序設(shè)計124.3波形發(fā)生流程134.3.1正弦波發(fā)生子程序134.3.2矩形波發(fā)生子程序134.3.3三角波發(fā)生子程序144.3.4鋸齒波發(fā)生子程序154.4按鍵程序設(shè)計164.5液晶顯示子程序設(shè)計16五、調(diào)試過程17六、總結(jié)和展望20致 謝21參考文獻22附 錄231 硬件原理圖232 源程序24畢業(yè)論文一、引言1.1選題依據(jù)及意義波形發(fā)生器在生活中發(fā)揮著越來越大的作用,傳統(tǒng)的波形器通過硬件進行控制,如果
8、正弦波等多種波形通過555振蕩電路產(chǎn)生,傳統(tǒng)的波形就可以通過這種設(shè)計方式完成,但是這種方式在單片機應(yīng)用中無法實現(xiàn),這種方式在眾多波形中質(zhì)量較差,控制方式比較難,調(diào)試的范圍比較小,體積較大和電路內(nèi)部設(shè)施較為復(fù)雜等缺點,在社會發(fā)展的探索過程中,在工業(yè)控制,生物醫(yī)學(xué)控制等領(lǐng)域需要較低頻率的信號源,有硬件設(shè)施控制的波形達不到預(yù)想的效果,低頻信號源需要很大的RC,大電阻和大電容設(shè)施在制作時非常困難,精度系數(shù)比較高,體積較大,容易漏電等缺點困擾著波形發(fā)生器的設(shè)計。電子技術(shù)在社會中不斷發(fā)展,如今數(shù)字信號發(fā)生器的功能也向多樣化發(fā)展,在社會中有了一定的可靠性。數(shù)字信號發(fā)生器在檢測和實驗領(lǐng)域扮演著必不可少的角色,
9、在通信、檢測等領(lǐng)域意義重大。在生產(chǎn)、科研、教學(xué)、電子工程方面都是很好的工具,數(shù)字信號發(fā)生器有多種設(shè)計方法,有了越來越高超的設(shè)計技巧。隨著我國的不斷進步,對相應(yīng)的測試儀器和手段有了更苛刻的要求,在眾多檢測儀器中發(fā)揮著至關(guān)重要的作用,開發(fā)數(shù)字信號發(fā)生器也具有了越來越重大的意義。傳統(tǒng)的信號發(fā)生器基本都采用單片機或模擬電路,成本比較高制作方式較少種類不分明,制作相當復(fù)雜,無法準確可靠的制造出相應(yīng)產(chǎn)品,無法在社會的發(fā)展中滿足社會的需求。因此,更多的商家制作成本較少電路較為簡單的發(fā)生器。1.2研究主要內(nèi)容和方法本文將采用編程的方法來實現(xiàn)各種波形的發(fā)生。根據(jù)設(shè)計的要求,對各種波形的頻率和幅度進行設(shè)計和總結(jié),
10、將程序存儲到單片機的程序中。在程序運行時,在接受外界的指令時,需要輸出某種波形時再中斷波形的發(fā)生程序,經(jīng)過電路數(shù)/模轉(zhuǎn)換器和運算放大器等處理后,從輸出端口輸出相應(yīng)的程序。本設(shè)計采用文獻法和實驗法對整個系統(tǒng)設(shè)計進行研究。其中,文獻研究法是根據(jù)所選設(shè)計方向收集相關(guān)文獻資料,了解數(shù)字頻率信號源的發(fā)展現(xiàn)狀。熟悉掌握C語言程序編寫并對KeilVision4單片機仿真軟件有自己的見解和認識。而實驗法則是根據(jù)系統(tǒng)的功能要求,選擇合適的控制芯片、檢測元件;設(shè)計硬件電路圖,焊接電路搭建硬件模型;設(shè)計軟件控制的流程主要通過KeilVision4單片機仿真軟件進行編程和調(diào)試。1.3本文結(jié)構(gòu)安排文中首先介紹了本論文研
11、究的背景、意義和方法。在第2章首先介紹了系統(tǒng)方案選擇組成,第3章介紹了系統(tǒng)的硬件設(shè)計以及器件選型,硬件中有電源,單片機中最小的系統(tǒng),數(shù)模轉(zhuǎn)換電路界面等。第4章是對軟件設(shè)計方面的介紹,首先介紹了軟件的編譯仿真平臺,然后是對程序主流程的介紹,以及各個程序模塊的分析介紹。第五章是介紹系統(tǒng)的調(diào)試。二、系統(tǒng)整體方案設(shè)計2.1方案設(shè)計 2.1.1信號發(fā)生模塊方案一:通過MAX038芯片組成電路來輸出相應(yīng)的波形。MAX038是通過精密高頻波形來產(chǎn)生芯片,可以產(chǎn)生較為準確的波形。但是成本比較高,程序更為復(fù)雜。方案二:通過分立元件實現(xiàn)多諧振振蕩器的非穩(wěn)態(tài)性,然后加入所需求的積分電路構(gòu)成多種波形的發(fā)生器。這種發(fā)生
12、器頻率較窄,而且電路的設(shè)計較為復(fù)雜,可以通過硬件電路的適當轉(zhuǎn)換來實現(xiàn)頻率的大小測量,操作很復(fù)雜。 方案三:通過單片機和DAC0832數(shù)模轉(zhuǎn)換器生成相應(yīng)波形通過編程的方法來控制輸入到數(shù)模轉(zhuǎn)換電路的數(shù)字量,從而控制輸出信號的波形和頻率。他的特點是設(shè)計較為簡單價格便宜,在低頻的范圍內(nèi)屬于穩(wěn)定性較好操作較為簡單的設(shè)施。通過比較,方案三可以充分的發(fā)揮其獨特的優(yōu)勢來滿足設(shè)計需求,電路簡單價格低,所以采用該方案。2.1.2單片機控制模塊方案一:AVR單片機。AVR不是一個簡單的外設(shè)功能的疊加,但更多的模型以滿足不同設(shè)計開發(fā)者的實際需要,同時可以提供一個低成本的OTP芯片。此外,AVR屬于低耗能具有睡眠功能,
13、上電和掉電等功能的設(shè)備,占用空間小,成本低,安全技術(shù)也非??煽?,能夠最大程度地滿足開發(fā)者的實際要求。因此,在工業(yè)控制,AVR單片機被廣泛的應(yīng)用到各行各業(yè)的控制中,其穩(wěn)定性、系統(tǒng)功耗等都為廣大開發(fā)者認可。價格相比同性能產(chǎn)品在中上游水平。方案二:選擇51系列的單片機價格較為低廉,內(nèi)部設(shè)有51內(nèi)核可實現(xiàn)低功耗高效能的八位單片機,還擁有4K字節(jié)Flash只讀程序儲存器,如此強大的微型計算機在工業(yè)控制系統(tǒng)中屬于低價位高可靠的設(shè)備。它具有128字節(jié),看門狗,兩個16位定時和計數(shù)單位,一個兩級中斷結(jié)構(gòu),內(nèi)部晶振和時鐘電路。根據(jù)實際的需求,最終選擇51系列單片機型號為AT89C51,此設(shè)備價格低廉操作簡單。2
14、.1.3輸出顯示模塊方案一:用數(shù)碼管進行顯示。數(shù)碼管的顯示速度比較快,使用較為簡單,現(xiàn)實效果簡單明了,從而得到了各方的使用。但是我們需求的是低頻率和指定的波形類型。用此設(shè)備并不能完全的展示豐富的內(nèi)容,因此放棄了此方案。方案二:用LCD液晶進行顯示。LCD可以清晰豐富的顯示內(nèi)容,信息量充足,使用簡單,在各方得到了廣泛的應(yīng)用。我們采用LCD1602液晶來顯示英語字母和數(shù)字,能夠滿足顯示要求,可以選擇此方案。2.1.4鍵盤模塊方案一: 采用獨立式按鍵電路,每個按鍵都有自己獨特的功能,都占有一個I/O接口,每個接口的功能互不影響,直接掃描此類鍵盤端口。但是按鍵較多,比較占用單片機的I/O接口,但是電路
15、設(shè)計比較簡單,編程比較容易。方案二:采用矩陣式鍵盤,鍵盤為4*4矩陣式行列掃描,優(yōu)點是當按鍵較為多時,可以盡量少占用I/O的數(shù)目。對于此系統(tǒng),由于按鍵數(shù)目不多,故采用方案一。2.1.5電路設(shè)計最終方案本系統(tǒng)包括主控模塊,顯示模塊,信號發(fā)生模塊,鍵盤模塊,運放模塊,綜上各方案所述,確定最終設(shè)計方案為:用AT89C51作為主控制系統(tǒng),LCD液晶作為顯示部分,獨立式按鍵成為鍵盤模塊。DAC0832作為信號的發(fā)生模塊,LM324作為電流電壓的放大模塊。2.2工作原理和系統(tǒng)基本框架 虛擬信號可通過數(shù)/模轉(zhuǎn)換器對數(shù)字信號進行轉(zhuǎn)換來實現(xiàn),因此,用數(shù)字信號轉(zhuǎn)換成模擬信號可獲得相應(yīng)的波形。在本設(shè)計中,AT89C
16、51是核心部分,其中含有數(shù)字/模擬轉(zhuǎn)換電路、電流/電壓轉(zhuǎn)換放大電路、按鍵電路、LCD液晶顯示電路和晶振電路。12MHz晶振來提供工作脈沖。P1接LED顯示電路,用來顯示波形類型的頻路和大??;P0接DAC0832的D10D17,來提供相應(yīng)的數(shù)字信息;P2.0P2.4外接獨立鍵盤,控制不同信號的類型和頻率等;P3部分口作為LCD的控制信號。DAC0832輸出的模擬信號為電流信號,所以用電流/電壓運算放大器LM324將電流信號再轉(zhuǎn)換成電壓信號輸出。用兩片LM324可以得到輸出波形的雙極性輸出,將輸出的波形與示波器相連即可觀察輸出波形的特征。獨立式鍵盤可以控制從P0口輸出的數(shù)字信號,按下不同的鍵可以使
17、此輸出信號改變,從而使輸出的波形實現(xiàn)正弦波、矩形波、鋸齒波和三角波之間的轉(zhuǎn)變,并能夠改變波形輸出頻率的大小。在此過程中,單片機將信號的類型和頻率經(jīng)過處理后,由P1口送到LCD液晶顯示器上進行顯示,LCD1602第一行顯示信號的類型,第二行顯示波形的頻率。整個系統(tǒng)的結(jié)構(gòu)框圖如圖2.1所示。圖2.1 數(shù)字頻率信號源系統(tǒng)結(jié)構(gòu)框圖三、硬件設(shè)計3.1電源模塊設(shè)計變壓器經(jīng)過一個保險絲連接電源,變壓器或后面的電路如果發(fā)生短路,保險絲會因大電流引發(fā)的高溫溶化而斷開,從而保證后續(xù)電路不會受大電流的損壞。變壓器輸出后經(jīng)過橋式整流電路,整流后的電源紋波很大,還需要接一個容值較大的電解電容濾除紋波。當負載電流大時穩(wěn)壓
18、器內(nèi)的電阻會變小,當負載電流變小時穩(wěn)壓器內(nèi)的電阻又會變大,使的穩(wěn)壓器的輸出電壓基本保持不變。 LM7805最大輸出電流為1A。三端穩(wěn)壓器后面接一個104的瓷片電容,起濾波和阻尼作用。圖3.1 220V交流穩(wěn)壓成5V直流原理圖3.2單片機最小系統(tǒng)單片機最小系統(tǒng)是單片機工作的根本,它由晶振電路和復(fù)位電路組成。最小系統(tǒng)的工作前提是晶振電路必須穩(wěn)定工作,為系統(tǒng)的運行提供工作時鐘;最小系統(tǒng)上電的時候,復(fù)位引腳將產(chǎn)生一個上電復(fù)位脈沖信號,讓單片機執(zhí)行上電復(fù)位操作。復(fù)位引腳會產(chǎn)生一個上電復(fù)位脈沖信號,讓單片機執(zhí)行此操作。電容的大小選擇會影響到系統(tǒng)復(fù)位時間,設(shè)計中通常選用16V10UF的電解電容,由于電路工作
19、電壓為5V,電容耐壓值可以滿足設(shè)計的要求,復(fù)位電阻的大小為10K,電阻和電容組成了阻容復(fù)位電路;圖中X1為按鍵,當單片機運行中出現(xiàn)故障時,當單片機無法正常工作時,按下復(fù)位按鍵可以實現(xiàn)系統(tǒng)復(fù)位,程序重新執(zhí)行、本電路設(shè)計可通過上電復(fù)位和按鍵復(fù)位兩種方式實現(xiàn)復(fù)位。最小系統(tǒng)見圖3.2 所示。 圖3.2單片機最小系統(tǒng)電路圖3.3數(shù)模轉(zhuǎn)換電路1.單緩沖方式輸入鎖存器和DAC寄存器相應(yīng)的控制信號引腳分別連在一起來實現(xiàn)單緩沖,數(shù)據(jù)會寫入DAC寄存器,從而進行D/A的轉(zhuǎn)換。當只有一路模擬量輸出時或有記錄模擬量輸出但是并不要去同步時適合此方法,2. 雙緩沖方式在多電路D/A進行轉(zhuǎn)換輸出時,如果需要同步進行,可采用
20、雙緩沖同步方式。DAC0832在雙緩沖系統(tǒng)工作時,數(shù)字的輸入和D/A的轉(zhuǎn)換分步進行。CPU的數(shù)據(jù)分向各個電路的D/A轉(zhuǎn)換器的數(shù)字,并將相應(yīng)的數(shù)字進行儲存和鎖定,然后CPU對DAC系統(tǒng)發(fā)出控制信號,使DAC系統(tǒng)儲存相應(yīng)的數(shù)據(jù),實現(xiàn)同步轉(zhuǎn)換輸出。3. 直通工作方式當DAC0832芯片的片選信號、寫信號1、2及傳送控制信號的引腳全部接地,允許輸入鎖存信號ILE引腳+5V時,DAC0832芯片就處于直通工作方式,數(shù)字量一旦輸入,就直接進入DAC寄存器,進行D/A轉(zhuǎn)換,從輸出端得到轉(zhuǎn)換的模擬量。如圖3.3所示。圖3.3 DAC0832數(shù)模轉(zhuǎn)換電路圖3.4按鍵模塊該子系統(tǒng)是5個獨立鍵盤和一個2輸入與門組成
21、,其中與門輸出端連接單片機的P3.2口以便形成外部中斷。5個按鍵分別連接單片機的P2.0P2.4口。2輸入與門一引腳與K1按鍵相連,另一引腳接高電平。當K1按下時,INT0為低電平,可知外部中斷到了,系統(tǒng)執(zhí)行中斷程序。當K2K5按鍵某一個按下時,對應(yīng)的P2.1P2.4口中某個為低電平,系統(tǒng)可以感知此按鍵按下,從而執(zhí)行相應(yīng)的程序。5個按鍵的功能分別是波形轉(zhuǎn)換,頻率升高,頻率降低,占空比升高,占空比降低。原理圖如圖3.4所示。圖3.4 按鍵掃描電路圖3.5液晶顯示模塊液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯
22、示字符地址,也就是告訴模塊在哪里顯示字符,圖3.4是1602的內(nèi)部顯示地址。圖3.4 1602LCD內(nèi)部顯示地址例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在該位置呢?實際證明并不可行,因為寫入顯示地址時要求最高位D7恒定為高電平1,所以實際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。對液晶模塊進行初始化時要先設(shè)置顯示模式,當顯示出數(shù)字時光標會自動的向右移動,無需主動的進行控制。每次輸入指令時都要確定液晶模塊是否處于忙碌狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣
23、字符圖形,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等。每一個字符都有一個固定的代碼。表3.1 LCD1602引腳定義管腳號管腳名稱LEVER管腳功能描述1VSS0電源地2VDD+5.0V電源電壓3V0-指令數(shù)據(jù)4D/I(RS)H/LD/I=“H”,表示DB7DB0為顯示數(shù)據(jù)液晶顯示器驅(qū)動電壓D/I=“L”,表示DB7DB0為顯示5R/WH/LR/W=“H”,E=“H”數(shù)據(jù)被讀到DB7DB0R/W=“L”,E=“HL”數(shù)據(jù)被寫到IR或DR6EH/LR/W=“L”,下降沿有效,鎖存DB7DB0R/W=“H”,高電平有效 DDRAM數(shù)據(jù)讀到DB7DB07DB0H/L數(shù)據(jù)線8D
24、B1H/L數(shù)據(jù)線9DB2H/L數(shù)據(jù)線10DB3H/L數(shù)據(jù)線11DB4H/L數(shù)據(jù)線12DB5H/L數(shù)據(jù)線13DB6H/L數(shù)據(jù)線14DB7H/L數(shù)據(jù)線滑動變阻器是為了調(diào)節(jié)液晶屏亮度的,一般現(xiàn)在的LCD都會自帶調(diào)節(jié)用的滑動變阻器,原理圖保留這部分,如果實際購買模塊自帶,則可以不用焊接。原理圖如圖3.5所示。圖3.5 液晶顯示電路圖3.6 運放驅(qū)動模塊本設(shè)計中,為了減少數(shù)模轉(zhuǎn)換的時間浪費,數(shù)模轉(zhuǎn)換芯片DAC0832采用直通的工作方式。由于從DAC0832轉(zhuǎn)換出來的模擬信號為電流信號,為了方便觀測輸出信號的特征,特將DAC0832輸出的信號經(jīng)過電流/電壓轉(zhuǎn)換放大電路轉(zhuǎn)變?yōu)殡妷盒盘枴1驹O(shè)計中使用的運放為L
25、M324。DAC0832輸出信號經(jīng)運放電路轉(zhuǎn)變?yōu)殡妷汉笥袃煞N輸出方式。一種為單極性輸出方式。此方式中,DAC0832通過使用一片LM324運算放大器將從單片機輸入的數(shù)字量Din轉(zhuǎn)換為電壓輸出,其輸出電壓為Uout=Din/28 *(-VREF)。當VREF=5V時,Uout的輸出范圍為-5V0V。另一種為雙極性輸出方式。本設(shè)計中采用雙極性輸出方式。如圖3.6所示。圖3.6 LM324運放驅(qū)動電路圖3.7 存儲模塊AT24C02芯片是8引腳的SOP8封裝。它的1-3號引腳是地址引腳,通接不同的電平可以設(shè)置不同的地址。由于可以設(shè)置3個引腳的不同狀態(tài)信息,可以得到8個不同的外部地址,這有助于單片機對
26、不同外部EEPROM的尋址和存儲。AT24C02和單片機的接口形式傳統(tǒng)I2C總線方式,單片機可以通過IIC總線對器件進行讀寫操作設(shè)計中選擇P30和P31口分別和芯片的5腳和6腳相連接,單片機程序中通過模擬IIC的實現(xiàn)方式實現(xiàn)對外部存儲器的數(shù)據(jù)讀寫操作。在進行電路設(shè)計中為了確保電路的穩(wěn)定性和IO口的驅(qū)動能力,設(shè)計中考慮在IIC通訊的兩個引腳上加上拉電阻,從而增大單片機IO口的驅(qū)動能力本設(shè)計中的上拉起電阻大小選擇4.7K 。由于本設(shè)計中只有一個外部存儲器件所以將地址設(shè)置為0,也就是將A0/A1/A2三個引腳接到低電平上。芯片的4腳和8腳是芯片的供電引腳接到5V上可以給芯片供電。存儲電路見圖3.7所
27、示。圖3.7 存儲模塊電路圖四、軟件設(shè)計4.1軟件開發(fā)環(huán)境介紹51單片機的軟件開發(fā)環(huán)境采用Keil軟件進行C語言編程,Keil軟件內(nèi)部集成了強大的庫函數(shù),可用軟件可以實現(xiàn)單片機的程序開發(fā)和在線調(diào)試,Keil軟件內(nèi)提供了C語言編譯器、鏈接器、庫函數(shù)管理器、宏匯編和一個仿真調(diào)試器等在內(nèi)的開發(fā)設(shè)計例子,由一個集合組成的格局將各個模塊連接在一起。C51工作效率非常高,語言代碼很緊密,便于觀察理解。Keil可以準確的模擬8021的外部接口。來幫助工作人員了解其配置,更快的發(fā)展該產(chǎn)品。設(shè)計人員可以目標設(shè)備上進行模擬編程和仿真,非常適合設(shè)計人員和在校學(xué)生進行產(chǎn)品設(shè)計。4.2主函數(shù)程序設(shè)計主函數(shù)首先實現(xiàn)單片機
28、,液晶屏LCD1602的初始化工作。單片機的初始化包括GPIO引腳的初始化,時鐘定時器的初始化,中斷優(yōu)先級的設(shè)置等。主控部分在初始化結(jié)束后,程序進入while(1)的無限循環(huán),在循環(huán)中不斷輪詢是否有按鍵被按下,根據(jù)按鍵邏輯刷新LCD的顯示。流程圖如圖4.1所示。 圖4.1 主程序流程圖4.3波形發(fā)生流程本系統(tǒng)采用編程的方法,來輸出四種不同的波形即正弦波、矩形波、三角波、鋸齒波。各種波形的產(chǎn)生方法如下。4.3.1正弦波發(fā)生子程序正弦波是由特殊的方式產(chǎn)生的,并不能夠通過設(shè)備直接產(chǎn)生,只能通過圖4.2的方式來無限接近正弦波形??梢钥闯?,在工作周期內(nèi)階梯數(shù)目越多,單片機的波形和正弦波的波形更相似。如果
29、正弦波的正伏是2.56V,則波谷的值就應(yīng)該是00H,波峰的值應(yīng)該是FFH。將正弦波的第一周期的波形角度分為若干等份,計算出每個波形角所對應(yīng)的電壓值,電壓值計算方法:Vx=2.5(1+sin),因為00HFFH對應(yīng)的數(shù)字量為0255,所以根據(jù)算出的電壓就可得到對應(yīng)的數(shù)字量。單片機將一個周期的數(shù)字量進行存儲,然后逐漸取出數(shù)字量,將其轉(zhuǎn)換成階梯波,使其接近正弦波輸出。圖4.2為正弦波產(chǎn)生的流程圖。 圖4.2 正弦波產(chǎn)生的流程圖4.3.2矩形波發(fā)生子程序如圖4.3所示,矩形波的實現(xiàn)比較簡單。首先定義一個無符號字符型變量i=0,使自變量i不斷的自動加1,若i的值小于squa_num,將P0口賦值為0xF
30、F;若i的值大于squa_num,則將P0口賦值為0x00。當i自加到256后又自動變?yōu)?,以此循環(huán),即可得到矩形波。當squa_num=128時,此時輸出的為方波??筛淖兙匦尾ǖ目臻g占用量;改變時間的大小就可對矩形波形的頻率進行改變, 圖4.3 矩形波產(chǎn)生流程圖4.3.3三角波發(fā)生子程序可以用多個小臺階來接近三角波中的實現(xiàn),臺階的間隔很小時波形就會無限接近一條直線。首先定義一個無符號字符型變量i=0,使自變量i不斷的自動加1,若i的值小于128,將P0口賦值為i;若i的值大于128,則將P0口賦值為256-i。當i自加到256后又自動變?yōu)?,以此循環(huán),從而P0口實現(xiàn)了周期性的數(shù)字量變換,在經(jīng)
31、過數(shù)模轉(zhuǎn)換后轉(zhuǎn)變成模擬信號,經(jīng)運算放大電路后就得到了周期性的三角波。三角波產(chǎn)生流程圖如圖4.4所示。 圖4.4 三角波發(fā)生流程圖4.3.4鋸齒波發(fā)生子程序鋸齒波的實現(xiàn)過程與三角波類似,也是定義一個變量i=0,并使P0=i,自變量i不斷的自動加1,直到加到255,然后i又可以自動歸為0,再不斷的重復(fù)上過程。在此過程中,P0口的值也隨著i一樣變化,經(jīng)數(shù)模轉(zhuǎn)換DAC0832后,周期性逐一變化的數(shù)字量就轉(zhuǎn)換為鋸齒波輸出了。通過調(diào)節(jié)P0口每相鄰兩個值之間的延遲時間,就可以改變鋸齒波的頻率。圖4.5為鋸齒波發(fā)生流程圖。 圖4.5 鋸齒波發(fā)生流程圖 4.4按鍵程序設(shè)計在本設(shè)計中,主要是通過按鍵來調(diào)節(jié)輸出波形
32、的類型、頻率的大小及矩形波的占空比,采用程序控制掃描方式,時刻監(jiān)視著有無按鍵按下。為了能夠更準確的判斷按鍵的情況,一旦有按鍵按下時,先延時去除按鍵的抖動,再判斷是哪個按鍵按下,從而單片機對應(yīng)的執(zhí)行相應(yīng)的程序。圖4.6為按鍵處理流程圖。圖4.6 按鍵處理流程圖4.5液晶顯示子程序設(shè)計LCD1602的顯示函數(shù)的實現(xiàn)主要是對寄存器的讀寫命令和數(shù)據(jù),需要嚴格按照其時序圖操作。在本設(shè)計中,由于需要顯示的內(nèi)容比較多,且有些需要重復(fù)顯示,有些只要顯示一次,故只畫出液晶顯示的基本流程,如圖4.7所示。 圖4.7 液晶顯示流程圖五、調(diào)試過程經(jīng)過調(diào)試,當程序沒有問題時,通過Proteus軟件進行仿真。點擊“Vir
33、tual Instruments Mode”,出現(xiàn)“INSTRUMENTS”時選擇“OSCILLOSCOPE”,就將模擬示波器選中了。在繪圖區(qū)點擊左右來鋼制模擬示波器,A、B、C、D為其四個輸入通道,連接到要測試波形的節(jié)點即可。啟動Proteus仿真,示波器顯示面板會自動打開,IO口有輸出波形即顯示。圖5.1所示為程序剛運行還沒有按鍵按下,輸出正弦波。液晶顯示當前波形類型及頻率值。圖5.1 正弦波輸出按下K1后,波形切換為矩形波。如圖5.2所示。K2和K3分別升高和降低矩形波的頻率,K4和K5分別升高和降低矩形波的占空比。再按下K1,繼續(xù)切換至三角波、鋸齒波、正弦波.,循環(huán)轉(zhuǎn)換。如圖5.3和圖
34、5.4所示。圖5.2 矩形波輸出圖5.3 三角波輸出圖5.4 鋸齒波輸出六、總結(jié)和展望經(jīng)過兩個多月的努力,通過在老師和同學(xué)們的幫助下基本完成數(shù)字頻率信號源的設(shè)計,并且達到了設(shè)計目的。本論文是在了解當數(shù)字頻率信號源的條件下,自行設(shè)計的一個數(shù)字頻率信號源,主要是了解數(shù)字頻率信號源的工作原理,工作過程以及相關(guān)軟、硬件的設(shè)計。本論文主要是以MCU控制系統(tǒng)為主控芯片,同時設(shè)計相關(guān)的各種電路,并且針對性的進行了相應(yīng)的驅(qū)動軟件的編寫。通過本設(shè)計的完成,本人對數(shù)字頻率信號源的原理有了很深地了解,熟練地掌握了數(shù)字頻率信號源各部分的工作流程,對單片機有更深的了解和掌握,提高自己的設(shè)計水平,熟悉專業(yè)軟件的應(yīng)用和C語
35、言的編程,對今后的工作有很大的幫助。通過這次設(shè)計,我對所學(xué)的專業(yè)知識有了更深的理解,尤其是單片機和運放電路方面。做了很多的資料方面的學(xué)習(xí),掌握了單片機的基本工作的方法,以及焊接調(diào)試的流程。在設(shè)計過程中,查閱了大量的中外文資料,解決了不少難題,使我在分析問題解決問題的能力方面有了提升,增強了對學(xué)習(xí)的信心,并對電子專業(yè)產(chǎn)生了濃厚的興趣,相信這對我以后的工作和學(xué)習(xí)有重要的幫助。由于時間較短,該設(shè)計還存在著一些不足,例如,可以適當?shù)募尤肼暪鈭缶瘉韺崿F(xiàn)輸出波形后的提示,以及可以設(shè)計一些通用化的接口以便直接和其它相關(guān)測量儀器聯(lián)合使用,實現(xiàn)分布式、網(wǎng)絡(luò)化操作等等,這一切都有待于后期的完善。致 謝經(jīng)過幾個月資
36、料的查找和對本畢業(yè)設(shè)計相關(guān)知識的學(xué)習(xí),已經(jīng)完成整個系統(tǒng)的設(shè)計,在這個畢業(yè)設(shè)計過程中曝露出我許多的問題,由于對有些專業(yè)知識的了解不夠深入,設(shè)計有些方面還是不夠完善。在姚俊老師的幫助下,解決了遇到的很多設(shè)計難題,才使得畢業(yè)設(shè)計能夠順利的完成。再次對我的指導(dǎo)教師姚俊表示深深的感謝,姚俊老師在忙碌的工作中,對我畢業(yè)設(shè)計的進行耐心的指導(dǎo),從設(shè)計最初我查找資料的時候,給我很大幫助讓我在眾多的資料中梳理出需要的知識的重點,在畢業(yè)設(shè)計的中期我提出系統(tǒng)的設(shè)計方案和解決方法,姚俊老師對我的設(shè)計方案進行了評估,指導(dǎo)我方案中出現(xiàn)的我的問題,并提出了寶貴的經(jīng)驗。在畢業(yè)設(shè)計后期對我設(shè)計電路和程序進行了指導(dǎo)。使我對單片機硬
37、件電路和軟件程序有了更深入的了解。把我繁瑣的設(shè)計變得簡潔、系統(tǒng)功能更合理。深深感受到了姚俊老師對整個系統(tǒng)全局統(tǒng)籌性很強,使我也從中學(xué)到很多在課堂上學(xué)不到設(shè)計經(jīng)驗。在此,對姚俊老師的嚴謹?shù)闹螌W(xué)態(tài)度和對學(xué)生負責(zé)的態(tài)度表示深深欽佩。其次對和我一起做畢設(shè)的同學(xué)表示深深的感謝,當我遇到問題時候,幫助我解決好多我能力之外的困難,如果沒有他們的幫助我能這么順利的完成我畢業(yè)設(shè)計。最后感謝大學(xué)所有任課教師,他們在我在學(xué)校的四年里耐心的傳授我知識,對我的各個方面能力培養(yǎng)付出太多的艱辛工作。為我在以后的工作中更好的學(xué)習(xí)打下了堅實的基礎(chǔ),同時感謝所有的同學(xué)們正式有你們鼓勵和支持,才讓我在做畢業(yè)設(shè)計這段時間不斷改掉缺點
38、,努力的把我的畢業(yè)設(shè)計認真的完成。參考文獻1 張麗娜.51單片機系統(tǒng)開發(fā)與實踐.北京航空航天大學(xué)出版社M.20132 李葉紫. MCS-51單片機應(yīng)用教程M.北京:清華大學(xué)出版社,2004.232238.3 程朗.基于8051單片機的雙通道波形發(fā)生器的設(shè)計與實現(xiàn)J.計算機工程與應(yīng)用, 2012.8:100103.4 姚福安.Proteus基礎(chǔ)教程M. 北京:清華大學(xué)出版社, 2005.22(5):5758.5 杜華.任意波形發(fā)生器及應(yīng)用J.國外電子測量技術(shù),2005.1:3840. 6 張友德.單片微型機原理、應(yīng)用與實踐M.上海:復(fù)旦大學(xué)出版社,2010.4044. 7 王靜.基于單片機的數(shù)據(jù)
39、串口通信D.長江大學(xué),20138 張永瑞.電子測量技術(shù)基礎(chǔ)M.西安:西安電子科技大學(xué)出版社,2006.61101. 9 范紅剛.51單片機自學(xué)筆記:第二版.北京航空航天大學(xué)出版社Z. 201310 戴仙金主編 51單片機及其C語言匯編程序開發(fā)實例 清華大學(xué)出版 社,2008附 錄 1 硬件原理圖2 源程序#include<reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned inttypedef unsigned char unint8;typedef unsigned
40、char unint16;uchar data disdata16,buf4;uint tvalue,i,k,LL,dat = 0x0000; uchar tflag,tflag1,tflag2; uint TH,TL,TCHA ,HH,HL,HCHA;void key();/*端口定義*/sbit lcdrs=P00;sbit lcdrw=P01;sbit lcden=P02;sbit LCD_psb=P12;uchar i;uchar code a="溫度:"/*定義全局變量*/void delay(uint z)uint x,y;for(x=z;x>0;x-)f
41、or(y=110;y>0;y-);void write_com(uchar com)lcdrs=0;lcdrw=0;P2=com;delay(5);lcden=1;delay(5);lcden=0;void write_data(uchar date)lcdrs=1;lcdrw=0;P2=date;delay(5);lcden=1;delay(5);lcden=0;void init_12864()LCD_psb=1;write_com(0x38);write_com(0x0c);write_com(0x01);void pos(uchar x,uchar y) switch(y) ca
42、se 0:y=0x80;break;case 1:y=0x90;break;case 2:y=0x88;break;case 3:y=0x98; write_com(x+y);void init_display_12864()init_12864();i=0;pos(0,0);while(ai!='0') write_data(ai); i+;i=0;pos(0,1);while(bi!='0') write_data(bi); i+;i=0;pos(0,2);while(ci!='0') write_data(ci); i+;i=0;pos(0
43、,3);while(di!='0') write_data(di); i+;/*程序*/*端口定義*/sbit Clk = P13;sbit DATI = P14;sbit DATO = P14;sbit CS = P15;/*定義全局變量*/void delay(uchar x)uchar m,j; for(m=0;m<x;m+) for(j=0;j<108;j+);uchar CH; /通道變量void adc0832(uchar CH)uchar i,test,adval;adval = 0x00;test = 0x00;/初始DATI = 1;Clk = 0
44、;_nop_();CS = 0;_nop_();Clk = 1;_nop_();if ( CH = 0x00 ) /通道選擇Clk = 0;DATI = 1; /通道0的第一 Clk = 1;_nop_();Clk = 0;DATI = 0;/通道0的第二位_nop_();Clk = 1;_nop_();elseClk = 0;DATI = 1; Clk = 1;_nop_();/通道1的第一使Clk = 0;DATI = 1; _nop_();Clk = 1;_nop_();/通道1的第二位Clk = 0;DATI = 1;for( i = 0;i < 8;i+ ) /讀取 adval
45、<<= 1;_nop_();Clk = 1;_nop_();Clk = 0;if (DATO)adval |= 0x01;elseadval |= 0x00;for (i = 0; i < 8; i+) /讀取吿位的倿br> test >>= 1;if (DATO)test |= 0x80;else test |= 0x00;_nop_();Clk = 1;_nop_();Clk = 0;dat = adval;_nop_();CS = 1; DATO = 1;Clk = 1;dat=dat*196;/*程序*/sbit DQ=P16;/ds18b20與單片
46、機連接口 void delay_18B20(unsigned int i)/延時1微秒 while(i-);void ds1820rst()/*ds1820復(fù)位*/ unsigned char x=0;DQ = 1; delay_18B20(4); /延時DQ = 0; delay_18B20(100); /精確延時大于480usDQ = 1; delay_18B20(40); uchar ds1820rd()/*讀數(shù)據(jù)*/ unsigned char i=0,dat = 0;for (i=8;i>0;i-) DQ = 0;dat>>=1;DQ = 1; /給脈沖信號if(D
47、Q)dat|=0x80;delay_18B20(10);return(dat);void ds1820wr(uchar wdata)/*寫數(shù)據(jù)*/unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; read_temp()uchar a,b;ds1820rst(); ds1820wr(0xcc);/*跳過讀序列號*/ds1820wr(0x44);ds1820rst(); ds1820wr(0xcc);/*跳過讀序列號*/ ds
48、1820wr(0xbe); a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff)tflag=0; else tvalue=tvalue+1;tflag=1; tvalue=tvalue*(0.625); return(tvalue);/*DHT11*/sbit TRH = P17; unsigned char strDHT1=" "unsigned char strDHT2=" "unint8 TH_data,TL_data,R
49、H_data,RL_data,CK_data;unint8 TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;unint8 com_data,untemp,temp,respond;uchar m;void delay_ms(unsigned char ms) / 毫秒級延時子程序 unsigned char i;while(ms-)for(i = 0; i< 150; i+) _nop_();_nop_();_nop_();_nop_();void delay_us()/5us級延時程序unint8 i;i-;i-; i-;i-;i-;i-;char re
50、ceive()/收發(fā)信號檢測,數(shù)據(jù)讀取 unint8 i; ST=0;com_data=0; for(i=0;i<=7;i+) respond=2; while(!TRH)&&respond+);delay_us();delay_us();delay_us(); if(TRH) temp=1;respond=2;while(TRH)&&respond+); else temp=0;com_data<<=1;com_data|=temp; return(com_data); void read_TRH() TRH=0;delay_ms(18);
51、/主機拉低18ms TRH=1; /DATA總線由上拉電阻拉高 主機延時20us delay_us(); delay_us(); delay_us(); delay_us(); TRH=1; if(!TRH) respond=2; while(!TRH)&& respond+); respond=2;/判斷從機是否發(fā)出 80us 的高電平 while(TRH && respond+); /數(shù)據(jù)接收狀態(tài) RH_temp = receive(); RL_temp = receive(); TH_temp = receive(); TL_temp = receive(); CK_temp = receive(); TRH=1;ST=1; /數(shù)據(jù)校驗 untemp=(RH_temp+RL_temp+TH_temp+TL_temp); if(untemp=CK_temp)RH_data = RH_temp;RL_data = RL_temp;TH_data = TH_temp; TL_d
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 不同施肥水平下大豆SPAD值與株高估測研究
- 超細晶Cu-WC復(fù)合材料的制備及組織性能研究
- 出售商品公司合同范本
- 合同范本合作合同
- 出口退款合同范例
- 小學(xué)美術(shù)跨學(xué)科鑒賞的創(chuàng)新性實施策略
- 原煤代加工合同范本
- 加厚氣墊采購合同范本
- 儀器維保服務(wù)合同范本
- 合伙采煤合同范本
- 新疆2022年中考數(shù)學(xué)試卷(含答案)
- 2024年監(jiān)理考試-公路工程監(jiān)理工程師考試近5年真題附答案
- 2024-2030年中國小黃姜行業(yè)盈利模式與投資策略分析報告
- 職業(yè)技術(shù)學(xué)院攝影攝像技術(shù)專業(yè)人才培養(yǎng)方案
- 生產(chǎn)廠房消防施工合同范本
- 心房顫動診斷和治療中國指南(2023) 解讀
- 初中語文八年級上冊19《蘇州園林》公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 2024年山東省泰安市中考英語真題(解析版)
- 常見急危重癥的快速識別要點與處理技巧課件
- 耳鼻咽喉科中級職稱(主治醫(yī)師)考試重點
- 高危妊娠及五色管理課件
評論
0/150
提交評論