基于單片機(jī)的數(shù)字頻率計(jì)_第1頁(yè)
基于單片機(jī)的數(shù)字頻率計(jì)_第2頁(yè)
基于單片機(jī)的數(shù)字頻率計(jì)_第3頁(yè)
基于單片機(jī)的數(shù)字頻率計(jì)_第4頁(yè)
基于單片機(jī)的數(shù)字頻率計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(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)介

PAGEPAGE1題目:基于51單片機(jī)的數(shù)字頻率計(jì)目錄第1節(jié)摘要…………………2數(shù)字頻率計(jì)概述………2頻率測(cè)量?jī)x的設(shè)計(jì)思路與頻率的計(jì)算………………2基本設(shè)計(jì)原理…………3第2節(jié)數(shù)字頻率計(jì)(低頻)的硬件結(jié)構(gòu)設(shè)計(jì)………………42。1系統(tǒng)硬件的構(gòu)成………42.2系統(tǒng)工作原理圖………42.3AT89C51單片機(jī)及其引腳說(shuō)明………52.4信號(hào)調(diào)理及放大整形模塊……………72。5時(shí)基信號(hào)產(chǎn)生電路……………………72.6顯示模塊………………8第3節(jié)軟件設(shè)計(jì)………………123.1定時(shí)計(jì)數(shù)……………123。2量程轉(zhuǎn)換……………123.3BCD轉(zhuǎn)換………………123.4LCD顯示………………12第4節(jié)結(jié)束語(yǔ)………………13參考文獻(xiàn)………………………14附錄C語(yǔ)源程序代碼…………15基于51單片機(jī)的數(shù)字頻率計(jì)河南工業(yè)職業(yè)技術(shù)學(xué)院計(jì)控0904班學(xué)生:指導(dǎo)老師:引言本應(yīng)用系統(tǒng)設(shè)計(jì)的目的是通過(guò)在“單片機(jī)原理及應(yīng)用”課堂上學(xué)習(xí)的知識(shí),以及查閱資料,培養(yǎng)一種自學(xué)的能力。并且引導(dǎo)一種創(chuàng)新的思維,把學(xué)到的知識(shí)應(yīng)用到日常生活當(dāng)中。在設(shè)計(jì)的過(guò)程中,不斷的學(xué)習(xí),思考和同學(xué)間的相互討論,運(yùn)用科學(xué)的分析問(wèn)題的方法解決遇到的困難,掌握單片機(jī)系統(tǒng)一般的開(kāi)發(fā)流程,學(xué)會(huì)對(duì)常見(jiàn)問(wèn)題的處理方法,積累設(shè)計(jì)系統(tǒng)的經(jīng)驗(yàn),充分發(fā)揮教學(xué)與實(shí)踐的結(jié)合.全能提高個(gè)人系統(tǒng)開(kāi)發(fā)的綜合能力,開(kāi)拓了思維,為今后能在相應(yīng)工作崗位上的工作打下了堅(jiān)實(shí)的基礎(chǔ).ABSTRACTThistextintroducesthecontrolsystemofakindofelevat(yī)orPLC。Theelevatorisperpendiculardirectionaloftheconveyanceequipmentsbeindispensableinthehighbuildingoftransportat(yī)ionequipments.Itdependselectricpower,draggingalongtomoveacarthatcancarrypersonorthingandleadatrackinthebuildingofthewellwayupdoperpendicularitytoascendanddescendsport,thereisprominentfunctioninthepeople'slife.Andthecontrolelevat(yī)orcirculateofthePLCsystemalsohasmoreandmorehighrequest,requesttoattainthemovementpurposeof”steady,quasi—,quick"ofelevatormovement.ThatsystemmainlyfromPLC,logiccontroltheelectriccircuitconstitute。Includeanexchangesdifferencetotreadelectricmotoramongthem,aftertheelectricappliances,getintouchwithamachine,routeoftravelswitchandpressbutton,giveoutlighttheindicatorconstituteandHYPERLINK"http://www。iciba.com/?s=transducer"transducerforthecontrolsystemofintegralwhole.ThethismachinecontrolunitadoptioncarriesonwholeprocessacontroltothemachinebytheprogrammablecontrollerPLCofMitsubishicompany.1。1數(shù)字頻率計(jì)概述數(shù)字頻率計(jì)是計(jì)算機(jī)、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域不可缺少的測(cè)量?jī)x器。它是一種用十進(jìn)制數(shù)字顯示被測(cè)信號(hào)頻率的數(shù)字測(cè)量?jī)x器。它的基本功能是測(cè)量正弦信號(hào),方波信號(hào)及其他各種單位時(shí)間內(nèi)變化的物理量。在進(jìn)行模擬、數(shù)字電路的設(shè)計(jì)、安裝、調(diào)試過(guò)程中,由于其使用十進(jìn)制數(shù)顯示,測(cè)量迅速,精確度高,顯示直觀,經(jīng)常要用到頻率計(jì).本數(shù)字頻率計(jì)將采用定時(shí)、計(jì)數(shù)的方法測(cè)量頻率,采用一個(gè)1602ALCD顯示器動(dòng)態(tài)顯示6位數(shù).測(cè)量范圍從1Hz—10kHz的正弦波、方波、三角波,時(shí)基寬度為1us,10us,100us,1ms.用單片機(jī)實(shí)現(xiàn)自動(dòng)測(cè)量功能?;驹O(shè)計(jì)原理是直接用十進(jìn)制數(shù)字顯示被測(cè)信號(hào)頻率的一種測(cè)量裝置。它以測(cè)量周期的方法對(duì)正弦波、方波、三角波的頻率進(jìn)行自動(dòng)的測(cè)量.1.2頻率測(cè)量?jī)x的設(shè)計(jì)思路與頻率的計(jì)算圖1頻率測(cè)量原理圖頻率測(cè)量?jī)x的設(shè)計(jì)思路主要是:對(duì)信號(hào)分頻,測(cè)量一個(gè)或幾個(gè)被測(cè)量信號(hào)周期中已知標(biāo)準(zhǔn)頻率信號(hào)的周期個(gè)數(shù),進(jìn)而測(cè)量出該信號(hào)頻率的大小,其原理如右圖1所示。圖1頻率測(cè)量原理圖若被測(cè)量信號(hào)的周期為,分頻數(shù)m1,分頻后信號(hào)的周期為T,則:T=m1Tx。由圖可知:T=NTo(注:To為標(biāo)準(zhǔn)信號(hào)的周期,所以T為分頻后信號(hào)的周期,則可以算出被測(cè)量信號(hào)的頻率f.)由于單片機(jī)系統(tǒng)的標(biāo)準(zhǔn)頻率比較穩(wěn)定,而是系統(tǒng)標(biāo)準(zhǔn)信號(hào)頻率的誤差,通常情況下很??;而系統(tǒng)的量化誤差小于1,所以由式T=NTo可知,頻率測(cè)量的誤差主要取決于N值的大小,N值越大,誤差越小,測(cè)量的精度越高.1.3基本設(shè)計(jì)原理基本設(shè)計(jì)原理是直接用十進(jìn)制數(shù)字顯示被測(cè)信號(hào)頻率的一種測(cè)量裝置.它以測(cè)量周期的方法對(duì)正弦波、方波、三角波的頻率進(jìn)行自動(dòng)的測(cè)量。所謂“頻率”,就是周期性信號(hào)在單位時(shí)間(1s)內(nèi)變化的次數(shù)。若在一定時(shí)間間隔T內(nèi)測(cè)得這個(gè)周期性信號(hào)的重復(fù)變化次數(shù)N,則其頻率可表示為f=N/T。其中脈沖形成電路的作用是將被測(cè)信號(hào)變成脈沖信號(hào),其重復(fù)頻率等于被測(cè)頻率fx。時(shí)間基準(zhǔn)信號(hào)發(fā)生器提供標(biāo)準(zhǔn)的時(shí)間脈沖信號(hào),若其周期為1s,則門控電路的輸出信號(hào)持續(xù)時(shí)間亦準(zhǔn)確地等于1s。閘門電路由標(biāo)準(zhǔn)秒信號(hào)進(jìn)行控制,當(dāng)秒信號(hào)來(lái)到時(shí),閘門開(kāi)通,被測(cè)脈沖信號(hào)通過(guò)閘門送到計(jì)數(shù)譯碼顯示電路。秒信號(hào)結(jié)束時(shí)閘門關(guān)閉,計(jì)數(shù)器停止計(jì)數(shù)。由于計(jì)數(shù)器計(jì)得的脈沖數(shù)N是在1秒時(shí)間內(nèi)的累計(jì)數(shù),所以被測(cè)頻率fx=NHz.?第2節(jié)數(shù)字頻率計(jì)(低頻)的硬件結(jié)構(gòu)設(shè)計(jì)2.1系統(tǒng)硬件的構(gòu)成本頻率計(jì)的數(shù)據(jù)采集系統(tǒng)主要元器件是單片機(jī)AT89C51,由它完成對(duì)待測(cè)信號(hào)頻率的計(jì)數(shù)和結(jié)果顯示等功能,外部還要有分頻器、顯示器等器件??煞譃橐韵聨讉€(gè)模塊:放大整形模塊、秒脈沖產(chǎn)生模塊、換檔模擬轉(zhuǎn)換模塊、單片機(jī)系統(tǒng)、LCD顯示模塊。各模塊關(guān)系圖如圖2所示:圖2數(shù)字頻率計(jì)功能模塊2。2系統(tǒng)工作原理圖該系統(tǒng)工作的總原理圖如圖3所示:圖3數(shù)字頻率計(jì)系統(tǒng)工作原理圖2.3AT89C51單片機(jī)及其引腳說(shuō)明89C51是一種高性能低功耗的采用CMOS工藝制造的8位微控制器,它提供下列標(biāo)準(zhǔn)特征:4K字節(jié)的程序存儲(chǔ)器,128字節(jié)的RAM,32條I/O線,2個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)5中斷源兩個(gè)優(yōu)先級(jí)的中斷結(jié)構(gòu),一個(gè)雙工的串行口,片上震蕩器和時(shí)鐘電路。引腳說(shuō)明:·VCC:電源電壓·GND:地·P0口:P0口是一組8位漏極開(kāi)路型雙向I/O口,作為輸出口用時(shí),每個(gè)引腳能驅(qū)動(dòng)8個(gè)TTL邏輯門電路。當(dāng)對(duì)0端口寫(xiě)入1時(shí),可以作為高阻抗輸入端使用。當(dāng)P0口訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),它還可設(shè)定成地址數(shù)據(jù)總線復(fù)用的形式.在這種模式下,P0口具有內(nèi)部上拉電阻.在EPROM編程時(shí),P0口接收指令字節(jié),同時(shí)輸出指令字節(jié)在程序校驗(yàn)時(shí)。程序校驗(yàn)時(shí)需要外接上拉電阻?!1口:P1口是一帶有內(nèi)部上拉電阻的8位雙向I/O口.P1口的輸出緩沖能接受或輸出4個(gè)TTL邏輯門電路。當(dāng)對(duì)P1口寫(xiě)1時(shí),它們被內(nèi)部的上拉電阻拉升為高電平,此時(shí)可以作為輸入端使用.當(dāng)作為輸入端使用時(shí),P1口因?yàn)閮?nèi)部存在上拉電阻,所以當(dāng)外部被拉低時(shí)會(huì)輸出一個(gè)低電流(IIL).·P2口:P2是一帶有內(nèi)部上拉電阻的8位雙向的I/O端口。P2口的輸出緩沖能驅(qū)動(dòng)4個(gè)TTL邏輯門電路。當(dāng)向P2口寫(xiě)1時(shí),通過(guò)內(nèi)部上拉電阻把端口拉到高電平,此時(shí)可以用作輸入口.作為輸入口,因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出電流(IIL)。P2口在訪問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如MOVX@DPTR)時(shí),P2口送出高8位地址數(shù)據(jù)。在這種情況下,P2口使用強(qiáng)大的內(nèi)部上拉電阻功能當(dāng)輸出1時(shí)。當(dāng)利用8位地址線訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)(例MOVX@R1),P2口輸出特殊功能寄存器的內(nèi)容.當(dāng)EPROM編程或校驗(yàn)時(shí),P2口同時(shí)接收高8位地址和一些控制信號(hào).·P3口:P3是一帶有內(nèi)部上拉電阻的8位雙向的I/O端口.P3口的輸出緩沖能驅(qū)動(dòng)4個(gè)TTL邏輯門電路.當(dāng)向P3口寫(xiě)1時(shí),通過(guò)內(nèi)部上拉電阻把端口拉到高電平,此時(shí)可以用作輸入口。作為輸入口,因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出電流(IIL)。P3口同時(shí)具有AT89C51的多種特殊功能,具體如下表1所示:端口引腳第二功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3。2(外部中斷0)P3。3(外部中斷1)P3.4T0(定時(shí)器0)P3。5T1(定時(shí)器1)P3.6(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3。7(外部數(shù)據(jù)存儲(chǔ)器都選通)表1P3口的第二功能·RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。·ALE/:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許是一輸出脈沖,用以鎖存地址的低8位字節(jié)。當(dāng)在Flash編程時(shí)還可以作為編程脈沖輸出()。一般情況下,ALE是以晶振頻率的1/6輸出,可以用作外部時(shí)鐘或定時(shí)目的。但也要注意,每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖?!?程序存儲(chǔ)允許時(shí)外部程序存儲(chǔ)器的讀選通信號(hào)。當(dāng)AT89C52執(zhí)行外部程序存儲(chǔ)器的指令時(shí),每個(gè)機(jī)器周期兩次有效,除了當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)兩個(gè)信號(hào)?!ぃ諴P:外部訪問(wèn)允許。為了使單片機(jī)能夠有效的傳送外部數(shù)據(jù)存儲(chǔ)器從0000H到FFFH單元的指令,必須同GND相連接。需要主要的是,如果加密位1被編程,復(fù)位時(shí)EA端會(huì)自動(dòng)內(nèi)部鎖存。當(dāng)執(zhí)行內(nèi)部編程指令時(shí),應(yīng)該接到VCC端?!TAL1:振蕩器反相放大器以及內(nèi)部時(shí)鐘電路的輸入端?!TAL2:振蕩器反相放大器的輸出端.在本次設(shè)計(jì)中,采用89C51作為CPU處理器,充分利用其硬件資源,結(jié)合D觸發(fā)器CD4013,分頻器CD4060,模擬轉(zhuǎn)換開(kāi)關(guān)CD4051,計(jì)數(shù)器74LS90等數(shù)字處理芯片,主要控制兩大硬件模塊,量程切換以及顯示模塊。下面還將詳細(xì)說(shuō)明.2。4信號(hào)調(diào)理及放大整形模塊?放大整形系統(tǒng)包括衰減器、跟隨器、放大器、施密特觸發(fā)器。它將正弦輸入信號(hào)Vx整形成同頻率方波Vo,幅值過(guò)大的被測(cè)信號(hào)經(jīng)過(guò)分壓器分壓送入后級(jí)放大器,以避免波形失真。由運(yùn)算放大器構(gòu)成的射級(jí)跟隨器起阻抗變換作用,使輸入阻抗提高.同相輸入的運(yùn)算放大器的放大倍數(shù)為(R1+R2)/R1,改變R1的大小可以改變放大倍數(shù)。系統(tǒng)的整形電路由施密特觸發(fā)器組成,整形后的方波送到閘門以便計(jì)數(shù).由于輸入的信號(hào)幅度是不確定、可能很大也有可能很小,這樣對(duì)于輸入信號(hào)的測(cè)量就不方便了,過(guò)大可能會(huì)把器件燒毀,過(guò)小可能器件檢測(cè)不到,所以在設(shè)計(jì)中采用了這個(gè)信號(hào)調(diào)理電路對(duì)輸入的波形進(jìn)行阻抗變換、放大限幅和整形,信號(hào)調(diào)理部分電路具體實(shí)現(xiàn)電路原理圖和參數(shù)如下圖4所示:?圖42.5時(shí)基信號(hào)產(chǎn)生電路:CD4013——--—-雙上升沿D觸發(fā)器,引腳及功能見(jiàn)如下圖5:CD4013由兩個(gè)相同的、相互獨(dú)立的數(shù)據(jù)型觸發(fā)器構(gòu)成。每個(gè)觸發(fā)器有獨(dú)立的數(shù)據(jù)置位復(fù)位時(shí)鐘輸入和Q及Q非輸出。此器件可用作移位寄存器,且通過(guò)將Q非輸出連接到數(shù)據(jù)輸入,可用作計(jì)數(shù)器和觸發(fā)器。在時(shí)鐘上升沿觸發(fā)時(shí),加在D輸入端的邏輯電平傳送到Q輸出端。置位和復(fù)位或復(fù)位線上的高電平完成.圖5CD4013芯片引腳用功能圖CD4060—---—-14位二進(jìn)制串行計(jì)數(shù)器,引腳及功能見(jiàn)如下圖6:CD4060由一震蕩器和14極二進(jìn)制串行計(jì)數(shù)器位組成,震蕩器的結(jié)構(gòu)可以是RC或晶振電路。CR為高電平時(shí),計(jì)數(shù)器清零且振蕩器使用無(wú)效,所有的計(jì)數(shù)器位均為主從觸發(fā)器CP1非(和CP0)的下降沿計(jì)數(shù)器以二進(jìn)制進(jìn)行計(jì)數(shù),在時(shí)鐘脈沖線上使用施密特觸發(fā)器對(duì)時(shí)鐘上升和下降時(shí)間無(wú)限制。圖6CD4060芯片引腳用功能圖時(shí)基信號(hào)的產(chǎn)生原理:本電路采用32768HZ晶體震蕩器,利用CD4060芯片經(jīng)過(guò)14級(jí)分頻得到2HZ的信號(hào)(32768/214),在經(jīng)過(guò)CD4013雙D觸發(fā)器經(jīng)過(guò)二分頻得到0。5HZ的方波,即輸出秒脈沖信號(hào)使單片機(jī)進(jìn)行計(jì)數(shù).圖七秒脈沖產(chǎn)生電路原理圖2.6顯示模塊1602基本技術(shù):1)、主要功能A、40通道點(diǎn)陣LCD驅(qū)動(dòng);B、可選擇當(dāng)作行驅(qū)動(dòng)或列驅(qū)動(dòng);C、輸入/輸出信號(hào):輸出,能產(chǎn)生20×2個(gè)LCD驅(qū)動(dòng)波形;輸入,接受控制器送出的串行數(shù)據(jù)和控制信號(hào),偏壓(V1∽V6);D、通過(guò)單片機(jī)控制將所測(cè)的頻率信號(hào)讀數(shù)顯示出來(lái)。2)、技術(shù)參數(shù)2.1)極限參數(shù)表名稱符號(hào)標(biāo)準(zhǔn)值單位MINTYPEMAX電路電源VDD—VSS-0.37.0VLCD驅(qū)動(dòng)電壓VDD—VEEVDD-13。5VDD+0.3V輸入電壓VIN-0.3VDD+0。3V靜電電壓-—100V工作溫度-20+70°C儲(chǔ)存溫度-30+80°C2。2)電參數(shù)表名稱符號(hào)測(cè)試條件標(biāo)準(zhǔn)值單位MINTYPEMAX輸入高電平VIH—2。2VDDV輸入低電平VIL--0.30.6V輸出高電平VOHIOH=0。2mA2。4—V輸出低電平VOLIOL=1。2mA-0。4V工作電流IDDVDD=5。0V2。0mA液晶驅(qū)動(dòng)電壓VDD-VEETa=0°C4。9VTa=25°C4.7Ta=50°C4。53)、時(shí)序特性表項(xiàng)目符號(hào)測(cè)試條件標(biāo)準(zhǔn)值單位MINTYPEMAX允許時(shí)間周期TCYCE5。1a5.1b1000ns允許脈沖寬度,高電平PWEH450—---ns允許上升和下降時(shí)間tErtEf--—-25ns地址建立時(shí)間tAS140--—-ns數(shù)據(jù)延遲時(shí)間tDDR--—-320ns數(shù)據(jù)建立時(shí)間tDSW195-—--ns數(shù)據(jù)保持時(shí)間tH10-—--nsDATAHOLDTIMEtDHR20——--ns地址保持時(shí)間tAH10—-—-ns4)、引腳和指令功能4.1)模塊引腳功能表引線號(hào)符號(hào)名稱功能1Vss接地0V2VDD電路電源5V±10%3VEE液晶驅(qū)動(dòng)電壓保證VDD-VEE=4.5∽5V電壓差4RS寄存器選擇信號(hào)H:數(shù)據(jù)寄存器L:指令寄存器5R/W讀/寫(xiě)信號(hào)H:讀L:寫(xiě)6E片選信號(hào)下降沿觸發(fā),鎖存數(shù)據(jù)7|14DB0|DB7數(shù)據(jù)線數(shù)據(jù)傳輸4。2)寄存器選擇功能表RSR/W操作00指令寄存器(IR)寫(xiě)入01忙標(biāo)志和地址計(jì)數(shù)器讀出10數(shù)據(jù)寄存器(DR)寫(xiě)入11數(shù)據(jù)寄存器讀出(注:忙標(biāo)志為"1"時(shí),表明正在進(jìn)行內(nèi)部操作,此時(shí)不能輸入指令或數(shù)據(jù),要等內(nèi)部操作結(jié)束,即忙標(biāo)志為”0"時(shí)。)4.3)指令功能格式:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0共11種指令:清除,返回,輸入方式設(shè)置,顯示開(kāi)關(guān),控制,移位,功能設(shè)置,CGRAM地址設(shè)置,DDRAM地址設(shè)置,讀忙標(biāo)志,寫(xiě)數(shù)據(jù)到CG/DDRAM,讀數(shù)據(jù)由CG/DDRAM。5)、顯示位與DDRAM地址的對(duì)應(yīng)關(guān)系顯示位序號(hào)12345………………40DDRAM地址(HEX)第一行0001020304..…………..27第二行4041424344……………。。676)、初始化方法用戶所編的顯示程序,開(kāi)始必須進(jìn)行初始化,否則模塊無(wú)法正常顯示,下面介紹兩種初始化方法;6.1利用內(nèi)部復(fù)位電路進(jìn)行初始化下面指令是在初始化過(guò)程中執(zhí)行的。清屏(DISPLAYCLEAR);功能設(shè)置(FUNCTIONSET);DL=1:8Bit接口數(shù)據(jù);N=0:1行顯示;F=0:5×7dot字形;顯示開(kāi)/關(guān)控制(DISPLAYON/OFFCONTROL)D=0:顯示關(guān);C=0:光標(biāo)關(guān);B=0:消隱關(guān)輸入方式設(shè)置(ENTRYM(fèi)ODESET)I/D=1:(增量):S=0:無(wú)移位:6.2)軟件復(fù)位如果電路電源不能滿足復(fù)位電路的要求的話,那么初始化就要用軟件來(lái)實(shí)現(xiàn),過(guò)程如下:八位接口初始化流程圖VDD上升到4。5V后等待>15電源開(kāi)VDD上升到4。5V后等待>15電源開(kāi)RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011×RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011××××↓等待>4。1ms000011××000011××××RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011××××RSRSR/WDB7DB6DB5DB4DB3DB2DB1DB0R/WDB7DB6DB5DB4DB3DB2DB1DB0000011NF×RSRSR/WDB7DB6DB5DB4DB3DB2DB1DB0R/WDB7DB6DB5DB4DB3DB2DB1DB0000011NF××RSR/WDB7DB6DB5DB4DB3DB2DB1DB000000010×RSR/WDB7DB6DB5DB4DB3DB2DB1DB000000010××RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000000001RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000000001RSR/WDB7DB6DB5DB4DB3DB2DB1DB000000001I/DSRSR/WDB7DB6DB5DB4DB3DB2DB1DB000000001I/DS初始化結(jié)束↓檢查忙標(biāo)志或延時(shí)40初始化結(jié)束第3節(jié)軟件設(shè)計(jì)主要能過(guò)編寫(xiě)軟件來(lái)控制硬件完成以下各模塊的功能:3。1定時(shí)讀數(shù)3。2量程轉(zhuǎn)換3。3BCD轉(zhuǎn)換3。4LCD顯示的功能單片機(jī)當(dāng)C/T=1時(shí)為計(jì)數(shù)方式,多路開(kāi)關(guān)與定時(shí)器的外部引腳連通,外部計(jì)數(shù)脈沖由引腳輸入。當(dāng)外部信號(hào)由1至0跳變時(shí),計(jì)數(shù)器加1,此時(shí)T0成為外部事件的計(jì)數(shù)器。由于確認(rèn)一次由1至0的跳變要用24個(gè)振蕩器周期,所以計(jì)數(shù)器的計(jì)數(shù)頻率為單片機(jī)內(nèi)部計(jì)數(shù)器頻率的1/24。當(dāng)C/T=0時(shí)為定時(shí)方式,對(duì)單片機(jī)內(nèi)部計(jì)數(shù)器進(jìn)行m2分頻后,計(jì)數(shù)器的實(shí)際計(jì)數(shù)頻率為單片機(jī)內(nèi)部頻率凡的1/m2,當(dāng)GATE=0時(shí),反相器輸出為1,或門輸出為1,打開(kāi)與門,使定時(shí)器的啟動(dòng)僅受TRO端信號(hào)電平的控制。在此種情況下,INT0引腳的電平變化對(duì)或門不起作用.TRO=1時(shí)接通控制開(kāi)關(guān),計(jì)數(shù)脈沖加到計(jì)數(shù)器上,每來(lái)一個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)器加1,只有當(dāng)TRO=0時(shí),控制開(kāi)關(guān)斷開(kāi),計(jì)數(shù)器停止計(jì)數(shù)。當(dāng)GATA=0時(shí),若TRO=1,或門、與門全部打開(kāi),外部信號(hào)電平通過(guò)INTO(shè)引腳直接控制定時(shí)器的啟動(dòng)和關(guān)閉。輸人高電平時(shí)允許計(jì)數(shù),否則停止計(jì)數(shù)。根據(jù)定時(shí)器的結(jié)構(gòu)原理,若我們將GATE位、TR0均設(shè)為‘1',INT0端輸人被測(cè)頻率信號(hào),當(dāng)被測(cè)信號(hào)的高電平到來(lái)時(shí),開(kāi)始計(jì)數(shù);當(dāng)被測(cè)信號(hào)的低電平到來(lái)時(shí),計(jì)數(shù)器停止計(jì)數(shù),此時(shí)TL0、TH0的數(shù)據(jù)就是相應(yīng)的N值。?結(jié)束語(yǔ)數(shù)字頻率計(jì)是計(jì)算機(jī)、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域不可缺少的測(cè)量?jī)x器。在進(jìn)行模擬、數(shù)字電路的設(shè)計(jì)、安裝、調(diào)試過(guò)程中,由于其使用十進(jìn)制數(shù)顯示,測(cè)量迅速,精確度高,顯示直觀,會(huì)被經(jīng)常使用到.通過(guò)本次課程的設(shè)計(jì),不但加深我對(duì)在課程上所學(xué)到的單片機(jī)理論知識(shí)的認(rèn)識(shí)和理解,重新讓自己認(rèn)識(shí)到了這門學(xué)科的在應(yīng)用方面的廣闊前景,并且通過(guò)知識(shí)與應(yīng)用于實(shí)踐的結(jié)合更加豐富了自己的知識(shí)。擴(kuò)展了知識(shí)面,不但掌握了本專業(yè)的相關(guān)知識(shí),而且對(duì)其他專業(yè)的知識(shí)也有所了解,而且較系統(tǒng)的掌握單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)過(guò)程,因而自身的綜合素質(zhì)有了全面的提高。經(jīng)過(guò)這次一個(gè)較完整的產(chǎn)品設(shè)計(jì)和制作過(guò)程,對(duì)于認(rèn)識(shí)到自己在知識(shí)方面存在的不足,明確今后的學(xué)習(xí)方向是非常有益的,為將來(lái)的的就業(yè)提前打了下堅(jiān)實(shí)的基礎(chǔ).在設(shè)計(jì)過(guò)程中,得到了我的指導(dǎo)老師的悉心指導(dǎo)與幫助,還有其他老師和同學(xué)的大力支持和協(xié)助,在此一并表示衷心的感謝。?參考文獻(xiàn)[1]李光飛,樓苗然主編。51系列單片機(jī)。北京:北京航空航天大學(xué)出版社,2003[2]黃正瑾編著.CPLD系統(tǒng)設(shè)計(jì)技術(shù)入門與應(yīng)用。北京:電子工業(yè)出版社,2002[3]謝自美編著.電子線路設(shè)計(jì)·實(shí)驗(yàn)·測(cè)試.華中理工大學(xué)出版社,2002[4]陳永甫編著。電子電路智能化設(shè)計(jì).實(shí)例與應(yīng)用.北京:電子工業(yè)出版,2002.8[5]康華光主編.電子技術(shù)基礎(chǔ)(第四版)。北京:高等教育出版社,1999?附錄C語(yǔ)源程序代碼#include<reg51。h〉?#include〈intrins。h〉?#include<mat(yī)h.h〉#defineucharunsignedchar?#defineuintunsignedint?#defineS_RSTDS_RST=1?#defineC_RSTDS_RST=0?#defineS_CLKDS_CLK=1

