畢業(yè)設(shè)計----數(shù)字頻率計_第1頁
已閱讀1頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄 </b></p><p><b>  前言2</b></p><p><b>  摘要:2</b></p><p><b>  關(guān)鍵字:2</b></p><p><b>  1 芯片介紹2<

2、/b></p><p>  1.1 101162</p><p>  1.2 11613</p><p>  1.3 74HC044</p><p>  1.4 74HC144</p><p>  1.5 74HC744</p><p>  1.6 74HC1645

3、</p><p>  1.7 74HC1456</p><p>  1.8 AT89C20516</p><p>  1.9 5628</p><p><b>  2.統(tǒng)概述9</b></p><p>  2.1頻率計定義9</p><p>  2.2系統(tǒng)的

4、組成9</p><p>  2.3處理方法10</p><p>  3.系統(tǒng)硬件設(shè)計10</p><p>  3.1信號預(yù)處理10</p><p>  3.1.1濾波、衰減、補償11</p><p>  3.1.2放大電路11</p><p>  3.2 波形轉(zhuǎn)換電路12<

5、/p><p>  3.3 形整形及分頻電路13</p><p>  3.4 單片機復(fù)位電路14</p><p>  3.5顯示部分14</p><p>  3.5.1 顯示電路14</p><p>  3.5.2 模擬串行通信原理15</p><p>  3.6 整機工作原理15

6、</p><p>  4.系統(tǒng)軟件的組成16</p><p>  4.1 系統(tǒng)軟件框圖16</p><p>  4.2 流程圖17</p><p>  4.3 數(shù)據(jù)處理過程18</p><p>  4.5 單片機源程序18</p><p>  5. 參考文獻資料32</

7、p><p><b>  數(shù)字頻率計</b></p><p><b>  前 言</b></p><p>  數(shù)字頻率計在電子、通訊等領(lǐng)域中的實驗、研究開發(fā)、生產(chǎn)用途非常的廣泛,它可以由邏輯電 組成,也可以用單片機控制。由邏輯電路組成的頻率計,結(jié)構(gòu)復(fù)雜,組裝、調(diào)試比較麻煩;由單片機控制的頻率計,數(shù)據(jù)采集、計算、譯碼及量程的自動轉(zhuǎn)

8、換,都可以由CPU來完成,簡化了電路,提高了系統(tǒng)的可靠性。</p><p><b>  摘要:</b></p><p>  本設(shè)計是以89c2051為核心的單片機設(shè)計,在單片機設(shè)計中應(yīng)用單片機的數(shù)字運算和控制功能實現(xiàn)了量程的自動切換,滿足了時間要求和精度要求。</p><p><b>  關(guān)鍵字: </b></p&g

9、t;<p>  89C2051,頻率計,分頻,</p><p><b>  1 芯片介紹</b></p><p>  1.1 10116</p><p>  10116是一個三運算放大器,帶有正、反輸出端,邏輯圖及引腳功能如下:</p><p>  1.2 1161</p><p&

10、gt;  1161為基于微控器的系統(tǒng)提高了完整的存儲和監(jiān)控方案,運用低功耗CMOSE技術(shù),在片內(nèi)集成了帶硬件存儲寫保護的串行EEPROM(16K),節(jié)能型系統(tǒng)電源監(jiān)控電路和一個看門狗定時電路。當(dāng)一個軟件或硬件的誤操作,一起系統(tǒng)的暫停和掛起時,1.6秒的看門狗電路可將系統(tǒng)恢復(fù)到默認(rèn)狀態(tài),1161的定時監(jiān)控SDA線,這樣不需要增加PC板的跟蹤功能。第2腳輸出高電平的復(fù)位信號,第7腳輸出低電平的復(fù)位信號</p><p>

11、;  WP 寫保護E2PRON 就實現(xiàn)寫保護 只讀 將該管腳接地或懸空 可以對器件進行讀寫操作串行時鐘 串行輸入輸出資料時 該腳用于輸入時鐘。</p><p>  SCL:串行時鐘,串行輸入輸出數(shù)據(jù)時,該腳用于時鐘。</p><p>  REST:復(fù)位I/O口。該腳為開漏輸出腳。可用作復(fù)位觸發(fā)輸入。</p><p>  SDA:串行數(shù)據(jù)地址,用于所以數(shù)據(jù)得發(fā)送和接受

12、。SDA還可以作為看門狗定時器控制器。VCC:電源</p><p><b>  GND:接地</b></p><p><b>  NC:空腳</b></p><p>  1.3 74HC04</p><p>  74HC04為六反相器</p><p><b>

13、;  Y=/A</b></p><p><b>  引腳圖</b></p><p>  1.4 74HC14</p><p>  74HC14是六反相器(施密特觸發(fā)器)</p><p><b>  Y=/A</b></p><p><b>  引腳

14、如上圖。</b></p><p>  1.5 74HC74</p><p>  74HC74是一雙D型正沿觸發(fā)器,帶預(yù)和清除端,其引腳及功能如下:</p><p>  D觸發(fā)器在這里主要是分頻,它的這種接法是一種二分頻的接法,對經(jīng)過562分頻的信號再一次分頻,進一步降低它的頻率,提高單片機的測量范圍。</p><p>  1.

