基于51單片機(jī)的數(shù)字頻率計(jì)設(shè)計(jì)_第1頁(yè)
基于51單片機(jī)的數(shù)字頻率計(jì)設(shè)計(jì)_第2頁(yè)
基于51單片機(jī)的數(shù)字頻率計(jì)設(shè)計(jì)_第3頁(yè)
基于51單片機(jī)的數(shù)字頻率計(jì)設(shè)計(jì)_第4頁(yè)
基于51單片機(jī)的數(shù)字頻率計(jì)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于51單片機(jī)的數(shù)字頻率計(jì)設(shè)計(jì)目 錄第1節(jié) 摘要 21.1 數(shù)字頻率計(jì)概述21.2 頻率測(cè)量?jī)x的設(shè)計(jì)思路與頻率的計(jì)算21.3 基本設(shè)計(jì)原理3第2節(jié) 數(shù)字頻率計(jì)(低頻)的硬件結(jié)構(gòu)設(shè)計(jì)4 2.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.3 BCD轉(zhuǎn)換123.4 LCD顯示12第4節(jié) 結(jié)束語(yǔ) 13參考文獻(xiàn) 14附錄 C語(yǔ)源程序代碼15引 言本應(yīng)用系統(tǒng)設(shè)計(jì)的目的是通過(guò)在“單片機(jī)原理及應(yīng)用”課堂上學(xué)習(xí)的知識(shí),以及查閱資料,培養(yǎng)一種

2、自學(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ǔ)。ABSTRACTThis text introduces the control system of a kind of elevator PLC.The elevator is perpendicular directional of the

3、conveyance equipments be indispensable in the high building of transportation equipments.It depends electric power, dragging along to move a car that can carry person or thing and lead a track in the building of the well way up do perpendicularity to ascend and descend sport, there is prominent func

4、tion in the people's life.And the control elevator circulate of the PLC system also has more and more high request, request to attain the movement purpose of "steady, quasi-, quick" of elevator movement.That system mainly from PLC, logic control the electric circuit constitute.Include

5、an exchanges difference to tread electric motor among them, after the electric appliances, get in touch with a machine, route of travel switch and press button, give out light the indicator constitute and transducer for the control system of integral whole.The this machine control unit adoption carr

6、ies on whole process a control to the machine by the programmable controller PLC of Mitsubishi company.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è)1602

7、A LCD顯示器動(dòng)態(tài)顯示6位數(shù)。測(cè)量范圍從1Hz10kHz的正弦波、方波、三角波,時(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所示。若被測(cè)量信號(hào)的周期為,分頻數(shù)m1,分頻后信號(hào)的周期為T(mén),則:T=m1Tx 。由圖可知: T=NTo (注:To為標(biāo)

8、準(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)頻率的誤差,通常情況下很?。欢到y(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)變成脈沖

9、信號(hào),其重復(fù)頻率等于被測(cè)頻率fx。時(shí)間基準(zhǔn)信號(hào)發(fā)生器提供標(biāo)準(zhǔn)的時(shí)間脈沖信號(hào),若其周期為1s,則門(mén)控電路的輸出信號(hào)持續(xù)時(shí)間亦準(zhǔn)確地等于1s。閘門(mén)電路由標(biāo)準(zhǔn)秒信號(hào)進(jìn)行控制,當(dāng)秒信號(hào)來(lái)到時(shí),閘門(mén)開(kāi)通,被測(cè)脈沖信號(hào)通過(guò)閘門(mén)送到計(jì)數(shù)譯碼顯示電路。秒信號(hào)結(jié)束時(shí)閘門(mén)關(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)生模塊、換檔

10、模擬轉(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.3 AT89C51單片機(jī)及其引腳說(shuō)明89C51是一種高性能低功耗的采用CMOS工藝制造的8位微控制器,它提供下列標(biāo)準(zhǔn)特征:4K字節(jié)的程序存儲(chǔ)器,128字節(jié)的RAM,32條I/O線(xiàn),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í)

11、,每個(gè)引腳能驅(qū)動(dòng)8個(gè)TTL邏輯門(mén)電路。當(dāng)對(duì)0端口寫(xiě)入1時(shí),可以作為高阻抗輸入端使用。當(dāng)P0口訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),它還可設(shè)定成地址數(shù)據(jù)總線(xiàn)復(fù)用的形式。在這種模式下,P0口具有內(nèi)部上拉電阻。在EPROM編程時(shí),P0口接收指令字節(jié),同時(shí)輸出指令字節(jié)在程序校驗(yàn)時(shí)。程序校驗(yàn)時(shí)需要外接上拉電阻。·P1口:P1口是一帶有內(nèi)部上拉電阻的8位雙向I/O口。P1口的輸出緩沖能接受或輸出4個(gè)TTL邏輯門(mén)電路。當(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

12、口:P2是一帶有內(nèi)部上拉電阻的8位雙向的I/O端口。P2口的輸出緩沖能驅(qū)動(dòng)4個(gè)TTL邏輯門(mén)電路。當(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位地址線(xiàn)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)(例MOVX R1),P2口輸出特殊功能寄存器的內(nèi)容。當(dāng)EPROM編程或校驗(yàn)時(shí),P2口同時(shí)接收高8位地址和一些控制信號(hào)。·P3口:P3是一

13、帶有內(nèi)部上拉電阻的8位雙向的I/O端口。P3口的輸出緩沖能驅(qū)動(dòng)4個(gè)TTL邏輯門(mén)電路。當(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ǔ)器都選通)表1 P3口的第二功能·RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),R

