版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字頻率計畢業(yè)設(shè)計-- 數(shù)字頻率計設(shè)計
- 畢業(yè)設(shè)計---數(shù)字頻率計
- 畢業(yè)設(shè)計--數(shù)字頻率計
- 數(shù)字頻率計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--數(shù)字頻率計
- 畢業(yè)設(shè)計----數(shù)字頻率計
- 數(shù)字頻率計設(shè)計-畢業(yè)設(shè)計
- 數(shù)字頻率計設(shè)計
- 畢業(yè)設(shè)計----數(shù)字頻率計的設(shè)計
- 數(shù)字頻率計
- 數(shù)字頻率計畢業(yè)論文--基于vhdl的數(shù)字頻率計的設(shè)計
- 畢業(yè)設(shè)計----數(shù)字頻率計的設(shè)計論文
- 畢業(yè)設(shè)計--- 簡易數(shù)字頻率計的設(shè)計
- 畢業(yè)設(shè)計---簡易數(shù)字頻率計的設(shè)計
- 數(shù)字頻率計實驗報告---數(shù)字頻率計的設(shè)計與制作
- 畢業(yè)設(shè)計(論文)報告數(shù)字頻率計設(shè)計
- 數(shù)字頻率計的設(shè)計
- 數(shù)字頻率計畢業(yè)論文
- 畢業(yè)設(shè)計---vhdl語言設(shè)計的數(shù)字頻率計
- 數(shù)字頻率計課程設(shè)計
評論
0/150
提交評論