智能儀器課程設(shè)計(jì)——智能頻率計(jì)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩21頁(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、<p>  電子儀器綜合課程設(shè)計(jì)報(bào)告</p><p>  題 目 智能數(shù)字頻率計(jì) </p><p>  學(xué)院(部) 信 息 工 程 學(xué) 院 </p><p>  專 業(yè) 電 子 信 息 工 程 </p><p>  班 級(jí)

2、 </p><p>  學(xué)生姓名 </p><p>  學(xué) 號(hào) </p><p>  一、課設(shè)題目:智能頻率計(jì)設(shè)計(jì)</p><p>  二.技術(shù)指標(biāo): 測(cè)頻的范圍是1Hz~1MHz</p>&l

3、t;p><b>  三.設(shè)計(jì)內(nèi)容</b></p><p>  本次設(shè)計(jì)的基于單片機(jī)的數(shù)字式頻率計(jì)包括波形整形電路、分頻電路、多路數(shù)據(jù)選擇器、單片機(jī)和顯示電路等幾個(gè)模塊。所以本次設(shè)計(jì)的數(shù)字式頻率計(jì)的電路由以下幾塊構(gòu)成:由施密特觸發(fā)器構(gòu)成的波形整形放大電路、由74LS90構(gòu)成的分頻電路、由74LS153四選一電路構(gòu)成的四選一電路、AT89C51單片機(jī)以及由74LS138譯碼電路、74LS2

4、45上拉電路和八段數(shù)碼管顯示電路構(gòu)成的數(shù)碼顯示電路構(gòu)。其原理圖如圖1所示:</p><p>  圖1 系統(tǒng)框圖 </p><p>  控制電路在數(shù)字頻率計(jì)中起至關(guān)重要的作用。采用什么樣的控制電路,直接決定了數(shù)字頻率計(jì)的性能。為了得到一個(gè)高性能的數(shù)字頻率計(jì),本次設(shè)計(jì)采用單片機(jī)來(lái)做為數(shù)字頻率計(jì)的核心控制電路,輔之于少數(shù)的外部控制電路。本系統(tǒng)讓被測(cè)信號(hào)經(jīng)過(guò)放大整形后,進(jìn)入單片機(jī)開始計(jì)數(shù),利用

5、單片機(jī)內(nèi)部定時(shí)計(jì)數(shù)器定時(shí),在把所記得的數(shù)經(jīng)過(guò)相關(guān)處理后送到顯示電路中顯示。</p><p><b>  1.硬件設(shè)計(jì)</b></p><p>  基于單片機(jī)的數(shù)字頻率計(jì)的設(shè)計(jì),包括一個(gè)由放大整形電路、分頻電路、多路數(shù)據(jù)選擇器、AT89C51以及顯示電路,其系統(tǒng)總電路圖如圖2所示:</p><p><b>  圖2 總電路圖</

6、b></p><p><b>  1.1放大整形電路</b></p><p>  因?yàn)樵趩纹瑱C(jī)計(jì)數(shù)中只能對(duì)脈沖波進(jìn)行計(jì)數(shù),而實(shí)際中需要測(cè)量頻率的信號(hào)是多種多樣的,有脈沖波、還有可能有正弦波、三角波等,所以需要一個(gè)電路。把待測(cè)信號(hào)轉(zhuǎn)化為可以進(jìn)行計(jì)數(shù)的脈沖波。</p><p>  矩形脈沖波的整形電路有兩種:施密特觸發(fā)器、單穩(wěn)態(tài)觸發(fā)器。而這兩

7、種電路都可以有門電路或是555定時(shí)器構(gòu)成。由于本次設(shè)計(jì)的基于單片機(jī)的數(shù)字頻率計(jì)的放大整形電路部分需求比較簡(jiǎn)單,所以我們選擇由555定時(shí)器構(gòu)成的施密特觸發(fā)器來(lái)作為信號(hào)波形整形電路,</p><p>  施密特觸發(fā)器常見(jiàn)的邏輯符號(hào)如圖3所示。</p><p>  圖3 施密特觸發(fā)器的邏輯符號(hào)</p><p>  集成施密特觸發(fā)器,常用TTL電路集成施密特觸發(fā)器有7413

