詮解單片機鈴聲控制系統設計
時間:2022-07-21 06:08:00
導語:詮解單片機鈴聲控制系統設計一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。
摘要:介紹一種以單片機為核心的鈴聲自動控制系統。該系統由單片機AT89C51和時鐘芯片PCF8583組成,通過RS-485串口通信連接主機和各響鈴從機,可完成時間的修改和定時響鈴等功能。
關鍵詞:單片機、時鐘、RS-485通信
1引言
當今社會,計算機的應用已經滲透到人們生產、生活的各個領域。尤其是以單片機為代表的微型計算機的應用最為廣泛,它們憑借其體積小、價格低、功能強、性價比高等優點,占有了計算機應用領域的半壁江山。本文筆者以單片微型計算機為核心,同時運用RS-485遠程通信協議,設計出一款鈴聲控制系統,克服了以往打鈴鐘定時不準確,電路復雜,可靠性低,成本高等缺點,使用戶可以隨時對任意一點的鈴聲時刻進行修改和設定,而不影響走時,并且可以方便可靠的實現分布式遠程控制。該鈴聲控制系統可以廣泛的適用于學校、工廠、車站等不同場合的實時報時控制。
2系統簡介
鈴聲控制系統整體由兩部分組成:主控中心和終端電鈴。主控中心以單片機為核心,包括控制電路、顯示電路、監控電路和遠程通信部分電路。用戶可以通過控制電路操作主控中心,對遠程電鈴進行控制。終端電鈴為響應控制設備,通過其自身的控制系統可以獲得清晰、響亮的聲響,另外還可以實現不同的時刻發出的鈴聲不同。同時主控中心和終端電鈴都具有掉電保護的功能,極大的提高了整個系統的穩定性和可靠性,它們之間通過RS-485異步串行通信完成遠程(1200米)數據交換。系統整體框圖如圖1所示。
3系統設計
主機硬件設計
主機作為整個系統的主控中心按系統要求需要完成的功能有:實時時鐘的產生、用戶控制輸入、各類信息的顯示、數據的存取以及遠程通信。其主要包括:MCU,時鐘產生模塊,控制輸入模塊,數據存儲模塊及通信模塊的選用。
3.1.1MCU的選用
按系統要求及現實條件,該系統選用的MCU是ATMEL公司的89C51,在實際設計中89C51主要完成智能化的控制、顯示和通信等功能。
3.1.2時鐘的產生
本系統采用外接時鐘芯片(選用PCF8583時鐘芯片),這樣單片機對其控制就可以以獲得穩定的時鐘輸出。
3.1.3鍵盤及顯示電路
針對功能要求,本系統采用的是矩陣式鍵盤和普通的數碼管顯示電路。矩陣式鍵盤共設置了16個按鍵,由4*4矩陣式自制鍵盤構成,包括0到9十個數字鍵,以及6個功能鍵。
3.1.4數據存儲
考慮到節省口線、穩定性等方面,本系統采用串行數據傳輸存儲器。其容量計算如下:若以打鈴次數較多的校園為例,每天按12節課計算,每節課打鈴2次,再加上起床和熄燈的次數,打鈴大約在30次左右。每次打鈴的信息格式如圖2。這樣每個信息單元占8個字節,存儲時均按照非壓縮型BCD碼存儲,則需要存儲空間大約在240個字節左右,選用256字節的存儲器就能夠滿足容量的要求,故采用了ATMEL公司的24C02。根據硬件電路的設計可得24C02的I2C硬件地址為:0A2H/0A3H。
3.1.5監控電路
為保證系統的可靠性,本系統采用了看門狗芯片X5045,可直接與許多通用的微控制器的同步串行外設接口(SPI)連接。
3.1.6通信模塊
按中遠距離(1200米)通信要求,本系統采用異步串行通信的方式。從距離及穩定性方面考慮,本系統選用平衡傳輸方式的串行接口標準RS-485作為通信標準,在具體設計中,采用的通信接口芯片是MAX485。
從機作為整個控制中心的響應設備,主要完成的功能有:主機命令的接收、應答和響鈴的控制。整個從機電路是以AT89C2051微處理器為核心,連接響鈴控制電路。其電路連接如圖所示。
3.3電源模塊
在設計中根據系統要求(當突然斷電時,系統整體仍能持續運行)選用了一個較大的電解電容,斷電時其所放電量可以保證單片機及其外圍器件(PCF8583、X5045、24C02)正常工作。但在實際測試過程中,如果還需對顯示模塊供電,則單片機就會由于電力不足而復位。為了解決以上問題,可以在顯示供電部分的硬件電路中添加一個二極管,如圖4所示,通過它的單向導電性來保證單片機系統
在突然斷電時能夠持續的工作。
4軟件設計
該鈴聲控制系統的軟件設計分為主機軟件設計和從機軟件設計。對于整個軟件系統設計而言,系統監控程序的設計是關鍵,是單片機系統程序的框架。因此本系統主、從機軟件設計都采用了一般結構模式,并綜合考慮系統的結構合理性及運行穩定性,主機系統采用了狀態順序編碼、監控模塊在中斷子程序中的設計風格,但鑒于該系統狀態單一性,從機系統并未采用狀態編碼方式,而是由主程序和串口中斷子程序構成。
4.1主機軟件設計
主機軟件設計主要由自檢和初始化主程序、定時/計數器T0中斷服務程序,以及鍵盤掃描、顯示、狀態獲得、串口中斷和延時等子程序構成。它實現了對硬件設備的檢測、整個系統運行中的調度和實時監控以及對硬件和軟件的初始化。
4.1.1主程序設計
系統通電復位后,程序隨即進入主程序,完成對系統的自檢。接著對系統進行正常的初始化,包括硬件和軟件初始化。初始化結束,主程序進入等待方式。流程如圖5所示。
系統自檢包括按鍵、顯示檢測、時鐘芯片PCF8583檢測和E2PROM芯片24C02數據區檢測。(1)按鍵、顯示檢測:檢測前數碼管處于全滅狀態,隨即顯示提示輸入按鍵(P)。若按下任意鍵,數碼管顯示該按鍵值,一秒后數碼管全滅退出檢測。按鍵功能與鍵值定義如下:數字鍵0-9,功能鍵A-F(A-修改時鐘,B-修改時間表,C-通信檢測,D-確定,E-取消,F-移位)。(2)時鐘芯片PCF8583檢測:首先初始化始終芯片為2003年12月31日,24時59分55秒。啟動時鐘并顯示,直至時間顯示為2004年1月1日,0時0分5秒。隨后數碼管全滅,檢測退出。(3)E2PROM芯片24C02數據區檢測:顯示DATATEST,檢測開始。24C02有256個字節的E2PROM,程序依次對每個字節讀出保存數據。寫入0,讀出核對,如正確再寫入0FFH,讀出核對。核對無誤把原數據恢復。若在檢測過程中發現數據核對有誤則顯示出錯(ERROR),并把該出錯數據區地址顯示出來。至此系統自檢結束。
系統初始化包括定時/計數器T0,時鐘時間表,串口相關硬件以及看門狗X5045初始化。(1)定時/計數器T0初始化:定時/計數器T0在該系統中作為監控程序的載體,其初始值須多方面考慮。設定為定時器,定時50ms,采用方式1(16位定時/計數器)。因單片機所用晶振為12MHz,故初值X可用如下公式計算:
50ms=(65536-X)結果X=15536
定時器T0的初始化程序如下:
MOVTMOD,#21H;設置定時器T0方式1
MOVTH0,#HIGH(15536);填定時器初值高字節
MOVTL0,#LOW(15536);填定時器初值低字節
SETBTR0;開定時器T0
SETBET0;允許T0中斷
SETBEA;總中斷允許
(2)時鐘時間表的初始化:時鐘芯片PCF8583的設置在本系統中需要對其內部9個寄存器進行初始化:控制狀態寄存器(00H),計數寄存器百分之一秒單元(01H),秒單元(02H),分單元(03H),時單元(04H),年/日期單元(05H),星期和月份單元(06H),時鐘起鬧控制寄存器(08H),起鬧定時器(0FH)。其中控制狀態寄存器設置為32.768K計數方式。(3)串口初始化:包括波特率設置、串口方式設置和硬件MAX485設置。為了通信的穩定性與正確性,串口方式設置為方式3(9位通用異步接收器/發送器),即對串口控制寄存器SCON設值為0D0H。波特率設置方式為方式2(具有自動重裝初值的8位定時/計數器),用定時/計數器T1作為波特率發生器。設置波特率為2400。其計算公式如下:
波特率=得定時器初值X=230(即0E6H)
MAX485設置:因MAX485為半雙工方式,所以它的發送/接收需要對引腳/RE、DE按要求進行置位/復位設置。
(3)看門狗初始化:本系統使用了硬件看門狗X5045,考慮程序的運行時間選擇了600ms的復位時間。
程序為:MOVA,#10H;X5045方式,看門狗600mLCALLWRSR寫入
系統初始化結束后,主程序進入節電等待方式。該方式下,送往CPU的時鐘信號被封鎖,CPU進入等待狀態,此時堆棧指針SP、程序計數器PC、程序狀態字PSW、累加器A的狀態均保持不變,I/O引腳保持以前的狀態。等待方式可由中斷或復位來退出。在本系統中主要是由定時中斷T0來喚醒,之后進入監控循環。
3.1.2定時中斷監控程序設計
定時中斷服務程序是本系統程序的核心,由填定時器初值、喂狗模塊,時間標志位、出錯狀態判斷模塊,鍵盤處理模塊,顯示閃爍判斷及顯示等模塊構成。流程圖如圖6所示。狀態0——初始狀態,正常顯示時鐘;狀態1——修改時鐘狀態;狀態2——修改時間表狀態;狀態3——通信檢測狀態
(1)填定時器初值喂狗模塊:主要為監控循環正常運行而設置,看門狗定時器復位使其繼續監控系統運行。
(2)時間標志位、出錯狀態判斷模塊:為以下程序運行中的一些時間要求而設置。包含1/2秒標志和1秒標志;出錯狀態判斷模塊是為顯示定時間(1s)的出錯信息而設置,包含時鐘輸入出錯和時間表改動出錯兩種出錯狀態。
(3)鍵盤處理模塊:它是監控程序的主要組成部分,負責掃描鍵盤,解釋按鍵和調度執行模塊。
(4)閃爍判斷及顯示模塊:按照硬件設計,本系統的顯示為靜態模擬串口顯示。顯示不需要定時刷新,所以在鍵盤處理后對是否顯示及是否閃爍要進行判斷,以便進入正確的顯示模塊。設置了兩個標志位:顯示標志DISPF和閃爍標志FLAHF。顯示判斷模塊流程可參照圖7。若有閃爍位則該位由顯示1/4秒,滅1/4秒來造成閃爍效果。
3.1.3其他應用子程序設計
本系統中的應用子程序包括鍵盤掃描子程序、顯示子程序、狀態獲得子程序、串口中斷子程序、延時子程序以及I2C總線和SPI總線的兩個通用軟件包。部分子程序在上面已做過介紹了,下面只對串口中斷子程序、延時子程序和兩種總線的通用軟件包做說明。
(1)串口中斷子程序:在本系統的通信中應用的是RS485串口通信,對于硬件可參照硬件設計的通信部分。因為該通信簡單不存在大量數據的通信,所以通信協議是自行定義的。格式有兩種:通常狀態下,通信為兩個字節,首字節為地址(廣播地址0),尾字節為響鈴類型,該通信不需要從機回應。檢測狀態下,通信為一個字節,包括廣播檢測和單機檢測。廣播檢測地址為0FFH,單機地址為某從機號(01-99)。當從機接收到0FFH或本機號時響鈴(類型0),否則不做任何響應。接收到本機號時要向主機發送回應,主機接到回應表示該從機運行正常。串口中斷子程序只是通常狀態下調用的,主要是為了發送響鈴類型而設置的。
(2)延時子程序:本系統中設置了一個比較精確的1ms延時程序,其他延時程序都是在此基礎上調用多次實現的:
經計算可知該程序執行用993個機器周期,當采用12MHz的晶振,1個機器周期=1μs,則執行該程序要993μs,與1ms比較存在7μs誤差。
(3)I2C總線和SPI總線通用軟件包:本系統硬件設計中使用了兩個I2C總線器件:時鐘芯片PCF8583和E2PROM24C02,地址分配為PCF8583—0A0H/0A1H,24C02—0A2H/0A3H。本系統I2C模擬通用軟件包由信號模擬子程序STA、STOP、MACK、MNACK和通用子程序CACK、WRBYT、RDBYT、WRNBYT、RDNBYT共九個子程序組成??梢栽O置在程序存儲器的任何空間,占用的資源有R0(18H)、R1(19H)、F0、C。通用軟件包中的符號單元有:MTD—發送緩沖區首址,MRD—接收緩沖區首址,SLA—尋址字節(SLAW/R)存放單元,NUMBYT—傳送字節數n存放單元。本系統通用軟件包適用于以80C51系列為主控器的I2C總線應用系統,主控時鐘頻率為12MHz。如果時鐘頻率改變則應適當修改信號模擬子程序中的定時要求。通用軟件包中直接與應用程序編寫有關的子程序為WRNBYT和RDNBYT。相應的I2C總線讀寫指令為:
4.2.1主程序設計
本鈴聲控制系統的從機軟件設計,主要包含有主程序(自檢程序和初始化程序)、定時中斷服務程序及若干子程序設計。由于從機外圍硬件電路很少,故上電復位后,省去對外圍器件的檢測,立即進入正常的初始化。從機完成的主要功能是對主機發送命令能夠及時準確的接收并響應,所以初始化主要是串行口的設置。具體流程見圖8。串口通信要求通信雙方必須有相同的波特率,系統中設置波特率為2400,為了保證通信的穩定性與正確性,設置為方式3(9位通用異步接收器/發送器),即對串口控制寄存器SCON設值為0D0H。初始化結束后,主程序即刻進入空閑模式:
AT89C2051進入等待模式,直到接收到主機命令。
4.2.2串口中斷子程序
為了讓通信更加穩定,我們制定了自己的通信協議:把通信狀態分為兩種:正常通信狀態和檢測通信狀態。正常通信狀態主要完成定時通信打鈴的功能,命令格式為兩個字節,第一字節為廣播地址:0;另一字節為響鈴類型。檢測通信狀態主要完成對從機的通信檢測,分為廣播檢測和單機檢測。命令格式是一個字節為地址字節,其中廣播檢測地址為0,單機檢測地址為該從機號01-99。串行口中斷請求由接收所引起。串行接口接收到了一幀信息,便由硬件置RI=1,在CPU允許中斷請求的情況下,向CPU申請中斷,中斷響應后,必須由軟件清楚RI。故在串行口中斷子程序開始,首先清除RI,然后由特殊功能寄存器SBUF讀取數據。如上流程圖示。讀取數據后,首先進行數據的校驗,由于采用的是串行口工作方式3,所以將SCON中的位RB8作為一次校驗,同時也取PSW中的奇偶校驗位P進行二次校驗,最大可能的保證接收數據的正確性。校驗程序段如下:
當數據校驗正確時,進入正常響應階段。按照通信協議的約定,串口中斷子程序對命令進行解釋并按命令執行相應的操作。詳細命令解釋判斷見圖9。各標志判斷結束后,系統進入響鈴控制流程。按照要求,響鈴時間為10秒,系統中取定時器T0,配合一個記數單元構成10秒的延時。不同時刻要求響鈴類型不同,在實際設計過程中,利用T0的中斷速率來控制產生聲音的脈沖頻率,通過一個音頻放大器做簡單的功率放大后產生不同的聲音(見從機硬件部分)。
程序中T0的初值TH、TL0用于頻率的控制,利用兩個中間單元DPH、DPL,不同的響鈴類型只需把需要的初值提前放置到DPH、DPL中,調用設置T0的以上子程序即可。
5結束語
在整個設計過程中,無論硬件還是軟件,始終以模塊化設計為指導思想,對整個系統細化,分成多個小模塊,保證每部分都能夠獨立、可靠的工作,然后把精力集中放在對各模塊之間的無縫接口上。最終采用TKS-58仿真器來完成了整個系統的調試。
- 上一篇:體育教育及價值詮釋
- 下一篇:小議農合社的問題及策略