14、ST引腳出現(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)。·/VPP:外部訪問(wèn)允許。為了使單片機(jī)能夠有效的傳送外部數(shù)據(jù)存儲(chǔ)器從0000H到FFFH單元的指令,必須

15、同GND相連接。需要主要的是,如果加密位1被編程,復(fù)位時(shí)EA端會(huì)自動(dòng)內(nèi)部鎖存。當(dāng)執(zhí)行內(nèi)部編程指令時(shí),應(yīng)該接到VCC端。·XTAL1:振蕩器反相放大器以及內(nèi)部時(shí)鐘電路的輸入端。·XTAL2:振蕩器反相放大器的輸出端。在本次設(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,幅值

16、過(guò)大的被測(cè)信號(hào)經(jīng)過(guò)分壓器分壓送入后級(jí)放大器,以避免波形失真。由運(yùn)算放大器構(gòu)成的射級(jí)跟隨器起阻抗變換作用,使輸入阻抗提高。同相輸入的運(yùn)算放大器的放大倍數(shù)為(R1+R2)/R1,改變R1的大小可以改變放大倍數(shù)。系統(tǒng)的整形電路由施密特觸發(fā)器組成,整形后的方波送到閘門(mén)以便計(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ā)器 ,引腳及

17、功能見(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ù)位線(xiàn)上的高電平完成。 圖5 CD4013芯片引腳用功能圖 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ù)器

18、以二進(jìn)制進(jìn)行計(jì)數(shù),在時(shí)鐘脈沖線(xiàn)上使用施密特觸發(fā)器對(duì)時(shí)鐘上升和下降時(shí)間無(wú)限制。 圖6 CD4060芯片引腳用功能圖時(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),偏壓(V1V6

19、);D、 通過(guò)單片機(jī)控制將所測(cè)的頻率信號(hào)讀數(shù)顯示出來(lái)。2)、技術(shù)參數(shù)2.1)極限參數(shù)表名 稱(chēng)符 號(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ù)表名 稱(chēng)符 號(hào)測(cè) 試 條 件標(biāo) 準(zhǔn) 值單位MINTYPEMAX輸入高電平VIH-2.2VDDV輸入低電平VIL-0.30.6V輸出高電平VOHIOH = 0.2mA2.4-V輸出低電平VOLIOL = 1.2

20、mA-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.1a 5.1b1000ns允許脈沖寬度,高電平PWEH450-ns允許上升和下降時(shí)間tEr tEf-25ns地址建立時(shí)間tAS140-ns數(shù)據(jù)延遲時(shí)間tDDR-320ns數(shù)據(jù)建立時(shí)間tDSW195-ns數(shù)據(jù)保持時(shí)間tH10-nsDATA HOLD TIMEtDHR20-ns地址保持時(shí)間tAH10-ns4)、引腳和指

21、令功能4.1)模塊引腳功能表引 線(xiàn) 號(hào)符 號(hào)名 稱(chēng)功 能1Vss接地0V2VDD電路電源5V±10%3VEE液晶驅(qū)動(dòng)電壓保證VDD-VEE=4.55V電壓差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ù)線(xiàn)數(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í)。