8、等。常用CMOS電路集成施密特觸發(fā)器有CC40106等。</p><p><b>  1.2分頻電路</b></p><p>  本次設(shè)計(jì)采用的是脈沖定時(shí)測(cè)頻法,由于考慮到單片機(jī)的定時(shí)計(jì)數(shù)器得計(jì)數(shù)能力有限,無(wú)法對(duì)過(guò)高頻進(jìn)行測(cè)量,所以我們對(duì)待測(cè)信號(hào)進(jìn)行了分頻,這樣能提高測(cè)量頻率的范圍,還能相應(yīng)的提高頻率測(cè)量的精度。所以我們需要把待測(cè)信號(hào)進(jìn)行分頻。在本次設(shè)計(jì)中,因?yàn)槲覀円?/p>

9、進(jìn)行的是十分頻、一百分頻和一千分頻,所以我們選用74LS90電路,經(jīng)過(guò)正確的連接后就可以進(jìn)行十分頻,進(jìn)行三次十分頻就可以得到分頻一千次的信號(hào)。其引腳圖和功能表分別如圖4和表1所示。 </p><p>  圖4 74LS90引腳圖</p><p>  表1 74LS90功能表</p><p>  信號(hào)經(jīng)過(guò)分頻電路

10、74LS90,其頻率將減小到原信號(hào)的十分之一。</p><p><b>  1.3.四選一電路</b></p><p>  本次設(shè)計(jì)需要用到一個(gè)四選一電路,用來(lái)選擇輸入單片機(jī)進(jìn)行計(jì)數(shù)的待測(cè)信號(hào)。74LS153就是其中比較好用和常用的一種四選一電路元件。所以這次采用很常見(jiàn)的74LS153集成電路,其電路圖如下圖5所示:</p><p>  圖5

11、 74LS153電路原理圖</p><p>  數(shù)據(jù)選擇器有多個(gè)輸入,一個(gè)輸出。其功能類似于單刀多擲開關(guān),故又稱為多路開關(guān)(MUX)。在控制端的作用下可從多路并行數(shù)據(jù)中選擇一路送輸出端。</p><p>  TTL中規(guī)模數(shù)據(jù)選擇器是根據(jù)多位數(shù)據(jù)的編碼情況將其中一路數(shù)據(jù)由輸出端 送出的電路,74LS153是雙四選一數(shù)據(jù)選擇器,其中有兩個(gè)四選一數(shù)據(jù)選

12、擇器,它們各有四個(gè)數(shù)據(jù)輸入端:1D3、1D2、1D1、1D0和2D3、2D2、2D1、2D0。一個(gè)輸出端1Y、2Y和一個(gè)控制許可端S。系統(tǒng)控制端S為低電平有效。當(dāng)控制許可端S=1時(shí),傳輸通道被封鎖,芯片被禁止,Y=0,輸入的數(shù)據(jù)不能傳送出去;當(dāng)控制許可端S=0時(shí),傳輸通道打開,芯片被選中,處于工作狀態(tài),輸入的數(shù)據(jù)被傳送出去A1、A0是地址選擇端,兩路選擇器共用。</p><p>  74LS153邏輯功能見(jiàn)表。從

13、功能表可看出,當(dāng)S端輸入為低電平時(shí),四選一數(shù)據(jù)選擇器處于工作狀態(tài),它有4位并行數(shù)據(jù)輸入D0~D3,單選擇地址輸入A1、A0的二進(jìn)制碼依次由00遞增至11時(shí),4個(gè)通道的并行數(shù)據(jù)便依次傳送到輸出端W。</p><p>  表2 74LS153的功能表</p><p><b>  1.4.單片機(jī)</b></p><p>  單片機(jī)作為控制系統(tǒng)和計(jì)數(shù)

14、器,是本次設(shè)計(jì)的最重要的部分,AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微

15、控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。所以本次設(shè)計(jì)采用AT89C51單片機(jī)。</p><p>  本次設(shè)計(jì)采用的是89C51單片機(jī), 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í)鐘電路。</p&

