摘 要 用單片機(jī)設(shè)計(jì)脈沖信號(hào)發(fā)生器,具有定量脈沖、連續(xù)脈沖兩種輸出功能,給出電路圖和詳細(xì)程序框圖。
關(guān)鍵詞 單片機(jī);定量脈沖;連續(xù)脈沖
中圖分類號(hào) TN782 文獻(xiàn)標(biāo)識(shí)碼 B 文章編號(hào) 1671-489X(2008)18-0046-03
脈沖信號(hào)發(fā)生器是一種常用的電子儀器,通常這種儀器只能輸出連續(xù)脈沖或單脈沖。本文介紹的脈沖信號(hào)發(fā)生器不但能輸出連續(xù)脈沖,而且能夠根據(jù)設(shè)定輸出規(guī)定數(shù)目的脈沖,給教學(xué)、科研工作帶來(lái)方便。該儀器由于采用單片機(jī)設(shè)計(jì),電路十分簡(jiǎn)單。經(jīng)過(guò)一段時(shí)間的使用,證明其性能穩(wěn)定、工作可靠,能滿足實(shí)驗(yàn)教學(xué)和學(xué)生實(shí)驗(yàn)的需要。下面對(duì)其性能、電路和軟件分別詳細(xì)說(shuō)明。
1 主要技術(shù)指標(biāo)
#8226;脈沖幅度:5 V
#8226;脈沖占空比:50%
#8226;定量脈沖數(shù)量范圍:1~9 999
#8226;定量脈沖數(shù)量設(shè)定:十進(jìn)制按鍵方法
#8226;定量脈沖周期:100 μs
#8226;連續(xù)脈沖頻率:1 Hz、10 Hz、50 Hz、100 Hz、500 Hz、1 KHz、2 KHz
#8226;4位十進(jìn)制數(shù)碼顯示(定量脈沖數(shù)量或連續(xù)脈沖頻率)
2 電路結(jié)構(gòu)
電路如圖1所示。AT89S52是一種低功耗、高性能CMOS8位單片機(jī),具有靈巧的8位CPU、8 K可編程Flash存儲(chǔ)器,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,3個(gè)16位定時(shí)器/計(jì)數(shù)器,1個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路,是脈沖發(fā)生器的核心部件。4個(gè)CD4511對(duì)CPU輸出的BCD碼進(jìn)行譯碼,并驅(qū)動(dòng)4個(gè)LED顯示定量脈沖數(shù)目或連續(xù)脈沖頻率。CD4009片內(nèi)有6個(gè)反相輸出的緩沖器,用來(lái)提高發(fā)生器的負(fù)載能力并獲得正、負(fù)2種脈沖輸出(OUT1輸出正脈沖,OUT2輸出負(fù)脈沖)。S0~S9是輸入按鈕,用來(lái)設(shè)定定量脈沖的數(shù)目或連續(xù)脈沖的頻率。S10是電路的復(fù)位按鈕。S11是定量脈沖的輸出控制按鈕,每按動(dòng)一次,在電路的輸出端即輸出一組規(guī)定數(shù)量的脈沖。S12是定量脈沖和連續(xù)脈沖2種工作方式的控制選擇開(kāi)關(guān),位置1電路輸出定量脈沖,位置2輸出連續(xù)脈沖。12 MHz晶體B和C2、C3組成時(shí)鐘電路。R1、C1構(gòu)成復(fù)位電路。R2~R9是CPUP0口的上拉電阻。D1~D10十只開(kāi)關(guān)二極管的正極均與CPU外中斷1的引腳P3.3相連接。由圖可知,當(dāng)有輸入按鈕被按下時(shí),除向CPU對(duì)應(yīng)的輸入端輸入低電平外,外中斷1的引腳也獲得低電平,從而引起中斷并執(zhí)行相應(yīng)的中斷服務(wù)程序。整流橋和穩(wěn)壓集成電路7805等構(gòu)成直流穩(wěn)壓電源,為整機(jī)提供+5 V直流電壓。
3 軟件設(shè)計(jì)
3.1 主程序主程序流程框圖如圖2所示。程序首先設(shè)置堆棧指針,然后判斷CPU引腳P3.6是高電平還是低電平,高電平執(zhí)行連續(xù)脈沖程序,低電平執(zhí)行定量脈沖程序。
連續(xù)脈沖程序首先使電路輸出頻率為1 Hz的脈沖信號(hào),之后按動(dòng)開(kāi)關(guān)S0~S9中的任何一個(gè),CPU外中斷1引腳P3.3均會(huì)變成低電平引起中斷,輸出頻率會(huì)按技術(shù)指標(biāo)給出的順序依次變化。脈沖的形成靠定時(shí)器T0溢出中斷時(shí)CPU引腳P3.7電平跳變實(shí)現(xiàn)。脈沖的頻率(周期)由定時(shí)器初值決定。在時(shí)鐘電路采用12 MHz晶體的情況下,定時(shí)器輸入脈沖的頻率為1 MHz,即周期為1 μs。對(duì)于1 Hz的連續(xù)脈沖,定時(shí)器的定時(shí)時(shí)間應(yīng)為0.5 S(500 000 μs),而16位定時(shí)器T0最大定時(shí)時(shí)間為216=65 536 μs,是無(wú)法實(shí)現(xiàn)的。為此,令T0的定時(shí)時(shí)間為50 000 μs,每10次T0溢出中斷CPU引腳P3.7電平跳變一次,從而得到1 Hz脈沖輸出。計(jì)算可知,其他頻率不存在此問(wèn)題。對(duì)于T0,不同的脈沖頻率對(duì)應(yīng)不同的初始值,有關(guān)的數(shù)據(jù)如表1所示(為定時(shí)準(zhǔn)確,T0初值有修正)。
在主程序連續(xù)脈沖部分設(shè)置T0為16位定時(shí)器工作方式,T0中斷次數(shù)為10,置T0初值為3CB6H;令LED顯示1 Hz,標(biāo)志單元初值為0;設(shè)外中斷1為高優(yōu)先級(jí),低電平觸發(fā),允許外中斷1、T0定時(shí)中斷,開(kāi)中斷。最后查詢P3.6是否變?yōu)榈碗娖剑绻優(yōu)榈碗娖剑D(zhuǎn)移執(zhí)行定量脈沖程序,否則繼續(xù)執(zhí)行連續(xù)脈沖程序,等待T0中斷。
執(zhí)行定量脈沖程序時(shí),先關(guān)閉T0,然后將脈沖輸出端P3.7置成高電平;P0口以及P2.6、P2.7置1,為CPU接收按鍵信號(hào)做好準(zhǔn)備;RAM中的4個(gè)標(biāo)志位置1;顯示緩沖區(qū)30 H~33 H置初值,脈沖數(shù)量緩沖區(qū)50 H、51 H兩個(gè)單元清零;設(shè)置外中斷0、外中斷1,低電平觸發(fā);顯示緩沖區(qū)中的數(shù)據(jù)從P1口輸出送譯碼顯示電路,以顯示輸出脈沖的數(shù)量。最后查詢P3.6是否變?yōu)楦唠娖?,如果變?yōu)楦唠娖?,轉(zhuǎn)移執(zhí)行連續(xù)脈沖程序,否則繼續(xù)執(zhí)行定量脈沖程序。
3.2 T0中斷服務(wù)程序T0中斷服務(wù)程序流程框圖如圖3所示。該程序主要完成3項(xiàng)任務(wù),一是控制輸出端P3.7每隔半個(gè)周期翻轉(zhuǎn)一次,輸出連續(xù)脈沖;二是根據(jù)頻率的要求重裝載T0;三是重裝載T0中斷次數(shù)。程序中的延時(shí)操作是為了提高輸出頻率的精度。
3.3 外中斷1服務(wù)程序外中斷1服務(wù)程序的任務(wù)是針對(duì)按鍵信號(hào)進(jìn)行有關(guān)操作,其流程框圖如圖4所示。
P3.6為高電平時(shí),執(zhí)行連續(xù)脈沖程序。此時(shí),開(kāi)關(guān)S0~S9中不管哪個(gè)被按下,中斷程序均會(huì)改變一次連續(xù)脈沖的頻率,并自動(dòng)循環(huán)。標(biāo)志單元20 H的值為0時(shí),連續(xù)脈沖頻率為1 Hz。第1次按鍵后,標(biāo)志單元的值加1變?yōu)?,按表1重裝T0,連續(xù)脈沖頻率增至10 Hz。第2次按鍵后,標(biāo)志單元的值加1變?yōu)?,按表1重裝T0,連續(xù)脈沖頻率增至50 Hz。以此類推,6次按鍵后,連續(xù)脈沖頻率增至2 KHz。之后按鍵,頻率回到1 Hz,如此循環(huán)往復(fù)。
P3.6為低電平時(shí),執(zhí)行定量脈沖程序。程序首先判斷哪個(gè)鍵被按下,然后將鍵值(S0~S9的鍵值為0~9)存入顯示緩沖區(qū)30 H~33 H,計(jì)算出定量脈沖的數(shù)目存入50 H、51 H。0.2秒延時(shí)可克服按鍵抖動(dòng)帶來(lái)的影響。
3.4 外中斷0服務(wù)程序當(dāng)按鈕開(kāi)關(guān)S11被按下時(shí),CPU響應(yīng)中斷,執(zhí)行外中斷0服務(wù)程序,完成定量脈沖的輸出,其流程框圖如圖5所示。工作時(shí),每輸出一個(gè)脈沖,脈沖數(shù)量緩沖區(qū)50 H和51 H單元中的數(shù)減1,直至減到0,輸出結(jié)束。程序中有多處延時(shí)指令,為的是保證輸出脈沖的占空比始終保持50%不變。
4 結(jié)束語(yǔ)
本文介紹的脈沖信號(hào)發(fā)生器,由于輸出脈沖參數(shù)與晶振頻率相聯(lián)系,故有很高的精度。連續(xù)脈沖雖然只有7個(gè)頻率,但對(duì)軟件稍加修改,就可以增加更多的頻率。筆者采用匯編語(yǔ)言設(shè)計(jì),故程序簡(jiǎn)潔,而且方便定時(shí)參數(shù)的準(zhǔn)確計(jì)算與設(shè)置。
參考文獻(xiàn)
[1]孫涵芳,徐愛(ài)卿.單片機(jī)原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,1988:90—148
[2]徐洊學(xué).定量脈沖產(chǎn)生電路[J].物理實(shí)驗(yàn),2005(1):45—48