馮康

摘要:為解決將單片機串口的理論應用于實踐的問題,在單片機串口教學中設計出雙機通信案例。該案例使用兩臺單片機分別作為發送機和接收機,兩臺單片機串口均工作于方式一;發送機運行發送程序,按下發送機控制的矩陣鍵盤的按鍵,其鍵值通過串口傳送到接收機;接收機運行接收程序,并將從串口接收到的鍵值在數碼管上顯示出來。該案例不但可以直觀地展現出單片機串口通信的過程,還可以幫助學生掌握將單片機串口理論應用于實踐的技能,因此,可以推廣到高等學校單片機課程的教學中。
關鍵詞:單片機;串口;波特率;矩陣鍵盤;中斷
中圖分類號:G642.0? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)23-0075-03
開放科學(資源服務)標識碼(OSID):
Application of Dual MCU Communication Example in Serial Port Teaching
FENG Kang
(School of Computer Science, Huainan Normal University, Huainan 232038, China)
Abstract:To solve the problem of applying micro control unit(MCU) serial port theory to practice, a dual MCU communication example is designed in the serial port teaching. In this example, two MCUs are used as sending MCU and receiving MCU, and the serial ports of the two MCUs work in mode one. The sending MCU executes the sending program which the key of the matrix keyboard is pressed; the key value is sent the receiving MCU through the serial port. The receiving MCU executes the receiving program which displays the key value on the digital tubes. This example does not only show the process of MCU serial port communication, but also help college students gain the skill of applying MCU serial port theory to practice. Therefore, the dual MCU communication example can be apply to the teaching of MCU course in colleges.
Key words:MCU; serial port; baud rate; matrix keyboard; interrupt
《單片機原理及應用》是應用型本科高校電子信息類專業廣泛開設的專業必修課程,該課程的教學內容豐富,既有單片機(MCU, Micro Control Unit)工作原理的理論知識,又有將硬件設計和軟件編程結合的單片機實踐應用,因此,教學的難度較大,尤其是單片機串口這一章的教學,涉及大量單片機串口的理論知識,如單片機串口的控制寄存器SCON、串行數據緩沖寄存器SBUF、串行口的工作方式、串行通信波特率設置等。這些理論知識很多比較抽象,也很難懂[1]。因此,很多講授《單片機原理及應用》課程的老師都將備課的重點放在了理論知識的傳授,比如將串行口的結構和工作原理制作成動畫放在課件中、用具體的字符傳輸來講解單片機串口方式1的一幀數據傳輸的過程、用簡化的公式來講解波特率計算公式,這樣再經過教師課堂的細心講解,同學們基本上可以掌握單片機串口的工作原理,但對于如何將單片機串口的工作原理應用于實踐,仍然理解不透,掌握不深[2]。因此,需要相關的教師進行針對性的教學研究,解決單片機串口教學中這一存在的問題。
1 原因分析及突破口
為什么學生經過《單片機原理及應用》課程的學習,能夠掌握單片機串口的理論知識,卻無法掌握將單片機串口的工作原理應用于實踐的技能,究其原因,主要在于以下幾個方面。一是單片機串口有四種工作方式,如果提供四種工作方式的實踐應用案例,教材內容的篇幅過大,在課時限定的情況下,教師很難在規定的課時內講授完全部內容;二是現有的《單片機原理及應用》課程教材在介紹單片機串口時,都只提供單片機原理的素材,甚至很深的理論都涉及了,但卻都沒有提供單片機串口實踐應用的案例[3];三是串口的實踐應用案例必須結合具體的硬件平臺,很難找到合適的通用的硬件平臺來支持單片機串口的實踐應用;四是即使有合適的硬件平臺,也沒有合適的實踐案例在較短的課時內讓學生掌握單片機串口的實踐應用[4]。由于上述原因,造成了很多高校《單片機原理及應用》課程單片機串口的教學效果不佳,同學們經過認真的學習,仍然缺乏將單片機串口的理論應用于實踐的技能,
我校是一所應用型本科高校,共有計算機科學與技術、網絡工程、物聯網工程、電子工程共4個專業開設了《單片機原理及應用》課程,其中,串口章節是教學大綱中規定的教學內容,以前串口章節的課程教學也普遍存在前述的問題,但從2016年開始,我們就開始進行了《單片機原理及應用》課程的教學研究,重點攻關單片機串口教學存在的學生通過理論學習卻仍然缺乏將單片機串口理論應用于實踐的技能,并取得了一定的成果。通過2016級、2017級、2018級三屆學生的實踐,無論是學生評教、期末考核、課程設計、學科競賽、創新實踐,學生都普遍展現出較強單片機實踐能力,尤其是將串口理論應用于實踐中的技能,現將我們的教學方法做一總結。
2 設計雙機通信案例作為單片機串口教學的實踐案例
雙機通信案例是一種我們自己開發設計的,單片機串口工作于方式1,使用深圳普中科技有限公司的EM3-V22通用單片機開發儀硬件平臺,能夠在2個課時講授完畢的單片機串口實踐案例,這個選擇主要是基于以下四點的考慮,一是單片機串口的四種工作方式中,方式0是作為擴展并行輸入輸出口使用的,實踐應用場合不多[5];方式2和方式3是1位起始位、9位數據位、1位停止位的異步通信,實踐應用中9位數據位很少見,因此方式2和方式3的應用價值不大[6];而方式1是1位起始位、8位數據位、1位停止位的異步通信,是最常見的一種串行通信數據格式,可廣泛地應用于單片機和單片機之間的串口通信,單片機和計算機之間的串口通信,計算機和計算機之間的串口通信,其8位數據格式的特征類似于方式0,傳輸波特率可變的特性類似于方式2和方式3,因此掌握單片機串口方式1的應用也可以推廣到方式0、方式2和方式3的應用[7]。二是雙機通信案例使用的是兩塊深圳普中科技有限公司生產的EM3-V22通用單片機開發儀,這是一種非常適合串口開發的通用平臺,提供了單片機串口RXD、TXD、GND的引出腳,很容易外接到其他板卡,而且該平臺還有豐富的輸入輸出外接設備如鍵盤、數碼管、液晶屏等[8]。三是雙機通信案例的實現原理、硬件設計、軟件編程、下載調試驗證的難度和份量適中,剛好可以在2個課時講授完畢,非常適合課堂教學且不會占用太多的教學課時。四是雙機通信案例雖然教材沒有提供,但教師可以通過智慧課堂、QQ、微信、郵箱等方式提前將相關資料推送給學生,不會妨礙同學們的預習。
3 雙機通信案例的設計
3.1 案例介紹
雙機通信的案例是這樣的:利用A、B兩臺EM3-V22單片機開發儀,以串口方式1實現單片機甲和單片機乙的雙機通信;其中,單片機甲位于EM3-V22單片機開發儀A中,單片機乙位于開發儀B中,要求按下開發儀A矩陣鍵盤中的按鍵S0,S1,S2,……,S15,在開發儀B的8個數碼管M0,M1 ,……,M7上顯示鍵盤按鍵按下的鍵值,完成硬件的設計、軟件的編程、并下載調試驗證。這個案例的設計非常精巧,一是很直觀地顯示出什么是串口通信,明明是按下開發儀A的矩陣鍵盤按鍵,其鍵值卻在另一臺開發儀B的數碼管上顯示出來,由于矩陣鍵盤一共有16個鍵,通過按鍵的變換,數碼管依次顯示不同的鍵值,更能使學生體會到串行通信的神奇;二是體會到串口的作用,因為兩臺開發儀只是將各自單片機串口的RXD、TXD、GND三個引腳互連,沒有其他的連接,更沒有單片機P0口、P1口、P2口、P3口4個并口的相連,就能實現雙機的通信;三是體會到單片機串口方式1的強大功能,因為在程序中只設置了方式1,沒有設置方式0、方式2、方式3。
3.2 硬件設計
雙機通信案例的硬件設計的大致框圖如圖1所示,其中甲乙兩個單片機均為STC90C5RC,單片機甲作為發送機,其P0口接矩陣鍵盤陣列,當矩陣鍵盤的某個按鍵按下后,通過發送程序的運行,提取出鍵值并從串口的TXD引腳將鍵值發送到單片機乙的RXD引腳中;單片機乙作為接收機,其P0口接8個數碼管陣列的數據線,P2.0、P2.1、P2.2三個引腳接74LS138譯碼器的輸入端,譯碼器的輸出作為數碼管陣列8個數碼管的片選信號。兩個單片機的串口互連,其中單片機甲的TXD、RXD、GND引腳分別接單片機乙的RXD、TXD、GND引腳,即兩個單片機共地。
3.3 軟件編碼
軟件編碼包括發送機發送程序的編碼和接收機接收程序的編碼。
3.3.1 發送程序的編碼
發送程序的編碼包括頭文件和宏定義,將P0口的高四位定義為四個位變量,為接收矩陣鍵盤的編碼做準備,定義無符號整型變量key存放矩陣按鍵的編碼,多參數延時主程序,可根據參數設置的不同提供多個延時時間;主函數中代碼TMOD=0x20;TH1=0xfd;TL1=0xfd;設置單片機發送機串口通信的波特率為9600,這是對單片機串口通信比較合適的波特率,并啟動定時器T1,接著設置發送機串口的工作方式為方式1,開中斷;然后反復執行鍵盤掃描程序,如果有鍵按下,則將該按鍵對應數字的段碼值存入變量key中,并送入SBUF寄存器中,當發送完畢后,及時用軟件將TI清零。主函數的主要編碼如下:
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
3.3.2 接收程序的編碼
接收程序的編碼包括頭文件,主函數,串口中斷函數。主函數中,設置接收機的波特率和發送機相同,均為9600,啟動定時器T1,設置接收機串口的工作方式為方式1,啟動串口中斷,并設置允許接收REN=1;熄滅數碼管,這樣接收機啟動后在沒有收到發送機按鍵時不顯示任何內容,只有接收到傳送過來的按鍵的段碼值才對應顯示。串口中斷函數的功能是根據接收的段碼值的不同,選擇數碼管并顯示對應的鍵值,在顯示完后,RI=0;軟件復位RI。
3.4 下載及聯機調試
在發送程序和接收程序編制完成后,在集成開發環境Keil uvison4中編譯生成兩個獨立的*.HEX文件,并經和EM3-V22單片機開發儀配套的下載軟件PZISP下載軟件分別下載到EM3-V22單片機開發儀A、B機中。下載完成后關閉兩個開發實驗儀電源,以方便兩臺實驗儀的硬件電路連接,連接完成后打開兩臺實驗儀的電源,即可開始實驗,由于發送機是矩陣鍵盤按下,接收機是數碼管顯示,可以很直觀地向學生演示發送機的按鍵按下后,其鍵值在接收機的數碼管上顯示,實現了雙機通信。
4 結束語
在單片機串口課程的教學中引入雙機通信案例作為單片機串口教學的實踐案例,所用的課時只有2個課時,但它所帶來的課堂教學效果卻非常顯著。一是同學們掌握了單片機串口方式1可以適用的實踐場合,比如雙機的單工通信、半雙工通信、全雙工通信;二是同學們掌握的了串口通信的硬件設計,發送機串口的數據線TXD、RXD如何和接收方的數據線TXD、RXD相連,兩個單片機的串口如何實現共地,如何進行其他輔助線路的連接;三是掌握了雙機通信代碼編寫的技巧,即波特率的設置方法、串口工作方式設置的方法、發送機發送的啟動代碼、接收機接收的啟動代碼、串口中斷函數的編寫方法等;四是掌握多個單片機協同工作的軟件編程,發送機的發送程序和接收機的接收程序需要單獨編寫,編輯及編譯使用的集成開發環境的使用,下載軟件的下載方法,如何操作硬件驗證雙機通信。掌握這些技能后,學生即可靈活熟練地將單片機串口的理論應用于實踐案例,解決諸如單片機和單片機之間的全雙工串口通信,單片機和計算機之間的全雙工串口通信等一系列高級的實踐應用,從而真正掌握了單片機串口的知識和技能。在我校4個專業三屆同學的單片機教學中,我們一直把雙機通信案例作為單片機串口教學的重點內容加以推廣,學生通過雙機通信案例的教學,不但掌握了單片機串口的工作原理,更能靈活熟練地將單片機串口的理論應用于實踐中,收到了非常好的教學效果。因此,雙機通信案例可以推廣到全國高等學校單片機課程的教學中。
參考文獻:
[1] 金國華,畢勝,王璐, 等.單片機實踐教學體系構建與實施[J].電氣電子教學學報,2018,40(6):129-133.
[2] 黃青穎.單片機課程項目化教學探索[J].山東工業技術,2018,(24):232,196.
[3] 杜衍喆,魏慶云,郭躍虎.基于能力培養的單片機實驗教學模式研究[J].集成電路應用,2019,36(2):52-53.
[4] 王建菊,黃華.單片機開發儀在單片機教學中的使用[J].電子世界,2019,(4):27-28.
[5] 曾德康.基于單片機的數據串口通信研究[J].通信電源技術,2019,36(3):194-195.
[6] 朱昆,楊佳堯.單片機中多串口擴展技術的應用分析[J].數字化用戶,2019,25(2):56.
[7] 王春光,姜興偉,呂德東.一種基于單片機的串口聯網服務器系統設計[J].數字化用戶,2018,24(48):118.
[8] 徐宏慶,鄭龍根.基于單片機串口報文的數據采集模塊的研制[J].工業控制計算機,2018,31(11):44-45,47.
【通聯編輯:王力】