16、gt;<p><b>  1.5.顯示電路</b></p><p>  我們測(cè)量的頻率最終要顯示出來(lái)。八段LED數(shù)碼管顯示器基本電路如圖6所示。</p><p>  圖6 八段LED數(shù)碼管顯示器</p><p>  八段LED數(shù)碼管顯示器由8個(gè)發(fā)光二極管組成?;?個(gè)長(zhǎng)條形的發(fā)光管排列成“日”字形,另一個(gè)圓點(diǎn)形的發(fā)光管在數(shù)碼管

17、顯示器的右下角作為顯示小數(shù)點(diǎn)用,它能顯示各種數(shù)字及部份英文字母。LED數(shù)碼管顯示器有兩種形式:一種是8個(gè)發(fā)光二極管的陽(yáng)極都連在一起的,稱之為共陽(yáng)極LED數(shù)碼管顯示器;另一種是8個(gè)發(fā)光二極管的陰極都連在一起的,稱之為共陰極LED數(shù)碼管顯示器。如下圖所示。共陰和共陽(yáng)結(jié)構(gòu)的LED數(shù)碼管顯示器各筆劃段名和安排位置是相同的。當(dāng)二極管導(dǎo)通時(shí),對(duì)應(yīng)的筆劃段發(fā)亮,由發(fā)亮的筆劃段組合而顯示的各種字符。8個(gè)筆劃段hgfedcba對(duì)應(yīng)于一個(gè)字節(jié)(8位)的D7

18、、D6、D5、D4、D3、D2、D1、D0,于是用8位二進(jìn)制碼就能表示欲顯示字符的字形代碼。</p><p>  在單片機(jī)應(yīng)用系統(tǒng)中,數(shù)碼管顯示器顯示常用兩種辦法:靜態(tài)顯示和動(dòng)態(tài)掃描顯示。所謂靜態(tài)顯示,就是每一個(gè)數(shù)碼管顯示器都要占用單獨(dú)的具有鎖存功能的I/O接口用于筆劃段字形代碼。這樣單片機(jī)只要把要顯示的字形代碼發(fā)送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時(shí),再發(fā)送新的字形碼,因此,使用這種辦法單片機(jī)中CPU

19、的開銷小,能供給單獨(dú)鎖存的I/O接口電路很多。在單片機(jī)系統(tǒng)中動(dòng)態(tài)掃描顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一。其接口電路是把所有顯示器的8個(gè)筆劃段a-h同名端連在一起,而每一個(gè)顯示器的公共極COM是各自獨(dú)立地受I/O線控制。CPU向字段輸出口送出字形碼時(shí),所有顯示器接收到相同的字形碼,但究竟是那個(gè)顯示器亮,則取決于COM端,而這一端是由I/O控制的,所以我們就能自行決定何時(shí)顯示哪一位了。而所謂動(dòng)態(tài)掃描就是指我們采用分時(shí)的辦法,輪

20、流控制各個(gè)顯示器的COM端,使各個(gè)顯示器輪流點(diǎn)亮。 在輪流點(diǎn)亮掃描過(guò)程中,每位顯示器的點(diǎn)亮?xí)r間是極為短暫的(約1ms),但由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),</p><p>  綜合以上內(nèi)容,我們?cè)谶@次設(shè)計(jì)中采用LED數(shù)碼管,采用單片機(jī)靜態(tài)顯示計(jì)數(shù)來(lái)顯示。采用一個(gè)74LS138譯碼器來(lái)控制各個(gè)數(shù)碼管,采用一個(gè)74

21、LS245來(lái)做上拉電路,使數(shù)碼顯示管有足夠的電壓進(jìn)行顯示。</p><p>  顯示電路由數(shù)碼管和74LS138組成,數(shù)碼管已經(jīng)介紹過(guò)了,現(xiàn)在介紹顯示電路組成的另一重要電路:74LS138。在本次設(shè)計(jì)中,由74LS138連接數(shù)碼管的接地端,由此來(lái)控制數(shù)碼管的亮和滅。其引腳圖和功能表分別如圖7和表3所示。</p><p>  圖7 74LS153引腳圖</p><p