22、)4.3) 指令功能 格式:RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0共11種指令:清除,返回,輸入方式設(shè)置,顯示開(kāi)關(guān),控制,移位,功能設(shè)置,CGRAM地址設(shè)置,DDRAM地址設(shè)置,讀忙標(biāo)志,寫(xiě)數(shù)據(jù)到CG/DDRAM,讀數(shù)據(jù)由CG/DDRAM。5)、顯示位與DD RAM 地址的對(duì)應(yīng)關(guān)系 顯 示 位 序 號(hào)1 2 3 4 5 40 DD RAM 地 址(HEX)第 一 行00 01 02 03 04 . 27第 二 行40 41 42 43 44 . 676)、初始化方法用戶(hù)所編的顯示程序,開(kāi)始必須進(jìn)行初始化,否則模塊無(wú)法正常顯示,下面介紹兩種初始化方法;6.1

23、利用內(nèi)部復(fù)位電路進(jìn)行初始化下面指令是在初始化過(guò)程中執(zhí)行的。(1) 清屏(DISPLAY CLEAR);(2) 功能設(shè)置(FUNCTION SET);DL = 1: 8Bit 接口數(shù)據(jù);N = 0: 1行顯示; F = 0:5×7dot字形;(3) 顯示開(kāi)/關(guān)控制(DISPLAY ON/OFF CONTROL)D = 0: 顯示關(guān); C = 0: 光標(biāo)關(guān); B = 0: 消隱關(guān)(4) 輸入方式設(shè)置(ENTRY MODE SET )I/D = 1:(增量): S = 0: 無(wú)移位:6.2) 軟件復(fù)位 如果電路電源不能滿(mǎn)足復(fù)位電路的要求的話(huà),那么初始化就要用軟件來(lái)實(shí)現(xiàn),過(guò)程如下: 八位接口

24、初始化流程圖 VDD 上升到4.5V后等待>15 電 源 開(kāi) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 × × × × 等待>4.1ms 0 0 0 0 1 1 × × × × RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 × × × × 等待>100us RS RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 R/

25、W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 N F × × 檢查忙標(biāo)志或延時(shí)40us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 0 × × 檢查忙標(biāo)志或延時(shí)40us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 0 1檢查忙標(biāo)志或延時(shí)40 us RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 1 I/D S檢查忙標(biāo)志或延時(shí)1

26、.64 初 始 化 結(jié) 束檢查忙標(biāo)志或延時(shí)40第3節(jié) 軟件設(shè)計(jì)主要能過(guò)編寫(xiě)軟件來(lái)控制硬件完成以下各模塊的功能:3.1定時(shí)讀數(shù)3.2量程轉(zhuǎn)換3.3 BCD轉(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)CT=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,或門(mén)輸出為1,打開(kāi)與門(mén)

27、,使定時(shí)器的啟動(dòng)僅受TRO端信號(hào)電平的控制。在此種情況下,INT0引腳的電平變化對(duì)或門(mén)不起作用。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,或門(mén)、與門(mén)全部打開(kāi),外部信號(hào)電平通過(guò)INTO引腳直接控制定時(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ī)

28、、通訊設(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í)到了這門(mén)學(xué)科的在應(yīng)用方面的廣闊前景,并且通過(guò)知識(shí)與應(yīng)用于實(shí)踐的結(jié)合更加豐富了自己的知識(shí)。擴(kuò)展了知識(shí)面,不但掌握了本專(zhuān)業(yè)的相關(guān)知識(shí),而且對(duì)其他專(zhuān)業(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í)方向是非常

29、有益的,為將來(lái)的的就業(yè)提前打了下堅(jiān)實(shí)的基礎(chǔ)。在設(shè)計(jì)過(guò)程中,得到了我的指導(dǎo)老師的悉心指導(dǎo)與幫助,還有其他老師和同學(xué)的大力支持和協(xié)助,在此一并表示衷心的感謝。參考文獻(xiàn)1李光飛 ,樓苗然主編.51系列單片機(jī).北京:北京航空航天大學(xué)出版社,20032黃正瑾編著.CPLD系統(tǒng)設(shè)計(jì)技術(shù)入門(mén)與應(yīng)用. 北京: 電子工業(yè)出版社, 20023謝自美編著.電子線(xiàn)路設(shè)計(jì)·實(shí)驗(yàn)·測(cè)試.華中理工大學(xué)出版社,20024陳永甫編著.電子電路智能化設(shè)計(jì).實(shí)例與應(yīng)用.北京:電子工業(yè)出版,2002.85康華光主編.電子技術(shù) 基礎(chǔ)(第四版).北京:高等教育出版社,1999附錄 C語(yǔ)源程序代碼#include<

