《基于GPS的精确电子日历设计毕业设计论文.doc》由会员分享,可在线阅读,更多相关《基于GPS的精确电子日历设计毕业设计论文.doc(58页珍藏版)》请在三一办公上搜索。
1、基于GPS的精确电子日历设计摘 要随着时代的发展,生活节奏的加快,人们的时间观念愈来愈强,设计开发数字时钟具有良好的应用前景。然而传统的时间服务方式越来越难以满足现代工业化生产实践对时间的要求。在GPS的高速发展下,其授时功能已日益被人们所关注1。由于单片机价格的低成本、高性能,在自动控制产品中得到了广泛的应用。本设计利用Atmel公司的AT89S52单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用C语言进行软件编程,并用实验板进行演示、验证。本论文主要介绍构成GPS高精度时钟的各模块芯片的功能及各管脚的连接与执行情况,详细阐述了GPS授时系统中的授时模块,包括GPS授时的同步利用
2、方式和GPS接受端的数据输出形式以及GPS模块与单片机之间的连接通信,来达到读取GPS信息并且在LCD1602上显示时间的目的。本文给出了从GPS模块读取的数据中截取时间数据并和单片机之间进行传输显示的流程图及主要程序。考虑到接受GPS信号的问题上,本系统将加入一个DS1302时钟芯片用来解决GPS信号中断或者信号强度太低导致读取不到数据的问题。最后,本文描述了GPS高精度时钟在设计和实现过程中可能出现的问题及其调试过程,并对该模块实际应用上的展望。关键字:高精度时钟;GPS接收模块;AT89C52;LCD1602;DS1302AbstractWith the development of T
3、he Times, the accelerating rhythm of life ,peoples concept of time becomes more and more strong,therefore, design and development digital clock has a good application prospect.However, traditional way of time service is increasingly difficult to meet the requirements of modern industrial production
4、practice of the time. In the rapid development of GPS, the GPS clock function is increasingly attention by people.Because of the price of low-cost, high-performance single chip microcomputer has been widely used in automatic control of the products.This design use the AT89S52 microcontroller on the
5、electronic clock of Atmel company development,implements the required function of the hardware circuit is designed,application C language for software programming and demonstration, validation with the test board. This paper introduces a GPS high precision clock module chip function and the pin conn
6、ection with the implementation,GPS timing GPS clock module in the system are expounded in detail,including GPS timing synchronization using method and GPS receiving the data output form and the connection between the GPS module and MCU communication,to read the purpose of the GPS information and on
7、the LCD1602 display time. The data read from the GPS module are given in this paper the interception time data and transmission between MCU and shows the flow chart and main program.Considering the received GPS signal problems,this system will join a DS1302 clock chip is used to solve GPS signal or
8、the signal strength is too low, lead to cant read data.Finally, this article describes the GPS high precision clock possible problems in the process of design and implementation and debugging process, and the module on the practical application prospects. Keywords:High precision clock;GPS receiver m
9、odule;AT89C52;LCD1602;DS1302 目 录摘 要Abstract第一章 绪论11.1 选题意义和论文任务11.2 国内外研究以及趋势11.3 论文结构2第二章 GPS高精度时钟的硬件设计32.1 系统主要芯片选型32.1.1 微处理器AT89C5232.1.2 GPS接收模块42.1.3时钟芯片DS130252.1.4 显示模块LCD160262.2 硬件设计总体思路72.3 硬件电路设计82.3.1 GPS接受模块和单片机的连接82.3.2 LCD1602和单片机的连接92.3.3 按键模块和单片机的连接102.3.4 时钟芯片DS1302和单片机的连接10第三章 GP
10、S高精度时钟的软件设计113.1 GPS授时系统的同步利用方式113.1.1 脉冲同步方式113.1.2 串行同步方式113.2 GPS授时模块的形式及流程图123.3 LCD1602的显示操作143.3.1 读状态操作143.3.2 写命令操作143.3.3 LCD初始化143.4 GPS高精度时钟主要程序、流程图及注释153.4.1 主程序流程图153.4.2 初始化程序163.4.3 按键检测程序173.4.4 DS1302的读写程序183.4.5 LCD1602的读写程序19第四章 调试过程204.1 GPS接收信息强度204.2 GPS和单片机的通信204.3 程序运行204.4 D
11、S1302的晶振频率204.5 误差分析20第五章 总结21参考文献22致谢23附录24第一章 绪论1.1 选题意义和论文任务随着科技的飞速进步,我国电力系统自动化技术快速发展,为了做到统内部统一的管理和调度,整个系统对时间的统一性要求越来越高,同时对时间的同步精度要求也越来越高。互联网领域在世界各地分布着成千上万的服务器,计算机监控系统、数据采集系统、大型网络服务器系统、移动通信网络系统都需要统一的高精度时间以便管理。GPS时钟具有工作稳定、时间精度高、安全可靠、无需人工校时维护等优点广泛应用于广播电视系统的时间授时、同步锁定及车站、码头、机场、宾馆及户外广场等场合的时间显示。GPS性能特点
12、:可以全球全天候工作。GPS能为用户提供连续、实时的位置、三维速度和精密时间。定位精度高。三维位置定位精度优于25米,三维速度精度优于住0.3米/秒,时间精度100纳秒,采用载波测距定位精度可达厘米级。保密、抗干扰。GPS卫星发射的P码精测码扩频信号,比高灵敏度接收机所能接收的最低信号电平还低几十个分贝。用户接收机为了解扩频接收信号,必须产生与信号中扩频伪码相同的本机伪码因具有较强的保密性,此外利用P码良好的相关特性还可增强用户接收机抗电子干扰的能力。在许许多多的精密研究中,绝不允许时间上的过多偏差,为了提高时钟的精确度,需要引入GPS信号,每个GPS卫星上都有2-3个高精度的原子钟,这几块原
13、子钟互为备份的同时,也互相纠正。另外GPS信号中自带了误差纠正码,接收端可以很容易的把延迟的这段传输延迟去掉。本次设计的任务是在查阅国内资料的基础上了解GPS的原理和功能,了解单片机的原理和软件编程方法,设计单片机最小系统、键盘电路、显示电路、闹钟电路。本系统采用AT89C52作为主控制器,为了防止GPS无信号或者信号弱照成无数据输出,附加了时钟芯片DS1302充当第二时钟源,加入按键电路用来设定时间值以及闹钟值,显示方面采用LCD1602显示时间。1.2 国内外研究以及趋势传统的时间服务方式越来越难以满足现代工业化生产实践对时间的要求。随着GPS的发展,其授时功能已日益被人们所关注。利用GP
14、S OEM接收模块,进行二次研制开发实现实时时钟系统,具有精度高、无积累误差,不受地域、气候等环境条件限制,操作方便等特点。GPS时钟可广泛应用于电力系统、通讯、交通管理及国防等需要对时、计时、守时的相关领域2。目前,市场上基于GPS的同步时钟系统种类非常多,但扩展的内容和接口各有不同,各个时钟系统所用的中心处理模块也各有特色。总体上说各种GPS同步时时钟的差别主要在于其时间的精准度、提供给用户的接口及输出信息。从处理器上大体可分为两大类型,一种是FPGA型,一种是单片机型。前者是基于FPGA实现的,FPGA能够用硬件实现各功能模块并行执行,其速度远远超过单片机。所以这种系统一般精确度要高,但
15、是其成本也比较高。后一种主要是通过单片机对GPS信号进行采集,再转换成约定的格式输出给用户。由于单片机是由串行软件指令控制的,所以其体系结构将在很大程度上影响同步时种系统的精确度,使其误差相对比较大。1.3 论文结构第一章,详细论述了GPS高精度时钟的优越性,同时探讨了GPS的应用前景,进而提出了本论文的研究任务。第二章,给出了GPS高精度时钟设计的主要芯片选型,详细论述了GPS模块的NEMA0183协议,并以此协议进行数据截取输出。第三章,给出了GPS接受模块进行截取数据的原理、流程图以及主要程序。第四章,给出了在GPS无信号或信号强度太弱时采用时钟芯片DS1302进行计时并用LCD1602
16、显示的主要程序。第五章,描述了本系统在设计和实现过程中出现的问题及调试过程。第六章,对全文进行系统的总结,并对GPS时钟的研究应用进行展望。第二章 GPS高精度时钟的硬件设计2.1 系统主要芯片选型2.1.1 微处理器AT89C52AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功
17、能强大的AT89C52单片机可提供许多较复杂系统控制应用场合3。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。下图2.1为AT89C52的最小系统4。图2.1 AT89C52的最小系统2.1.2 GPS接收模块GPS模块就是集成了RF射频芯片、基带芯片和核心CPU,并加上相关外围电路而组成的一个集成电
18、路。所谓的基带芯片就是用来合成即将发射的基带信号,或对接收到的基带信号进行解码。具体地说,就是:发射时,把音频信号编译成用来发射的基带码;接收时,把收到的基带码解译为音频信号。同时,也负责地址信息(手机号、网站地址)、文字信息(短讯文字、网站文字)、图片信息的编译。GPS接收端可输出的语句数据格式有$GPGGA,$GPGSA,$GPGSV,$GPRMC,$GPVTG,$LCGLL,$LCVTG,$PGRME,$PGRMF,$PGRMT,$PGRMV,$GPGLL。不同的语句中传送的信息不同,由于“$GPGGA”语句数据格式输出的第一位数据就是所需要的时间数据,利于单片机对时间信息的接收处理,因
19、此本接收机授时系统采用“$GPGGA”“$GPRMC”格式输出时间数据7。$GPGGA(Global Positioning System Fix Data(GGA)语句格式如下:$GPGGA, UTC时间,hhmmss(时分秒)格式 纬度ddmm.mmmm(度分)格式(前面的0也将被传输) 纬度半球N(北半球)或S(南半球) 经度dddmm.mmmm(度分)格式(前面的0也将被传输) 经度半球E(东经)或W(西经) GPS状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算 正在使用解算位置的卫星数量(00-12)(前面的0也将被传输) HDOP水平精度因子(0.5-99.9) 海拔
20、高度(-9999.9-99999.9) 地球椭球面相对大地水准面的高度 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空) 差分站ID号0000-1023$GPRMC(Recommended Minimum Specific GPS/TRANSIT Data(RMC)语句格式如下:$GPRMC, UTC时间,hhmmss(时分秒)格式 定位状态,A=有效定位,V=无效定位 纬度ddmm.mmmm(度分)格式(前面的0也将被传输) 纬度半球N(北半球)或S(南半球) 经度dddmm.mmmm(度分)格式(前面的0也将被传输) 经度半球E(东经)或W(西经) 地面速率(000.
21、0-999.9节,前面的0也将被传输) 地面航向(000.0-359.9度,以真北为参考基准,前面的0也将被传输) UTC日期,ddmmyy(日月年)格式 磁偏角(000.0-180.0度,前面的0也将被传输) 磁偏角方向,E(东)或W(西) 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)2.1.3时钟芯片DS1302DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V-5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一
22、次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力,下图2.2为DS1302的引脚图。图2.2 DS1302的引脚图DS1302的引脚中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外
23、接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),SCLK为时钟输入端。DS1302 的控制字如下图2.3所示,控制字节的最高有
24、效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。图2.3 DS1302的控制字节2.1.4 显示模块LCD1602LCD显示器分为字段显示和字符显示两种,可采用LCD1602作为显示器件输出信息,可以显示2行16个汉字。液晶显示模块具有体积小、功耗低、显示内容丰富、不需要外加驱动电路等优点,是单片机应用设计中最常用的显示器件,下图2.4为LCD1602的引脚图。图2.4 LCD1602的引脚
25、图LCD1602其引脚功能如下:RS:数据和指令选择控制端,RS=0命令状态;RS=1数据;R/W:读写控制线,R/W=0写操作;R/W=1读操作;A:背光控制正电源;K:背光控制地;E:数据读写操作控制位,E线向LCD模块发送一个脉冲,LCD模块和单片机间将进行一次数据交换;DB0-DB7:数据线,可用8位连接,也可只用高4位连接,节约单片机源;VDD:电源端;VEE:亮度控制端(1-5V);VSS:接地端。2.2 硬件设计总体思路在整个系统的硬件设计中,采用AT89C52作为主处理芯片。时间信号采用GPS接收模块和AT89C52相结合,截取GPS接收端输出的时间数据并用LCD1602显示。
26、在GPS接收端无数据输出时,即无GPS信号或信号强度太弱时,采用DS1302时钟芯片进行计时。本系统在显示时间的基础上加入闹钟模块,并且设置4个功能按钮可以对当前的时间进行设置并且修改闹钟时间。系统采用LCD1602进行输出显示,1602中数据总线DB0-7对应单片机中的P1口,3条控制线分别接另外3个单片机端口,其他对应接上电源和地。在键盘模块中添加上拉电阻,上拉电阻可以保证在没有按键输入时,进入单片机四个I/O口的按键状态均为高电平,防止干扰产生;当有按键按下时,相应的端口线状态转为低电平,总体框架如下图2.5所示。图2.5 高精度GPS时钟系统的框架简图2.3 硬件电路设计系统的整体硬件
27、电路图如下图2.5所示:图2.5 系统的整体硬件电路图2.3.1 GPS接受模块和单片机的连接单片机上的3.0和3.1管脚除了作为普通的IO口外,还有另外的用途。P3.0(RXD)、P3.1(TXD)是Receive Data ,Transmit Data的意思,即RXD为接收数据的引脚,TXD为发送数据的引脚。将GPS接收模块的2条信号线分别对应接上RXD、TXD端口进行数据的通讯,用来接收时间信号并对时间信号进行截取输出,如下图2.6所示连接。VCCGPS接收模块AT89C52 P3.0 P3.1 GROUND图2.6 GPS接收端和AT89C52的连接2.3.2 LCD1602和单片机的
28、连接LCD1602VSS VDD VEE D0-D7 RS R/W E1602中数据总线DB0-7对应单片机中的P1口,3条控制线分别接另外3个单片机端口,其他对应接上电源和地(下图2.7)。AT89C52 P2.1 P2.2P1口P2.3 GROUNDGROUNDVCC 图2.7 LCD1602和单片机AT89C52的连接LCD1602中VDD为电源正极,VSS为电源接地端,VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高。LCD1602有四种基本的操作时序:读状态、写指令、读数据和写数据。读状态:输入:RS=L,RW=H,E=H 输出:D0-D7 = 状态字写指令:输
29、入:RS=L,RW=L,D0-D7 = 指令码,E=高脉冲 输出:无读数据:输入:RS=H,RW=H,E=H 输出:D0-D7 = 数据写数据:输入:RS =H,RW=L,D0-D7 = 数据,E=高脉冲 输出:无 2.3.3 按键模块和单片机的连接键盘模块设置了四个按键:KEY1、KEY2、KEY3、KEY4。其中KEY1为设置时间值,KEY2为设定值上升键,用KEY3为设定值减小键,KEY4是设定闹钟值。电路连接如下图2-8所示,4个上拉电阻可以保证在没有按键输入时,进入单片机四个I/O口的按键状态均为高电平,防止干扰产生;当有按键按下时,相应的端口线状态转为低电平。图2.8 按键模块和单
30、片机的连接2.3.4 时钟芯片DS1302和单片机的连接DS1302与CPU的连接需要三条线,即SCLK、I/O、RST,分别连接单片机的3个端口3.5、3.6、3.7(下图2.9),用来对DS1302的命令字的读写和数据的读写。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。图2.9 DS1302和52单片机的连接第三章 GPS高精度时钟的软件分析设计3.1 GPS授时系统的同步利用方式3.1.1 脉冲同步方式脉冲同步方式,即同步时钟每隔一定的时间间隔输出一个精确的同步脉冲。监控装置在接收到同步脉冲后进行对时,消除装置内
31、部时钟的走时误差。同步脉冲的周期、频率、电平、脉宽、脉冲的正负、上升和下降时间、同步的时刻等均可能有所变化。根据脉冲输出接口的不同,同步脉冲分为有源TTL电平输出、无源空接点输出、固态继电器输出等。有源TTL电平输出,即每隔一定的时间间隔产生一个TTL电平脉冲,或正脉冲或负脉冲,脉冲的宽度和占空比可以不同。这种输出,用户可以直接引出同步信号,不必外加电源。无源空接点输出,即将同步脉冲作为一开关量输出,一般是使用一个光电三极管,从集电极输出。可根据应用要求,在同步时钟到来时,三极管由导通变截止,或由截止变导通。1PPS(秒脉冲,即:pulse per second 脉冲/秒)输出,是一个电平信号
32、,一般以方波形式输出,高电平(也有较少数为低电平的)表示有秒脉冲输出,其持续时间很短,一般在毫秒量级上,其电平信号为+5V,持续时间为毫秒级,低电平(也有较少数为高电平的)表示没有信号输出。高电平上升沿为1PPS输出的精确时刻。在GPS OEM板取得有效导航解析的时候,秒脉冲上升沿的时刻与GPS时刻相差在50ns以内,与串行口输出的UTC标准时间相差在 1us 以内。OEM板先为用户提供秒脉冲,再提供与该秒脉冲相对应的UTC标准时间。有时在没有收到卫星信号或导航解无效的情况下(即没有收到UTC的校正数据),OEM板通过开发工具板也能向外发送秒脉冲,但此时秒脉冲为GPS OEM内部未改正钟差、钟
33、漂的原始时钟的时间,其上升沿的时刻不准确、不稳定,误差较大,无实用价值。仅在取得正确导航解时才可以用UTC时间对GPS OEM内部时间进行校正,输出精确时间。3.1.2 串行同步方式串行同步方式是时钟以串行数据流的方式输出时间信息,各种自动装置接收每秒一次的串行时间信息获得时间同步。串行通信的标准和格式多种多样,按信息码的格式不同,分别有ASCII码、IRIG-B码等。按串行通信接口标准的不同,ASCII码有RS232C、RS422/485等方式,IRIG-B码有TTL直流电平码输出、1kHZ 正弦波调制码输出、MANCHESTER调制码输出等方式。(1)RS232/422/485串行接口输出
34、同步时钟通过RS232/422/485串行口在整秒、整分或整时,输出一次时间信息。时间信息格式一般是由帧头、时、分、秒、日、月、年及结束符组成。自动装置在接收到对时信号后,通过软件校正内部时钟。使用串行口方式对时,比脉冲对时方式复杂。受接收过程中信息处理时间的影响,对时精度差。如果要提高对时精度,还需要再给出对时脉冲信号。(2)IRIG-B码串行输出 IRIG-B是美国最先采用的一种国际时间码标准。目前电力系统中的许多进口装置均使用IRIG-B时间码获取时间信息,因此IRIG-B码制串行输出也应作为GPS同步时钟输出的一种可选形式。 IRIG-B信号有TTL直流电平码和1kHZ正弦波调制码两种
35、形式。每一码脉冲的宽度是10ms,通过改变直流电平占空比或变化1kHZ调制信号的幅值来表示逻辑“1”与“0”及标识符(帧起始符,相邻秒、分、小时、日期、数据的分隔符)。起始位的上升沿即为同步时刻。IRIG-B TTL直流电平码的分辨率为10ms,不加调制解调,使用方便,但只适于近距离传输。1kHZ正弦波调制码的分辨率为1ms,适合远距离传输,这种正弦波调制码一般通过音频传输线路来传输数据。所以本文认为,在装置硬件资源丰富的前提下可以考虑两种方案同时结合使用,即是将脉冲校时和串口校时结合起来的综合校时方案。3.2 GPS授时模块的形式及流程图OEM板输出的数据是以数据流的形式输出,采集的起始时刻
36、未必是一帧数据的开始时刻,所以在数据采集时,必须先判断字头块,在接收到字头块后,开始采集数据。OEM板每隔1s自动输出观测数据帧和位置数据帧一次,但输出的格式小时部分加8是多种多样的,因此必须先给OEM板发送指令来控制其输出数据格式。接收数据需要设定单片机的波特率,使其与GPS OEM板的传输波特率一致。给OEM板发送一条指令,使其发送的0183数据格式为“$GPGGA”,该指令预先存在数据存储器里,用循环方式顺次从程序存储器里取出数据就可循环发送。然后0EM板将输出相应格式的数据,单片机对接收的信息进行判初始化断,如果是“$GPGGA”,则接收下面的6个ASCII码并存储在单片机的RAM里;
37、如果不是“$GPGGA”,则继续判断,直到是“$GPGGA”。也可采用循环方式接收时间信息。由于接收到的时间是世界标准时(UTC),因此在此时间上加上8h才是准确的北京时,在超出24h时应作减24h处理,然后进行显示处理。显示采用动态显示原理,每个时间状态显示停留一段时间,显示完后程序跳转到主函数以便接受下一秒的数据并将其显示。下图3.1为授时程序流程图。 是否24发送字节N指向储存单元发送完否左边开始取数据送出一位显示接受字符延时N指向下一个单元循环判断是否为$GPGGA字符读完6位YY位控信号右移一位循环6次接收数据并存取N图3.1 授时程序流程图3.3 LCD1602的显示操作LCD有四
38、种基本操作,具体如表3.1所示。表3.1LCD与单片机之间的四种基本操作状态RSR/W操作状态100写命令操作(初始化,光标定位等)状态201读状态操作(读忙标志位)状态310写数据操作(要显示内容)状态411读数据操作(可以把显示存储区中的数据反读出来)3.3.1 读状态操作执行读状态字操作,如表3.1所示须满足RS=0、R/W=1。根据管脚功能,当为有效电平时,状态命令字可从LCD模块传输到数据总线。同时可以保持一段时间,从而实现读状态字的功能。如下图3.2所示为读入状态字流程图。RS清0等待RW置1等待E置1等待读入状态字等待E清0 等待RW清0 等待结束图3.2读入状态字流程图3.3.
39、2 写命令操作由表3.1可知当RS=0,R/W=0时,才可以通过单片机或用户指令把数据即命令,写到LCD模块,此时就对LCD进行调制。可采用查询方式:先读入状态字,再判断忙标志,最后写命令字。3.3.3 LCD初始化从通电开始通过延时,先经过判忙后再进行功能设置,过一段时间后可以设制显示状态(如设置行、位或阵列)再经过延时后清屏后再可以设置输入方式,具体如图3.3所示。上电延时20ms功能设置延时37us显示状态设置清屏延时1.52ms输入方式设置返回图3.3LCD初始化流程图3.4 GPS高精度时钟主要程序、流程图及注释3.4.1 主程序流程图本系统主程序流程图如下图3.4所示。有GPS信号
40、?开始NY初始化设置闹钟时间截取GPS时间数据从DS1302读数据N是否到闹铃时间?单片机处理Y闹铃操作LCD1602显示3.4 主程序流程图在开始的初始化中,需要对各芯片进行初始化,初始化完成后要判断GPS接收端有没有数据输出(有没有GPS信号),即单片机有没有数据读入。如果没有GPS信息,为了防止时间停滞,采用DS1302计时。因为GPS接收端的数据传输是类似于网络中带有包头的数据包传输,所以要对其数据进行包头判断,在确定下数据头之后,还需要有一个逗号计数器。这个逗号计数器的作用就是在已获得的(确定头部)数据中截取所需的一部分。3.4.2 初始化程序void Initial_LCD1602
41、(void)/LCD1602初始化RW=0;LCDEN=0;write_com(0x38);/写指令显示模式设置write_com(0x0c);/显示光标开及光标设置write_com(0x06);/显示光标移动设置write_com(0x01);/显示清屏void init()/总初始化Initial_LCD1602();altp=0;/给各标志位附初值BLA=0;blaflag=0;yearh=20;TMOD=0x20;/设置定时器模式PCON = 0x00;/电源控制寄存器设置SCON = 0x50;/串行口控制寄存器TH1 = 0xFd;/波特率9600设定TL1 = 0xFd;TR1
42、 = 1;/启动定时器EA=1;/开中断IE=0x90;/中断允许控制寄存器3.4.3 按键检测流程按键检测流程图如下图3.5所示。初始化按键NN按键4按下?按键1按下?YY切换到闹钟界面光标左移一位NN按键3按下?按键2按下?YY对应的数值减1对应的数值加1图3.5 按键检测流程图其中按键1为校准当前时间的功能切换按键,按键2为对应的数值加1的功能按键,按键3为对应的数值减1按键,按键4为设置闹钟时间的功能切换按键,通过这4个按键可以对时间进行校准并且设定闹钟时间。3.4.4 DS1302的读写程序/向DS1302写一个字节void write_a_byte_to_ds1302(uchar
43、datt) uchar i; for(i=0;i=1;/位移操作 /向DS1302读取一个字节 uchar get_a_byte_from_ds1302() uchar i,b,t; for(i=0;i=1; t=DIO; b|=t7;/位或操作 SCLK=1; SCLK=0; return b/16*10+b%16;/返回一个十进制数/从DS1302 指定位置读数据 uchar read_data(uchar addr) uchar dat; CE=0; SCLK=0; CE=1;/CE为1允许读写操作 write_a_byte_to_ds1302(addr);/向DS1302写地址操作 dat=get_a_byte_from_ds1302();/从DS1302读数据 SCLK=1; CE=0; return dat;/返回数据/向DS1302某地址写入数据 void write_ds1302(uchar adder,uchar dat) SCLK=0; CE=1;/CE为