#defineC_CLKDS_CLK=0

#defineWrite_DisableRW_DS1302(0x8e,0x80)//寫(xiě)保護(hù)

#defineWrite_EnableRW_DS1302(0x8e,0x00)//允許寫(xiě)入sbitSET=P1^5;

//設(shè)置按鍵?sbitADD=P1^4;

//調(diào)整加?sbitDEC=P1^6;

//調(diào)整減?#defineRdefineT1TH1=0;TL1=0;TR1=0;a=0;//初始化超時(shí)檢測(cè)

//#defineDelay2us()

_nop_();_nop_();//延時(shí)2us,每nop1us

//#defineDelay8us()

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();#define

ReDetectTime

20//設(shè)置重復(fù)檢測(cè)次次數(shù),超出次數(shù)則超時(shí)//ds18b20命令

#define

SkipROM

0xCC?#define

Mat(yī)chROM

0x55?#define

ReadROM

0x33?#define

SearchROM

0xF0?#define

AlarmSearch0xEC#define

Convert

0x44//啟動(dòng)溫度轉(zhuǎn)換?#define

WriteScr

0x4E?#define

ReadScr

0xBE?#define

CopyScr

0x48

#define

RecallEE

0xB8?#define

ReadPower

0xB4#define

md

collect_time[0]&0x0f?#define