30、;reg51.h>#include<intrins.h>#include<math.h>#define uchar unsigned char#define uint unsigned int#define S_RST DS_RST=1#define C_RST DS_RST=0#define S_CLK DS_CLK=1#define C_CLK DS_CLK=0#define Write_Disable RW_DS1302(0x8e,0x80) /寫(xiě)保護(hù)#define Write_Enable RW_DS1302(0x8e,0x00) /允許寫(xiě)入sbit SE

31、T = P15;   /設(shè)置按鍵sbit ADD = P14;   /調(diào)整加sbit DEC = P16;   /調(diào)整減#define RdefineT1 TH1=0;TL1=0;TR1=0;a=0; /初始化超時(shí)檢測(cè)/#define Delay2us()   _nop_();_nop_(); /延時(shí)2us,每nop 1us/#define Delay8us()   _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();#

32、define     ReDetectTime    20 /設(shè)置重復(fù)檢測(cè)次次數(shù),超出次數(shù)則超時(shí)/ds18b20命令#define     SkipROM      0xCC#define     MatchROM     0x55#define     ReadROM    &

33、#160; 0x33#define     SearchROM    0xF0#define     AlarmSearch 0xEC#define     Convert      0x44 /啟動(dòng)溫度轉(zhuǎn)換#define     WriteScr     0x4E#define   &#

34、160; ReadScr      0xBE#define     CopyScr      0x48#define     RecallEE     0xB8#define     ReadPower    0xB4#define     md  

35、 collect_time0&0x0f#define     mg   (collect_time0&0x70)/16#define     fd   collect_time1&0x0f#define     fg   (collect_time1&0x70)/16#define     sd   collect_time2

36、&0x0f#define     sg   (collect_time2&0x30)/16sbit DS_RST = P12;    /DS復(fù)位端sbit DS_CLK = P10;    /SCLK端sbit DS_IO   = P11;    /IO端sbit DS18B20 = P13; /溫度傳感器接口bit keyboard,flash,STA=1;uchar choose,a; uchar coll

37、ect_time3=0x45,0x23,0x11;/定義變量秒分時(shí)uchar collect_temperature2 = 0;uchar num10 = 0x7e,0x48,0x3d,0x6d,0x4b,0x67,0x77,0x4c,0x7f,0x6f;    /七段數(shù)碼管顯示的段碼uchar display8 = 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08;void delay(uint i)uint k;while(i-)    for(k=0;k<120;k+);void Dat_In

38、t(void)/數(shù)據(jù)初始化P0=0xff;P1=0xff;P2=0xff;choose=0;flash=1;void Time01_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;/*                 

39、60;                                    *              DS18B2

40、0溫度傳感器程序段                 *                                &

41、#160;                     */*11微秒延時(shí)函數(shù)*/void delayus(uint t)for(;t>0;t-);/*18B20復(fù)位函數(shù)*/void ow_reset(void)char presence=1;while(presence)while(presence)DS18B20 = 1;_nop_();_nop_();DS18B20 = 0;delayus

42、(50); / 550usDS18B20 = 1; delayus(6); / 66uspresence=DS18B20; / presence=0繼續(xù)下一步   delayus(45);    /延時(shí)500uspresence = DS18B20;DS18B20 = 1; /*18B20寫(xiě)命令函數(shù)*/向 1-WIRE 總線(xiàn)上寫(xiě)一個(gè)字節(jié)void write_byte(uchar val)uchar i;for (i=8; i>0; i-) /DS18B20 = 1;_nop_();_nop_(); DS18B20 = 0;_nop_();

43、_nop_();_nop_();_nop_();_nop_();/5usDS18B20 = val&0x01;      /最低位移出delayus(6);           /66usval=val/2;          /右移一位DS18B20 = 1;delayus(1); /*18B20讀1個(gè)字節(jié)函數(shù)*/從總線(xiàn)上讀取一個(gè)字節(jié)uchar r

44、ead_byte(void)uchar i;uchar value = 0;for (i=8;i>0;i-)DS18B20 = 1;_nop_();_nop_();value>>=1;DS18B20 = 0;             /_nop_();_nop_();_nop_();_nop_();   /4usDS18B20 = 1;_nop_();_nop_();_nop_();_nop_();   /4us if