15、6 74HC164</p><p>  1.引出端排列圖和邏輯功能示意圖</p><p>  圖3—38所示是8位單相移位積存器74LS164的引出端排列圖和功能示意圖 。</p><p> ?。╝)引出端排列圖 (b)邏輯功能示意圖</p><p>  圖3-3 8位單向移位積存器74

16、LS164</p><p>  Ds=Dsa*Dsr是數(shù)碼串行輸入端,/CR是清零端,Q0~Q7是數(shù)據(jù)并行輸出端,CP是時鐘脈沖——移位操作信號。</p><p>  2.邏輯功能 </p><p>  表3.1所示是74LS164狀態(tài)表,由表可知,74LS164具有下列功能;</p><p><b

17、> ?。?)清零功能</b></p><p>  當(dāng)/CR=0時,移位寄存器異步清零。</p><p><b> ?。?)保持功能</b></p><p>  當(dāng)/CR=1、CP=0時。移位寄存器保持狀態(tài)不變,Qi n+1=Qin(i=0~7)。</p><p><b> ?。?)送數(shù)功能&l

18、t;/b></p><p>  當(dāng)/CR=1時,CP上升沿將加在Ds=Dsa*Dsb端的二進制數(shù)碼依次送入移位寄存器中。狀態(tài)方程為</p><p>  Q0n+1=Qsa*Qsb</p><p><b>  Q1n+1=Q0n</b></p><p><b>  Q2n+1=Q1n</b>&l

19、t;/p><p><b>  Q3n+1=Q2n</b></p><p>  Q4n+1=Q3n CP 上升沿時刻有效 (5.3.7)</p><p><b>  Q5n+1=Q4n</b></p><p><b>

20、  Q6n+1=Q5n</b></p><p><b>  Q7n+1=Q6n</b></p><p>  1.7 74HC145</p><p>  74HC145是一個BCD—十進制譯碼器/驅(qū)動器(OC),用于驅(qū)動燈、繼電器或MOS電路;能吸收80m電流,LS145典型功耗為35mW;耐壓15V</p>&l

21、t;p>  1.8 AT89C2051</p><p>  單片機的管腳排列圖,各管腳的功能,關(guān)于此單片機的介紹</p><p>  AT89c2051與Intel的51系列兼容,沒有P0口、P2口,所以不能擴充外部程序存儲器、外部數(shù)據(jù)存儲器,有些指不能使用或受到一定的限制,如MOVX,MOVC。內(nèi)部集成一個A/D轉(zhuǎn)換器。它是一個帶有2KB可編程只讀存儲器(EEPROM)的低

22、壓高性能8位CMOSE微型計算機。它用ATMEL的高密非易失存儲技術(shù)制造,并和工業(yè)標(biāo)準(zhǔn)MCS—51指令集和引腳結(jié)構(gòu)兼容。通過在單塊芯片上組合通用的CPL1和Flash存儲器,使AT89C2051成為一強勁的微型計算機。它為許多嵌入式控制應(yīng)用提供了高度靈活和成本低的解決辦法。</p><p><b>  主要性能</b></p><p>  和MCS-51產(chǎn)品兼容。&l

23、t;/p><p>  2KB可重編程Flash存儲器。</p><p>  耐久性:1000次寫/擦除。</p><p>  2.7~6V的操作范圍。</p><p>  全靜態(tài)操作:0Hz~24MHz。</p><p>  2級加密程序存儲器。</p><p>  128*8位內(nèi)部RAM。<

24、/p><p>  15條可編程I/O引線。</p><p>  2個16位定時器/計數(shù)器。</p><p><b>  6個中斷源。</b></p><p>  可編程串行UART通道。</p><p>  直接LED驅(qū)動輸出。</p><p><b>  片內(nèi)模擬比

25、較器。</b></p><p>  低功耗空載和掉電方式。</p><p><b>  引腳功能說明</b></p><p>  AT89C2051的引腳結(jié)構(gòu)</p><p><b>  89C2051引腳</b></p><p><b>  Vcc電源

26、端。</b></p><p><b>  GND:接地端。</b></p><p>  P1口:P1口是一8位雙向I/O口。引腳P1.2~P1.7提供內(nèi)部上拉電阻。P1.0和P1.1要求外部上拉電阻。P1.0和P1.1還分別作為片內(nèi)精密模擬比較器的同相輸入(AIN0)和反相輸入(AIN1)。P1口輸出緩沖器可吸收20mA電流,并能直接驅(qū)動LED顯示。當(dāng)P1

27、口引腳寫入“1”時,可用作輸入端。當(dāng)引腳P1.2~P1.7用作輸入端并被外部拉低時,將因內(nèi)部的上拉電阻而輸出電流(IIL)。</p><p>  P1口還在Flash編程和程序效驗期間接收代碼數(shù)據(jù)。</p><p>  3口:P3口的P3.0~P3.5,P3.7是帶有內(nèi)部上拉電阻的7個雙向I/O引腳。P3.6用于固定輸入片內(nèi)比較器的輸出信號,并且作為一通用I/O引腳而不可訪問。P3口緩沖器