mg

(collect_time[0]&0x70)/16?#define

fd

collect_time[1]&0x0f?#define

fg

(collect_time[1]&0x70)/16?#define

sd

collect_time[2]&0x0f?#define

sg

(collect_time[2]&0x30)/16sbitDS_RST=P1^2;

//DS復(fù)位端

sbitDS_CLK=P1^0;

//SCLK端?sbitDS_IO

=P1^1;

//IO端

sbitDS18B20=P1^3;//溫度傳感器接口bitkeyboard,flash,STA=1;?ucharchoose,a;

ucharcollect_time[3]={0x45,0x23,0x11};//定義變量秒分時(shí)?ucharcollect_temperature[2]={0};?ucharnum[10]={0x7e,0x48,0x3d,0x6d,0x4b,0x67,0x77,0x4c,0x7f,0x6f};?

//七段數(shù)碼管顯示的段碼?uchardisplay[8]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};?voiddelay(uinti)?{

uintk;?while(i--)?{?

for(k=0;k〈120;k++){;}?}

}?voidDat(yī)_Int(void)//數(shù)據(jù)初始化?{?P0=0xff;?P1=0xff;

P2=0xff;?choose=0;?flash=1;?}voidTime01_Int(void)?{?TMOD=0x12;//定時(shí)器0為8位自動(dòng)重載定時(shí)采樣,定時(shí)器1為16位超時(shí)檢測(cè)處理?TCON=0x00;?TH0=0x60;?TL0=0x60;?TR0=1;IE=0x0a;//允許定時(shí)器0、1中斷?IP=0x00;?}/********************************************************?*

*?*

DS18B20溫度傳感器程序段

*

*?********************************************************/?/***********11微秒延時(shí)函數(shù)**********/

//

voiddelayus(uintt)?{?for(;t>0;t-—);

}/***********18B20復(fù)位函數(shù)**********/?voidow_reset(void)?{?charpresence=1;?while(presence)?{?while(presence)?{?DS18B20=1;_nop_();_nop_();?DS18B20=0;

delayus(50);//550us?DS18B20=1;?delayus(6);//66us

presence=DS18B20;//presence=0繼續(xù)下一步

}?delayus(45);

//延時(shí)500us?presence=~DS18B20;?}?DS18B20=1;

}?/**********18B20寫(xiě)命令函數(shù)*********/

//向1—WIRE總線上寫(xiě)一個(gè)字節(jié)?voidwrite_byte(ucharval)?{?uchari;?for(i=8;i〉0;i--)//?{

DS18B20=1;_nop_();_nop_();

DS18B20=0;_nop_();_nop_();_nop_();_nop_();_nop_();//5us

DS18B20=val&0x01;

//最低位移出?delayus(6);

//66us?val=val/2;

//右移一位?}?DS18B20=1;?delayus(1);

//?/*********18B20讀1個(gè)字節(jié)函數(shù)********/?//從總線上讀取一個(gè)字節(jié)?ucharread_byte(void)

{?uchari;?ucharvalue=0;?for(i=8;i>0;i--)

{?DS18B20=1;_nop_();_nop_();?value〉>=1;?DS18B20=0;

//?_nop_();_nop_();_nop_();_nop_();

//4us?DS18B20=1;_nop_();_nop_();_nop_();_nop_();

//4us?if(DS18B20)value|=0x80;?delayus(6);

//66us?}?DS18B20=1;?return(value);?}?//?/***********讀出溫度函數(shù)**********/?//?voidDs18b20_ReadEE(void)?{

ow_reset();?write_byte(SkipROM);//SkipROM?write_byte(Convert);//發(fā)轉(zhuǎn)換命令

ow_reset();

//總線復(fù)位?write_byte(SkipROM);//發(fā)SkipROM命令?write_byte(ReadScr);//發(fā)讀命令?collect_temperature[0]=read_byte();//溫度低8位?collect_temperature[1]=read_byte();//溫度高8位

}?/********************************************************

*?*

DS1302時(shí)鐘芯片程序段

*?*

*?********************************************************/?voidDS1302_InputByte(ucharbyte)//往DS1302寫(xiě)入1Byte數(shù)據(jù)

{?uchari;?uchartemp;?temp=byte;

for(i=8;i〉0;i——)?

{?

DS_IO=temp&0x01;?

S_CLK;

C_CLK;?

temp=temp>〉1;?

}?}?ucharDS1302_OutputByte(void)//從DS1302讀取1Byte數(shù)據(jù)

{?uchari;?uchartemp=0;for(i=0;i<8;i++)?{

C_CLK;?

if(DS_IO?。?)temp|=(1〈<i);?

S_CLK;?}?return(temp);?}voidRW_DS1302(ucharreg,ucharbyte)//向DS1302寄存器寫(xiě)數(shù)據(jù)?{?C_RST;?C_CLK;?S_RST;?DS1302_InputByte(reg);

DS1302_InputByte(byte);?S_CLK;?C_RST;?}?ucharRead_DS1302(ucharreg)//從DS1302寄存器讀數(shù)據(jù)?{?ucharbyte;?

C_RST;

C_CLK;

S_RST;?DS1302_InputByte(reg);

byte=DS1302_OutputByte();

S_CLK;?

C_RST;?return(byte);

}?voidGetTime_DS1302(uchar*ucCurtime)//讀取DS1302當(dāng)前時(shí)間?{

ucCurtime[0]=Read_DS1302(0x81);//格式為:秒分時(shí)

ucCurtime[1]=Read_DS1302(0x83);?ucCurtime[2]=Read_DS1302(0x85);?}voidSet_Time(uchar*receive)//寫(xiě)時(shí)間?{