45、(DS18B20)value|=0x80;delayus(6);           /66usDS18B20 = 1;return(value);/*讀出溫度函數(shù)*/void Ds18b20_ReadEE(void)ow_reset();write_byte(SkipROM); / Skip ROMwrite_byte(Convert); / 發(fā)轉(zhuǎn)換命令ow_reset();       /總線(xiàn)復(fù)位write_byte(SkipROM

46、); / 發(fā)Skip ROM命令write_byte(ReadScr); / 發(fā)讀命令collect_temperature0=read_byte(); /溫度低8位collect_temperature1=read_byte(); /溫度高8位/*                             &

47、#160;                        *              DS1302時(shí)鐘芯片程序段          

48、60;         *                                         &

49、#160;            */void DS1302_InputByte(uchar byte) /往DS1302寫(xiě)入1Byte數(shù)據(jù) uchar i;uchar temp;temp = byte; for(i=8; i>0; i-)       DS_IO = temp&0x01;    S_CLK;    C_CLK;   

50、 temp = temp >> 1;    uchar DS1302_OutputByte(void) /從DS1302讀取1Byte數(shù)據(jù) uchar i;uchar temp=0;for(i=0; i<8;i+)    C_CLK;    if(DS_IO!=0) temp|=(1<<i);    S_CLK; return(temp); void RW_DS1302(uchar reg, uchar byte)/向DS1302寄存器寫(xiě)數(shù)據(jù)C_RST;C

51、_CLK;S_RST;DS1302_InputByte(reg); DS1302_InputByte(byte);S_CLK;C_RST; uchar Read_DS1302(uchar reg)/從DS1302寄存器讀數(shù)據(jù)uchar byte;    C_RST;    C_CLK;    S_RST;DS1302_InputByte(reg);byte = DS1302_OutputByte();    S_CLK;    C_RST;ret

52、urn(byte);void GetTime_DS1302(uchar *ucCurtime) /讀取DS1302當(dāng)前時(shí)間    ucCurtime0 = Read_DS1302(0x81);/格式為: 秒 分 時(shí)ucCurtime1 = Read_DS1302(0x83);ucCurtime2 = Read_DS1302(0x85);void Set_Time(uchar *receive) /寫(xiě)時(shí)間Write_Enable; /控制命令,允許寫(xiě)操作RW_DS1302(0x80,receive0);RW_DS1302(0x82,receive1);RW_DS13

53、02(0x84,receive2);Write_Disable; / 控制命令,寫(xiě)保護(hù) /*                                          &#

54、160;           *                   數(shù)碼管顯示程序段                   * &

55、#160;                                                 &

56、#160;  */void deal(void)/送顯前的數(shù)據(jù)處理uint timer2;uint lstemp;timer2+;if(STA)   GetTime_DS1302(collect_time);if(flash)/用于閃動(dòng)效果的控制的display0 = numsg;display1 = numsd;display2 = numfg;display3 = numfd;display4 = nummg;display5 = nummd;elseswitch(choose)case 1:display0=0;break;case 2:display1=0

57、;break;case 3:display2=0;break;case 4:display3=0;break;case 5:display4=0;break;case 6:display5=0;break;if(timer2=3000)/間斷性獲取溫度timer2=0;if(STA)TR0=0;Ds18b20_ReadEE();TR0=1;if(collect_temperature1>127)collect_temperature0=255-collect_temperature0;   collect_temperature1=255-collect_temper

58、ature1;    lstemp=(collect_temperature0)>>4)|(collect_temperature1)<<4);display6 = num(uchar)(lstemp)/10);display7 = num(uchar)(lstemp)%10); /*                      

59、60;                               *                   按鍵控制程序

60、段                     *                             

61、60;                        */void Scan(void)if(SET=0&&keyboard=1) /檢測(cè)設(shè)置鍵有無(wú)按下,并進(jìn)行相應(yīng)操作 if(SET=0&&keyboard=1)   RdefineT1;   /超時(shí)檢測(cè)初始化   

62、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)

63、60;   /只有在時(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=0TR0=0;   switch (choose)        case 1 :if(sg=2) &#

64、160;    collect_time2 = collect_time2&0x0f;      else collect_time2+=16;      break;    case 2 :if(sg<2)&&(sd=9)      collect_time2 &= 0x30;      if(sg

65、>=2)&&(sd=3)      collect_time2 &= 0x30;      else collect_time2+;      break;    case 3: if(fg=5)      collect_time1 &= 0x0f;      else coll

66、ect_time1+=16;      break;    case 4: if(fd=9)      collect_time1 &= 0xf0;      else collect_time1+;      break;    case 5: if(mg=5)      col

67、lect_time0 &= 0x0f;      else collect_time0+=16;      break;    case 6: if(md=9)      collect_time0 &= 0xf0;      else collect_time0+;      break; 

68、      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)        case 1 :if(sg=0)       collect_time2=0x20;      else collect_time2-=16;      break;    case 2 :if(sg<2&&sd=0)    

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論