基于单片机的GPS时间校准设计说明Word格式.docx
- 文档编号:21649571
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:63
- 大小:806.56KB
基于单片机的GPS时间校准设计说明Word格式.docx
《基于单片机的GPS时间校准设计说明Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的GPS时间校准设计说明Word格式.docx(63页珍藏版)》请在冰豆网上搜索。
以及运用GPS模块进行时间数据与卫星的自动同步。
主要容包括:
1.年月日星期时分秒显示;
2.手动年月日星期时分秒调整;
3.自动年月日星期时分秒调整;
1.2.2系统的总体设计
采用STC89C52作为主控单片机,时钟模块选用DS1302作为时钟芯片,温度模块选用DS18B20作为温度传感器,显示模块选用LCD1602,设置部分选用按键电路。
STC89C52与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:
0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
DS1302实时时钟芯片功能丰富,可以用来直接代替IBMPC上的时钟日历芯片DS12887,同时,它的管脚也和MC146818B、DS12887相兼容。
由于DS1302能够自动产生世纪、年、月、日、时、分、秒等时间信息,其部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题;
DS1302中自带有锂电池,外部掉电时,其部时间信息还能够保持10年之久;
对于一天的时间记录,有12小时制和24小时制两种模式。
用户还可对DS1302进行编程以实现多种方波输出,并可对其部的三路中断通过软件进行屏蔽。
GPS模块就是集成了RF射频芯片、基带芯片和核心CPU,并加上相关外围电路而组成的一个集成电路。
目前GPS模块的GPS芯片大部分还是采用全球市占率第一的SiRFIII系列为主。
由于GPS模块采用的芯片组不一样,性能和价格也有区别,采用SIRF三代芯片组的GPS模块性能最优,价格也要比采用MTK或者MSTAR等GPS芯片组的贵很多。
第二章硬件电路设计
本次设计主要有单片机主控部分、DS1302时钟芯片部分、LCD1602液晶显示部分、GPS模块、按键输入部分。
整体硬件框图如下:
本系统以STC89C52单片机为核心,本系统选用11.0592MHZ的晶振,,使得单片机有合理的运行速度。
起振电容30pF对振荡器的频率高低、振荡器的稳定性和起振的快速性影响较合适,复位电路为按键高电平复位。
下面简单的介绍一下单片机控制部分、DS1302部分、LCD1602部分以及GPS模块。
2.1单片机控制部分
STC89C52是一个低功耗,高性能CMOS8位单片机,片含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用STC公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的STC89C52可为许多嵌入式控制应用系统提供高性价比的解决方案。
STC89C52具有如下特点:
40个引脚,8kBytesFlash片程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片时钟振荡器。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
STC89C52共有四个8位的并行I/O口:
P0、P1、P2、P3端口,对应的引脚分别是P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7,共32根I/O线。
每根线可以单独用作输入或输出。
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0不具有部上拉电阻。
在flash编程时,P0口也用来接收指令字节;
在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。
在flash编程和校验时,P1口接收低8位地址字节。
此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。
P2口:
P2口是一个具有部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,部上拉电阻把端口拉高,此时可以作为输入口使用。
在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。
在这种应用中,P2口使用很强的部上拉发送1。
在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有部上拉电阻的8位双向I/O口,p3输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,部上拉电阻把端口拉高,此时可以作为输入口使用。
P3口亦作为STC89C52特殊功能使用,在flash编程和校验时,P3口也接收一些控制信号。
单片机的引脚图如图3.3所示。
图3.3STC89C52单片机引脚图
单片机最小系统,是指用最少的元件与单片机组成的可以工作的系统。
对52单片机来说,最小系统一般应该包括:
单片机、晶振电路、复位电路。
单片机接口电路主要用来连接计算机和其他外部设备,各功能模块及原理如下:
复位电路:
单片机最小系统复位电路的极性电容C3的大小直接影响单片机的复位时间,一般采用10-30μF,51单片机最小系统容值越大需要的复位时间越短。
单片机工作之后,只要在RST引线上加载10ms以上的高电平,单片机就能有效地复位。
CS-51单片机通常采用自动复位和按键复位两种方式。
这里采用按键复位和上电复位两种电路结合。
晶振电路:
典型的晶振取11.0592MHZ或者12MHZ,晶振越大,则单片机的处理速度越快,考虑到本次设计的通信问题,采用了11.0592MHZ晶振。
单片机的最小起振电容C1,C2一般采用15-33pF,并且电容离晶振越近越好。
单片机最小系统的设计电路如图3.4所示。
图3.4单片机最小系统的设计电路
2.2DS1302时钟芯片部分
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302部有一个31×
8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;
其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),。
SCLK始终是输入端。
DS1302的引脚图如图5.4所示:
图5.4DS1302引脚图
调试中问题说明:
DS1302与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;
D6=0,指定时钟数据,D6=1,指定RAM数据;
D5~D1指定输入或输出的特定寄存器;
最低位LSB(D0)为逻辑0,指定写操作(输入),D0=1,指定读操作(输出)。
在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。
若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。
DS1302与RAM相关的寄存器分为两类:
一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;
再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。
要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F以上)。
虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。
可以用老式电脑主板上的3.6V充电电池。
如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。
100μF就可以保证1小时的正常走时。
DS1302在第一次加电后,必须进行初始化操作。
初始化后就可以按正常方法调整时间。
原理图如图3-9所示:
2.3LCD1602液晶显示部分
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,本设计采用16列*2行的字符型LCD1602带背光的液晶显示屏。
1602LCD主要技术参数:
1.显示容量:
16×
2个字符
2.芯片工作电压:
4.5—5.5V
3.工作电流:
2.0mA(5.0V)
4.模块最佳工作电压:
5.0V
5.字符尺寸:
2.95×
4.35(W×
H)mm
2.3.21602引脚功能说明
各引脚接口说明如表所示:
表2-1
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
3
VL
液晶显示偏压
11
D4
4
RS
数据/命令选择
12
D5
5
R/W
读/写选择
13
D6
6
E
使能信号
14
D7
7
D0
15
BLA
背光源正极
8
D1
16
BLK
背光源负极
表2-1:
引脚接口说明:
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
2.3.31602LCD的指令说明及时序
1602液晶模块部的控制器共有11条控制指令,如表2-2所示:
表2-2
序号
指令
清显示
光标返回
*
置输入模式
I/D
S
显示开/关控制
D
C
B
光标或字符移位
S/C
R/L
置功能
DL
N
F
置字符发生存贮器地址
字符发生存贮器地址
置数据存贮器地址
显示数据存贮器地址
读忙标志或地址
BF
计数器地址
写数到CGRAM或DDRAM)
要写的数据容
从CGRAM或DDRAM读数
读出的数据容
表2-2字符控制命令说明:
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高电平、0为低电平)
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平时为单行显示,高电平时双行显示F:
低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据。
指令11:
读数据。
芯片时序表如下:
读状态
输入
RS=L,R/W=H,E=H
输出
D0—D7=状态字
写指令
RS=L,R/W=L,D0—D7=指令码,E=高脉冲
无
读数据
RS=H,R/W=H,E=H
D0—D7=数据
写数据
RS=H,R/W=L,D0—D7=数据,E=高脉冲
表2-3
基本操作时序表
读写操作时序如图2-7和2-8所示:
图2-7读操作时序
图2-8写操作时序
2.3.41602LCD的RAM地址映射及标准字库表
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图2-9是1602的部显示地址。
图2-9液晶部显示地址
例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?
这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。
每次输入指令前都要判断液晶模块是否处于忙的状态。
1602液晶模块部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
图2-10字符代码与图形对应图
2.3.51602LCD的一般初始化(复位)过程
1.延时15mS
4.写指令38H(不检测忙信号)
5.延时5mS
8.写指令38H(不检测忙信号)
9.延时5mS
13.写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号
15.写指令38H:
显示模式设置
17.写指令08H:
显示关闭
19.写指令01H:
显示清屏
22.写指令06H:
显示光标移动设置
25.写指令0CH:
显示开及光标设置
2.3.61602LCD的电路连接
图2-111602的电路连接
2.4GPS模块VK2828U7G5LF部分
GPS模块就是集成了RF射频芯片、基带芯片和核心CPU,并加上相关外围电路而组成的一个集成电路。
在本次设计采用了设计要求的VK2828U7G5LF模块,这个模块主芯片是UBX-G7020-KT,通过串口通信与单片机相连接,当使他工作的时候,就会开始定位,并将数据通过串口送给单片机,数据遵守NMEA0183协议,里面有时间、位置、地面速度信息等,我们可以直接对送过来的数据进行解读,就可以获取我们所先要的时间信息。
1.正常工作条件:
2.RF射频属性:
3.NMEA0183协议
NMEA0183输出
GGA:
时间、位置、定位类型
GLL:
经度、纬度、UTC时间
GSA:
GPS接收机操作模式,定位使用癿卫星,DOP值
GSV:
可见GPS卫星信息、仰角、方位角、信噪比(SNR)
RMC:
时间、日期、位置、速度
VTG:
地面速度信息
MSS:
信号强度等
注意:
输出癿信息、频率不设置有关
样例数据:
$GPGGA,060826.00,2236.91284,N,11403.24705,E,2,08,1.03,107.8,M,-2.4,M,,0000*4A
$GPGSA,A,3,24,22,14,12,15,25,18,42,,,,,2.20,1.03,1.95*01
$GPGSV,3,1,11,12,31,117,47,14,30,290,46,15,19,060,42,18,70,010,45*78
$GPGSV,3,2,11,21,47,207,,22,40,326,43,24,44,036,43,25,24,159,42*70
$GPGSV,3,3,11,31,03,218,,42,51,128,35,50,46,122,45*4E
$GPGLL,2236.91284,N,11403.24705,E,060826.00,A,D*66
$GPRMC,060827.00,A,2236.91267,N,11403.24701,E,0.001,,130214,,,D*79
$GPVTG,,T,,M,0.029,N,0.054,K,D*2C
4.样例数据详解
GGA样例数据:
名称
样例
单位
描述
消息ID
$GPG
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 GPS 时间 校准 设计 说明
![提示](https://static.bdocx.com/images/bang_tan.gif)