22、>  表3 74LS138功能表</p><p>  由圖和功能表可以看出,74LS138譯碼器有三個(gè)地址輸入端A、B、C和八個(gè)譯碼輸出端Y0~Y7,當(dāng)輸入為000時(shí),Y0輸出端為0,其他輸出端都為1;同理可推出其他輸出狀態(tài),即只有輸出變量下標(biāo)對(duì)應(yīng)的二進(jìn)制代碼與輸入代碼相等的輸出端為0,其他的輸出端都為1。另外,該譯碼器還有三個(gè)使能端:G1、/G2A、/G2B,只有當(dāng)G1=1、/G2A=0、/G2B

23、=0同時(shí)滿足,才能譯碼。三個(gè)條件中任何一個(gè)不滿足就禁止譯碼。其中譯碼選通端/G2B也被稱作數(shù)據(jù)輸入端,主要指它用于數(shù)據(jù)分配時(shí)所起的作用。設(shè)置多個(gè)使能端使得該譯碼器能被靈活組成各種電路。</p><p>  由于單片機(jī)輸出的顯示數(shù)據(jù)電壓不夠高,無(wú)法直接送到數(shù)碼管上直接顯示,因此需要用一個(gè)上拉電路來(lái)提高輸出數(shù)據(jù)的電壓值,以便送到數(shù)碼管顯示。在本次設(shè)計(jì)中我們選用DM74LS245N。其電路圖如圖8所示。</p&g

24、t;<p>  圖8 DM74LS245N</p><p><b>  2.軟件設(shè)計(jì)</b></p><p><b>  測(cè)頻軟件實(shí)現(xiàn)原理</b></p><p>  測(cè)頻軟件的實(shí)現(xiàn)是基于電路系統(tǒng)來(lái)進(jìn)行設(shè)計(jì)的。本次設(shè)計(jì)采用的是脈沖定時(shí)測(cè)頻法,所以在軟件實(shí)現(xiàn)上基本遵照系統(tǒng)的設(shè)計(jì)原理,進(jìn)行測(cè)頻。本次軟件設(shè)

25、計(jì)語(yǔ)言采用匯編語(yǔ)言,在電腦上編譯通過(guò)后即可下載到電路上的實(shí)際電路中,即可實(shí)現(xiàn)頻率的測(cè)量。</p><p>  軟件設(shè)計(jì)的基本思路是:1、把要用到的內(nèi)部存儲(chǔ)器的地址運(yùn)用偽指令標(biāo)號(hào),方便后面設(shè)計(jì)中運(yùn)用;2、跳轉(zhuǎn)到中斷程序進(jìn)行初步數(shù)據(jù)采集;3、開始主程序,首先判斷是否有待測(cè)信號(hào),無(wú)信號(hào)就等待信號(hào),有信號(hào)則進(jìn)行下一步;4、判斷是否定時(shí)到1S,若沒(méi)有到達(dá)1S定時(shí),則執(zhí)行下面的5和6步得操作,若達(dá)到1S,則執(zhí)行第6步以后的操

26、作;5、判斷是否第一次,若是,則判斷當(dāng)前的檔位是否設(shè)置合適,若合適則直接跳轉(zhuǎn)到返回主程序,若不合適,則進(jìn)入第6步;6、調(diào)整檔位,重新進(jìn)入中斷開始初步計(jì)數(shù);7、判斷檔位是否合適,合適則把測(cè)得的數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù),根據(jù)當(dāng)前的檔位相應(yīng)的調(diào)整數(shù)位,并取表找到相應(yīng)的顯示數(shù)據(jù),然后執(zhí)行第10步操作;8、若上一步中判斷出檔位不合適,則根據(jù)頻率進(jìn)行相應(yīng)的檔位調(diào)整。9、恢復(fù)初值,重新開始計(jì)數(shù);10、返回主程序。</p><p>

27、<b>  2.1.軟件流程圖</b></p><p><b>  2.2.重要的程序</b></p><p>  1、控制程序:本文設(shè)計(jì)的是基于單片機(jī)的數(shù)字頻率計(jì)的設(shè)計(jì),用單片機(jī)來(lái)做為數(shù)字頻率計(jì)的控制部分。因此,單片機(jī)的控制程序在本次設(shè)計(jì)中顯得非常重要。經(jīng)過(guò)設(shè)計(jì),我們得到了如下的控制程序。</p><p>  ;****

28、******************************************************************</p><p>  ;------------------------------- MAIN --------------------------------------------------------</p><p>  ;********