28、可吸收20mA電流。當(dāng)P3口引腳寫入“1”時,它們被內(nèi)部上拉電阻拉高并可用作輸入端。用表2-6 P3口的功能</p><p>  作輸入端時,被外部拉低的P3口引腳將用上拉電阻而輸出電流(IIL)。</p><p>  P3口還用于實現(xiàn)AT89C2051的各種功能,如表2-6所列。</p><p>  P3口還接收一些用于Flash存儲器編程和程序效驗的控制信號

29、。</p><p>  RST:復(fù)位輸入。RST一旦變成高電平,所有的I/O引腳就復(fù)位到“1”。當(dāng)振蕩器正在運行時,持續(xù)給出RST引腳兩個機器周期的高電平便可完成復(fù)位。每一個機器周期需12個振蕩器或時鐘周期。</p><p>  XTAL1:作為振蕩器反相放大器的輸入和內(nèi)部時鐘發(fā)生器的輸入。</p><p>  器正在運行時,持續(xù)給出RST引腳兩個機器周期的高電平便

30、可完成復(fù)位。每一個機器周期需12個振蕩器或時鐘周期。</p><p>  XTAL1:作為振蕩器反相放大器的輸入和內(nèi)部時鐘發(fā)生器的輸入。</p><p>  XTAL2:作為振蕩器反相放大器的輸出。</p><p>  1.9 562</p><p>  在本計數(shù)計中,562主要用于構(gòu)成64分頻的分頻器,原理如下圖:</p>

31、<p><b>  2.統(tǒng)概述</b></p><p>  2.1 頻率計定義</p><p>  頻率計為一秒時間內(nèi)信號變化的次數(shù)。數(shù)字頻率計就是在一秒標(biāo)準(zhǔn)時間內(nèi)測出信號變化的次數(shù),然后以數(shù)字的形式顯示出來。</p><p><b>  2.2系統(tǒng)的組成</b></p><p> 

32、 頻率計是以89c2051 、信號預(yù)處理電路、波形轉(zhuǎn)換電路、波形整形及分頻電路、復(fù)位看門狗電路、CPU電路、顯示電路和系統(tǒng)軟件所組成,其中信號預(yù)處理電路包含衰減、低通濾波、高頻補償、其作用是對強信號的衰減;測量低頻信號時,對高頻進行濾除;測量高頻時進行補償;對待測信號的放大,降低對待測信號的幅度要求。波形轉(zhuǎn)換電路主要由10116及外圍元件組成,實現(xiàn)把正負(fù)交替的信號波形變換成可被單片機接受的TTL/ CMOS兼容信號;波形整形及分頻由74

33、HC04、562、74HC74、74HC14及外圍元件等組成,分頻電路用于擴展單片機的頻率測量范圍。復(fù)位電路由1161組成,用于保證系統(tǒng)的可靠運行。CPU用Atmel公司的At89c2051芯片。顯示電路由74hc164、74ls145、數(shù)顯、二極管等組成。系統(tǒng)硬件框圖如圖1 所示。</p><p>  圖1  系統(tǒng)硬件框圖</p><p>  系統(tǒng)軟軟件用匯編語言編寫,包括測量初始化模塊

34、、顯示模塊、信號頻率測量模塊、量程自動轉(zhuǎn)換模塊。</p><p><b>  2.3 處理方法</b></p><p>  本頻率計的設(shè)計以AT89C2051單片機為核心,利用它內(nèi)部的定時/計數(shù)器完成待測信號頻率的測量。單片機AT89C2051內(nèi)部具有2個16位定時/計數(shù)器,定時/計數(shù)器的工作可以由編程來實現(xiàn)定時、計數(shù)和產(chǎn)生計數(shù)溢出中斷要求的功能。在構(gòu)成為定時器時,

35、每個機器周期加1(使用12MHz的時鐘時,每1us加1),這樣以機器周期為基準(zhǔn)可以用來測量時間間隔。在構(gòu)成為計數(shù)器時,在相應(yīng)的外部引腳發(fā)生從1到0的跳變時計數(shù)器加1,這樣在計數(shù)閘門的控制下可以用來測量待測信號的頻率。外部輸入每個機器周期被采樣一次,這樣檢測一次從1到0的跳變至少需要2個機器周期(24個振蕩周期),所以最大計數(shù)速率為時鐘頻率的1/24(使用12MHz的時鐘時,最大計數(shù)速率為500kHz)。定時/計數(shù)器的工作由響應(yīng)的運行控制

36、位TR控制,當(dāng)TR置1,定時/計數(shù)器開始計數(shù);當(dāng)TR清0,停止計數(shù)。</p><p>  為提高頻率穩(wěn)定度,本電路采用24M溫度補償晶振,其最大計數(shù)為1M,本頻率計測頻范圍為1Hz到10M,以500kHz為分界,待測信號經(jīng)放大、變換、整形后,一路直接送AT89C2051的P3.5口,一路經(jīng)128:1(562為64:1,又經(jīng)74HC74二分頻)的分頻電路后,送P3.4口,測頻時,首先T0為計數(shù)器,T1為定時器,控制

