MCS-51單片機(jī)在表決系統(tǒng)中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:為滿足投票選舉而設(shè)計(jì)的專業(yè)電子表決系統(tǒng)。選用80C31單片機(jī)組成主-從型“單片機(jī)網(wǎng)”系統(tǒng)。采用成熟可靠的串行通訊方式,實(shí)現(xiàn)表決電子化。文章描述了表決器的基本原理,并給出了系統(tǒng)的硬件和軟件設(shè)計(jì)。
關(guān)鍵詞:表決器;80C51;串行通訊
0 引言
隨著我國(guó)社會(huì)主義民主的提高,表決器作為一種公正,迅速準(zhǔn)確的表決工具,應(yīng)用日益廣泛。通過表決器,與會(huì)代表只需根據(jù)會(huì)議議程輕按表決器按鈕,即可輕松地完成從簽到到各類議案的電子表決工作。在不記名模式下,系統(tǒng)特有的保密功能使得代表按鍵能最大限度地反映其真實(shí)意愿,而不用擔(dān)心被人窺視或記錄追查。表決結(jié)果可自動(dòng)統(tǒng)計(jì)產(chǎn)生,并根據(jù)會(huì)議要求以圖文或報(bào)表方式來顯示和打印。
1 設(shè)計(jì)方案
系統(tǒng)包括PC機(jī):用于文件的編輯儲(chǔ)存、打印、顯示表決結(jié)果。大屏監(jiān)視器顯示表決結(jié)果及其它文件。表決采集網(wǎng)絡(luò):采集各代表的表決結(jié)果并做處理。經(jīng)對(duì)系統(tǒng)功能要求的分析,認(rèn)為單片機(jī)80C51最為適合多點(diǎn)分散,每單點(diǎn)功能相對(duì)簡(jiǎn)單的系統(tǒng)。從而組成主-從型“單片機(jī)網(wǎng)”。表決系統(tǒng)見圖1。
2 硬件設(shè)計(jì)
單片機(jī)表決系統(tǒng)以一片主80C51及若干片從80C51組網(wǎng),采用串行通訊方式。并由主80C51為PC機(jī)上報(bào)表決結(jié)果。
2.1 分機(jī)硬件
如圖2終端(分機(jī))設(shè)計(jì)為單人單機(jī)模式。系統(tǒng)為每位表決人各配一臺(tái)分機(jī),上限為255臺(tái)。分機(jī)選用80C51為核心,利用單片機(jī)自有資源,通過鎖存器373擴(kuò)展外部程序存貯器。根據(jù)現(xiàn)有程序量,選用EPROM 27C64,作為程序存儲(chǔ)器。80C51內(nèi)置128B RAM能夠滿足數(shù)據(jù)處理要求,省去了外部擴(kuò)展RAM而使分機(jī)簡(jiǎn)潔可靠。分機(jī)801251的P0口,P2口用于外部擴(kuò)展EPROM的地址、數(shù)據(jù)線。鍵盤占用P1口的P1.0、P1.1、P1,2、P1.3、P1.4。對(duì)應(yīng)“報(bào)到”、“同意”、“反對(duì)”、“棄權(quán)”及“發(fā)言”五個(gè)功能按鍵。P3口的P3.2、P3.3、P3.4、P3.5、P3.6、驅(qū)動(dòng)LED發(fā)光分別顯示“報(bào)到”、“同意”、“反對(duì)”、“棄權(quán)”、“發(fā)言”的狀態(tài)。以便表決人確認(rèn)。當(dāng)本機(jī)發(fā)言請(qǐng)求被允許時(shí)P3.7高有效,接通麥克風(fēng)。[!--empirenews.page--]
輸入輸出部分:P3口中的P3.0、P3.1分別為第二功能的串行口接受(RXD)、發(fā)送(TXD)端,對(duì)應(yīng)連接RS232集成電路MC1488、MC1489做串行通訊用。
全網(wǎng)絡(luò)采用±10 V兩路供電,以滿足RS232工作需求。80C51及其輔助電路的+5 V電源由+10 V經(jīng)7805穩(wěn)壓獲得,以減少電源品種。以上方案為典型的單片機(jī)最小系統(tǒng),充分發(fā)揮了單片機(jī)的性能。
2.2 主單片機(jī)硬件
主單片機(jī)任務(wù)之一是與各分機(jī)聯(lián)系并采集分機(jī)表決結(jié)果,統(tǒng)計(jì)匯總,經(jīng)串行口送PC機(jī)顯示、打印。任務(wù)之二用于查詢及仲裁各分機(jī)的講話請(qǐng)求。按講話的優(yōu)先級(jí)發(fā)出“通”、“斷”串行指令,解決發(fā)言競(jìng)爭(zhēng)問題。與分機(jī)相似,主單片機(jī)硬件較為簡(jiǎn)單,P3.0、P3.1做為串行發(fā)送、接收口。其它分機(jī)及PC機(jī)都作為其從機(jī)。聯(lián)為主-從網(wǎng)絡(luò)。
3 軟件設(shè)計(jì)
3.1 分機(jī)主程序及中斷服務(wù)程序(見圖3)
分機(jī)主程序初始化串行口為模式3,SM2=1,允許接收,波特率1.2 kHz。循環(huán)查詢P1.0~P1.4按鍵狀態(tài),當(dāng)某鍵按下后先延時(shí)12ms去除抖動(dòng)及干擾,再檢查按鍵,確認(rèn)后進(jìn)入相應(yīng)按鍵處理程序。將其特征值記入內(nèi)部RAM,再由P3口驅(qū)動(dòng)對(duì)應(yīng)的LED發(fā)光以便操作者確認(rèn)。[!--empirenews.page--]
為防止表決結(jié)果各項(xiàng)票數(shù)總合超出報(bào)到人數(shù),程序規(guī)定:如未按報(bào)到鍵其它鍵操作無效。即表決前先行報(bào)到。程序設(shè)定若“發(fā)言”鍵按下(機(jī)械自鎖)分機(jī)上報(bào)主機(jī),經(jīng)主機(jī)查詢無“正在”發(fā)言狀態(tài)的分機(jī),則回復(fù)分機(jī)允許發(fā)言。分機(jī)收到命令后置P3.7高有效接通麥克風(fēng)。
分機(jī)中斷服務(wù)程序:當(dāng)主機(jī)經(jīng)串口發(fā)出一地址幀后,各分機(jī)進(jìn)入中斷服務(wù)程序,首先判斷是否為本機(jī)地址,不是則返回主程序。是則繼續(xù)接收命令幀(數(shù)據(jù)幀)。針對(duì)命令做如下回應(yīng):分機(jī)報(bào)到、表決結(jié)果特征值;有無講話請(qǐng)求,開或關(guān)麥克風(fēng)。返回主程序。另外子程序中還針對(duì)錯(cuò)誤信號(hào)做了相應(yīng)對(duì)策,以提高抗干擾能力。
3.2 主機(jī)程序(見圖4)
系統(tǒng)加電復(fù)位后,先執(zhí)行串口初始化程序,按編號(hào)順序查詢分機(jī),并接收分機(jī)狀態(tài)字,放入內(nèi)存。分機(jī)訪問完后,對(duì)結(jié)果分類、統(tǒng)計(jì),并轉(zhuǎn)換為ASCII碼。按報(bào)到、同意、反對(duì)、棄權(quán)、未按鍵的順序發(fā)給PC機(jī),PC機(jī)以中斷響應(yīng)方式接收數(shù)據(jù)。
系統(tǒng)講話控制策略:分兩級(jí)“主持”,“成員”。如果“成員”正在發(fā)言,“主持”可以中斷“成員”發(fā)言。同級(jí)中先請(qǐng)求發(fā)言者優(yōu)先。
為防止系統(tǒng)啟動(dòng)加電后,分機(jī)沒完成復(fù)位,主機(jī)先行查詢致使通訊失敗。主機(jī)在上電復(fù)位后軟件程序延時(shí)20 ms以確保分機(jī)進(jìn)入工作狀態(tài)后,主機(jī)再訪問。
3.3 串行通訊的約定
所有分機(jī)的SM2(SCON5)位置1,使它們置于接收地址幀狀態(tài);主機(jī)發(fā)送一幀地址信息,包含8位地址,第9位置1表示發(fā)送的是地址;分機(jī)接收到地址幀,各自中斷響應(yīng),比較收到地址是否是本機(jī)。被尋址的分機(jī)清除SM2,以接收主機(jī)發(fā)來的后續(xù)命令。未被尋址的分機(jī)仍保持SM2= 1,直至收到新的地址幀。主機(jī)發(fā)送命令幀0AAH(第9位為0)給被尋址的分機(jī)。分機(jī)接收到命令幀,判是否為0AAH?是發(fā)分機(jī)結(jié)果及講話請(qǐng)求狀態(tài),否調(diào)用調(diào)麥克風(fēng)控制程序。分機(jī)地址編號(hào)可從0至FEH,本例為0到15H。共21位表決人。指定PC機(jī)地址為FFH。
4 結(jié)論
本系統(tǒng)采用成熟可靠的軟硬件技術(shù)方案。經(jīng)實(shí)際工作表明操作簡(jiǎn)單,抗電磁干擾能力強(qiáng)。統(tǒng)計(jì)結(jié)果準(zhǔn)確可靠。顯示、打印快捷迅速。是各種國(guó)家機(jī)器及社會(huì)團(tuán)體,企事業(yè)單位行使民主權(quán)利的必備工具。