【摘 要】介紹了兩個方面的內容,一是路橋收費系統中PC機與LED顯示屏的串行通信實現方案,另一個是LED顯示字符點陣數據的提取方法。
?? 關鍵詞:串行通信 通信協議 點陣數據提取
近年來路橋收費管理系統不斷地向自動化、智能化的方向發展,它除了要完成基本的收費功能外,還需要對一些外部設備進行管理。這些外部設備是收費站與車輛司乘人員最直接的交流窗口,它不僅要控制車輛的放行和禁止,而且還要能夠給出有關車輛的車型、收費金額等提示信息。這些信息的給出是由信號燈、LED顯示屏、數碼管顯示器、語音報價器等外設來完成的。
在我們所設計的路橋收費管理系統中,道口工作站對這些外部設備的控制是通過兩者之間的串行通信實現的。下面我們僅以LED顯示屏為例,介紹工作站與外設的串行通信實現方案以及LED顯示字符點陣數據的提取方法。
1 道口工作站與LED顯示屏的串行通信
? 為了實現道口工作站和LED顯示屏的串行通信,我們首先在兩者之間定義了一個通信協議 。在本協議中主控器即道口工作站的PC機程序由VB語言編寫,被控器單片機程序由C51語言編寫。該串行通信是在PC機的RS-232串行口和MCS-51系列單片機的UART串行口之間進行的。下面首先給出通信協議的定義。
1.1 通信協議
(1)通信常量的定義
?? 通信常量的定義見表1。
????????????????
??? 當主控器或被控器發送命令時,對前幾個需要發送的字節作異或處理得到BCC校驗碼 ,并將該校驗碼作為最后一個字節發送。接收命令時,接收方對收到的所有字節進行異或處理,若為零,則表示數據傳輸無誤,否則進行出錯處理。
(2)主控器寫命令執行方式
主:
(若末收到被控器發出的ACK或收到的BCC校驗出錯,該命令重發一次,共允許重發三次)
(若收到被控器發出的NAC或接收的BCC校驗出錯,該命令重發一次,共允許重發三次)
? (4)錯誤定義
信息傳輸失敗:主控器發出一條信息后收到被控器的錯誤應答(包括校驗出錯),計為一次傳輸失敗。
超時:主控器發出一條信息后,過0.5s被控器無回音;被控器發出一條信息后,過0.1s主控器無回音。
?? 超數:一條信息傳輸失敗,重試三次仍失敗。
? (5)錯誤處理
當主控器收到被控器的錯誤應答(包括校驗出錯)時,在不超數的情況下,主控器將重新發送命令。若被控器超時一次,計為信息傳輸失敗一次。若被控器超數,則丟失本次傳輸所有數據,回到正常工作狀態。
1.2 通信程序的編寫
根據通信協議,我們使用VB語言在主控器PC機的通信窗體中共編寫了三個函數:通信的初始設置函數、主控器寫命令函數、主控器讀命令函數。其中初始設置函數主要完成串口的打開與關閉、通信端口號的設置以及波特率、校驗方式、數據位、停止位的設置等。主控器寫命令函數主要完成工作站的PC機向LED顯示屏發送各種需要顯示的問候語以及收費金額、余額等信息。主控器讀命令函數主要用于讀取LED顯示屏的狀態信息。
在該通信窗體中,我們使用了一個Active X控件Mscomm,該控件通過串行端口發送和接收數據,下面是有關該控件的一些屬性說明。
???????????????????
???圖1給出了主控器寫命令函數的程序流程圖。由圖1可知,在整個通信過程中,我們在主控器PC機的程序里設置了三個出錯檢測點:a)檢測被控器·發出的ACK信號以及BCC校驗是否正確;b)檢測被控器的響應是否超時;c)檢測信息傳輸失敗是否連續超過3次。經過我們的實踐證明,該串行通信實現方案較好地保證了信息傳輸的可靠性,運行也非常穩定。
???????????????????? ????????????????
2 LED顯示字符點陣數據的提取
一般來說,路橋收費管理系統中LED顯示屏并不需要顯示整個字模庫中的字符,而只需顯示某些特定的漢字和數字字符,如各種提示信息、收費金額、固定的問候語等。因此為了簡化LED部分的電路規模、降低成本,我們只需提取所需的特定字符的點陣數據。
在我國的漢字字模庫中,每一個字符,包括漢字、數字、英文字母等都是按照區位碼的順序存儲的,因此提取所需的特定字符的點陣數據可以采用兩種方法,一是首先從區位碼表中查出需要顯示的每一個字符的區位碼,然后根據這些區位碼采用文件定位的方式從漢字字模庫中提取出點陣數據;另一種方法是對每一個顯示字符,根據其ASCII碼和區位碼的關系首先獲得該字符的區位碼,然后根據區位碼提取出點陣數據。相對而言第二種方法比較靈活方便 ,而且也節省了設計者的時間。
下面以16×16點陣漢字字模庫為例,給出VB語言編寫的獲得特定字符點陣數據的具體程序。
End If
?????? ’以下將根據區位碼采用文件定位的方式從文件1中獲得該字符的數據信息,
??? ’并將其寫入文件2
以上介紹了PC機和LED顯示屏的串行通信實現方案以及LED顯示字符點陣數據的提取方法,其中本方案中提及的通信協議也可以應用于PC機和其他外設的串行通信,有效地保證數據傳輸的可靠性。當LED并不需要顯示整個漢字字模庫中的字符時,可以采用本文提供的點陣數據的提取方案,但是在某些情況下,若LED需要顯示所有的國標一級漢字字符,則可以直接采用文件定位的方法從第1區開始提取(此時提取的點陣數據包含有英文字母和數字等非漢字字符),也可以從第16區開始提取數據(此時提取的全部是漢字數據)。在實際應用中,讀者可以根據自己的需要對串行通信協議以及點陣數據的提取方法進行選擇和修改。
2 李華,孫曉民等.MCS-51系列單片機實用接口技術.北京:北京航空航天大學出版社,1999
?? 關鍵詞:串行通信 通信協議 點陣數據提取
近年來路橋收費管理系統不斷地向自動化、智能化的方向發展,它除了要完成基本的收費功能外,還需要對一些外部設備進行管理。這些外部設備是收費站與車輛司乘人員最直接的交流窗口,它不僅要控制車輛的放行和禁止,而且還要能夠給出有關車輛的車型、收費金額等提示信息。這些信息的給出是由信號燈、LED顯示屏、數碼管顯示器、語音報價器等外設來完成的。
在我們所設計的路橋收費管理系統中,道口工作站對這些外部設備的控制是通過兩者之間的串行通信實現的。下面我們僅以LED顯示屏為例,介紹工作站與外設的串行通信實現方案以及LED顯示字符點陣數據的提取方法。
1 道口工作站與LED顯示屏的串行通信
? 為了實現道口工作站和LED顯示屏的串行通信,我們首先在兩者之間定義了一個通信協議 。在本協議中主控器即道口工作站的PC機程序由VB語言編寫,被控器單片機程序由C51語言編寫。該串行通信是在PC機的RS-232串行口和MCS-51系列單片機的UART串行口之間進行的。下面首先給出通信協議的定義。
1.1 通信協議
(1)通信常量的定義
?? 通信常量的定義見表1。
????????????????
??? 當主控器或被控器發送命令時,對前幾個需要發送的字節作異或處理得到BCC校驗碼 ,并將該校驗碼作為最后一個字節發送。接收命令時,接收方對收到的所有字節進行異或處理,若為零,則表示數據傳輸無誤,否則進行出錯處理。
(2)主控器寫命令執行方式
主:
(若末收到被控器發出的ACK或收到的BCC校驗出錯,該命令重發一次,共允許重發三次)
(若收到被控器發出的NAC或接收的BCC校驗出錯,該命令重發一次,共允許重發三次)
? (4)錯誤定義
信息傳輸失敗:主控器發出一條信息后收到被控器的錯誤應答(包括校驗出錯),計為一次傳輸失敗。
超時:主控器發出一條信息后,過0.5s被控器無回音;被控器發出一條信息后,過0.1s主控器無回音。
?? 超數:一條信息傳輸失敗,重試三次仍失敗。
? (5)錯誤處理
當主控器收到被控器的錯誤應答(包括校驗出錯)時,在不超數的情況下,主控器將重新發送命令。若被控器超時一次,計為信息傳輸失敗一次。若被控器超數,則丟失本次傳輸所有數據,回到正常工作狀態。
1.2 通信程序的編寫
根據通信協議,我們使用VB語言在主控器PC機的通信窗體中共編寫了三個函數:通信的初始設置函數、主控器寫命令函數、主控器讀命令函數。其中初始設置函數主要完成串口的打開與關閉、通信端口號的設置以及波特率、校驗方式、數據位、停止位的設置等。主控器寫命令函數主要完成工作站的PC機向LED顯示屏發送各種需要顯示的問候語以及收費金額、余額等信息。主控器讀命令函數主要用于讀取LED顯示屏的狀態信息。
在該通信窗體中,我們使用了一個Active X控件Mscomm,該控件通過串行端口發送和接收數據,下面是有關該控件的一些屬性說明。
???????????????????
???圖1給出了主控器寫命令函數的程序流程圖。由圖1可知,在整個通信過程中,我們在主控器PC機的程序里設置了三個出錯檢測點:a)檢測被控器·發出的ACK信號以及BCC校驗是否正確;b)檢測被控器的響應是否超時;c)檢測信息傳輸失敗是否連續超過3次。經過我們的實踐證明,該串行通信實現方案較好地保證了信息傳輸的可靠性,運行也非常穩定。
???????????????????? ????????????????
2 LED顯示字符點陣數據的提取
一般來說,路橋收費管理系統中LED顯示屏并不需要顯示整個字模庫中的字符,而只需顯示某些特定的漢字和數字字符,如各種提示信息、收費金額、固定的問候語等。因此為了簡化LED部分的電路規模、降低成本,我們只需提取所需的特定字符的點陣數據。
在我國的漢字字模庫中,每一個字符,包括漢字、數字、英文字母等都是按照區位碼的順序存儲的,因此提取所需的特定字符的點陣數據可以采用兩種方法,一是首先從區位碼表中查出需要顯示的每一個字符的區位碼,然后根據這些區位碼采用文件定位的方式從漢字字模庫中提取出點陣數據;另一種方法是對每一個顯示字符,根據其ASCII碼和區位碼的關系首先獲得該字符的區位碼,然后根據區位碼提取出點陣數據。相對而言第二種方法比較靈活方便 ,而且也節省了設計者的時間。
下面以16×16點陣漢字字模庫為例,給出VB語言編寫的獲得特定字符點陣數據的具體程序。
End If
?????? ’以下將根據區位碼采用文件定位的方式從文件1中獲得該字符的數據信息,
??? ’并將其寫入文件2
以上介紹了PC機和LED顯示屏的串行通信實現方案以及LED顯示字符點陣數據的提取方法,其中本方案中提及的通信協議也可以應用于PC機和其他外設的串行通信,有效地保證數據傳輸的可靠性。當LED并不需要顯示整個漢字字模庫中的字符時,可以采用本文提供的點陣數據的提取方案,但是在某些情況下,若LED需要顯示所有的國標一級漢字字符,則可以直接采用文件定位的方法從第1區開始提取(此時提取的點陣數據包含有英文字母和數字等非漢字字符),也可以從第16區開始提取數據(此時提取的全部是漢字數據)。在實際應用中,讀者可以根據自己的需要對串行通信協議以及點陣數據的提取方法進行選擇和修改。
參 考 文 獻
1 Noel Jerke等.VisualBasic 6開發人員指南.北京:機械工業出版社,西蒙與舒斯特國際出版公司,19992 李華,孫曉民等.MCS-51系列單片機實用接口技術.北京:北京航空航天大學出版社,1999
評論
查看更多