【摘要】目前由于單片機在性能及價格上的優勢,仍是我們在一些電子設備中對體積以及環境要求不高時的首選芯片,本文利用AT89S51實現事件的統計與顯示并經過測試達到了預期的效果。
【關鍵詞】單片機報警AT89S51計數
【基金項目】2011年新世紀廣西高等教育教改工程項目(編號:2011JGB143);2011年度廣西民族師范學院科研項目(編號:XYYB2011027)。
【中圖分類號】G64【文獻標識碼】A 【文章編號】2095-3089(2014)06-0233-02
1.AT89S51簡介
AT89S51是一種帶4K字節閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。將多功能8位CPU和FLASH存儲器組合在單個芯片中,ATMEL的AT89S51是一種高效微控制器,具有isp在線編程功能、雙工uart串行通道、集成看門狗計時器為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。
2.方案設計
2.1硬件方案的設計
所用器件[1]:AT89S51,七段數碼管LM386,電阻,電容,12MHZ晶振,揚聲器等。在AT89S51單片機的P3.7管腳接一個輕觸開關,作為手動計數的按鈕,用單片機的P2.0-P2.7接一個共陰數碼管,作為00-99計數的個位數顯示,用單片機的P0.0-P0.7接一個共陰數碼管,作為00-99計數的十位數顯示[2]。利用P1.0作為1KHz聲波輸出端,經過以LM386為中心的音頻處理模塊放大后從揚聲器中輸出10秒鐘1KHz方波。其硬件電路原理如圖1所示:
圖1 硬件電路原路圖
2.2軟件方案的設計
2.2.1程序設計方法
1)單片機對按鍵的識別的過程處理。
2)單片機對正確識別的按鍵進行計數,計數滿時,使蜂鳴器以1000Hz的頻率響10秒鐘。
3)輸出10秒鐘后,從“00”開始重新計數。
4)單片機對計的數值要進行數碼顯示[3],計得的數是十進數,含有十位和個位,我們要把十位和個位拆開分別送出這樣的十位和個位數值到對應的數碼管上顯示。如何拆開十位和個位,我們可以把所計得的數值對10求余,即可得到個位數字,對10整除,即可得到十位數字。
5)通過查表方式,分別顯示出個位和十位數字。
6)因為1KHZ的方波信號周期為1ms,高電平占用0.5ms,低電平占用0.5ms,如果要產生1KHz方波信號,且占用時間為10s,我們利用定時器T0來完成0.5ms的定時,關于怎樣實現10s定時輸出,本文給出兩種方案:
方法一: 當選定定時/計數器T0的定時時間為0.5ms時,而要定時10s則是0.5ms的20000倍,也就是說以0.5ms定時20000次就達到定時時間10s。
方法二: 當選定定時/計數器T0的定時時間為0.5ms時,我們通過調用10s子程序實現定時10s。
程序的流程如圖2所示:
圖2 程序流程圖
方法一中的中斷服務程序如圖3所示:方法二的中斷服務程序如圖4所示:
圖3 方法一中斷程序流程 圖4方法二中斷程序流程
以下分別為兩種方法的部分匯編源程序:方法一的部分源程序START: MOV SP,50H;設定堆棧區MOV Count,#00H;顯示部分初始化NEXT1: MOV A,Count;顯示程序MOV B,#10 DIV AB MOV DPTR,#TABLEMOVC A,@A+DPTR;用查表法實現顯示 MOV P0,A;顯示十位MOV A,BMOVC A,@A+DPTR MOV P2,A;顯示個位方法二部分源程序:START: MOV SP,#50H;設定堆棧區MOV Count,#00H;顯示部分初始化NEXT1: MOV A,Count MOV B,#10 DIV AB MOV DPTR,#TABLE;顯示程序 MOVC A,@A+DPTR;用查表法實現顯示 MOV P0,A;顯示十位MOV A,B MOVC A,@A+DPTR MOV P2,A ;顯示個位WT:JNB SP1,WT WAIT: JB SP1,WAIT;判斷按鍵是否按下? LCALL DELY10MS;調用10ms延時子程序實現消抖JB SP1,WAIT INC Count MOV A,Count CJNE A,#100,NEXT1 ;判斷計數是否達到100?3.結論分析 系統上電復位之后,能接收手動計數脈沖輸入,并很好地消除了抖動效應,顯示范圍也達到實驗要求。當計數到達99時,若再來一個計數脈沖,揚聲器則輸出10s的1KHz方波,報警過后數碼管顯示00,系統重新開始計數。本次實驗的各項指標都已達到,且從兩個角度給出的程序設計方案的正確性和可行性均得到了驗證。參考文獻:[1]白炳良.單片機自動控制交通信號燈[J]. 漳州師范學院學報,1997,(02).[2]袁文良.交通信號燈的由來[J].科學與文化,2008,(02).[3]岑紅蕾,吳延祥,謝江,任玲.順序控制流程圖在交通燈自動控制系統中的應用[J].石河子大學學報(自然科學版),2006,(06).