基于51單片機(jī)的數(shù)字秒表設(shè)計(jì)及基于51單片機(jī)的波形發(fā)生器_第1頁
基于51單片機(jī)的數(shù)字秒表設(shè)計(jì)及基于51單片機(jī)的波形發(fā)生器_第2頁
基于51單片機(jī)的數(shù)字秒表設(shè)計(jì)及基于51單片機(jī)的波形發(fā)生器_第3頁
基于51單片機(jī)的數(shù)字秒表設(shè)計(jì)及基于51單片機(jī)的波形發(fā)生器_第4頁
基于51單片機(jī)的數(shù)字秒表設(shè)計(jì)及基于51單片機(jī)的波形發(fā)生器_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

頁單片機(jī)課程設(shè)計(jì)報(bào)告基于51單片機(jī)的數(shù)字秒表設(shè)計(jì)專業(yè):通信工程目錄課程名稱………………1設(shè)計(jì)目的和意義………1任務(wù)要求………………1任務(wù)分析、設(shè)計(jì)方案…………………1具體實(shí)現(xiàn)過程…………9仿真、實(shí)驗(yàn)驗(yàn)證過程及實(shí)現(xiàn)結(jié)果、現(xiàn)象……………12結(jié)論……………………14總結(jié)與體會(huì)……………14課題名稱基于51單片的數(shù)字秒表設(shè)計(jì)目的和意義1、通過本次課程設(shè)計(jì)可以靈活運(yùn)用單片機(jī)的基礎(chǔ)知識(shí),依據(jù)課程設(shè)計(jì)內(nèi)容,能夠完成從硬件電路圖設(shè)計(jì),到電路搭建焊接,再到軟件編程及系統(tǒng)調(diào)試實(shí)現(xiàn)系統(tǒng)功能,完成課程設(shè)計(jì),加深對(duì)單片機(jī)基礎(chǔ)知識(shí)的理解,并靈活運(yùn)用,將各門知識(shí)綜合應(yīng)用。

