基于C8051F021的定位和报警移动终端设计
摘要:C8051F021是美国Cygnal公司生产的单片机。具有双串口、低功耗、高速度等优点。本文以GSM的数据业务,设计一种具有报警和定位的移动终端,并介绍该终端的结构框图、工作原理以及I/O配置和初始化程序。
关键词:C8051F021 GSM模块 GPS模块 移动终端 定位报警
引言
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配置和初始化程序javascript:window.open(this.src);" style="cursor:pointer;"/>
由于本系统需要配置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作为一般