29、**************************************************************</p><p>  MAIN: NOP</p><p>  CALL DISPLAY0;LED動(dòng)態(tài)顯示刷新</p><p>  CALL DELAY100</p><p>  JNB B_T1IF,MAIN;每50

30、ms處理一次。</p><p>  ;======================================</p><p>  CLR B_T1IF</p><p>  MOV A,TIMES_50MS</p><p>  CJNE A,#20,NO_1S</p><p>  JMP YES_1S; 滿20

31、次即為一秒鐘</p><p>  ;=====================================</p><p><b>  NO_1S:</b></p><p>  MOV A,TIMES_50MS</p><p>  CJNE A,#1,NO_1S_END ;TIMES_50MS不為1,返回</p

32、><p>  ;當(dāng)TIMES_50MS為1時(shí),判斷當(dāng)前所選檔位是否過(guò)高或者過(guò)低</p><p>  ;若計(jì)數(shù)器BUF大于100,則說(shuō)明滿1秒時(shí)必然大于2000,則提前調(diào)高頻率衰減檔位,</p><p>  ;并清零各計(jì)數(shù)值,重新在新檔位測(cè)量</p><p>  MOV A,COUNTER_BUF_H</p><p>  J

33、NZ NO_1S_1;計(jì)數(shù)器高位不為0,說(shuō)明超100</p><p>  MOV A,COUNTER_BUF_L</p><p>  CJNE A,#100,NO_1S_0</p><p>  NO_1S_0:JC NO_1S_LOW;計(jì)數(shù)器BUF小于100,繼續(xù)跳轉(zhuǎn)到NO_1S_LOW判斷是否需要調(diào)低檔位</p><p><b>

34、  NO_1S_1:</b></p><p>  MOV A,FREQ_LOSS;超量程,判斷當(dāng)前頻率衰減檔位,若小于3則加一檔</p><p>  CJNE A,#3,NO_1S_2</p><p>  JMP NO_1S_END</p><p>  NO_1S_2:JC NO_1S_3</p><p>

35、;<b>  MOV A,#3</b></p><p>  MOV FREQ_LOSS,A;檔位大于3,則修正為3</p><p><b>  NO_1S_3:</b></p><p>  INC FREQ_LOSS;頻率衰減檔位加1</p><p>  MOV A,FREQ_LOSS</p&

36、gt;<p>  CJNE A,#1,NO_1S_4</p><p>  SETB P153_B;FREQ_LOSS=1</p><p>  CLR P153_A</p><p>  JMP NO_1S_20</p><p>  NO_1S_4:CJNE A,#2,NO_1S_5</p><p>  CL

37、R P153_B;FREQ_LOSS=2</p><p>  SETB P153_A</p><p>  JMP NO_1S_20</p><p><b>  NO_1S_5:</b></p><p>  CLR P153_B;FREQ_LOSS=3</p><p>  CLR P153_A<

38、;/p><p>  JMP NO_1S_20</p><p>  ;========================================</p><p>  NO_1S_LOW:</p><p>  MOV A,COUNTER_BUF_L</p><p>  CJNE A,#10,NO_1S_10</p&

39、gt;<p>  NO_1S_10:JNC NO_1S_END</p><p>  ;偏低,則判斷是否需要降低頻率衰減檔位</p><p>  MOV A,FREQ_LOSS;</p><p>  JZ NO_1S_END;已經(jīng)是最低檔,無(wú)需調(diào)整</p><p>  DEC FREQ_LOSS;減一檔</p>&l

40、t;p>  MOV A,FREQ_LOSS</p><p>  CJNE A,#0,NO_1S_11</p><p>  SETB P153_B;FREQ_LOSS=0</p><p>  SETB P153_A</p><p>  JMP NO_1S_20</p><p>  NO_1S_11:CJNE A,#

41、1,NO_1S_12</p><p>  SETB P153_B;FREQ_LOSS=1</p><p>  CLR P153_A</p><p>  JMP NO_1S_20</p><p><b>  NO_1S_12:</b></p><p>  CLR P153_B;FREQ_LOSS=2

42、</p><p>  SETB P153_A</p><p>  JMP NO_1S_20</p><p>  NO_1S_20:;調(diào)整檔位后,重新計(jì)數(shù)</p><p><b>  CLR A</b></p><p>  MOV TIMES_50MS,A</p><p> 