2、本次課程設(shè)計(jì)還可以通過上網(wǎng)查詢器件資料,培養(yǎng)對(duì)新知識(shí)新技術(shù)的獨(dú)立的學(xué)習(xí)能力和應(yīng)用能力。3、在這次課程設(shè)計(jì)中,我們運(yùn)用到了很多一切所學(xué)的知識(shí)和一些很有用的軟件和工具,如keil4編程軟件、Proteus仿真軟件、Visio軟件、等。4、通過獨(dú)立完成一個(gè)小的數(shù)字秒表系統(tǒng)設(shè)計(jì),從硬件設(shè)計(jì)到軟件設(shè)計(jì),增強(qiáng)分析問題、解決問題的能力,為日后的畢業(yè)設(shè)計(jì)及科研工作奠定良好的基礎(chǔ)。5、掌握51單片機(jī)軟件編程知識(shí)、實(shí)現(xiàn)功能、設(shè)計(jì)方法,及KEIL軟件使用方法;6、應(yīng)用所學(xué)模擬電子線路的知識(shí),掌握電路的設(shè)計(jì)與應(yīng)用;7、熟悉PROTEUS的設(shè)計(jì)與仿真;8、STC——ISP的使用方法;9、掌握焊接電子元器件的方法以及查閱元件功能與參數(shù)的方法、步驟。設(shè)計(jì)目標(biāo)或任務(wù)要求1、設(shè)計(jì)目標(biāo)以單片機(jī)為核心,設(shè)計(jì)數(shù)字秒表。通過硬件電路設(shè)計(jì),軟件設(shè)計(jì),電路搭建,作品調(diào)試。最后完成本次課程設(shè)計(jì)。2、設(shè)計(jì)要求1、計(jì)時(shí)范圍:0~59分59.59秒,整數(shù)四位數(shù)和小數(shù)兩位數(shù)顯示;2、計(jì)時(shí)精度10毫秒;3、復(fù)位按鈕,計(jì)時(shí)器清零,并做好下次及時(shí)準(zhǔn)備;4、可以對(duì)三個(gè)對(duì)象(A、B)計(jì)時(shí),具有啟/??刂?;5、設(shè)開始、停止A、停止B、顯示A、顯示B、復(fù)位按鈕。任務(wù)分析、設(shè)計(jì)方案任務(wù)分析數(shù)字電子秒表具有顯示直觀、讀取方便、精度高等優(yōu)點(diǎn),在計(jì)時(shí)中廣泛使用。本設(shè)計(jì)用單片機(jī)組成數(shù)字電子秒表,力求結(jié)構(gòu)簡單、精度高為目標(biāo)。設(shè)計(jì)中包括硬件電路的設(shè)計(jì)和系統(tǒng)程序的設(shè)計(jì)。其硬件電路主要有主控制器,計(jì)時(shí)與顯示電路和回零、啟動(dòng)和停表電路等。主控制器采用單片機(jī)89C52顯示電路采用共陽極LED數(shù)碼管顯示計(jì)時(shí)時(shí)間。本設(shè)計(jì)利用89C52單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,使其能精確計(jì)時(shí)。利用中斷系統(tǒng)使其能實(shí)現(xiàn)開始暫停的功能。P0口輸出段碼數(shù)據(jù),P2.0-P2.4口作列掃描輸出,P1.1、P3.2、P3.3、P2.5口接四個(gè)按鈕開關(guān),分別實(shí)現(xiàn)開始、暫停、清零和查看上次計(jì)時(shí)時(shí)間功能。電路原理圖設(shè)計(jì)最基本的要求是正確性,其次是布局合理,最后在正確性和布局合理的前提下力求美觀。硬件電路圖按照?qǐng)D1.1進(jìn)行設(shè)計(jì)。圖1.1數(shù)字秒表硬件電路基本原理圖計(jì)時(shí)采用定時(shí)器T0中斷完成,定時(shí)溢出中斷周期為1ms,當(dāng)一處中斷后向CPU發(fā)出溢出中斷請(qǐng)求,每發(fā)出一次中斷請(qǐng)求就對(duì)毫秒計(jì)數(shù)單元進(jìn)行加一,達(dá)到10次就對(duì)十毫秒位進(jìn)行加一,依次類推,直到99.99秒重新復(fù)位。再看按鍵的處理。這四個(gè)鍵可以采用中斷的方法,也可以采用掃描的方法來識(shí)別。復(fù)位鍵和查看主要功能在于數(shù)值復(fù)位和查詢上次計(jì)時(shí)時(shí)間,對(duì)于時(shí)間的要求不是很嚴(yán)格。而開始和停止鍵則是用于對(duì)時(shí)間的鎖定,需要比較準(zhǔn)確的控制。因此可以對(duì)復(fù)位和查看按鍵采取掃描的方式。而對(duì)開始和停止鍵采用外部中斷的方式。設(shè)計(jì)中包括硬件電路的設(shè)計(jì)和系統(tǒng)程序的設(shè)計(jì)。其硬件電路主要有主控制器,顯示電路和回零、啟動(dòng)、查看、計(jì)次電路等。主控制器采用單片機(jī)89C52,顯示電路采用共陽極LED數(shù)碼管顯示計(jì)時(shí)時(shí)間,四個(gè)按鍵均采用觸點(diǎn)式按鍵。2、單片機(jī)的選擇本課題在選取單片機(jī)時(shí),充分借鑒了許多成形產(chǎn)品使用單片機(jī)的經(jīng)驗(yàn),并根據(jù)自己的實(shí)際情況,選擇了stc公司的89C52。89C52單片機(jī)采用40引腳的雙列直插封裝方式。圖1.2為引腳排列圖,40條引腳說明如下:主電源引腳Vss和Vcc①Vss接地②Vcc正常操作時(shí)為+5伏電源外接晶振引腳XTAL1和XTAL2①XTAL1內(nèi)部振蕩電路反相放大器的輸入端,是外接晶體的一個(gè)引腳。當(dāng)采用外部振蕩器時(shí),此引腳接地。②XTAL2內(nèi)部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當(dāng)采用外部振蕩器時(shí),此引腳接外部振蕩源。圖1.28051單片機(jī)引腳圖控制或與其它電源復(fù)用引腳RST/VPD,ALE/,和/Vpp輸入/輸出引腳P0.0-P0.7,P1.0-P1.7,P2.0-P2.7,P3.0-P3.7。①P0口(P0.0-P0.7)是一個(gè)8位漏極開路型雙向I/O口,在訪問外部存儲(chǔ)器時(shí),它是分時(shí)傳送的低字節(jié)地址和數(shù)據(jù)總線,P0口能以吸收電流的方式驅(qū)動(dòng)八個(gè)LSTTL負(fù)載。②P1口(P1.0-P1.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。③P2口(P2.0-P2.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口,在訪問外部存儲(chǔ)器時(shí),它輸出高8位地址。P2口可以驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。④P3口(P3.0-P3.7)是一個(gè)帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(dòng)(吸收或輸出電流)四個(gè)LSTTL負(fù)載。(1)運(yùn)算器運(yùn)算器的功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算。可以對(duì)半字節(jié)(4位)、單字節(jié)等數(shù)據(jù)進(jìn)行操作。(2)程序計(jì)數(shù)器PC程序計(jì)數(shù)器PC用來存放即將要執(zhí)行的指令地址,共16位,可對(duì)64K程序存儲(chǔ)器直接尋址。執(zhí)行指令時(shí),PC內(nèi)容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。(3)令寄存器指令寄存器中存放指令代碼。CPU執(zhí)行指令時(shí),由程序存儲(chǔ)器中讀取的指令代碼送入指令寄存器,經(jīng)譯碼后由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號(hào),完成指令功能。3、顯示電路的選擇與設(shè)計(jì)對(duì)于數(shù)字顯示電路,通常采用液晶顯示或數(shù)碼管顯示。本設(shè)計(jì)的顯示電路采用7段數(shù)碼管作為顯示介質(zhì)。數(shù)碼管顯示可以分為靜態(tài)顯示和動(dòng)態(tài)顯示兩種。由于本設(shè)計(jì)需要采用五位數(shù)碼管顯示時(shí)間,如果靜態(tài)顯示則占用的口線多,硬件電路復(fù)雜。所以采用動(dòng)態(tài)顯示。圖1.3顯示電路基本原理圖動(dòng)態(tài)顯示是一位一位地輪流點(diǎn)亮各位\o"數(shù)碼管"數(shù)碼管,這種逐位點(diǎn)亮顯示器的方式稱為位掃描。通常各位\o"數(shù)碼管"數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個(gè)8位的I/O口控制;各位的公共陰極位選線由另外的I/O口線控制。動(dòng)態(tài)方式顯示時(shí),各\o"數(shù)碼管"數(shù)碼管分時(shí)輪流選通,要使其穩(wěn)定顯示必須采用掃描方式,即在某一時(shí)刻只選通一位\o"數(shù)碼管"數(shù)碼管,并送出相應(yīng)的段碼,在另一時(shí)刻選通另一位\o"數(shù)碼管"數(shù)碼管,并送出相應(yīng)的段碼,依此規(guī)律循環(huán),即可使各位\o"數(shù)碼管"數(shù)碼管顯示將要顯示的字符,雖然這些字符是在不同的時(shí)刻分別顯示,但由于人眼存在視覺暫留效應(yīng),只要每位顯示間隔足夠短就可以給人同時(shí)顯示的感覺。數(shù)碼顯示管分為共陽數(shù)碼管和共陰數(shù)碼管兩種共陽極數(shù)碼管的8個(gè)發(fā)光二極管的陽極(二極管正端)連接在一起,如圖1.4(b),通常,公共陽極接高電平(一般接電源),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為低電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。圖1.4(a)數(shù)碼管引腳圖(b)共陽極內(nèi)部結(jié)構(gòu)圖(c)共陰極內(nèi)部結(jié)構(gòu)圖最大4、按鍵電路的選擇與設(shè)計(jì)本設(shè)計(jì)中有四個(gè)按鍵,分別實(shí)現(xiàn)開始、暫停、復(fù)位和計(jì)次功能。這四個(gè)鍵可以采用中斷的方法,也可以采用查詢的方法來識(shí)別。對(duì)于復(fù)位鍵和查看鍵,主要功能在于數(shù)值復(fù)位和對(duì)上次計(jì)時(shí)時(shí)間的查看,對(duì)于時(shí)間的要求不是很嚴(yán)格,而開始和暫停鍵主要用于時(shí)間的鎖定,需要比較準(zhǔn)確的控制。因此可以考慮,對(duì)復(fù)位鍵和查看鍵采用查詢的方式,而對(duì)于開始和暫停鍵采用外部中斷。四個(gè)按鍵均采用低電平有效,具體電路連接圖如圖1.5所示。5、時(shí)鐘電路的選擇與設(shè)計(jì)單片機(jī)的時(shí)鐘信號(hào)用來提供單片機(jī)內(nèi)各種微操作的時(shí)間基準(zhǔn),8051片內(nèi)設(shè)有一個(gè)由反向放大器所構(gòu)成的振蕩電路,XTAL1和XTAL2分別為振蕩電路的輸入和輸出端,8051單片機(jī)的時(shí)鐘信號(hào)通常用兩種電路形式得到:內(nèi)部振蕩方式與外部振蕩方式。外部方式的時(shí)鐘很少用,若要用時(shí),只要將XTAL1接地,XTAL2接外部振蕩器就行。對(duì)外部振蕩信號(hào)無特殊要求,只要保證脈沖寬度,一般采用頻率低于11.05926MHz的方波信號(hào)。圖中,電容器C1

、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值一般為5~33pF。但在時(shí)鐘電路的實(shí)際應(yīng)用中一定要注意正確選擇其大小,并保證電路的對(duì)稱性,盡可能匹配,選用正牌的瓷片或云母電容,如果可能的話,溫度系數(shù)盡可能低。本設(shè)計(jì)中采用大小為30pF的電容和11.05926MHz的晶振。圖1.6內(nèi)部振蕩電路6、復(fù)位電路的選擇與設(shè)計(jì)當(dāng)8051單片機(jī)的復(fù)位引腳RST(全稱RESET)出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就完成了復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài),而無法執(zhí)行程序。因此要求單片機(jī)復(fù)位后能脫離復(fù)位狀態(tài)。而本系統(tǒng)選用的是11.05926MHz的晶振,因此一個(gè)機(jī)器周期為1.09μs,那么復(fù)位脈沖寬度最小應(yīng)為2.18μs。在實(shí)際應(yīng)用系統(tǒng)中,考慮到電源的穩(wěn)定時(shí)間,參數(shù)漂移,晶振穩(wěn)定時(shí)間以及復(fù)位的可靠性等因素,必須有足夠的余量。根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位、手動(dòng)復(fù)位。圖1.10單片機(jī)復(fù)位電路7、系統(tǒng)總電路的設(shè)計(jì)系統(tǒng)總電路由以上設(shè)計(jì)的顯示電路,時(shí)鐘電路,按鍵電路和復(fù)位電路組成,只要將單片機(jī)與以上各部分電路合理的連接就組成了系統(tǒng)總電路。系統(tǒng)總電路圖附錄B所示。8051單片機(jī)為主電路的核心部分,各個(gè)電路均和單片機(jī)相連接,由單片機(jī)統(tǒng)籌和協(xié)調(diào)各個(gè)電路的運(yùn)行工作。8051單片機(jī)提供了XTAL1和XTAL2兩個(gè)專用引腳接晶振電路,因此只要將晶振電路接到兩個(gè)專用引腳即可為單片機(jī)提供時(shí)鐘脈沖,但在焊接晶振電路時(shí)要盡量使晶振電路靠近單片機(jī),這樣可以為單片機(jī)提供穩(wěn)定的始終脈沖。復(fù)位電路同晶振電路,單片機(jī)設(shè)有一個(gè)專用的硬件復(fù)位接口,并設(shè)置為高電平有效。按鍵電路與單片機(jī)的端口連接可以由用戶自己設(shè)定,本設(shè)計(jì)中軟件復(fù)位鍵和查看鍵分別接單片機(jī)的P1.1和P2.5,均設(shè)為低電平有效。而另外的開始鍵和暫停鍵兩鍵使用了外部中斷,所以需要連接到單片機(jī)的特殊接口P3.3和P3.2,這兩個(gè)I/O口的第二功能分別為單片機(jī)的外部中斷1端口和外部中斷0端口。同樣設(shè)置為位低電平有效。顯示電路由五位數(shù)碼管組成,采用動(dòng)態(tài)顯示方式,因此有8位段控制端和5位位控制端,八位段控制接P0口,P0.0~P0.7分別控制數(shù)碼顯示管的a、b、c、d、e、f、g、dp顯示,8051的P0口沒有集成上拉電阻,高電平的驅(qū)動(dòng)能力很弱,所以需要接上拉電阻來提高P0的高電平驅(qū)動(dòng)能力。五位位控制則由低位到高位分別接到P2.0~P2.4口,NPN三極管9013做為位控制端的開關(guān),當(dāng)P2.0~P2.4端口任意一個(gè)端口為高電平時(shí),與其相對(duì)應(yīng)的三極管就導(dǎo)通,對(duì)應(yīng)的數(shù)碼管導(dǎo)通顯示。通過以上設(shè)計(jì)已經(jīng)將各部分電路與單片機(jī)有機(jī)的結(jié)合到一起,硬件部分的設(shè)計(jì)以大功告成,剩下的部分就是對(duì)單片機(jī)的編程,使單片機(jī)按程序運(yùn)行,實(shí)現(xiàn)數(shù)字電子秒表的全部功能。具體實(shí)現(xiàn)過程1、對(duì)數(shù)字秒表設(shè)計(jì)進(jìn)行分析,敲定幾組方案;2、在PROTUES軟件中,畫電路圖,進(jìn)行仿真、調(diào)試;3、對(duì)自己想要實(shí)現(xiàn)的秒表現(xiàn)象進(jìn)行編程,運(yùn)用KEIL軟件;并于Proteus聯(lián)調(diào)。4、調(diào)試過程中要不斷改進(jìn)自己的方案;6、測試各個(gè)所需元件,STC89C52RC,數(shù)碼管。7、將方案敲定之后,對(duì)LED數(shù)字秒表進(jìn)行焊接其中最主要的是對(duì)最小系統(tǒng)的焊接時(shí)非常關(guān)鍵的,在進(jìn)行焊接數(shù)碼管時(shí),很關(guān)鍵。8、將最小系統(tǒng)焊接好以后要用數(shù)字萬用表進(jìn)行測試,首先要測試有沒有短接、斷接的地方,再將焊好的板子放在電源上進(jìn)行加電,看電路板子是否正常工作。9、將最小系統(tǒng)板子與數(shù)碼管板子連在一個(gè),通過USB口與電腦相連,打開串口助手,將KEIL軟件中的程序下載到單片機(jī)中,進(jìn)行驗(yàn)證。10、具體程序/*********************************************************文件名: 秒表.c*描述: 基于51單片機(jī)的數(shù)碼管數(shù)字秒表; 帶有指示燈,蜂鳴器,按鍵(啟動(dòng)、清零、計(jì)次)*創(chuàng)建人: 羅宏*單位: 佳木斯大學(xué)信息電子技術(shù)學(xué)院電子協(xié)會(huì)*日期: 2014.6.26*開發(fā)環(huán)境: Keil4*郵箱: 744544126@*晶振: 11.05926MHZ*版本號(hào): *********************************************************/#include<reg52.h>#defineuintunsignedint //宏定義無符號(hào)整型#defineucharunsignedchar //宏定義無符號(hào)字符型#defineDUAN (P0) //宏定義數(shù)碼管段代碼#defineWEI (P2) //宏定義數(shù)碼管位代碼sbitkeystart_stop= P3^2; //定義啟動(dòng)/停止按鍵sbitkeyrest = P3^3; //定義復(fù)位/清零按鍵sbitkeyrecord = P3^4; //定義計(jì)數(shù)/存儲(chǔ)按鍵sbitkeydispaly = P3^5; //定義計(jì)數(shù)/顯示按鍵sbitbeep = P3^6; //定義蜂鳴器sbitled = P3^7; //定義ucharx,msec5,msec10,second,minute; //時(shí)間變量ucharmsec,sec,min; //顯示變量ucharcodetable1[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽數(shù)碼管數(shù)組不帶點(diǎn)顯示ucharcodetable2[]={0x40,0x79,0x24,0x30, 0x19,0x12,0x02,0x58,0x00,0x10}; //共陽數(shù)碼管帶點(diǎn)顯示/********************************函數(shù)名稱:延時(shí)函數(shù)delay功能:延時(shí)指定毫秒?yún)?shù):ucharx返回值:無********************************/voiddelay(ucharx){ uintb,c; for(b=x;b>0;b--) for(c=110;c>0;c--);}/********************************函數(shù)名稱:定時(shí)器初始化函數(shù)time_init(void)功能:定時(shí)器初始化參數(shù):無返回值:無*********************************/voidtime_init(void){ msec5=0; TMOD=0x01; TH0=(65536-9174)/256; TL0=(65536-9174)%256; ET0=1; TR0=1; EA=1; }/********************************函數(shù)名稱:顯示函數(shù)display()功能:數(shù)碼管顯示參數(shù):ucharmsec,ucharsec,ucharmin返回值:無*********************************/voiddisplay(ucharmsec,ucharsec,ucharmin){ DUAN=table1[(msec%10)%10];//0.01秒5.64%10=64%10=0.04 WEI=0x01; delay(2); WEI=0x00; DUAN=table1[(msec/10)%10];//0.1秒5.64/10=56%10=0.6 WEI=0x02; delay(2); WEI=0x00; DUAN=table2[(sec%10)];//1秒 564%10=6 WEI=0x04; delay(2); WEI=0x00; DUAN=table1[(sec/10)];//10秒 564/10=56%10=6 WEI=0x08; delay(2); WEI=0x00; DUAN=table1[(min%10)];//1分 564/10=56%10=6 WEI=0x10; delay(2); WEI=0x00; DUAN=table1[(min/10)];//10分 564/10=56%10=6 WEI=0x20; delay(2); WEI=0x00;}/********************************函數(shù)名稱:蜂鳴器函數(shù)功能:蜂鳴器發(fā)聲參數(shù):無返回值:無*********************************/voidbeep_led(){ beep=0; delay(600); beep=1; delay(600); led=0; delay(600); led=1;}/********************************函數(shù)名稱:按鍵函數(shù)功能:調(diào)試按鍵的函數(shù)參數(shù):無返回值:無*********************************/voidkeys(){ if(keystart_stop==0) { delay(5); if(keystart_stop==0) TR0=~TR0; beep_led(); while(!keystart_stop); } if(keyrest==0) { delay(5); if(keyrest==0) TR0=0; msec5=0; msec10=0, second=0; minute=0; beep_led(); while(!keyrest); }}/********************************函數(shù)名稱:主函數(shù)功能:參數(shù):無返回值:*********************************/voidmain(){ucharjishu=0;ucharflag=0;ucharmsec1=0,sec1=0,min1=0;ucharmsec2=0,sec2=0,min2=0;time_init();while(1){ keys();//鍵盤的掃描函數(shù)一定要放在while循環(huán)里邊 msec=msec10; sec=second; min=minute; if(flag==1) { display(msec1,sec1,min1); } elseif(flag==0) { display(msec,sec,min); } else { display(msec2,sec2,min2); } if(keyrecord==0) { delay(5); if(keyrecord==0) { beep_led(); jishu++; if(jishu>2) { jishu=0; } elseif(jishu==1) { msec1=msec10; sec1=second; min1=minute; } elseif(jishu==2) { msec2=msec10; sec2=second; min2=minute; } } while(!keyrecord); } if(keydispaly==0) { delay(5); if(keydispaly==0) { beep_led() ; flag++; if(flag>2) flag=0; } while(!keydispaly); } }}/**********************************函數(shù)名稱:中斷函數(shù)功能:參數(shù):無返回值:***********************************/voidtimer0()interrupt1{TH0=(65536-9174)/256; TL0=(65536-9174)%256; msec10++; // msec10加一次等于10ms if(msec10==100) // j=100為1s { msec10=0; second++; if(second==60) //second=60為1minute { second=0; minute++; if(minute==60) //minute=60為1hour { minute=0; } }} }仿真、實(shí)驗(yàn)驗(yàn)證過程及實(shí)現(xiàn)結(jié)果、現(xiàn)象結(jié)論本設(shè)計(jì)的數(shù)字電子秒表系統(tǒng)采用89C52單片機(jī)為中心器件,利用其定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,結(jié)合顯示電路、LED數(shù)碼管以及外部中斷電路來設(shè)計(jì)計(jì)時(shí)器。將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠?qū)崿F(xiàn)八位LED顯示,顯示時(shí)間為0~59分59.59秒,計(jì)時(shí)精度為0.01秒,能正確地進(jìn)行計(jì)時(shí),同時(shí)能記錄兩次時(shí)間,并在計(jì)時(shí)后對(duì)上一次計(jì)時(shí)時(shí)間進(jìn)行查詢。其中軟件系統(tǒng)采用C語言編寫程序,包括顯示程序,定時(shí)中斷服務(wù),延時(shí)程序,按鍵掃描程序等,并在keil4中調(diào)試運(yùn)行,硬件系統(tǒng)利用PROTEUS強(qiáng)大的功能來實(shí)現(xiàn),簡單切易于觀察,在仿真中就可以觀察到實(shí)際的工作狀態(tài)。八、總結(jié)(體會(huì))開始做設(shè)計(jì)的時(shí)候總是會(huì)犯一些錯(cuò)誤,只有經(jīng)過不停的改錯(cuò),不斷地編譯得到正確的程序,說明作為一名編程人員是不能粗心大意的,一個(gè)程序的質(zhì)量的高低與你的細(xì)心與否有著很大的聯(lián)系,在編程時(shí),我充分地使用了結(jié)構(gòu)化的思想,這樣程序檢查起來也比較方便,調(diào)試時(shí)也會(huì)方便很多。只要一個(gè)模塊一個(gè)模塊的進(jìn)行調(diào)試就可以了,充分體現(xiàn)了結(jié)構(gòu)化編程的優(yōu)勢。在設(shè)計(jì)中要求我要有耐心和毅力,細(xì)心是最重要的,稍有不慎,一個(gè)小小的錯(cuò)誤就會(huì)導(dǎo)致結(jié)果的不正確,而對(duì)錯(cuò)誤的檢查要有足夠的耐心,通過這次設(shè)計(jì)和設(shè)計(jì)中遇到的問題,我也積累了一定的經(jīng)驗(yàn)。為了能完成這次設(shè)計(jì),我還復(fù)習(xí)了《數(shù)字電子技術(shù)》、《模擬電子技術(shù)》、《微機(jī)接口技術(shù)》、《單片機(jī)技術(shù)》、《C語言》。通過這次單片機(jī)課程設(shè)計(jì),我了解到自己在單片機(jī)方面還有很多不足,特別是單片機(jī)指令系統(tǒng)及stc89C52單片機(jī)各引腳的第二功能等等知識(shí)不夠了解.因此我在設(shè)計(jì)中遇到不懂的東西就馬上查資料或請(qǐng)教同學(xué).這不僅加深了我對(duì)單片機(jī)理論的理解,將理論很好地應(yīng)用到實(shí)際當(dāng)中去,而且我還學(xué)會(huì)了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新可以是在原有的基礎(chǔ)上進(jìn)行改進(jìn),使之功能不斷完善,成為自己的東西。畢業(yè)論文任務(wù)書課題名稱基于單片機(jī)原理的波形發(fā)生器指導(dǎo)教師姓名工作單位廣西民族大學(xué)信息科學(xué)與工程學(xué)院一、主要內(nèi)容:利用單片機(jī)80C51采用程序設(shè)計(jì)方法產(chǎn)生方波、三角波、正弦波、鋸齒波四種波形,再通過D/A轉(zhuǎn)換器DAC0832將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),濾波放大,最終由示波器顯示出來,能產(chǎn)100Hz-20KHz的波形。通過鍵盤來控制四種波形的選擇、頻率選擇,并通過LED顯示其當(dāng)前的頻率。二、基本要求(基本技術(shù)要求與數(shù)據(jù))1.熟悉匯編語言的語法和結(jié)構(gòu),學(xué)會(huì)應(yīng)用匯編語言編寫一些簡單的源程序。

2.熟悉PROTEUS軟件的基本功能,學(xué)會(huì)應(yīng)用PROTEUS軟件仿真一些簡單的程序。

3.設(shè)計(jì)一個(gè)利用單片機(jī)80C51采用程序設(shè)計(jì)方法產(chǎn)生方波、三角波、正弦波、鋸齒波四種波形,再通過D/A轉(zhuǎn)換器DAC0832將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),濾波放大,最終由示波器顯示出來,能產(chǎn)100Hz-20KHz的波形。通過鍵盤來控制四種波形的類型選擇、頻率變化,并通過LED顯示其各自的頻率。