37、閘門時間為1秒,1S后,將寄存器數(shù)值128倍運算后,判斷值大于500k時,經(jīng)變換處理后送顯示,小于500k時,變T0為定時,T1為計數(shù),如此處理,即能提高測量范圍,又提高了測量精度,且巧妙的實現(xiàn)量程的自動切換,閘門時間1S采用硬件及軟件結(jié)合方法實現(xiàn),計數(shù)值用三字節(jié)存放,經(jīng)十六進制到BCD碼的變換后送顯示。</p><p><b>  3.系統(tǒng)硬件設(shè)計</b></p><p

38、><b>  3.1信號預(yù)處理</b></p><p>  信號預(yù)處理電路包括濾波、衰減、補償、放大。</p><p>  3.1.1濾波、衰減、補償</p><p>  待測信號經(jīng)0.47uF的隔直通交電容耦合過來,當(dāng)輸入的信號電壓較高時可按下琴鍵K1衰減,輸入的電壓信號可達(dá)到125V,當(dāng)輸入的信號頻率較低時,按下琴鍵K2,經(jīng)低通濾波減

39、小干擾信號對后級的影響,信號經(jīng)高頻補償電路進入放大電路。</p><p>  3.1.2 放大電路</p><p>  放大部分采用場效應(yīng)管,靜態(tài)功耗低,而且放大之前有穩(wěn)壓二極管保護電路,可以對輸入的電壓進行嵌位,防止輸入到CMOS的電壓過高。由于采用零偏置,當(dāng)輸入信號為零或者為負(fù)時,場效應(yīng)管夾斷,當(dāng)輸入信號為正電壓時,場效應(yīng)管導(dǎo)通,零偏置放大器將正負(fù)交替的輸入信號變成單向脈沖信號,使得

40、輸入信號在一個周期內(nèi),產(chǎn)生一個脈沖信號,以便于對其計數(shù)。</p><p>  3.2 波形轉(zhuǎn)換電路</p><p>  采用差動輸入,提高輸入阻抗和共模抑制比,輸入端提供偏置,使信號預(yù)處理電路出來的脈沖信號通過,信號經(jīng)放大變?yōu)榉茸銐虼蟮姆讲}沖或近似于方波脈沖的信號送波形整形電路 。</p><p>  3.3 形整形及分頻電路</p><

41、p>  由波形轉(zhuǎn)換電路輸出的方波信號。從波形轉(zhuǎn)換出來的信號,一路經(jīng)74HC04整形后去除毛刺又經(jīng)施密特反相器74HC14整形變?yōu)榕c標(biāo)準(zhǔn)的TTL/CMOS電平兼容的方波。另一路經(jīng)128:1分頻后接入單片機,562接成64:1的分頻電路,又經(jīng)74HC74二分頻,實現(xiàn)高于500K時的測量處理電路,擴充了頻率計的測量范圍。</p><p>  3.4 單片機復(fù)位電路</p><p><

42、;b>  單片機復(fù)位電路</b></p><p>  當(dāng)單片機死機或掛起的時候,在1.6秒以內(nèi)計算機就不會給1161脈沖,這時復(fù)位電路就會給單片機以復(fù)位信號,使單片機重新開始工作。</p><p><b>  3.5顯示部分</b></p><p>  3.5.1 顯示電路</p><p>  由于A

43、T89C2051的I/O口較少,本電路采用特殊的顯示方式---由P1.6(數(shù)據(jù)端)和P1.7(時鐘端)組成模擬串行通信口,單片機將要顯示的數(shù)據(jù)用模擬串口發(fā)送到74HC74164后,由74HC164轉(zhuǎn)換為并行數(shù)據(jù)控制數(shù)碼管顯示的數(shù)字,實現(xiàn)顯示數(shù)據(jù)的傳送,由單片機提供位選的BCD碼經(jīng)74LS145譯碼后控制每位數(shù)碼管的選通與消隱,并由兩個發(fā)光二極管做為Hz及KHz的指示。</p><p>  3.5.2模擬串行通信原

44、理</p><p>  模擬串行通信口由P1.6和P1.7組成,其中P1.6作為數(shù)據(jù)發(fā)送端,P1.7作為時鐘端,發(fā)送數(shù)據(jù)之前,先用指令將時鐘P1.7清0(輸出低電平),然后將要發(fā)送的一幀數(shù)據(jù)(8位二進制數(shù))的最高位(第7位)送到數(shù)據(jù)端P1.6,再將時鐘端置位(輸出高電平),延時一個機器周期,再將時鐘端清0,完成一位二進制數(shù)的傳送,接著將第6位發(fā)送到P1.6端,如此循環(huán),完成一幀數(shù)據(jù)的傳送。其時序圖如下</p

45、><p><b>  串行通訊時序圖</b></p><p>  3.6 整機工作原理</p><p>  待測信號經(jīng)預(yù)處理電路之后,變成直流脈沖信號,經(jīng)波形轉(zhuǎn)換電路變換,信號變成削頂?shù)拿}沖信號,此時的信號已近似于方波脈沖,從波形轉(zhuǎn)換早路出來的信號分成兩路,一路直接經(jīng)過整形,變成方波脈沖,送到89c2051的P3.5端;一路經(jīng)64分頻之后,再經(jīng)過7

46、4HC04整形,再經(jīng)過74HC74二分頻(64*2=128),送到89c2051的P3.4端。89c2051首先對P3.5端進行計數(shù),如果頻率低500KHz,則直接將結(jié)果顯示出來,單位為Hz;若頻率高于500KHz,則對P3.4端進行計數(shù),將計數(shù)結(jié)果*128倍之后,再進行顯示,單位為KHz。單位的顯示由兩個二極管指示。</p><p><b>  4.系統(tǒng)軟件的組成</b></p>