43、 MOV COUNTER_BUF_L,A</p><p>  MOV COUNTER_BUF_H,A</p><p>  NO_1S_END:JMP MAIN</p><p>  ;===================================</p><p>  ;==================================

44、</p><p><b>  YES_1S:</b></p><p>  ;把計(jì)數(shù)器的數(shù)轉(zhuǎn)換成10進(jìn)制,并根據(jù)當(dāng)前檔位設(shè)定好要顯示的6個(gè)數(shù)字,</p><p>  ;存放在DISPLAY_DATA1-DISPLAY_DATA6中。</p><p>  MOV A,COUNTER_BUF_H</p><

45、p><b>  MOV R7,A</b></p><p>  MOV A,COUNTER_BUF_L</p><p><b>  MOV R6,A</b></p><p>  CALL CHANGE16_10</p><p>  ;===============================

46、=====</p><p>  ;在頻率衰減控制下,計(jì)數(shù)器數(shù)據(jù)不會(huì)超出2000多少,因此只取轉(zhuǎn)換后的低4位轉(zhuǎn)換成數(shù)據(jù)顯示</p><p><b>  MOV A,R3</b></p><p>  ANL A,#0FH</p><p>  MOV TEMP1,A</p><p><b> 

47、 MOV A,R3</b></p><p>  ANL A,#0F0H</p><p><b>  SWAP A</b></p><p>  MOV TEMP2,A</p><p><b>  MOV A,R4</b></p><p>  ANL A,#0FH&l

48、t;/p><p>  MOV TEMP3,A</p><p><b>  MOV A,R4</b></p><p>  ANL A,#0F0H</p><p><b>  SWAP A</b></p><p>  MOV TEMP4,A</p><p> 

49、 ;====================================</p><p>  ;根據(jù)頻率衰減檔位調(diào)整數(shù)位</p><p>  MOV A,FREQ_LOSS</p><p>  CJNE A,#0,LOSS_1</p><p><b>  CLR A</b></p><p> 

50、 MOV DATA4,A</p><p>  MOV DATA5,A</p><p>  JMP LOSS_END</p><p><b>  LOSS_1:</b></p><p>  CJNE A,#1,LOSS_2</p><p>  MOV A,DATA3</p><p

51、>  MOV DATA4,A</p><p>  MOV A,DATA2</p><p>  MOV DATA3,A</p><p>  MOV A,DATA1</p><p>  MOV DATA2,A</p><p>  MOV A,DATA0</p><p>  MOV DATA1,

52、A</p><p><b>  CLR A</b></p><p>  MOV DATA0,A</p><p>  MOV DATA5,A</p><p>  JMP LOSS_END</p><p><b>  LOSS_2:</b></p><p>

53、;  CJNE A,#2,LOSS_3</p><p>  MOV A,DATA3</p><p>  MOV DATA5,A</p><p>  MOV A,DATA2</p><p>  MOV DATA4,A</p><p>  MOV A,DATA1</p><p>  MOV DATA

54、3,A</p><p>  MOV A,DATA0</p><p>  MOV DATA2,A</p><p><b>  CLR A</b></p><p>  MOV DATA0,A</p><p>  MOV DATA1,A</p><p>  JMP LOSS_EN

55、D</p><p><b>  LOSS_3:</b></p><p>  MOV A,DATA2</p><p>  MOV DATA5,A</p><p>  MOV A,DATA1</p><p>  MOV DATA4,A</p><p>  MOV A,DATA0

56、</p><p>  MOV DATA3,A</p><p><b>  CLR A</b></p><p>  MOV DATA0,A</p><p>  MOV DATA1,A</p><p>  MOV DATA2,A</p><p><b>  LOSS_

57、END:</b></p><p>  ;高位若為0,則置為11,取出顯示代碼為L(zhǎng)ED全滅</p><p>  MOV R0,#DATA5;取最高位數(shù)據(jù)地址</p><p><b>  MOV R2,#5</b></p><p><b>  LOOP_CLR:</b></p>

58、<p><b>  MOV A,@R0</b></p><p><b>  JNZ DISCD</b></p><p><b>  MOV A,#11</b></p><p><b>  MOV @R0,A</b></p><p><b&

