基于C8051F021的定位和报警移动终端设计
GSM 网是目前移动通信体制中最成熟、最完善、应用最广的一种系统。数据业务作为 GSM 网络的一种基本业务,已得到越来越多的系统运营商和开发商的重视,基于这种业务的各种应用也蓬勃发展起来。以 GSM 网络作为无线数据传输网络,可开发出多种前景极其乐观的应用,如无线远程检测和控制、无线自动警报等。本文基于 GSM 的数据业务设计一种实时性比较强、数据率为 9.6kbps 的具有报警和定位的终端。1 C8051F021 简述 C8051F021 是集成在一块芯片上的混合信号系统级单片机,芯片上有 32 位数字 I/O 端口(引脚),与标准 8051 的端口(P0~3)相同。
C8051F021 在功能上有所增强,每个 I/O 端口都可独立地设置为推挽或开漏输出和弱上拉,这为一些低功耗系统设计提供了节省电源的手段,而其最突出优点就是改进了可以控制片内数字资源与外部 I/O 引脚相连的交叉开头网络。通过设置交叉开关控制寄存器,将人的数字资源输入输出配置为端口 I/O 引脚,这就允许用户根据自己的特定应用将通用 I/O 端口与所需数字资源相结合。C7051F021 具有双串口、多中断源、低功耗、高速度、低电压工作(3.3V)、高容量存储器等特性,这些特性满足本终端核心处理器的要求:低功耗、集成度高、可扩展性好等。
2 终端结构框图终端系统是由 C8051F021 单片机、GSM 模块、GPSOEM 接收模块、键盘和液晶显示器组成,如图 1 所示。C8051F021 单片机是用来实时采集终端外围设备数据并进行相应的处理;GSM 模块即 GSM 无线调制解调器,完成和 GSM 网的接续,负责通过串口接收来自单片机所采集到的数据,并以无线电磁波的形式发送,或接收来自远程计算机发来的信息并传递给单片机处理;GPSOEM 的主要功能是接收卫星发射导航电文的信号,并进行码测量或相位测量,然后根据导航电文提供的卫星位置和时钟差校正信息,计算 GPS 接收机的当前位置,在单片机的控制下传输定位数据;键盘包括数字键和功能键,数字键用来设置呼叫远程主机的号码,功能键具有相应的报警功能如火警、匪警等和辅助功能;液晶显示器用来显示操作信息和提示信息。
由于移动终端不需采集和存储大量的数据,仅采集 GPS-OEM 模块的导航数据、报警类型数据和存储呼叫远程主机的号码数据和系统程序,所以 C8051F021 自带的存储器容量即 64KB+128 Flash 和 4KB+256B RAM 已满足本终端的需要,故不需扩展外部存储器。3 工作原理在终端中,由 GPS-OEM 模块完成位置定位。GSM 模块完成与 GSM 网通信接续,用户按键盘上的报警按钮后,单片机通过串口实时读取来自 GPS-OEM 发出的导航电文,从中提取经度、纬度、速度、时间、航向定位数据,并和相应的报警类型数据重新组合形成新的数据格式。
同时,以 ATD 指令进行拨号在接,连接成功后通过所建立的数据链路实时传输数据,监控中心计算机接收数据并进行经纬度数据坐标变换、误差校正等处理,在电子在图上实时显示出当前监控的终端地理位置,并实时地跟踪移动终端,并以声光的形式提示工作人员,以便及时处理警情。移动终端也可随时接来自监控中心的控制命令,并依命令执行相应的动作。4 终端 I/O 配置和初始化程序由于本系统需要配置 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 端口为数字输入模式,即 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 引脚,所以按优先权交叉开关译码表进行分配。UART0 具有最高优先权,故 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 端口初始化输入状态,即 P2MDOUT=0x00、P2=0xFF 和 P3MDOUT=0x00、P3=0xFF。引脚分配如表 1 所列。
表 1 单片机引脚分配初始化程序如下:void System_init(){WDTCN=0xdeh; //禁止看门狗 WDTCN=0xadh;EMI0CF=0x00;XBR0=0x05; //使能 UART0、SMBusXBR1=0x14; //使能 UART1,使能交叉开关和弱上拉,禁止外部寄存器低端口 ALE、WR、RD 由交叉开关寄存器或地址锁存器决定 I/O 端口配置 P0MDOUT=0x11; //TX0、TX1 为推挽输出,RX0、SDA、SCL、RX1、INT0 和 INT1 是由交叉开关分配输入的,因此与其端口配置寄存器的值无关 P2MDOUT.0=0x0; //把 P2.0 位初始化为输入方式,用作 LCD 的命令/数据的辨别 P2.0=1;//初始化为 4×4 键盘接口 P1MDIN=0xFFH; //配置 P1 端口为数字输入模式 P1MDOUT=0x0FH; //配置 P1.0~P1.3 为推挽方式,P1.4~P1.7 为漏极开路方式 P1|=0xF0; //P1 端口低 4 位为输出,高 4 位为输入 P3MDOUT=0x00; //将 P3 口设置为输入方式 P3=0xFF;IE=0x85; //使能 INT0、INT1 并按默认的优先权进行切换};UART0 初始化函数;定时器 1 为 UART0 波特率源 void UART0_init(){SCON0=0x50; //UART 工作模式为 1,8 位数据位,使能 RXTMOD=0x20; //定时器 1 工作模式 2,8 位自动重载 TH1=-(SYSCLK/9600/16);//按波特率设置定时器 1 的重载值 TL1=TH1; //设置定时器 1 的初始值 CKCON|=0x10; //使用系统时钟 SYSCLK 作为时基 PCON|=0x80; //SCOD0=1TR1=1; //启动定时器 1};UART1 初始化函数;配置定时器 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)启动定时器 4TI1=1; //清除 HW_UART 接收和发送中断};SMBus 初始化函数 void SMBus_init(){SMB0CN=0x04h; //配置 SMBus 在应答周期发送确认 ACKSMBOCR=0x60; //时钟速率大约 10μs,根据 SMBOCR 公式计算 SMB0CN|=0x40h; //使能 SMBus}6 总结该该端具有功耗低、集成度高、数据处理速度快以及数据通信实时性强等特点,可广泛应用于个人、出租车和长途车辆的定位和报警。
由于其利用 GSM 网的电路型数据业务进行无线数据通信,其通信费用相对比较高。