47、;<p>  4.1 系統(tǒng)軟件框圖 </p><p><b>  結(jié)構(gòu)框圖</b></p><p>  系統(tǒng)軟件設(shè)計采用模塊化設(shè)計方法。整個系統(tǒng)由初始化模塊、顯示模塊和信號頻率測量模塊等各種功能模塊組成(見圖4) 。上電后,進入系統(tǒng)初始化模塊,系統(tǒng)軟件開始運行。在執(zhí)行過程中,根據(jù)運行流程分別調(diào)用各個功能模塊完成頻率測量、量程自動切換、測量結(jié)果顯示。&l

48、t;/p><p>  4.2 流程圖 </p><p><b>  軟件流程圖</b></p><p>  4.3 數(shù)據(jù)處理過程</p><p>  計數(shù)值用三個字節(jié)來存儲,經(jīng)十六進制到BCD碼的轉(zhuǎn)換,本頻率計測頻范圍為1Hz到10M,以500kHz為分界,待測信號經(jīng)放大、變換、整形后,一路直接送AT89C2051的

49、P3.5口,一路經(jīng)128:1(562為64:1,又經(jīng)74HC74二分頻)的分頻電路后,送P3.4口,測頻時,首先T0為計數(shù)器,T1為定時器,控制閘門時間為1秒,1S后,將寄存器數(shù)值128倍運算后,判斷值大于500k時,經(jīng)變換處理后送顯示,小于500k時,變T0為定時,T1為計數(shù),如此處理,即能提高測量范圍,又提高了測量精度,且巧妙的實現(xiàn)量程的自動切換,閘門時間1S采用硬件及軟件結(jié)合方法實現(xiàn),計數(shù)值用三字節(jié)存放,經(jīng)十六進制到BCD碼的變換

50、后送顯示。</p><p>  4.5 單片機源程序</p><p>  DA4 EQU P1.2 ;顯示位選擇端</p><p>  DA3 EQU P1.3</p><p>  DA2 EQU P1.4</p><p>  DA1 EQU

51、P1.5</p><p>  CLK EQU P1.7 ;時鐘端</p><p>  DAT EQU P1.6 ;串行數(shù)據(jù)發(fā)送端</p><p>  SCL EQU P3.1 ;看門狗,E2ROM</p><p>  SDA EQU P3.0 &

52、lt;/p><p>  PV EQU P3.4 ;計數(shù)通道定義</p><p>  BZ EQU P3.5</p><p>  MD EQU P3.7 ;門控信號</p><p>  A153A EQU P3.2 ;分頻器選通信號</p>

53、;<p>  A153B EQU P3.3</p><p>  ;RXD EQU P3.0 ;通訊口</p><p>  ;TXD EQU P3.1</p><p>  BZDIG EQU 2FH</p><p>  DSPLA_ADD1 EQU

54、30H ; 顯示緩沖區(qū),最低位</p><p>  DSPLA_ADD2 EQU 31H</p><p>  DSPLA_ADD3 EQU 32H</p><p>  DSPLA_ADD4 EQU 33H</p><p>  DSPLA_ADD5 EQU 34H</p><p>  DSP

55、LA_ADD6 EQU 35H  ?。蛔罡呶?lt;/p><p>  DSPLA_ADD7 EQU 36H ??;單位指示位</p><p>  TX_TIME EQU 50H ;沖斷次數(shù)計數(shù)器</p><p>  MOS_BZ EQU 51H ;通道選擇寄存器</p><p>  BZ2

56、 EQU 52H ;大小判斷標(biāo)志</p><p>  LDBZ BIT 10H ;<1Hz標(biāo)志位</p><p>  LD1HZ EQU 7BH </p><p>  JSQ3 EQU 53H ;計數(shù)值寄存區(qū)</p>

57、<p>  JSQ2 EQU 54H</p><p>  JSQ1 EQU 55H</p><p>  BCD1 EQU 60H ;壓縮BCD碼寄存區(qū)</p><p>  BCD2 EQU 61H</p><p>  BCD3 EQ

58、U 62H</p><p>  BCD4 EQU 63H</p><p>  CX EQU 64H </p><p>  HUANC1 EQU 65H</p><p>  HUANC2 EQU 66H</p><p>  HUANC3 EQU

59、 67H</p><p>  HUANC4 EQU 68H</p><p>  WSA EQU 77h</p><p>  FDA EQU 78h</p><p>  FDS EQU 79h</p><p>  FDB E

60、QU 7ah</p><p>  PPD EQU 7bh</p><p>  ;=================================</p><p><b>  ;主程序</b></p><p>  ;=================================</

61、p><p>  ORG 0000H</p><p>  LJMP MAIN</p><p>  ORG 000BH</p><p>  LJMP TIM0</p><p>  ORG 001BH</p><p>  LJMP TIM1</p><p&

62、gt;  MAIN: LCALL RST_WDOG ;復(fù)位看門狗</p><p>  LCALL SETUP ;初始化</p><p>  MAIN1: LCALL DSPLA ;顯示(“123456”)</p><p>  LJMP MAIN1 ;循環(huán),等待中斷</p><p>