4.用匯編語言編寫本系統(tǒng)的源程序,并用PROTEUS軟件進(jìn)行仿真,模擬各功能模塊的實(shí)現(xiàn)。

5.按時(shí)完成開題報(bào)告、論文報(bào)告。三、論文(設(shè)計(jì))工作起始日期:自20年12月1日起,至20年12月11日四、進(jìn)度與應(yīng)完成的工作:五、主要參考文獻(xiàn)、資料[1]童詩白,華成英.模擬電子技術(shù)基礎(chǔ)〔M〕.北京:高等教育出版社,2003.345-362[2]潘永雄,沙河,劉向陽.電子線路CAD實(shí)用教程〔M〕.西安:西安電子科技大學(xué)出版社,2001.13-118.[3]張毅剛,彭喜源,譚曉昀,曲春波.MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1997.53-61目錄摘要…………...1一、題目要求及分析……….3二、總體系統(tǒng)方案設(shè)計(jì)…….42.1總體設(shè)計(jì)思路………….52.2總體框圖………………..52.3信號(hào)發(fā)生部分…………..52.4顯示部分………………..62.5按鍵部分…6三、硬件電路……………73.1功能與基本原理……….73.2資源分配……………….83.3波形轉(zhuǎn)換(D/A)電路………………..93.4紅外電路………………103.5復(fù)位電路……………….113.6外部時(shí)鐘電路………….123.7LCD顯示部分電路…………………….133.8電源部分……………133.9獨(dú)立按鍵部分………….143.10串口通信模塊………...14四、軟件設(shè)計(jì)………………..154.1程序流程圖……………154.2LCD顯示流程圖………16五、系統(tǒng)仿真…………………..175.1仿真電路圖……………175.2輸出波形圖……………17六、硬件和軟件測試…………..196.1硬件調(diào)試………………196.2軟件調(diào)試………………19七、設(shè)計(jì)心得…………………..20八、參考文獻(xiàn)…………………..21九、致謝………..22十、附件………..23基于單片機(jī)原理的波形發(fā)生器摘要:本系統(tǒng)采用單片機(jī)C8051為控制核心,輸出數(shù)字量,然后由DAC0832把數(shù)字量轉(zhuǎn)換成模擬量;但是輸出的是電流,需要用運(yùn)放(OP07),把電流轉(zhuǎn)換成電壓量。顯示利用的是LCD1602的液晶,顯示其波形,幅值。按鍵應(yīng)用的是獨(dú)立按鍵,用來波形的切換,幅值,頻率的調(diào)解。其運(yùn)算核心,我們通過MATLAB對(duì)正弦波,三角板,正弦波進(jìn)行采樣,得到一組組數(shù)據(jù),然后同過數(shù)組存儲(chǔ);利用中斷對(duì)數(shù)組進(jìn)行掃描。其頻率的調(diào)解就是調(diào)節(jié)其中斷間隔的時(shí)間,幅值就是調(diào)節(jié)其數(shù)字的大?。ㄍ瑫r(shí)乘以某個(gè)小于1的數(shù))。為了波形的合成,我們采用的點(diǎn)的個(gè)數(shù)都是20個(gè)。關(guān)鍵詞:AT-89C51DAC0832獨(dú)立按鍵OP07TheDesignofWaveformGeneratorBasedon51Abstract:Thissystemadoptssingle-chipC8051asthecontrolcore,digitaloutput,andthenbyDAC0832convertdigitaltoanalog;Buttheoutputiscurrent,theneedtouseoperationalamplifier(OP07),theamountofcurrentintoavoltage.DisplayusingtheLCD1602LCD,displaythewaveformamplitude.Keyapplicationsisindependent,switchtowaveform,amplitude,frequencyofmediation.Itscoreoperation,weuseMATLABtosinewave,triangle,thesinewavesamples,groupsofdata,andthenwithanarrayofstorage;Usingtheinterruptforscanningarray.Thefrequencyofmediationistoadjustoneintervaltime,amplitudeisadjustingthesizeofitsdigital(multipliedbyacertainnumberoflessthan1)atthesametime.Forthewaveformsynthesis,weadoptthenumberofpointsis20.Keywords:AT-89C51DAC0832SeparatebuttonOP07一、題目要求及分析設(shè)計(jì)任務(wù):設(shè)計(jì)制作一個(gè)波形發(fā)生器,該波形發(fā)生器能產(chǎn)生正弦波、方波、三角波和由用戶編輯的特定形狀波形。示意圖如下:圖1設(shè)計(jì)要求圖設(shè)計(jì)要求:1.具有產(chǎn)生正弦波、方波、三角波三種周期性波形的功能;2.用鍵盤輸入編輯生成上述三種波形(同周期)的線性組合波形,以及由基波及其諧波(5次以下)線性組合的波形。3.具有波形存儲(chǔ)功能。4.輸出波形的頻率范圍為100Hz~20kHz(非正弦波頻率按10次諧波計(jì)算);重復(fù)頻率可調(diào),頻率步進(jìn)間隔≤100Hz。5.輸出波形幅度范圍O~5V(峰—峰值),可按步進(jìn)0.1V(峰—峰值)調(diào)整。6.具有顯示輸出波形的類型、重復(fù)頻率(周期)和幅度的功能。7.增加紅外配置功能(串口配置程序或其他方式)二、總體系統(tǒng)方案設(shè)計(jì)題目要求實(shí)現(xiàn)的任務(wù)是設(shè)計(jì)并制作一個(gè)函數(shù)信號(hào)發(fā)生器,能夠產(chǎn)生正弦波、方波、三角波,要求不用DDS和專用的波形產(chǎn)生芯片,頻率范圍在1Hz~1MHZ可調(diào),在頻率范圍為1HZ~10KHz時(shí),步進(jìn)不大于10Hz在頻率范圍為10KHz~1MHz時(shí),步進(jìn)不大于100Hz,并且電壓范圍在0~5V可調(diào),步進(jìn)為0.1V,能夠?qū)崟r(shí)的顯示波形的類型及其頻率和幅值?,F(xiàn)在對(duì)以下方案進(jìn)論證和驗(yàn)證。2.1總體設(shè)計(jì)思路根據(jù)題目的要求,經(jīng)過仔細(xì)的考慮各種要素,制定了整體方案:以AT89C51單片機(jī)為控制核心,P0口接DAC0832信號(hào)輸入并進(jìn)行數(shù)模轉(zhuǎn)換,P1口接矩陣鍵盤,P2口接液晶顯示器LCD1602,由程序控制P0口產(chǎn)生波形(分別是正弦波、方波、三角波),再由按鍵及按鍵次數(shù)控制產(chǎn)生波形的種類及頻率和幅值在一定范圍內(nèi)可調(diào),并且能夠按任意鍵實(shí)現(xiàn)波形頻率和幅值的設(shè)定(不通過步進(jìn)按鍵設(shè)定來控制)。由運(yùn)放OP07實(shí)現(xiàn)DAC0832輸出電流到電壓的轉(zhuǎn)換,即實(shí)現(xiàn)數(shù)字信號(hào)到模擬信號(hào)的轉(zhuǎn)換。在LCD上實(shí)時(shí)的顯示波形的頻率和幅值,波形在示波器上產(chǎn)生。其波形的存儲(chǔ)方式,我們通過按鍵確定,一旦按鍵按下后,就把當(dāng)時(shí)的波形對(duì)應(yīng)的參數(shù)存儲(chǔ)起來,例如幅度值,頻率值等參數(shù)。波形的合成:為了波形的合成,我們在采樣的時(shí)候,對(duì)正弦波,三角波,方波都只取樂20個(gè)點(diǎn);因?yàn)辄c(diǎn)越少,其頻率達(dá)到的值就會(huì)越大;合成時(shí)就是對(duì)幅值點(diǎn)進(jìn)行一個(gè)疊加后賦給DAC0832輸出一組波形。紅外,通過外部中斷高低電平的延時(shí)的時(shí)間來進(jìn)行解碼。2.2總體框圖本系統(tǒng)總體框圖如圖2所示:圖2系統(tǒng)總體框圖2.3信號(hào)發(fā)生部分方案一:采用模擬分立元件或單片壓控函數(shù)發(fā)生器,可以產(chǎn)生正弦波、方波、三角波,通過調(diào)整外部元件可以改變輸出頻率,但采用模擬元器件由于元件分散性太大,因而產(chǎn)生頻率穩(wěn)定性較差,精度低,地抗干擾能力低,成本高,而且靈活心性較差,不能實(shí)現(xiàn)任意波形以及波形運(yùn)算輸出等智能化的功能。方案二:采用鎖相式頻率合成方案,鎖相式頻率合成一個(gè)高穩(wěn)定度和精確度的大量離散技術(shù),他在一定程度上解決了既要頻率穩(wěn)定精確又要頻率在較大的范圍內(nèi)可調(diào)的矛盾,但是頻率受VCO可便頻率范圍的影響,高低頻率比不可能做的很高,而且只能產(chǎn)生正弦波或方波,不能滿足任意波形的要求。方案三:采用單片機(jī)和數(shù)模轉(zhuǎn)換DAC0832實(shí)現(xiàn)波形的產(chǎn)生。波形的產(chǎn)生是通過AT89C51執(zhí)行方波波形程序,向D/A轉(zhuǎn)換器的輸入端按一定的規(guī)律發(fā)生數(shù)據(jù),從而在DA轉(zhuǎn)換電路輸出端得到相應(yīng)的電壓波形。在AT89C51的P1口接矩陣按鍵,通過軟件編程來選擇波形、幅值、頻率,每種波形對(duì)應(yīng)一個(gè)按鍵,此方案原理簡單,實(shí)現(xiàn)起來比較容易。經(jīng)比較,方案三能夠更好的實(shí)現(xiàn)題目的要求,三種波形的產(chǎn)生可有程序控制,并通過按鍵選擇波形的輸出,在示波器上顯示波形。波形的周期與頻率步進(jìn)也可以用程序控制,具有線路簡單、結(jié)構(gòu)緊湊等優(yōu)點(diǎn)。在本設(shè)計(jì)的基礎(chǔ)上,加上LCD顯示器,則可以通過按鍵設(shè)定波形頻率,并在LCD顯示頻率、幅值電壓。輸出的波形穩(wěn)定,精度高,濾波好,抗干擾效果好,連接簡單,性價(jià)比高。綜上所述,我們選擇第三種方案。2.4顯示部分方案一:數(shù)碼管顯示,由于本題要求實(shí)時(shí)的顯示輸出信號(hào)的幅度、頻率,而數(shù)字不能顯示字符。方案二:LED點(diǎn)陣顯示,LED點(diǎn)陣顯示雖然能夠顯示數(shù)字和字符,但是顯示的效果不好,而且不易編程。方案三:LCD液晶顯示,LCD液晶顯示不但能顯示字符和數(shù)字,而且效果較好,且容易實(shí)現(xiàn)。2.5按鍵部分方案一:采用獨(dú)立按鍵,他的按鍵的數(shù)目比少,但是它的結(jié)構(gòu)簡單,方便操作,執(zhí)行效率高等優(yōu)勢。方案二:采用矩陣鍵盤,它以較少得IO口實(shí)現(xiàn)了按鍵的功能,隨之其操作比較復(fù)雜。經(jīng)對(duì)比,由于我們需求的按鍵比較少,但是對(duì)執(zhí)行的效率比較高,所以采用獨(dú)立按鍵。三、硬件電路本系統(tǒng)由單片機(jī)、波形轉(zhuǎn)換(D/A)電路、顯示接口電路、鍵盤電路、電源電路、串口電路等六部分組成。電路圖如圖3.1所示:圖3硬件電路原理圖3.1功能與基本原理功能:形成掃描碼、鍵值識(shí)別、案件處理、參數(shù)設(shè)置、字符設(shè)置等形成液晶顯示波形的類型及頻率和幅值;通過定時(shí)器0產(chǎn)生定時(shí)中斷,形成波形的數(shù)字編碼,并輸出到D/A接口電路和顯示驅(qū)動(dòng)電路。AT89C51外接12M晶振作為時(shí)鐘頻率,并采用電源復(fù)位設(shè)計(jì)。復(fù)位電路采用上電復(fù)位,其工作原理是,當(dāng)通電時(shí),電容兩端相當(dāng)于短路,于是TST引腳為高電平,然后對(duì)電容充電。RST端電壓慢慢下降,降到一定程度,即為低電平,單片機(jī)開始工作。產(chǎn)生方波程序思路:對(duì)于小于100Hz的頻率,根據(jù)定時(shí)器溢出時(shí)間1us,將頻率值換算為定時(shí)器溢出次數(shù),當(dāng)達(dá)到規(guī)定的次數(shù)時(shí),將輸出管腳的狀態(tài)取反達(dá)到方波的產(chǎn)生;對(duì)于大于100HZ的頻率,直接根據(jù)頻率值設(shè)置其定時(shí)溢出的時(shí)間,當(dāng)溢出時(shí)間達(dá)到時(shí),將輸出管腳取反達(dá)到方波的產(chǎn)生。產(chǎn)生三角波程序思路:要產(chǎn)生峰值電壓為5V的三角波,一個(gè)周期需要定時(shí)510次,由此便可以計(jì)算出每次定時(shí)溢出的時(shí)間,再將每次定時(shí)的電壓加權(quán)便可以達(dá)到三角波的波形;產(chǎn)生正弦波程序思路:給正弦波的一個(gè)周期設(shè)定table表,由20個(gè)數(shù)據(jù),相當(dāng)于每個(gè)周期定時(shí)255次,則每次定時(shí)溢出的時(shí)間便可計(jì)算出,每個(gè)點(diǎn)的電壓加權(quán)便可得到正弦波的電壓,即,形成正弦波。3.2資源分配軟、硬件設(shè)計(jì)是比不可少的,為了滿足功能和指標(biāo)的要求,資源分配為:單片機(jī)用12MHz晶振,P0口與DAC0832相連;P1口接矩陣按鍵,實(shí)現(xiàn)頻率、幅值以及波形的選擇;P2口接LCD1602液晶顯示器,實(shí)時(shí)顯示波形的頻率、幅值、類型。3.2.1顯示接口電路功能:驅(qū)動(dòng)LCD液晶顯示、掃描按鈕。由LCD1602液晶顯示器和矩陣按鍵組成。當(dāng)某一按鍵按下時(shí),掃描程序掃描到之后,通過P2口將數(shù)字信號(hào)發(fā)送到LCD1602,LCD1602液晶專門用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,其外接電壓時(shí)5V。掃描利用軟件程序?qū)崿F(xiàn),當(dāng)某一按鍵按下時(shí),掃描立即檢測到,隨即調(diào)用子程序,執(zhí)行相應(yīng)的功能。其與單片機(jī)連接如圖4所示:圖4顯示部分電路圖3.3波形轉(zhuǎn)換(D/A)電路功能:將波形樣值得編碼轉(zhuǎn)換成模擬值,完成波形的輸出。由一片DAC0832和LF356運(yùn)放組成。DAC0832是一個(gè)具有兩個(gè)輸入數(shù)據(jù)寄存器的8位DAC。目前生產(chǎn)的DAC芯片分為兩類,一類芯片內(nèi)部設(shè)置有數(shù)據(jù)寄存器,不需要外加電路就可以直接與微型計(jì)算機(jī)接口。另一類芯片內(nèi)沒有數(shù)據(jù)寄存器,輸出信號(hào)隨數(shù)據(jù)輸入線的狀態(tài)的變化而變化,因此不能直接與微型計(jì)算機(jī)接口,必須通過并行口與微型計(jì)算機(jī)接口。DAC0832是具有20條引線的雙列直插式CMOS器件,它內(nèi)部具有兩級(jí)數(shù)據(jù)寄存器,完成8位電流D/A轉(zhuǎn)換,股不需要外加電路。DAC0832是電流輸出型,示波器上顯示波形,通常需要電壓信號(hào),電流信號(hào)到電壓信號(hào)的轉(zhuǎn)換可以用運(yùn)算放大器LF356實(shí)現(xiàn)。單片機(jī)想DAC0832發(fā)送數(shù)字編碼,產(chǎn)生不同的輸出。先利用采樣定理對(duì)各種波形進(jìn)行抽樣,然后把各種采樣值進(jìn)行編碼,收到的數(shù)字量存入各個(gè)波形表,執(zhí)行程序時(shí)通過查表的方法依次取出,經(jīng)過D/A轉(zhuǎn)換后輸出就可以得到波形。假如N個(gè)點(diǎn)構(gòu)成波形的一個(gè)周期,則DAC0832輸出N個(gè)樣點(diǎn)值后,樣值點(diǎn)形成運(yùn)動(dòng)軌跡,即,一個(gè)周期。重復(fù)輸出N個(gè)點(diǎn)后,成為第二個(gè)周期。利用單片機(jī)的晶振控制輸出周期的速度,也就是控制輸出的波形的頻率。這樣就控制了輸出波形的及其幅值和頻率,例如:正弦波,取20個(gè)樣值點(diǎn)。具體連接的電路圖如圖5所示:圖5D/A轉(zhuǎn)換的電路連接圖3.4紅外電路圖6紅外電路紅外的工作原理:51單片機(jī)對(duì)遙控的解碼和我們前面所講的串口并口通信不同,他不是單純的用高電平代表1,低電平代表0。這一點(diǎn)大家要從思想上面轉(zhuǎn)變過來。他是發(fā)送一連串的數(shù)據(jù)幀,這個(gè)數(shù)據(jù)幀就是一連串的二進(jìn)制代碼,單片機(jī)通過區(qū)分高電平的持續(xù)時(shí)間來區(qū)別紅外編碼的。我們就以HC6800單片機(jī)上的紅外接頭為例來說明,當(dāng)高電平的脈沖寬度為1.12ms的時(shí)候單片機(jī)認(rèn)為它為0,當(dāng)高電平的脈沖寬度為2.25的時(shí)候單片機(jī)認(rèn)為它為1。單片機(jī)是通過判斷脈沖的寬度來得到信息位為0還是為1的。當(dāng)我們按下遙控器的按鍵時(shí),遙控器將發(fā)出如圖2的一串二進(jìn)制代碼,我們稱它為一幀數(shù)據(jù)。根據(jù)各部分的功能。可將它們分為5部分,分別為引導(dǎo)碼、地址碼、地址碼、數(shù)據(jù)碼、數(shù)據(jù)反碼。遙控器發(fā)射代碼時(shí).均是低位在前。高位在后。由圖2分析可以得到.引導(dǎo)碼高電平為4.5ms,低電平為4.5ms。當(dāng)接收到此碼時(shí).表示一幀數(shù)據(jù)的開始。單片機(jī)可以準(zhǔn)備接收下面的數(shù)據(jù)。地址碼由8位二進(jìn)制組成,共256種.圖中地址碼重發(fā)了一次。主要是加強(qiáng)遙控器的可靠性.如果兩次地址碼不相同.則說明本幀數(shù)據(jù)有錯(cuò).應(yīng)丟棄。不同的設(shè)備可以擁有不同的地址碼.因此。同種編碼的遙控器只要設(shè)置地址碼不同,也不會(huì)相互干擾。。在同一個(gè)遙控器中.所有按鍵發(fā)出的地址碼都是相同的。數(shù)據(jù)碼為8位,可編碼256種狀態(tài),代表實(shí)際所按下的鍵。數(shù)據(jù)反碼是數(shù)據(jù)碼的各位求反,通過比較數(shù)據(jù)碼與數(shù)據(jù)反碼.可判斷接收到的數(shù)據(jù)是否正確。如果數(shù)據(jù)碼與數(shù)據(jù)反碼之間的關(guān)系不滿足相反的關(guān)系.則本次遙控接收有誤.?dāng)?shù)據(jù)應(yīng)丟棄。在同一個(gè)遙控器上.所有按鍵的數(shù)據(jù)碼均不相同。在圖2中,數(shù)據(jù)碼為十六進(jìn)制的0CH,數(shù)據(jù)反碼為十六進(jìn)制的0F3H(注意低位在前).兩者之和應(yīng)為0FFH。3.5復(fù)位電路這種復(fù)位電路的工作原理是:單片機(jī)的復(fù)位電路在剛接通電時(shí),剛開始電容是沒有電的,電容內(nèi)的電阻很低,通電后,5V的電通過電阻給電容進(jìn)行充電,電容兩端的電會(huì)由0V慢慢的升到4V左右(此時(shí)間很短一般小于0.3秒),RC構(gòu)成的微分電路在上電瞬間產(chǎn)生一個(gè)微分脈沖,其寬度大于兩個(gè)機(jī)器周期,89C51將復(fù)位。正因?yàn)檫@樣,復(fù)位腳的電由低電位升到高電位,引起了內(nèi)部電路的復(fù)位工作,RST端電壓慢慢下降,降到一定電壓值以后,即為低電平,單片機(jī)開始正常工作(這是單片機(jī)的上電復(fù)位,也叫初始化復(fù)位);當(dāng)按下復(fù)位鍵時(shí),電容兩端放電,電容又回到0V了,于是又進(jìn)行了一次復(fù)位工作(這是手動(dòng)復(fù)位原理)。圖7復(fù)位電路3.6外部時(shí)鐘電路圖3采用11.0592MHz的晶振和兩個(gè)22pf的電容組成時(shí)鐘電路部分圖8外部時(shí)鐘電路3.7LCD顯示部分電路為了節(jié)約成本,采用1602來作為顯示器,用獨(dú)立按鍵來控制不同的顯示,能完成基本的顯示功能。圖9LCD液晶顯示電路3.8電源部分本電源設(shè)計(jì)了兩個(gè)接口,方便不同接口的電源接入,并且在電源部分加上濾波電容,起過濾接入電源的雜波的作用,為了電路中得到+12V、-12V和+5V的直流工作電壓,用變壓器變壓后再通過芯片和電容設(shè)計(jì)出所需要的電路。圖10電源電路3.9獨(dú)立按鍵部分圖八為用獨(dú)立按鍵來控制不同的輸出波形圖11獨(dú)立按鍵3.10串口通信模塊圖中通過MAX232進(jìn)行TTL電平和232電平轉(zhuǎn)換,從而單片機(jī)和上位機(jī)之間通信提供通道。圖12串口通信電路通信電路的目的就是讓通信雙發(fā)的電平匹配,單片機(jī)用的是TTL電平,上位機(jī)的串口用的是232電平。TTL電平的邏輯1的電壓范圍是+3.3V到+5V,邏輯0的電壓范圍是0到+3.3V;232電平的邏輯1的電壓范圍是-15V到-5V,邏輯0的電壓范圍是+5V到+15V。因此設(shè)計(jì)串口通信電路就是讓這兩種電平統(tǒng)一。四、軟件設(shè)計(jì)主程序和子程序都存放在AT89C51單片機(jī)中。主程序的功能是:開機(jī)以后負(fù)責(zé)查鍵,即做出鍵盤掃描及顯示工作,然后根據(jù)用戶所按的鍵轉(zhuǎn)到相應(yīng)的子程序進(jìn)行處理。子程序的功能有:延時(shí)子程序、中斷程序、顯示子程序、按鍵子程序,按鍵子程序中有任意頻率的設(shè)置的數(shù)字鍵(0~9)及確定鍵、幅值和頻率的加和減鍵、幅值頻率的轉(zhuǎn)換鍵、波形的轉(zhuǎn)換鍵等共15個(gè)鍵。主程序的流程圖如圖4.1所示:完成全部硬件和軟件過后,將程序下載到單片機(jī)中進(jìn)行測試,通過反復(fù)測試,反復(fù)的修改函數(shù)的功能,同時(shí)完善硬件的功能,使系統(tǒng)達(dá)到最優(yōu)控制。4.1程序流程圖圖13程序流程圖4.2LCD顯示流程圖圖14LCD顯示框圖五、系統(tǒng)仿真5.1仿真電路圖通過Proteus軟件和電路原理圖繪制出如下仿真電路圖,對(duì)程序和電路功能進(jìn)行測試圖15proteus仿真電路圖5.2輸出波形圖將編寫好的程序下載到單片機(jī)中進(jìn)行仿真,通過反復(fù)測試,反復(fù)的修改函數(shù)的功能,使系統(tǒng)輸出如下波形:圖16正弦波圖17方波圖18三角波圖19正弦波、方波、三角波三種波形疊加后的波形六、硬件和軟件測試6.1硬件調(diào)試整個(gè)硬件調(diào)試過程基本順利,由于采用了分單元模塊制作,各個(gè)單元電路工作穩(wěn)定,給調(diào)試工作帶來很大的方便。放大模塊部分在實(shí)物模擬時(shí),出現(xiàn)發(fā)送信號(hào)不穩(wěn)定、跳變的問題,經(jīng)過仔細(xì)的檢查,電路連線路勁和線路連接問題,最終發(fā)現(xiàn)電路連接是出現(xiàn)連接未牢固的問題,從而得以解決。6.2軟件調(diào)試雖然對(duì)于單片機(jī)的變成較熟悉,但是還存在一些問題,主要有以下問題:(1)在寫調(diào)幅值的程序時(shí),按照自己的想法寫好,下載帶單片機(jī)中,發(fā)現(xiàn),每按一次鍵,幅值一次性增大到5V或者一次性減為0V,經(jīng)過對(duì)程序的分析得知,當(dāng)按下鍵時(shí),程序循環(huán)很多次,為次添加一條鍵按下時(shí)死循環(huán)的語句使每次按下鍵幅值加一次后的只保持住,從而解決了問題。(2)當(dāng)幅值和顯示調(diào)試成功后,寫調(diào)頻程序時(shí),在硬件電路中調(diào)試時(shí)發(fā)現(xiàn),三種波形融合到一起出現(xiàn),在經(jīng)過添加定時(shí)器中斷的方法,結(jié)果使P0口不能夠輸出模擬信號(hào),經(jīng)過努力,最后終于解決了這個(gè)問題。(3)由于AT89C51本身性能的問題,而且硬件方面又沒有用倍頻電路,產(chǎn)生的三角波和方波的頻率沒有達(dá)到1MHz,只達(dá)到2KHz,但是方波達(dá)到了1MHz。七、設(shè)計(jì)心得本次課程設(shè)計(jì),我系統(tǒng)電路的主要設(shè)計(jì),在做課程設(shè)計(jì)的時(shí)間了我學(xué)到了很多東西,總的來說有如下收獲:(1)通過對(duì)電路的設(shè)計(jì),對(duì)51系列單片機(jī)的原理和功能有了進(jìn)一步的了解,學(xué)到了更多的電路知識(shí),如復(fù)位電路的原理,晶振電路的作用,旁路電容的作用,上拉電阻的功能,串口通信電路,熟悉了ULN2003芯片的原理和功能,認(rèn)識(shí)了溫濕度傳感器DHT21,并且能對(duì)其進(jìn)行應(yīng)用。(2)通過原理圖和PCB圖的繪制,學(xué)會(huì)了AltumDesigner軟件的使用,并且能用它完成一些簡單的電路設(shè)計(jì),并且對(duì)元器件的封裝有了一定的了解和認(rèn)識(shí)。(3)通過元器件的購買和電路板的焊接,增強(qiáng)了自身的實(shí)踐動(dòng)手能力,對(duì)電路原理的應(yīng)用有了更深刻的認(rèn)識(shí)。(4)在測試階段,尤其是在硬件電路的檢查階段,有很深的體會(huì),有時(shí)候一個(gè)簡單的錯(cuò)誤就有可能造成電路無法正常工作,通過找錯(cuò)排錯(cuò),更加熟悉了電路的原理和51單片機(jī)的工作原理。(5)通過本次課程設(shè)計(jì),我更加深刻的認(rèn)識(shí)到團(tuán)隊(duì)合作的重要性,小組成員分工合作,是設(shè)計(jì)成功的關(guān)鍵,只有大家團(tuán)結(jié)一致,才能更快更好的完成任務(wù),但是從本課程設(shè)計(jì)中,我也看到了自身還存在許多不足,在實(shí)踐動(dòng)手能力方面比較弱,對(duì)一些電路知識(shí)掌握得不是很好。八、參考文獻(xiàn)[1]童詩白,華成英.模擬電子技術(shù)基礎(chǔ)〔M〕.北京:高等教育出版社,2003.345-362[2]潘永雄,沙河,劉向陽.電子線路CAD實(shí)用教程〔M〕.西安:西安電子科技大學(xué)出版社,2001.13-118.[3]張毅剛,彭喜源,譚曉昀,曲春波.MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1997.53-61九、致謝本次畢業(yè)設(shè)計(jì)共歷時(shí)兩個(gè)多月的時(shí)間,在各位老師和同學(xué)們的關(guān)心幫助下才得以順利完成。在這段時(shí)間里,不僅大大提高了我的實(shí)踐經(jīng)驗(yàn),也使我學(xué)到了許多書本上不曾接觸的只是,開拓了視野,增廣了知識(shí)面,醉重要的是學(xué)會(huì)了如何利用信息資源幫助自己尋早資料,提高了自己的徐學(xué)能力。我對(duì)本課題的內(nèi)容本來知道的很少,經(jīng)過了這次的學(xué)習(xí)和知道老師的悉心教導(dǎo),現(xiàn)在已經(jīng)對(duì)它有了深刻的認(rèn)識(shí),雖然無法達(dá)到專業(yè)水平,但也是有了巨大的收獲,感覺自己受益匪淺。在論文完成之際,我首先謹(jǐn)向在我做畢業(yè)設(shè)計(jì)期間給予我無微不至的關(guān)懷、誨人不倦的老師致以崇高的敬意和真誠的謝意;起床對(duì)朝夕相處的同學(xué)和在畢業(yè)設(shè)計(jì)期間給予我支持和幫助的朋友送上我深深的謝意!十、附件源代碼JUCHI EQU 50H SANJI EQU 51H FANGB EQU 52H TIXIN EQU 53H KU EQU 55H ORG 0000H ;程序入口 AJMP MAIN ;指向主程序 ORG 0003H ;主程序入口地址 AJMP INTT0 ;指向按鍵中斷程序 ORG 0030H ;中斷程序入口地址MAIN: ;主程序 MOV P2,#00H ;將P2口初始化為0 SETB EA ;開總中斷 SETB EX0 ;開啟外部中斷0 SETB IT0 ;將外部中斷0設(shè)置為下降沿有效 MOV DPTR,#00FFH ;設(shè)置輸入寄存器地址 MOV JUCHI,#00H ;初始化 MOV SANJI,#00H MOV FANGB,#00H MOV TIXIN,#00H;***************************************************START: MOV A,KU ;將鍵碼送累加器ACJNE A,#00H,W1 ;將累加器A和00H比較,如果相等,則00鍵按下順序執(zhí)行,否則跳到W1再判斷01鍵是否按下 MOV SANJI,#00H ;屏蔽其他波形 MOV FANGB,#00H MOV TIXIN,#00H AJMP JCB ;跳轉(zhuǎn)到鋸齒波形 W1:CJNE A,#01H,W2 ;判斷01鍵是否按下 MOV JUCHI,#00H ;屏蔽其他波形 MOV FANGB,#00H MOV TIXIN,#00H AJMP SJB ;跳轉(zhuǎn)到三角波形W2:CJNE A,#02H,W3 ;判斷02鍵是否按下 MOV TIXIN,#00H MOV JUCHI,#00

溫馨提示

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