摘要:該系統(tǒng)主要采用多片AT89C52單片機作為子機,通過串口和主機進(jìn)行通信,主機采集到數(shù)據(jù)后,使用特定算法得到最后的結(jié)果,然后通過LED顯示器顯示。
關(guān)鍵詞:單片機;AT89C52;串口;LED
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)19-4454-03
A Scoring System Design Based on MCU
LIU Feng
(Shijiazhuang University of Economics, Shijiazhuang 050000, China)
Abstract: This system mainly adopts AT89C52 MCU as a children machine, it communicates with the main machine by the serial port, after collected the data, using a specific algorithm it produces the final result, and then display the result by LED monitor.
Key words: MCU; AT89C52; Serial port; LED
當(dāng)前社會有很多的競賽,比賽活動,為了顯示比賽的公正性,選手的成績一般會現(xiàn)場給出,可是使用人工的方法進(jìn)行收分,核分,公布分?jǐn)?shù),使得選手從比賽結(jié)束到成績公布要等很長時間,而且有了人工的參與,使得選手對公正公平性帶有疑問。該文所設(shè)計的基于單片機的打分系統(tǒng),很好的解決了以上的問題,使得評分具有實時性和自動化的特點。
本系統(tǒng)是一個通過串口的有線評分系統(tǒng),整個系統(tǒng)由兩大塊構(gòu)成,硬件設(shè)計模塊和軟件設(shè)計模塊,其中硬件設(shè)計主要完成評分端子機和主機之間的數(shù)據(jù)傳送,軟件設(shè)計主要是實現(xiàn)數(shù)據(jù)的傳送和顯示。評分端子機數(shù)目可以根據(jù)評委的個數(shù)靈活添加或刪除。
1 功能分析
在選手比賽結(jié)束后,評委打分時,需要主機發(fā)送一個開始打分的指令,否則認(rèn)為打分無效。
打分時,有多個評委,每人一個評分子機,通過總線與主機相連。評委在接到開始打分的指令時,可以給選手打分。在打分后,確認(rèn)傳送之前,可以修改評分。
多個評委的分?jǐn)?shù)由評分子機傳送到主機。主機統(tǒng)計分?jǐn)?shù)并進(jìn)行存儲,最后將分?jǐn)?shù)傳送給顯示子機,顯示子機將最后得分顯示在LED顯示器上。
為了保證主機和評分子機的通信可靠性及有序性,他們之間要有一個通信協(xié)議的約定:
1) 給各評分子機編址,將地址存放于各評分子機的R1寄存器中。
2) 規(guī)定主機對所有評分子機都起作用的復(fù)位命令0FFH,命令使各評分子機的SM2位為1。
3) 規(guī)定主機和各評分子機的數(shù)據(jù)長度為一字節(jié),校驗方式為偶校驗。
4) 制定主機發(fā)送的有效的命令代碼,各評分子機收到命令后,先檢測命令的有效性,再執(zhí)行命令。
5) 設(shè)置評分子機的工作狀態(tài)字,說明現(xiàn)在評分子機工作狀態(tài),包括:初始狀態(tài),評分狀態(tài),確認(rèn)狀態(tài)。
系統(tǒng)模型如圖1所示[1]:
圖1 打分系統(tǒng)模型圖
2 硬件設(shè)計
通過對以上的功能進(jìn)行分析,本系統(tǒng)采用總線結(jié)構(gòu)的串行通信方式,主要需要以下硬件設(shè)施。
1) AT89C52單片機
之所以選用AT89C52單片機,是因為自從單片機流行起來以后,MCS-51系列的單片機一直處于主流地位,它的性價比是其它系列無法比擬的,近年來,AT系列芯片以它的型號齊全,性能優(yōu)良,價格低廉等優(yōu)勢有取代MCS-51系列單片機的趨勢,AT系列和MCS-51系列一起被譽為“控制領(lǐng)域中最佳8位微機”,它內(nèi)部的中斷系統(tǒng),定時器,串行口,存儲空間等部件完全可以滿足本系統(tǒng)的開發(fā)[2]。
2) LED顯示器
本系統(tǒng)中評分子機的LED顯示接口電路采用靜態(tài)的顯示方式,使用兩位共陽極七段LED顯示器,其中個位數(shù)LED顯示器連接一個BCD碼到七段譯碼器轉(zhuǎn)換的芯片74LS47的輸出端,74LS47的另外一端和P1口的P1.0到P1.3相連,十位數(shù)LED顯示器連接另一片74LS47芯片的輸出端,74LS47的輸入端和P1口的P1.4到P1.7相連。當(dāng)有按鍵被按下時,經(jīng)過譯碼后,被按下的數(shù)字鍵的段碼會輸送到個位LED顯示器中顯示,當(dāng)再次有按鍵被按下時,將P1端口的數(shù)據(jù)左移四位,然后和新按下的鍵的鍵碼相或,得到新的值后,送P1口輸出,經(jīng)譯碼,這時LED顯示器中顯示的是兩位數(shù),即十位數(shù)和個位數(shù)。顯示電路圖如圖2所示:
圖2 LED顯示連接圖
3) 鍵盤
本系統(tǒng)中評分子機的分?jǐn)?shù)輸入采用12鍵鍵盤,包括一個確定鍵,一個取消鍵,0到9十個數(shù)字鍵,構(gòu)成一個4行3列的矩陣鍵盤。P2.0到P2.2為列線輸入,P2.0到P2.2三根口線為列線輸入,P2.4到P2.7四根口線為行線輸出,將P2.0到P2.2三根口線作為與門的輸入,與門的輸出連接到P3.2口線,即外部中斷0的輸入端,當(dāng)該引腳的電平由高到低產(chǎn)生跳變時,說明有鍵按下,計算鍵碼值,送往cpu。 當(dāng)鍵盤上有鍵按下時,可能會產(chǎn)生按鍵開關(guān)的抖動,本系統(tǒng)采用軟件延時去抖。鍵盤電路圖如圖3所示[3]:
圖3 鍵盤電路圖
3 軟件設(shè)計
硬件設(shè)計好以后就要進(jìn)行軟件的編程,本系統(tǒng)軟件分為主機和評分子機兩部分,采用串口多機通信。
1) 主機端軟件
主機首先發(fā)送復(fù)位命令,使得各個評分子機的SM2=1.然后逐個發(fā)送評分子機的編號,例如,先發(fā)送一號子機的編號,然后等待一號子機傳送數(shù)據(jù),收到子機的確認(rèn)信息后,開始接收數(shù)據(jù),并存儲數(shù)據(jù),再發(fā)送2號子機的編號,一直到最后一個子機。等所有的子機的數(shù)據(jù)都接收到以后,采用去掉最高分,最低分,然后求平均值的算法,求出最后成績,最后主機驅(qū)動LED顯示電路,顯示最后的成績,驅(qū)動電路圖類似圖2所示。主機程序流程圖如圖4所示[4]。
2) 評分子機端軟件
在串口通信時,子機端接收主機發(fā)送來的復(fù)位命令,使SM2=1,子機端一方面將按鍵的數(shù)字顯示在LED顯示器上,一方面等待向主機傳送數(shù)據(jù),當(dāng)主機呼叫本子機時,被呼叫子機使自己的SM2=0,等待接收主機命令,子機接收到命令后,查表驗證命令的正確性,然后進(jìn)行相應(yīng)的操作,一般是向主機傳送分?jǐn)?shù)操作。子機端部分程序段如下:
LOOP1:JNB RI,$;等待接收
CLR TI
MOV A,SBUF;取接收的主機呼叫地址,
CJNE A,R1,LOOP1;與本機地址不符轉(zhuǎn)LOOP1
CLR SM2;相符,清SM2位
JNB RI,$;等待接收主機命令
CLR RI;如果RI為1,不能接收數(shù)據(jù),會丟失
MOV A,SBUF;取命令
3) 按鍵程序
在按鍵模塊中,根據(jù)硬件電路連接,P2.4到P2.7四根口線為輸出線,P2.0到P2.2三根口線為輸入線,三根輸入線最初均輸入高電平。為判斷是否右鍵按下,最先四根線均輸出低電平,只要有鍵按下,則對應(yīng)的輸入線就會變?yōu)榈碗娖?,所以就會產(chǎn)生外部中斷0中斷信號,至于是輸入低電平列的哪個鍵被按下,可以在中斷程序中逐行掃描,進(jìn)行判斷,識別出來按鍵后,查表得到該鍵的鍵值,進(jìn)入相應(yīng)的顯示子程序進(jìn)行LED顯示。按鍵識別流程圖和相應(yīng)程序段因篇幅原因就不再多做描述。
4 軟硬件測試
在本系統(tǒng)開發(fā)完畢后,我們進(jìn)行了軟硬件的測試,硬件方面,我們在做電路板時本著少使用芯片,少連接線路的原則,進(jìn)行了最小系統(tǒng)的設(shè)計,考慮到使用到了定時器,為了定時比較精準(zhǔn),晶振的頻率選擇了11.0592MHZ。軟件方面,因為采用了匯編語言,雖然擴展不是很方便,但是驅(qū)動硬件更有效,程序更精簡。
5 結(jié)論
本系統(tǒng)設(shè)計的實時打分系統(tǒng)主要是為了在本校畢業(yè)設(shè)計答辯時可以公平公正迅速的給出學(xué)生的成績,所以功能簡單,易于實現(xiàn),價格低廉。但是本系統(tǒng)只要是在類似的比賽場合都可以使用,而且功能可靠,性能穩(wěn)定,后期可以按照要求進(jìn)行擴展,例如,可以在主機和子機的RS-232串口上各加一個無線發(fā)射模塊,做成無線的數(shù)據(jù)傳輸,可以在主機中開發(fā)數(shù)據(jù)庫程序,實現(xiàn)信息管理系統(tǒng),那么適合的場合就會更加的廣泛。
參考文獻(xiàn):
[1] 張毅剛.新編MCS-51單片機應(yīng)用設(shè)計[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2004.
[2] The Development of a VXIbus-based 3cm Single Generator[EB/OL].http://www.elecfans.com/tags/單片機設(shè)計/,1999.
[3] 吳新杰.AVR單片機項目教程[M].北京:北京航空航天大學(xué)出版社,2011.
[4] 何立民.MCS-51單片機應(yīng)用系統(tǒng)設(shè)計系統(tǒng)配置與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1992.endprint
圖3 鍵盤電路圖
3 軟件設(shè)計
硬件設(shè)計好以后就要進(jìn)行軟件的編程,本系統(tǒng)軟件分為主機和評分子機兩部分,采用串口多機通信。
1) 主機端軟件
主機首先發(fā)送復(fù)位命令,使得各個評分子機的SM2=1.然后逐個發(fā)送評分子機的編號,例如,先發(fā)送一號子機的編號,然后等待一號子機傳送數(shù)據(jù),收到子機的確認(rèn)信息后,開始接收數(shù)據(jù),并存儲數(shù)據(jù),再發(fā)送2號子機的編號,一直到最后一個子機。等所有的子機的數(shù)據(jù)都接收到以后,采用去掉最高分,最低分,然后求平均值的算法,求出最后成績,最后主機驅(qū)動LED顯示電路,顯示最后的成績,驅(qū)動電路圖類似圖2所示。主機程序流程圖如圖4所示[4]。
2) 評分子機端軟件
在串口通信時,子機端接收主機發(fā)送來的復(fù)位命令,使SM2=1,子機端一方面將按鍵的數(shù)字顯示在LED顯示器上,一方面等待向主機傳送數(shù)據(jù),當(dāng)主機呼叫本子機時,被呼叫子機使自己的SM2=0,等待接收主機命令,子機接收到命令后,查表驗證命令的正確性,然后進(jìn)行相應(yīng)的操作,一般是向主機傳送分?jǐn)?shù)操作。子機端部分程序段如下:
LOOP1:JNB RI,$;等待接收
CLR TI
MOV A,SBUF;取接收的主機呼叫地址,
CJNE A,R1,LOOP1;與本機地址不符轉(zhuǎn)LOOP1
CLR SM2;相符,清SM2位
JNB RI,$;等待接收主機命令
CLR RI;如果RI為1,不能接收數(shù)據(jù),會丟失
MOV A,SBUF;取命令
3) 按鍵程序
在按鍵模塊中,根據(jù)硬件電路連接,P2.4到P2.7四根口線為輸出線,P2.0到P2.2三根口線為輸入線,三根輸入線最初均輸入高電平。為判斷是否右鍵按下,最先四根線均輸出低電平,只要有鍵按下,則對應(yīng)的輸入線就會變?yōu)榈碗娖?,所以就會產(chǎn)生外部中斷0中斷信號,至于是輸入低電平列的哪個鍵被按下,可以在中斷程序中逐行掃描,進(jìn)行判斷,識別出來按鍵后,查表得到該鍵的鍵值,進(jìn)入相應(yīng)的顯示子程序進(jìn)行LED顯示。按鍵識別流程圖和相應(yīng)程序段因篇幅原因就不再多做描述。
4 軟硬件測試
在本系統(tǒng)開發(fā)完畢后,我們進(jìn)行了軟硬件的測試,硬件方面,我們在做電路板時本著少使用芯片,少連接線路的原則,進(jìn)行了最小系統(tǒng)的設(shè)計,考慮到使用到了定時器,為了定時比較精準(zhǔn),晶振的頻率選擇了11.0592MHZ。軟件方面,因為采用了匯編語言,雖然擴展不是很方便,但是驅(qū)動硬件更有效,程序更精簡。
5 結(jié)論
本系統(tǒng)設(shè)計的實時打分系統(tǒng)主要是為了在本校畢業(yè)設(shè)計答辯時可以公平公正迅速的給出學(xué)生的成績,所以功能簡單,易于實現(xiàn),價格低廉。但是本系統(tǒng)只要是在類似的比賽場合都可以使用,而且功能可靠,性能穩(wěn)定,后期可以按照要求進(jìn)行擴展,例如,可以在主機和子機的RS-232串口上各加一個無線發(fā)射模塊,做成無線的數(shù)據(jù)傳輸,可以在主機中開發(fā)數(shù)據(jù)庫程序,實現(xiàn)信息管理系統(tǒng),那么適合的場合就會更加的廣泛。
參考文獻(xiàn):
[1] 張毅剛.新編MCS-51單片機應(yīng)用設(shè)計[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2004.
[2] The Development of a VXIbus-based 3cm Single Generator[EB/OL].http://www.elecfans.com/tags/單片機設(shè)計/,1999.
[3] 吳新杰.AVR單片機項目教程[M].北京:北京航空航天大學(xué)出版社,2011.
[4] 何立民.MCS-51單片機應(yīng)用系統(tǒng)設(shè)計系統(tǒng)配置與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1992.endprint
圖3 鍵盤電路圖
3 軟件設(shè)計
硬件設(shè)計好以后就要進(jìn)行軟件的編程,本系統(tǒng)軟件分為主機和評分子機兩部分,采用串口多機通信。
1) 主機端軟件
主機首先發(fā)送復(fù)位命令,使得各個評分子機的SM2=1.然后逐個發(fā)送評分子機的編號,例如,先發(fā)送一號子機的編號,然后等待一號子機傳送數(shù)據(jù),收到子機的確認(rèn)信息后,開始接收數(shù)據(jù),并存儲數(shù)據(jù),再發(fā)送2號子機的編號,一直到最后一個子機。等所有的子機的數(shù)據(jù)都接收到以后,采用去掉最高分,最低分,然后求平均值的算法,求出最后成績,最后主機驅(qū)動LED顯示電路,顯示最后的成績,驅(qū)動電路圖類似圖2所示。主機程序流程圖如圖4所示[4]。
2) 評分子機端軟件
在串口通信時,子機端接收主機發(fā)送來的復(fù)位命令,使SM2=1,子機端一方面將按鍵的數(shù)字顯示在LED顯示器上,一方面等待向主機傳送數(shù)據(jù),當(dāng)主機呼叫本子機時,被呼叫子機使自己的SM2=0,等待接收主機命令,子機接收到命令后,查表驗證命令的正確性,然后進(jìn)行相應(yīng)的操作,一般是向主機傳送分?jǐn)?shù)操作。子機端部分程序段如下:
LOOP1:JNB RI,$;等待接收
CLR TI
MOV A,SBUF;取接收的主機呼叫地址,
CJNE A,R1,LOOP1;與本機地址不符轉(zhuǎn)LOOP1
CLR SM2;相符,清SM2位
JNB RI,$;等待接收主機命令
CLR RI;如果RI為1,不能接收數(shù)據(jù),會丟失
MOV A,SBUF;取命令
3) 按鍵程序
在按鍵模塊中,根據(jù)硬件電路連接,P2.4到P2.7四根口線為輸出線,P2.0到P2.2三根口線為輸入線,三根輸入線最初均輸入高電平。為判斷是否右鍵按下,最先四根線均輸出低電平,只要有鍵按下,則對應(yīng)的輸入線就會變?yōu)榈碗娖剑跃蜁a(chǎn)生外部中斷0中斷信號,至于是輸入低電平列的哪個鍵被按下,可以在中斷程序中逐行掃描,進(jìn)行判斷,識別出來按鍵后,查表得到該鍵的鍵值,進(jìn)入相應(yīng)的顯示子程序進(jìn)行LED顯示。按鍵識別流程圖和相應(yīng)程序段因篇幅原因就不再多做描述。
4 軟硬件測試
在本系統(tǒng)開發(fā)完畢后,我們進(jìn)行了軟硬件的測試,硬件方面,我們在做電路板時本著少使用芯片,少連接線路的原則,進(jìn)行了最小系統(tǒng)的設(shè)計,考慮到使用到了定時器,為了定時比較精準(zhǔn),晶振的頻率選擇了11.0592MHZ。軟件方面,因為采用了匯編語言,雖然擴展不是很方便,但是驅(qū)動硬件更有效,程序更精簡。
5 結(jié)論
本系統(tǒng)設(shè)計的實時打分系統(tǒng)主要是為了在本校畢業(yè)設(shè)計答辯時可以公平公正迅速的給出學(xué)生的成績,所以功能簡單,易于實現(xiàn),價格低廉。但是本系統(tǒng)只要是在類似的比賽場合都可以使用,而且功能可靠,性能穩(wěn)定,后期可以按照要求進(jìn)行擴展,例如,可以在主機和子機的RS-232串口上各加一個無線發(fā)射模塊,做成無線的數(shù)據(jù)傳輸,可以在主機中開發(fā)數(shù)據(jù)庫程序,實現(xiàn)信息管理系統(tǒng),那么適合的場合就會更加的廣泛。
參考文獻(xiàn):
[1] 張毅剛.新編MCS-51單片機應(yīng)用設(shè)計[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2004.
[2] The Development of a VXIbus-based 3cm Single Generator[EB/OL].http://www.elecfans.com/tags/單片機設(shè)計/,1999.
[3] 吳新杰.AVR單片機項目教程[M].北京:北京航空航天大學(xué)出版社,2011.
[4] 何立民.MCS-51單片機應(yīng)用系統(tǒng)設(shè)計系統(tǒng)配置與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1992.endprint