63、;  ;=================================</p><p>  DSPLA: NOP            ?。伙@示子程序</p><p>  DSPLATEMP: MOV R7,#7</p><p>  MOV R0,#DSPLA_ADD1  ;取顯示區(qū)首地址</p><p>

64、  MOV DPTR,#TAB    ?。蝗”砀裰羔?lt;/p><p>  DSP1: MOV A,@R0      ??;取數(shù)值</p><p>  MOVC A,@A+DPTR    ??;查表</p><p>  DENG: CLR CLK       ?。荒M串行輸出處理</p><

65、;p>  CLR C</p><p>  RLC A</p><p>  MOV DAT,C ;1</p><p>  SETB CLK</p><p><b>  NOP</b></p><p>  CLR CLK<

66、;/p><p>  RLC A</p><p>  MOV DAT,C ;2</p><p>  SETB CLK</p><p><b>  NOP</b></p><p>  CLR CLK</p><p>  R

67、LC A</p><p>  MOV DAT,C ;3</p><p>  SETB CLK</p><p><b>  NOP</b></p><p>  CLR CLK</p><p>  RLC A</p>

68、<p>  MOV DAT,C ;4</p><p>  SETB CLK</p><p><b>  NOP</b></p><p>  CLR CLK</p><p>  RLC A</p><p>  MOV D

69、AT,C ;5</p><p>  SETB CLK</p><p><b>  NOP</b></p><p>  CLR CLK</p><p>  RLC A</p><p>  MOV DAT,C ;6</p>

70、;<p>  SETB CLK</p><p><b>  NOP</b></p><p>  CLR CLK</p><p>  RLC A</p><p>  MOV DAT,C ;7</p><p>  SETB

71、 CLK</p><p><b>  NOP</b></p><p>  CLR CLK</p><p>  RLC A</p><p>  MOV DAT,C ;8</p><p>  SETB CLK</p><p

72、><b>  NOP</b></p><p>  CLR CLK</p><p>  LCALL WAY ;顯示位選擇</p><p>  ;=============</p><p>  LCALL DELAY10    ?。谎訒r</p><p> 

73、 CLR DA1       ??;關(guān)閉</p><p>  SETB DA2</p><p>  CLR DA3</p><p>  SETB DA4</p><p>  DSP2: INC R0      ?。恢赶蛳乱晃?lt;/p><p>  DJNZ R7,DSP1    ?。伙@示完

74、否?</p><p>  DSPLAEND: RET</p><p>  TAB: DB 0F3H,90H,79H,0B9H,9AH,0ABH,0EBH,91H ;顯示數(shù)碼編碼表,0~7</p><p>  DB 0FBH,0BBH    ?。唬?,9</p><p>  DB 0F7H,94H,7DH

75、,0BDH,9EH,0AFH,0EFH,95H,0FFH,0BFH??;0.~7.</p><p>  DB 10H,01H  ;8.,9.</p><p>  DB 0FFH,0EFH,0F7H,0FCH,0B9H,0DEH,0F9H,0F1H</p><p>  DB 40H,73H,76H,00H,00H,00

76、H,00H,00H,00H,00H</p><p><b>  ; 初始化子程序</b></p><p>  WAY: MOV A,R7     ?。坏谝晃唬ㄗ畹臀唬?lt;/p><p>  CJNE A,#7,WAY1</p><p>  SETB DA1</p><p>

77、  CLR DA2</p><p>  CLR DA3</p><p>  CLR DA4</p><p><b>  RET</b></p><p>  WAY1: CJNE A,#6,WAY2  ;第二位</p><p>  CLR DA1</p

78、><p>  CLR DA2</p><p>  SETB DA3</p><p>  CLR DA4</p><p><b>  RET</b></p><p>  WAY2: CJNE A,#5,WAY3 ??;第三位</p><p>  CL

79、R DA1</p><p>  SETB DA2</p><p>  CLR DA3</p><p>  CLR DA4</p><p><b>  RET</b></p><p>  WAY3: CJNE A,#4,WAY4 ??;第四位</p>

80、<p>  SETB DA1</p><p>  CLR DA2</p><p>  SETB DA3</p><p>  CLR DA4</p><p><b>  RET</b></p><p>  WAY4: CJNE A,#3,WAY5

81、  ??;第五位</p><p>  SETB DA1</p><p>  SETB DA2</p><p>  CLR DA3</p><p>  CLR DA4</p><p><b>  RET</b></p><p>  WAY5: C

82、JNE A,#2,WAY6  ??;第六位(最高位)</p><p>  CLR DA1</p><p>  SETB DA2</p><p>  SETB DA3</p><p>  CLR DA4</p><p><b>  RET</b></p>

83、<p>  WAY6: CJNE A,#1,WAY7 ??;單位位</p><p>  SETB DA1</p><p>  SETB DA2</p><p>  SETB DA3</p><p>  CLR DA4</p><p>  WAY7: RET</p&

84、gt;<p>  ;==============</p><p>  SETUP: CLR TR0  ?。怀跏蓟绦?lt;/p><p>  CLR TR1</p><p>  CLR LDBZ</p><p>  MOV MOS_BZ,#1</p><p>  MOV