59、gt;  DEC R0</b></p><p>  DJNZ R2,LOOP_CLR</p><p>  ;====================================</p><p>  ;取表找相應(yīng)顯示代碼</p><p><b>  DISCD:</b></p><p&g

60、t;  MOV R0,#DATA_ADDR;</p><p>  MOV R1,#DISPLAY_DATA_ADDR;</p><p>  MOV R2,#6;</p><p>  MOV DPTR,#TAB</p><p>  DILP:MOV A,@R0</p><p>  MOVC A,@A+DPTR</

61、p><p><b>  MOV @R1,A</b></p><p><b>  INC R0</b></p><p><b>  INC R1</b></p><p>  DJNZ R2,DILP</p><p>  ;===================

62、====================</p><p><b>  ;重新計(jì)數(shù)</b></p><p><b>  CLR A</b></p><p>  MOV TIMES_50MS,A</p><p>  MOV COUNTER_BUF_L,A</p><p>  MO

63、V COUNTER_BUF_H,A</p><p><b>  JMP MAIN</b></p><p>  TAB: ;/顯示碼碼表/</p><p>  DB 3FH,06H,5BH,4FH,66H;</p><p>  DB 6DH,7DH,07H,7FH,6FH,0FFH

64、;</p><p>  2、數(shù)碼轉(zhuǎn)化程序:在本次設(shè)計(jì)中,單片機(jī)計(jì)數(shù)器所計(jì)得的數(shù)是二進(jìn)制,以十六進(jìn)制數(shù)的形式存放在寄存器中,而我們需要顯示的是十進(jìn)制數(shù)的頻率,因此需要進(jìn)行轉(zhuǎn)化才能顯示。</p><p>  數(shù)碼轉(zhuǎn)化程序設(shè)計(jì)的原理:本次設(shè)計(jì)的單片機(jī)數(shù)碼轉(zhuǎn)換是通過(guò)單片機(jī)的移位乘二特性和單片機(jī)的十進(jìn)制調(diào)整功能來(lái)實(shí)現(xiàn)的。先把雙字節(jié)的十六進(jìn)制數(shù)轉(zhuǎn)換為8421BCD碼,在控制顯示的時(shí)候通過(guò)位調(diào)整就可以得

65、到計(jì)數(shù)所得頻率的十進(jìn)制數(shù)據(jù),供給顯示。其具體的轉(zhuǎn)換程序如下。</p><p>  ;******************************************************************</p><p>  ; ------------------------------- 16進(jìn)制轉(zhuǎn)10進(jìn)制 --------------------------------

66、--------</p><p>  ;******************************************************************</p><p>  ;雙字節(jié)十六進(jìn)制整數(shù)轉(zhuǎn)換成雙字節(jié)BCD碼整數(shù)</p><p>  ;入口條件:待轉(zhuǎn)換的雙字節(jié)十六進(jìn)制整數(shù)在R6、R7中。</p><p>  ;出口信

67、息:轉(zhuǎn)換后的三字節(jié)BCD碼整數(shù)在R3、R4、R5中。</p><p>  ;影響資源:PSW、A、R2~R7 堆棧需求: 2字節(jié)</p><p>  CHANGE16_10:</p><p>  CLR A ;BCD碼初始化</p><p>  MOV R3, A</p><p>  MO

68、V R4, A</p><p>  MOV R5, A</p><p>  MOV R2, #10H ;轉(zhuǎn)換雙字節(jié)十六進(jìn)制整數(shù)</p><p><b>  CHANG_1:</b></p><p>  MOV A, R7 ;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中</p>&

69、lt;p><b>  RLC A</b></p><p>  MOV R7, A</p><p>  MOV A, R6</p><p><b>  RLC A</b></p><p>  MOV R6, A</p><p>  MOV

70、 A, R5 ;BCD碼帶進(jìn)位自身相加,相當(dāng)于乘2</p><p>  ADDC A, R5</p><p>  DA A ;十進(jìn)制調(diào)整</p><p>  MOV R5, A</p><p>  MOV A, R4</p><p>  ADDC A