Write_Enable;//控制命令,允許寫(xiě)操作RW_DS1302(0x80,receive[0]);

RW_DS1302(0x82,receive[1]);?RW_DS1302(0x84,receive[2]);?Write_Disable;//控制命令,寫(xiě)保護(hù)

}/********************************************************?*

*?*

數(shù)碼管顯示程序段

*?*

*?********************************************************/

voiddeal(void)//送顯前的數(shù)據(jù)處理?{uinttimer2;

uintlstemp;?timer2++;if(STA)?

{GetTime_DS1302(collect_time);}?if(flash)//用于閃動(dòng)效果的控制的

{?display[0]=num[sg];?display[1]=num[sd];?display[2]=num[fg];?display[3]=num[fd];?display[4]=num[mg];

display[5]=num[md];?}?else?{switch(choose)

{?case1:display[0]=0;break;?case2:display[1]=0;break;?case3:display[2]=0;break;?case4:display[3]=0;break;?case5:display[4]=0;break;

case6:display[5]=0;break;?}?}?if(timer2==3000)//間斷性獲取溫度?{

timer2=0;

if(STA)?{TR0=0;

Ds18b20_ReadEE();

TR0=1;?}?}

if(collect_temperature[1]>127)?{?collect_temperat(yī)ure[0]=255-collect_temperature[0];

collect_temperature[1]=255—collect_temperature[1];?}?