85、 LD1HZ,#10</p><p>  CLR DA1</p><p>  SETB DA2</p><p>  CLR DA3</p><p>  SETB DA4</p><p>  MOV TX_TIME,#50 ?。?0*20ms</p><p>  

86、MOV JSQ1,#0</p><p>  ;============定時器初始化</p><p>  MOV TMOD,#51H ;T1計數(shù),模式1 ;T0定時,模式1</p><p>  ;MOV SCON,#50H</p><p>  MOV TH0,#69H   ??;20mS</p>

87、<p>  MOV TL0,#0ccH</p><p>  MOV TH1,#00H</p><p>  MOV TL1,#00H</p><p>  ; SETB TR0</p><p>  ; SETB TR1</p><p>  SETB

88、ET0   ?。怀湓ST0中斷</p><p>  SETB ET1   ??;充許T1中斷</p><p>  MOV BZDIG,#1</p><p>  SETB EA ;開中斷</p><p>  CLR ES ;不許可串口</p><p>  CL

89、R EX1 ;不許可中斷1</p><p>  CLR EX0 ;不許可中斷0</p><p>  MOV WSA,#3</p><p>  SETB TR0 ;啟動定時器</p><p>  SETB TR1   ?。粏佑嫈?shù)器</p><

90、;p><b>  RET</b></p><p>  ;;============================================================</p><p>  ;;以下為1161存儲芯片操作子程序</p><p>  ;;---------------------------------------

91、----------------------------</p><p>  RST_WDOG: CLRSDA ;復(fù)位看門狗</p><p>  DB 0,0,0,0</p><p><b>  SETB SDA</b></p><p><b>  RET</b></p>

92、<p>  ;==============================</p><p>  DELAY10: NOP ;延時子程序</p><p>  DELAY5: MOV R6,#0FFH</p><p>  LCALL RST_WDOG</p><p>  DJNZ R6,$<

93、/p><p><b>  RET</b></p><p>  TIM0END1: LJMP TIM0END</p><p>  ;===============================</p><p>  LDSJ: MOV TX_TIME,#50 ;<1Hz數(shù)據(jù)處理程序</p&g

94、t;<p>  DJNZ LD1HZ,TIM0END1 </p><p>  CLR TR1;關(guān)閉計數(shù)器</p><p>  MOV A,TH1</p><p>  MOV JSQ2,A</p><p>  MOV A,TL1</p><p>  MOV

95、 JSQ3,A</p><p>  ;==================</p><p><b>  ;判斷是否大于10</b></p><p>  MOV A,JSQ1</p><p>  JNZ PY1</p><p>  MOV A,JSQ2</p&g

96、t;<p>  JNZ PY1</p><p>  MOV A,JSQ3</p><p>  CLR C</p><p>  SUBB A,#10</p><p>  JNC PY1</p><p>  LCALL BMBCD ;調(diào)BCD轉(zhuǎn)換程序

97、</p><p>  MOV R0,#BCD1 </p><p>  MOV A,@R0 ;取BCD碼</p><p>  ANL A,#0FH ;化成有效BCD碼</p><p>  MOV DSPLA_ADD6,A ;數(shù)值送到第一位(最低位)</p><p&g

98、t;  MOV DSPLA_ADD1,#0 ;其它位清0</p><p>  MOV DSPLA_ADD2,#0</p><p>  MOV DSPLA_ADD3,#0</p><p>  MOV DSPLA_ADD4,#0</p><p>  MOV DSPLA_ADD5,#10 ;第二

99、位顯示“0.”</p><p>  MOV DSPLA_ADD7,#21 ;單位Hz</p><p>  SETB LDBZ</p><p>  MOV LD1HZ,#10</p><p>  LJMP TIM07</p><p>  ;=====================

100、============</p><p>  PY1: CLR LDBZ</p><p>  LJMP TIM0END</p><p>  ;===============================</p><p>  TIM0: PUSH PSW</p><p>  PUSH

101、 ACC</p><p>  MOV A,MOS_BZ ;判斷通道</p><p>  CJNE A,#1,TIMJS ;若為PV通道(T0計數(shù)),跳出中斷</p><p>  MOV TH0,#63H</p><p>  MOV TL0,#0c0H</p>

102、<p>  DJNZ TX_TIME,TIM0END ;若定時未到1s,則退出中斷</p><p>  JB LDBZ,LDSJ ;若小于1, 轉(zhuǎn)<1處理程序</p><p>  MOV TX_TIME,#50 ;50*20=1000mS</p><p>  CLR

103、 TR1 ;關(guān)閉計數(shù)器</p><p>  MOV A,TH1</p><p>  MOV JSQ2,A ;計數(shù)高位送到JSQ2</p><p>  MOV A,TL1</p><p>  MOV JSQ3,A ;計數(shù)低

104、位送JSQ3</p><p>  ;===============================</p><p>  ;判斷是否小于1,如果小于1則再循環(huán)9次</p><p>  MOV A,JSQ1 </p><p>  JNZ PY ;若T1已發(fā)生中斷,說明計數(shù)大于1</p&

