摘要:C8051F021是美國Cygnal公司生產(chǎn)的單片機。具有雙串口、低功耗、高速度等優(yōu)點。本文以GSM的數(shù)據(jù)業(yè)務,設計一種具有報警和定位的移動終端,并介紹該終端的結構框圖、工作原理以及I/O配置和初始化程序。
關鍵詞:C8051F021 GSM模塊 GPS模塊 移動終端 定位報警
引言
GSM網(wǎng)是目前移動通信體制中最成熟、最完善、應用最廣的一種系統(tǒng)。數(shù)據(jù)業(yè)務作為GSM網(wǎng)絡的一種基本業(yè)務,已得到越來越多的系統(tǒng)運營商和開發(fā)商的重視,基于這種業(yè)務的各種應用也蓬勃發(fā)展起來。以GSM網(wǎng)絡作為無線數(shù)據(jù)傳輸網(wǎng)絡,可開發(fā)出多種前景極其樂觀的應用,如無線遠程檢測和控制、無線自動警報等。本文基于GSM的數(shù)據(jù)業(yè)務設計一種實時性比較強、數(shù)據(jù)率為9.6kbps的具有報警和定位的終端。
1 C8051F021簡述
C8051F021是集成在一塊芯片上的混合信號系統(tǒng)級單片機,芯片上有32位數(shù)字I/O端口(引腳),與標準8051的端口(P0~3)相同。C8051F021在功能上有所增強,每個I/O端口都可獨立地設置為推挽或開漏輸出和弱上拉,這為一些低功耗系統(tǒng)設計提供了節(jié)省電源的手段,而其最突出優(yōu)點就是改進了可以控制片內數(shù)字資源與外部I/O引腳相連的交叉開頭網(wǎng)絡。通過設置交叉開關控制寄存器,將人的數(shù)字資源輸入輸出配置為端口I/O引腳,這就允許用戶根據(jù)自己的特定應用將通用I/O端口與所需數(shù)字資源相結合。C7051F021具有雙串口、多中斷源、低功耗、高速度、低電壓工作(3.3V)、高容量存儲器等特性,這些特性滿足本終端核心處理器的要求:低功耗、集成度高、可擴展性好等。
2 終端結構框圖
終端系統(tǒng)是由C8051F021單片機、GSM模塊、GPSOEM接收模塊、鍵盤和液晶顯示器組成,如圖1所示。C8051F021單片機是用來實時采集終端外圍設備數(shù)據(jù)并進行相應的處理;GSM模塊即GSM無線調制解調器,完成和GSM網(wǎng)的接續(xù),負責通過串口接收來自單片機所采集到的數(shù)據(jù),并以無線電磁波的形式發(fā)送,或接收來自遠程計算機發(fā)來的信息并傳遞給單片機處理;GPSOEM的主要功能是接收衛(wèi)星發(fā)射導航電文的信號,并進行碼測量或相位測量,然后根據(jù)導航電文提供的衛(wèi)星位置和時鐘差校正信息,計算GPS接收機的當前位置,在單片機的控制下傳輸定位數(shù)據(jù);鍵盤包括數(shù)字鍵和功能鍵,數(shù)字鍵用來設置呼叫遠程主機的號碼,功能鍵具有相應的報警功能如火警、匪警等和輔助功能;液晶顯示器用來顯示操作信息和提示信息。由于移動終端不需采集和存儲大量的數(shù)據(jù),僅采集GPS-OEM模塊的導航數(shù)據(jù)、報警類型數(shù)據(jù)和存儲呼叫遠程主機的號碼數(shù)據(jù)和系統(tǒng)程序,所以C8051F021自帶的存儲器容量即64KB+128 Flash和4KB+256B RAM已滿足本終端的需要,故不需擴展外部存儲器。
3 工作原理
在終端中,由GPS-OEM模塊完成位置定位。GSM模塊完成與GSM網(wǎng)通信接續(xù),用戶按鍵盤上的報警按鈕后,單片機通過串口實時讀取來自GPS-OEM發(fā)出的導航電文,從中提取經(jīng)度、緯度、速度、時間、航向定位數(shù)據(jù),并和相應的報警類型數(shù)據(jù)重新組合形成新的數(shù)據(jù)格式。同時,以ATD<號碼>指令進行撥號在接,連接成功后通過所建立的數(shù)據(jù)鏈路實時傳輸數(shù)據(jù),監(jiān)控中心計算機接收數(shù)據(jù)并進行經(jīng)緯度數(shù)據(jù)坐標變換、誤差校正等處理,在電子在圖上實時顯示出當前監(jiān)控的終端地理位置,并實時地跟蹤移動終端,并以聲光的形式提示工作人員,以便及時處理警情。移動終端也可隨時接來自監(jiān)控中心的控制命令,并依命令執(zhí)行相應的動作。
4 終端I/O配置和初始化程序
由于本系統(tǒng)需要配置UART0、SMBus、UART1、INT0和INT1(8位),存儲器的工作模式為片內方式。P1端口作為4×4鍵盤的接口,P2、P3口作為通用的I/O端口,其中INT0用作遠程主機呼叫終端時的中斷處理,INT1用作鍵盤中斷處理。故C8051F021單片機的EMIF和I/O端口配置如下。
①設EMI的配置寄存器EMI0CF=0x00,因為本應用無擴展存儲器和存儲器映像的I/O設備,即存儲器工作模式為片內方式;同時將EMIFLE(XBR2.5)設置為0,這樣P037、P0.6、P0.5的引腳將由交叉開關或端口鎖存器來決定,不被交叉開關忽略。
②按UART0EN=1、UART1EN=1、SMB0EN=1、INT0E=1、INT1E和EMIFLE=0設置XBR0、XBR1和XBR2為XBR0=0x05、XBR1=0x14、XBR2=0x04。
③配置P1端口為數(shù)字輸入模式,即P1MDIN=0xFF。P1端口低4位為鍵盤輸出,高4位為輸入,P1MDOUT=0x0FH(P1.0~P1.3為推挽方式,P1.4~P1.7為漏極開路方式),P1|=0xF0。
④使能交叉開關,即XBARE=1,XBR2=0x44。因為EMIFLE=0,交叉開關譯碼器將不跳過P0.7、P0.6、P0.5引腳,所以按優(yōu)先權交叉開關譯碼表進行分配。UART0具有最高優(yōu)先權,故P0.0分配給TX0、P0.1分配給RX0;SMBus的SDA、SCL分別分配在P0.2、P0.3引腳;UART1的TX1、RX1分別分配在P0.4、P0.5引腳;INT0分配在P0.6引腳;INT1分配在P0.7引腳。
⑤設置UART0的TX0引腳(TX0,P0.0)、UART1的TX1引腳(TX1、P0.4)為推換輸出方式,即P0MDOUT=0x11。RX0、SDA、SCL、RX1、INT0和INT1是由交叉開關分配輸入的,因此與其端口配置寄存器的值無關。
⑥P2、P3作為一般I/O端口初始化輸入狀態(tài),即P2MDOUT=0x00、P2=0xFF和P3MDOUT=0x00、P3=0xFF。
引腳分配如表1所列。
表1 單片機引腳分配
引腳 | P0.0 | P0.1 | P0.2 | P0.3 | P0.4 | P0.5 | P0.6 | P0.7 | P1 | P2 | P3 |
功能 | TX0 | RX0 | SDK | SCL | TX1 | RX1 | INT0 | INT1 | 鍵盤 | 通用 | 通用 |
初始化程序如下:
void System_init(){
WDTCN=0xdeh; //禁止看門狗
WDTCN=0xadh;
EMI0CF=0x00;
XBR0=0x05; //使能UART0、SMBus
XBR1=0x14; //使能UART1,使能交叉開關和弱上拉,禁止外部寄存器低端口ALE、WR、RD由交叉開關寄存器或地址鎖存器決定I/O端口配置
P0MDOUT=0x11; //TX0、TX1為推挽輸出,RX0、SDA、SCL、RX1、INT0和INT1是由交叉開關分配輸入的,因此與其端口配置寄存器的值無關
P2MDOUT.0=0x0; //把P2.0位初始化為輸入方式,用作LCD的命令/數(shù)據(jù)的辨別
P2.0=1;
//初始化為4×4鍵盤接口
P1MDIN=0xFFH; //配置P1端口為數(shù)字輸入模式
P1MDOUT=0x0FH; //配置P1.0~P1.3為推挽方式,P1.4~P1.7為漏極開路方式
P1|=0xF0; //P1端口低4位為輸出,高4位為輸入
P3MDOUT=0x00; //將P3口設置為輸入方式
P3=0xFF;
IE=0x85; //使能INT0、INT1并按默認的優(yōu)先權進行切換
}
;UART0初始化函數(shù);定時器1為UART0波特率源
void UART0_init(){
SCON0=0x50; //UART工作模式為1,8位數(shù)據(jù)位,使能RX
TMOD=0x20; //定時器1工作模式2,8位自動重載
TH1=-(SYSCLK/9600/16);//按波特率設置定時器1的重載值
TL1=TH1; //設置定時器1的初始值
CKCON|=0x10; //使用系統(tǒng)時鐘SYSCLK作為時基
PCON|=0x80; //SCOD0=1
TR1=1; //啟動定時器1
}
;UART1初始化函數(shù);配置定時器4為串口波特率源
void UART1_Init(void){
SCON1=0x50; //SCON1:模式1,8位UART,使能RXT4CON=0x30; //停止定時器;清除中斷標示;使能UART波特率模式
RCAP4=-(SYSCLK/9600/32);//按波特率設置定時器T4重載值
T4=RCAP4; //給定時器4賦初值
T4CON|=0x04; //(TR4=1)啟動定時器4
TI1=1; //清除HW_UART接收和發(fā)送中斷
}
;SMBus初始化函數(shù)
void SMBus_init(){
SMB0CN=0x04h; //配置SMBus在應答周期發(fā)送確認ACK
SMBOCR=0x60; //時鐘速率大約10μs,根據(jù)SMBOCR公式計算
SMB0CN|=0x40h; //使能SMBus
}
6 總結
該該端具有功耗低、集成度高、數(shù)據(jù)處理速度快以及數(shù)據(jù)通信實時性強等特點,可廣泛應用于個人、出租車和長途車輛的定位和報警。由于其利用GSM網(wǎng)的電路型數(shù)據(jù)業(yè)務進行無線數(shù)據(jù)通信,其通信費用相對比較高。