71、, R4</p><p><b>  DA A</b></p><p>  MOV R4, A</p><p>  MOV A, R3</p><p>  ADDC A, R3</p><p>  MOV R3, A ;雙字節(jié)十六進(jìn)制數(shù)的萬(wàn)位數(shù)

72、不超過(guò)6,不用調(diào)整</p><p>  DJNZ R2, CHANG_1 ;處理完16bit</p><p><b>  RET</b></p><p>  數(shù)碼顯示程序:?jiǎn)纹瑱C(jī)控制其內(nèi)部計(jì)數(shù)器得到的數(shù)據(jù)要送到8位數(shù)碼顯示管中顯示出來(lái),才能被我們所看到,直接得到我們所測(cè)量的頻率。</p><p>  我們本次設(shè)

73、計(jì)所采用的是數(shù)碼管靜態(tài)顯示,所以我們要把數(shù)據(jù)循環(huán)的送入數(shù)碼管顯示。因?yàn)槲覀兘?jīng)過(guò)轉(zhuǎn)換程序把所得的數(shù)據(jù)存儲(chǔ)在40H~45H中,因此,數(shù)碼顯示的基本原理就是把40H~45H中的數(shù)據(jù)分時(shí)的通過(guò)P1口送到數(shù)碼管,再通過(guò)74LS138來(lái)控制各個(gè)數(shù)碼管的亮和滅。對(duì)于控制,我們?cè)诳刂栖浖?。其流程圖如圖所示。</p><p>  由此,可以寫出顯示程序如下:</p><p>  ;************

74、******************************************************</p><p>  ; ------------------------------- 顯示子程序 -------------------------------</p><p>  ;***********************************************

75、*****************</p><p><b>  DISPLAY0:</b></p><p>  MOV A,COUNTER_DISPLAY;</p><p>  CJNE A,#6,DISPLAY1</p><p>  JMP DISPLAY2;/當(dāng)前顯示位數(shù)等于6/</p><p&g

76、t;<b>  DISPLAY1:</b></p><p>  JNC DISPLAY2;/當(dāng)前顯示位數(shù)大于6/</p><p>  JMP DISPLAY3</p><p><b>  DISPLAY2:</b></p><p><b>  CLR A</b></p&g

77、t;<p>  MOV COUNTER_DISPLAY,A;/當(dāng)前顯示位數(shù)大于等于6,清零/</p><p><b>  DISPLAY3:</b></p><p>  MOV A,#0FFH</p><p>  MOV PORT_LED,A;/變換數(shù)據(jù)前先滅LED,以消除閃動(dòng)/</p><p>  MOV

78、 A,COUNTER_DISPLAY</p><p>  MOV PORT_LED_138,A</p><p>  MOV R1,#DISPLAY_DATA_ADDR</p><p>  ADD A,#DISPLAY_DATA_ADDR;/計(jì)算當(dāng)前要顯示數(shù)據(jù)的地址,初始地址+相應(yīng)位數(shù)/</p><p><b>  MOV R1,A&

79、lt;/b></p><p>  MOV A,@R1;/取出要顯示的相應(yīng)位的數(shù)據(jù)/</p><p>  MOV PORT_LED,A;/送出顯示數(shù)據(jù)/</p><p>  MOV A,COUNTER_DISPLAY</p><p><b>  INC A</b></p><p>  MOV

80、COUNTER_DISPLAY,A;/顯示位加1/</p><p><b>  RETI</b></p><p><b>  四、 參考文獻(xiàn)</b></p><p>  【1】王化祥,張淑英。傳感器原理及應(yīng)用[M]。天津:天津大學(xué)出版社,2005年;</p><p>  【2】張俊謨。單片機(jī)中級(jí)教程

81、[M]。北京:北京航空航天大學(xué)出版社,2006年;</p><p>  【3】李志全等。智能儀表設(shè)計(jì)原理及應(yīng)用[M]。國(guó)防工業(yè)出版社,1998年;</p><p>  【4】鄭建國(guó)。一種高精度的鉑電阻溫度測(cè)量方案,自動(dòng)化儀表[M],1997年;</p><p>  【5】楊振江等.智能儀器與數(shù)據(jù)采集系統(tǒng)中的新器件及應(yīng)用[M],西安電子科技大學(xué)出版社,2001年;&l

溫馨提示

  • 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ù)僅提供信息存儲(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)論