105、gt;<p>  MOV A,JSQ2 ;計數(shù)器計數(shù)值是否大于1</p><p>  JNZ PY</p><p>  MOV A,JSQ3</p><p>  JNZ PY</p><p>  SETB LDBZ ;小于1,<1標(biāo)志位置位<

106、/p><p>  MOV LD1HZ,#10 </p><p>  ;===============================</p><p>  ;是否大于500000</p><p>  PY: LCALL JSPD2 ;調(diào)判斷子程序</p><p>  MOV A,B

107、Z2 ;判斷是否小于500000</p><p>  CJNE A,#0,KTR ;若大于500000,則換量程</p><p>  ;======================== </p><p>  PPPTR: LCALL BMBCD ;調(diào)BCD碼轉(zhuǎn)換程序</p><p>  L

108、CALL BCDZH ;壓縮BCD碼轉(zhuǎn)為非壓縮BCD碼</p><p>  MOV DSPLA_ADD7,#21 ;單位:Hz</p><p>  TIM07: MOV TH1,#00H</p><p>  MOV TL1,#00H</p><p>  MOV JSQ1,#0&

109、lt;/p><p>  MOV WSA,#1</p><p>  TIM0END: POP ACC</p><p>  POP PSW</p><p>  SETB TR1</p><p>  SETB TR0</p><p><b>  RE

110、TI</b></p><p>  PPL: DEC BZDIG</p><p>  MOV TH1,#00H</p><p>  MOV TL1,#00H</p><p>  MOV JSQ1,#0</p><p>  LJMP TIM0END

111、 </p><p>  ;=========================</p><p>  TIMJS: MOV TH0,#00H</p><p>  MOV TL0,#00H</p><p>  INC JSQ1 ;中斷計數(shù)加1</p><p&g

112、t;  TIMJSEND: POP ACC</p><p>  POP PSW</p><p><b>  RETI </b></p><p>  ;===============================</p><p>  KTR: LCALL SETUP1

113、 ;調(diào)初始化程序,轉(zhuǎn)換量程</p><p>  POP ACC</p><p>  POP PSW</p><p><b>  RETI</b></p><p>  ;=====================================</p><p>  J

114、SPD2: MOV A,JSQ1</p><p>  CLR C</p><p>  SUBB A,#0ch</p><p>  JC Z2</p><p>  MOV A,JSQ2</p><p>  JNZ B2</p

115、><p>  CLR C</p><p>  SUBB A,#35H</p><p>  JC Z2</p><p>  JNC B2</p><p>  MOV A,JSQ3</p><p>  CLR C<

116、/p><p>  SUBB A,#00H</p><p>  JC Z2</p><p>  JNC B2</p><p>  Z2: MOV BZ2,#0</p><p><b>  RET</b></p><p>  B2:

117、 MOV BZ2,#1</p><p><b>  RET</b></p><p>  ;================================== </p><p>  TIM1: PUSH PSW ;T1中斷處理程序</p><p>  PUSH ACC&l

118、t;/p><p>  MOV A,MOS_BZ</p><p>  CJNE A,#1,TIM1DS ;通道判斷</p><p>  MOV TH1,#00H</p><p>  MOV TL1,#00H</p><p>  INC JSQ1</p>&

119、lt;p>  TIM2END:POP ACC</p><p>  POP PSW</p><p><b>  RETI</b></p><p>  ;==============</p><p>  TIM1DS: MOV TH1,#63H</p><p>

120、;  MOV TL1,#0a0H</p><p>  DJNZ TX_TIME,TIM1END ;50*20ms</p><p>  MOV TX_TIME,#50 ;50*20=1000mS</p><p>  CLR TR0</p><p>  MOV A,TH0<

121、/p><p>  MOV JSQ2,A</p><p>  MOV A,TL0</p><p>  MOV JSQ3,A</p><p>  ;若果小于500000則轉(zhuǎn)移</p><p>  LCALL SJPD ;調(diào)判斷子程序</p><p>  MOV

122、 A,BZ2</p><p>  CJNE A,#1,DET</p><p>  MOV A,BZDIG</p><p>  CJNE A,#0,PPL1 </p><p>  LCALL MUL4 ;調(diào)×128倍子程序</p><p>  L

123、CALL BMBCD5 ;調(diào)BCD轉(zhuǎn)換</p><p>  MOV DSPLA_ADD7,#20 ;單位:KHz</p><p>  MOV TH0,#00H</p><p>  MOV TL0,#00H</p><p>  MOV JSQ1,#0</p><p>

124、;  TIM1END:POP ACC</p><p>  POP PSW</p><p>  SETB TR0</p><p>  SETB TR1</p><p><b>  RETI</b></p><p>  DET: LCALL SETUP&l

125、t;/p><p>  POP ACC</p><p>  POP PSW</p><p><b>  RETI</b></p><p>  PPL1: DEC BZDIG</p><p>  MOV TH0,#00H</p><p>  

126、MOV TL0,#00H</p><p>  MOV JSQ1,#0</p><p>  LJMP TIM1END </p><p><b>  ;=======</b></p><p>  SJPD: MOV A,JSQ1 ;是否小于500000<

127、;/p><p><b>  CLR C</b></p><p>  SUBB A,#0</p><p>  JC Z1</p><p>  JNZ B1</p><p>  MOV A,JSQ2</p><p>  CLR

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論