摘 要 用單片機設計脈沖信號發生器,具有定量脈沖、連續脈沖兩種輸出功能,給出電路圖和詳細程序框圖。
關鍵詞 單片機;定量脈沖;連續脈沖
中圖分類號 TN782 文獻標識碼 B 文章編號 1671-489X(2008)18-0046-03
脈沖信號發生器是一種常用的電子儀器,通常這種儀器只能輸出連續脈沖或單脈沖。本文介紹的脈沖信號發生器不但能輸出連續脈沖,而且能夠根據設定輸出規定數目的脈沖,給教學、科研工作帶來方便。該儀器由于采用單片機設計,電路十分簡單。經過一段時間的使用,證明其性能穩定、工作可靠,能滿足實驗教學和學生實驗的需要。下面對其性能、電路和軟件分別詳細說明。
1 主要技術指標
#8226;脈沖幅度:5 V
#8226;脈沖占空比:50%
#8226;定量脈沖數量范圍:1~9 999
#8226;定量脈沖數量設定:十進制按鍵方法
#8226;定量脈沖周期:100 μs
#8226;連續脈沖頻率:1 Hz、10 Hz、50 Hz、100 Hz、500 Hz、1 KHz、2 KHz
#8226;4位十進制數碼顯示(定量脈沖數量或連續脈沖頻率)
2 電路結構

電路如圖1所示。AT89S52是一種低功耗、高性能CMOS8位單片機,具有靈巧的8位CPU、8 K可編程Flash存儲器,256字節RAM,32位I/O口線,看門狗定時器,2個數據指針,3個16位定時器/計數器,1個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路,是脈沖發生器的核心部件。4個CD4511對CPU輸出的BCD碼進行譯碼,并驅動4個LED顯示定量脈沖數目或連續脈沖頻率。CD4009片內有6個反相輸出的緩沖器,用來提高發生器的負載能力并獲得正、負2種脈沖輸出(OUT1輸出正脈沖,OUT2輸出負脈沖)。S0~S9是輸入按鈕,用來設定定量脈沖的數目或連續脈沖的頻率。S10是電路的復位按鈕。S11是定量脈沖的輸出控制按鈕,每按動一次,在電路的輸出端即輸出一組規定數量的脈沖。S12是定量脈沖和連續脈沖2種工作方式的控制選擇開關,位置1電路輸出定量脈沖,位置2輸出連續脈沖。12 MHz晶體B和C2、C3組成時鐘電路。R1、C1構成復位電路。R2~R9是CPUP0口的上拉電阻。D1~D10十只開關二極管的正極均與CPU外中斷1的引腳P3.3相連接。由圖可知,當有輸入按鈕被按下時,除向CPU對應的輸入端輸入低電平外,外中斷1的引腳也獲得低電平,從而引起中斷并執行相應的中斷服務程序。整流橋和穩壓集成電路7805等構成直流穩壓電源,為整機提供+5 V直流電壓。

3 軟件設計
3.1 主程序主程序流程框圖如圖2所示。程序首先設置堆棧指針,然后判斷CPU引腳P3.6是高電平還是低電平,高電平執行連續脈沖程序,低電平執行定量脈沖程序。
連續脈沖程序首先使電路輸出頻率為1 Hz的脈沖信號,之后按動開關S0~S9中的任何一個,CPU外中斷1引腳P3.3均會變成低電平引起中斷,輸出頻率會按技術指標給出的順序依次變化。脈沖的形成靠定時器T0溢出中斷時CPU引腳P3.7電平跳變實現。脈沖的頻率(周期)由定時器初值決定。在時鐘電路采用12 MHz晶體的情況下,定時器輸入脈沖的頻率為1 MHz,即周期為1 μs。對于1 Hz的連續脈沖,定時器的定時時間應為0.5 S(500 000 μs),而16位定時器T0最大定時時間為216=65 536 μs,是無法實現的。為此,令T0的定時時間為50 000 μs,每10次T0溢出中斷CPU引腳P3.7電平跳變一次,從而得到1 Hz脈沖輸出。計算可知,其他頻率不存在此問題。對于T0,不同的脈沖頻率對應不同的初始值,有關的數據如表1所示(為定時準確,T0初值有修正)。

在主程序連續脈沖部分設置T0為16位定時器工作方式,T0中斷次數為10,置T0初值為3CB6H;令LED顯示1 Hz,標志單元初值為0;設外中斷1為高優先級,低電平觸發,允許外中斷1、T0定時中斷,開中斷。最后查詢P3.6是否變為低電平,如果變為低電平,轉移執行定量脈沖程序,否則繼續執行連續脈沖程序,等待T0中斷。
執行定量脈沖程序時,先關閉T0,然后將脈沖輸出端P3.7置成高電平;P0口以及P2.6、P2.7置1,為CPU接收按鍵信號做好準備;RAM中的4個標志位置1;顯示緩沖區30 H~33 H置初值,脈沖數量緩沖區50 H、51 H兩個單元清零;設置外中斷0、外中斷1,低電平觸發;顯示緩沖區中的數據從P1口輸出送譯碼顯示電路,以顯示輸出脈沖的數量。最后查詢P3.6是否變為高電平,如果變為高電平,轉移執行連續脈沖程序,否則繼續執行定量脈沖程序。
3.2 T0中斷服務程序T0中斷服務程序流程框圖如圖3所示。該程序主要完成3項任務,一是控制輸出端P3.7每隔半個周期翻轉一次,輸出連續脈沖;二是根據頻率的要求重裝載T0;三是重裝載T0中斷次數。程序中的延時操作是為了提高輸出頻率的精度。

3.3 外中斷1服務程序外中斷1服務程序的任務是針對按鍵信號進行有關操作,其流程框圖如圖4所示。
P3.6為高電平時,執行連續脈沖程序。此時,開關S0~S9中不管哪個被按下,中斷程序均會改變一次連續脈沖的頻率,并自動循環。標志單元20 H的值為0時,連續脈沖頻率為1 Hz。第1次按鍵后,標志單元的值加1變為1,按表1重裝T0,連續脈沖頻率增至10 Hz。第2次按鍵后,標志單元的值加1變為2,按表1重裝T0,連續脈沖頻率增至50 Hz。以此類推,6次按鍵后,連續脈沖頻率增至2 KHz。之后按鍵,頻率回到1 Hz,如此循環往復。

P3.6為低電平時,執行定量脈沖程序。程序首先判斷哪個鍵被按下,然后將鍵值(S0~S9的鍵值為0~9)存入顯示緩沖區30 H~33 H,計算出定量脈沖的數目存入50 H、51 H。0.2秒延時可克服按鍵抖動帶來的影響。
3.4 外中斷0服務程序當按鈕開關S11被按下時,CPU響應中斷,執行外中斷0服務程序,完成定量脈沖的輸出,其流程框圖如圖5所示。工作時,每輸出一個脈沖,脈沖數量緩沖區50 H和51 H單元中的數減1,直至減到0,輸出結束。程序中有多處延時指令,為的是保證輸出脈沖的占空比始終保持50%不變。

4 結束語
本文介紹的脈沖信號發生器,由于輸出脈沖參數與晶振頻率相聯系,故有很高的精度。連續脈沖雖然只有7個頻率,但對軟件稍加修改,就可以增加更多的頻率。筆者采用匯編語言設計,故程序簡潔,而且方便定時參數的準確計算與設置。
參考文獻
[1]孫涵芳,徐愛卿.單片機原理及應用[M].北京:北京航空航天大學出版社,1988:90—148
[2]徐洊學.定量脈沖產生電路[J].物理實驗,2005(1):45—48