基于DSP和單片機通信的液晶顯示設計方案
摘要: 在含有人機界面的數字化電源系統(tǒng)中, 為更好地發(fā)揮DSP 的強大運算功能, 可采用DSP+ 51 單片機的雙CPU結構, 因而二者之間的可靠通信至關重要。在此介紹了TMS320F2812 型DSP 和MCS51 系列單片機的一種通信方案的設計與實現, 給出對應的程序, 并描述在此通信基礎上實現的液晶顯示電路和結構。該系統(tǒng)具有硬件電路簡單、通信可靠、程序編寫簡單、界面友好等優(yōu)點。實驗證明系統(tǒng)能完整可靠地實現了人機界面功能, 具有較高的實用價值。
0 引言
隨著計算機和信息技術的飛速發(fā)展, 數字信號處理技術得到了迅速的發(fā)展。數字控制使得電力電子變換控制更為靈活, 在CPU 計算速度允許的情況下, 可實現模擬控制難以做到的復雜控制算法, 設計者可以根據自己的系統(tǒng)需求, 方便地更改控制器參數, 即便是在控制對象改變的情況下, 也無需對控制器硬件做修改, 只要改變某些軟件參數即可, 從而大大增強了系統(tǒng)的兼容性。隨著DSP 的應用逐漸普及, 用DSP 取代模擬電路中的專用PWM 集成電路, 已廣泛應用于UPS 和逆變器控制中。
作為智能化設備, 液晶屏和鍵盤等人機交互裝置是數字化電源系統(tǒng)所必不可少的。而DSP 的工作頻率較高, 讀寫周期很短, 主要用于處理實時性要求苛刻、算法復雜的關鍵性任務, 例如對功率開關管的控制, 數據采集、分析、處理等, 而液晶顯示和鍵盤掃描的任務可由普通的51 系列單片機來完成, 而DSP 和51 單片機間的數據交流可采用異步通信方式, 即系統(tǒng)采用雙CPU結構。
1 系統(tǒng)的結構原理
本文中所采用的DSP 和單片機型號分別是T I 公司的T MS320F2812 和MCS51 系列。在系統(tǒng)中, DSP實現與單片機的串口異步通信, 單片機將用戶的原始設置數據傳輸到DSP, 而DSP 將采集到的實時數據信息返回給單片機, 單片機不斷刷新液晶的顯示。系統(tǒng)的基本結構如圖1 所示。
圖1 系統(tǒng)基本結構框圖
1. 1 串口介紹
本文中DSP 是基于串行通信接口模塊SCI 實現通信的。SCI 支持CPU 與其他使用標準格式的異步外設之間的數據通信。SCI 僅需要2 根數據線進行數據傳輸, 雖然傳輸速度不快, 但已經能滿足一般的通信要求,而且外圍接口電路非常簡單。傳輸的數據長度在一定范圍內也是可變的。
MCS51 系列單片機內部具有一個全雙工串行口,該串行口有4 種工作方式, 可以通過軟件進行設置, 由片內定時/ 計數器產生波特率。串行口的接收和發(fā)送數據均可以觸發(fā)中斷, 并含有接收、發(fā)送緩沖器SBUF, 二者共用一個地址。
1. 2 單片機與DSP 的通信接口電路
SCI 接口分為RXD 和TXD 兩個管腳, 傳統(tǒng)的2 個設備異步通信采用RS 232 或RS 485 的形式, 須另配置對應的RS 232 和RS 485 驅動芯片。而本文所提及的采用雙CPU 結構的數字化電源設備, DSP 和51 單片機位于同一設備內, 距離較短, 可省去RS 232 和RS 485驅動芯片, 采用2 個CPU 的RXD 和TXD 直接交叉連接即可。但需注意的是, 由于DSP 的工作電壓為3. 3 V, 而MCS51 單片機的工作電壓為5 V, 因此二者之間的通信電路需要進行電平轉換, 如圖2 所示。
圖2 電平轉換電路
在該電路中, 單片機的TXD 端電壓高于DSP 的RXD 端, 故僅需要使用分壓電路, 計算出合適的阻值即可滿足要求, 而從DSP 向單片機傳送數據時, 需要提升電平, 因而采用了光耦電路, 將電平提升到單片機的工作電平。這樣就能以簡單的電路實現電平的轉換。需要注意的是, 所采用的光耦速率要高于數據傳輸速率,這樣才能保證數據準確高效的傳輸, 以免出現數據丟失。
1. 3 單片機與DSP 通信的軟件實現
在異步通信中必須先規(guī)定3 件事: 一是字符格式,即傳輸的每一幀數據的格式; 二是通信雙方要設置為相同的波特率, 且該波特率能適應雙方的時鐘頻率; 三是通信雙方要有約定的通信協議, 也就是雙方要互相確認后才能傳輸數據。
在本設計中, DSP 和單片機采用的數據幀格式是1 位起始位, 8 位數據位和1 位停止位。由于數據包采用校驗和的方式進行校驗, 因而在數據幀格式中沒有設置奇偶校驗位。因而MCS51 單片機應設置工作在串口方式1 狀態(tài)下, 此時串行口為8 位異步通信接口。為了保證數據傳輸具有較高的速率, 同時又有比較低的傳輸誤碼率, 因而選擇波特率為9600 b/ s。通過相應的波特率設置計算公式計算出DSP 和單片機的初始化時寄存器的初值, 即可完成設置。這樣就保證了通信雙方幀格式的統(tǒng)一和波特率的統(tǒng)一, 從而使數據通信正確、可靠[。
DSP 的串口初始化設置程序如下:
EALLOW;
GpioMuxReg s. GPGMUX. bit. SCIRXDB_GPIOG5 = 1;/ / 設置SCI??RX 引腳外設功能
GpioMuxReg s. GPGMUX. bit. SCIT XDB_GPIOG4 = 1;/ / 設置SCI??TX 引腳外設功能EDIS;
ScibRegs. SCICCR. all = 0x07; / / 1 位停止位, 無奇偶校驗,8 位字符長度, 使用空閑線模式協議
ScibRegs. SCICTL1. all = 0x 03;/ / 使能發(fā)送和接收緩沖
ScibRegs. SCICTL2. all= 0x 02;/ / 使能RXRDY 中斷, 禁止T XRDY 中斷
ScibRegs. SCIPRI. all = 0x0000;/ / 禁止接收錯誤中斷和休眠模式
ScibRegs. SCIH BAUD= 0x01;/ / LSPCLK = 37. 5 MH z, 波特率設為9 600 b/ s
ScibRegs. SCILBAUD = 0xE1; ??
ScibRegs. SCICTL1. all = 0x 0023;/ / 重新使能SCI
51 單片機串口初始化程序如下:
TMOD= 0x 21;/ / 定時器1 工作在方式2, 用于產生0 串口的波特率
SCON= 0x 50;/ / 串行口0 工作在方式1, 允許接收, 清標志位
TH 0= 0xfd; / / 晶振12 MH z, 設置波特率為9 600 b/ s
TH 1= 0xfd; PS= 1; / / 串口中斷優(yōu)先
PCON| = 0x 00; / / 波特率不加倍
TR1= 1;
在本設計中, 采用自己規(guī)定的通信協議, 首先DSP發(fā)送出握手信號, C51 收到握手信號后, 進入中斷子程序, 判斷握手信號是否正確, 若正確才握手成功, 開始接收數據包, 接收完成后對數據進行和校驗, 正確后刷新液晶的顯示數據存儲區(qū); 若錯誤則放棄本次數據, 并將接收數據存儲區(qū)清零, 等待下一次通信。其程序流程圖如圖3 所示。
圖3 DSP 和單片機的通信程序流程圖
DSP 向單片機的定時發(fā)送程序如下:
ScibRegs. SCITXBUF = Sci_VarRx [ i] ;/ / 將數據包寫入發(fā)送緩沖區(qū)
i+ + ; / / 依次發(fā)送數據包
if( i= = 12) i= 0; / / 重新計數
IER | = M_INT1; / / 清除中斷標志位
EINT;
PieCtr lReg s. PIEACK. all = PIEACK_GROUP1;
51 單片機串口中斷服務程序如下:
Rx0_Buffer[ Rx0_Ptr] = SBUF; / / 讀取數據到接收數組
RI= 0; / / 清除接收標志位
Rx0_Ptr+ + ; / / 計數加1
Rx_flag= 1;
1. 4 單片機與液晶和鍵盤的接口
系統(tǒng)采用的是D6128× 4 圖形點陣液晶顯示器, 它主要由行驅動器/ 列驅動器及128×64 全點陣液晶顯示器組成, 既可以完成圖形顯示, 也可以顯示8×4 個( 16×16 點陣) 漢字。單片機與液晶模塊和鍵盤的接口電路如圖4所示。
圖4 單片機與液晶和鍵盤的接口電路
單片機與液晶之間通過8 位數據線進行并口通信,將DSP 傳來的實時數據傳輸到液晶顯示器進行實時顯示。對液晶驅動器的控制具體是通過各個內部寄存器和標志位的操作實現的, 單片機寫入不同的控制字就能讓液晶執(zhí)行各種不同的功能。DG12864 是點陣型液晶, 它主要通過對點陣中各點的亮滅來顯示不同的內容, 通過取模軟件可以方便地獲得漢字和英文符號等的字模, 將程序中所要用到的字模存儲在特定的文件中,在程序中根據所要顯示的內容調用相應的字模, 最終通過并口傳輸到液晶驅動器的顯示RAM 區(qū)中實現顯示。
圖5 展示了系統(tǒng)實際運行時的界面
2 結 語
本文設計了TMS320F2812 和MCS51 單片機的串行異步通信接口, 并通過單片機實現驅動液晶的實時顯示和鍵盤設置功能。經過實驗, 證明本方案能夠高效準確地實現了上述功能, 而且其硬件簡單、操作方便。目前這種方案已經可靠地應用于智能充電器的人機界面模塊中。