lstemp=((collect_temperature[0])>>4)|((collect_temperature[1])〈<4);?display[6]=num[(uchar)((lstemp)/10)];?display[7]=num[(uchar)((lstemp)%10)];}/********************************************************?*

*?*

按鍵控制程序段

*?********************************************************/voidScan(void)?{??if(SET==0&&keyboard==1)//檢測(cè)設(shè)置鍵有無(wú)按下,并進(jìn)行相應(yīng)操作?{?if(SET==0&&keyboard==1)?

{RdefineT1;

//超時(shí)檢測(cè)初始化?

choose++;

while(SET==0);?

if(choose==7)?

{TR0=0;?

Set_Time(collect_time);?

TR0=1;?

STA=1;

//設(shè)置完畢,重新開(kāi)始采集時(shí)間?

choose=0;?

}?

}if(choose)

//只有在時(shí)間調(diào)整時(shí),加減按鍵才有作用

{

if(ADD==0&&keyboard==1)

//檢測(cè)加調(diào)整鍵有無(wú)按下,并進(jìn)行相應(yīng)操作?

{?

if(ADD==0&&keyboard==1)

{RdefineT1;

//超時(shí)檢測(cè)初始化a=0?TR0=0;?

switch(choose)?

case1:if(sg==2)?

collect_time[2]=collect_time[2]&0x0f;?

else{collect_time[2]+=16;}?

break;?

case2:if((sg<2)&&(sd==9))?

collect_time[2]&=0x30;?

if((sg>=2)&&(sd==3))?

collect_time[2]&=0x30;

else{collect_time[2]++;}?

break;?

case3:if(fg==5)

collect_time[1]&=0x0f;?

else{collect_time[1]+=16;}?

break;?

case4:if(fd==9)

collect_time[1]&=0xf0;?

else{collect_time[1]++;}

break;?

case5:if(mg==5)?

collect_time[0]&=0x0f;?

else{collect_time[0]+=16;}

break;?

case6:if(md==9)?

collect_time[0]&=0xf0;?

else{collect_time[0]++;}?

break;?

}?

TR0=1;?

while(ADD==0);?

}?

}if(DEC==0&&keyboard==1)

//檢測(cè)減調(diào)整鍵有無(wú)按下,并進(jìn)行相應(yīng)操作?

{?

if(DEC==0&&keyboard==1)?

{RdefineT1;//超時(shí)檢測(cè)初始化

TR0=0;

switch(choose)

{

case1:if

溫馨提示

  • 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)論