GPS自动授时数码管显示程序

合集下载

基于GPS和北斗卫星授时的高精度时间显示系统设计

基于GPS和北斗卫星授时的高精度时间显示系统设计
信息工程
基于 GPS 和北斗卫星授时的高精度时间显示系统 设计
张鸣凤,谢家祖,吴筝,付玉,时瑞瑞,郭辉,邓帅 (天津师范大学电子与通信工程学院,天津,300387)
摘要:本论文根据目前国内通讯授时系统的情况, 结合了GPS和北斗卫星导航系统(以下简称BDS)的双模授时方法, 提出一种基于GPS和BDS 授时的高精度时间显示系统的设计方案。本文研究了一种由单片机STM32控制的基于GPS和BDS授时的高精度时间显示系统,该系统确保 在卫星数据丢失的条件下,时间显示依然精准稳定,方案中自主设计的STM32F103RCT6模块,在系统工作空间不受局限的同时,预留了 很多可增加的功能空间。 关键词:北斗卫星导航系统;授时系统;STM32处理器
图 2 信号采集模块的程序框架
处理器开机启动后通过卫星信号接收电路中的 RX1 引 脚和 TX1 引脚采集时间数据,然后将时间数据发送到本地 自守时电路,本地自守时电路根据时间推算的算法保证精确 并自动推算时间。在卫星数据丢失的时候,处理器将直接根 据本地自守时电路推算出来的时间作为当前时间,此时间与 卫星信号发送的实际时间几乎无差别。
块均正常工作 , 若任意一个卫星信号的 1PPS 信号检测不到, 和湿度数值,最后将已经获得的时间信息、温度信息和湿度
对应模块都会自动进行重复采集信号的工作。信号采集芯片 信息发送到大尺寸的 LED 数码管显示。图 3 是该系统的程
能将此信号中的时间信息,利用相应的算法原理,转换成当 序处理流程图。
LED 显示电路采用 74HC245 芯片组成的驱动数码管动
态显示电路,LED 显示电路主要用于将处理器发送过来的
时间信息、温度信息和湿度信息显示给用户。
图 1 为本系统的电路结构连接框图。

GPS操作规程

GPS操作规程

GPS操作规程一、引言GPS(全球定位系统)是一种通过卫星定位技术来确定地理位置的系统。

本文档旨在提供GPS操作规程,以确保GPS设备的正确使用和操作。

本规程适用于所有使用GPS设备的人员。

二、目的GPS操作规程的目的是确保GPS设备的正确使用,以提高定位准确性和操作效率,同时保护设备的安全和完整性。

三、操作准备1. 确保GPS设备已充电或连接到电源,并处于正常工作状态。

2. 检查GPS设备的信号强度,确保能够接收到卫星信号。

3. 验证GPS设备的软件版本,确保设备已更新至最新版本。

4. 验证GPS设备的数据存储容量,确保有足够的空间存储数据。

四、GPS操作流程1. 打开GPS设备,并等待设备启动完成。

2. 在设备菜单中选择“定位模式”,通常有自动定位、手动定位和巡航定位等模式可选。

3. 如果选择手动定位模式,手动输入目标位置的经纬度坐标,并确认输入正确。

4. 如果选择巡航定位模式,输入巡航路径的起点和终点坐标,并确认输入正确。

5. 等待GPS设备接收到卫星信号,并显示当前位置信息。

6. 如需记录当前位置信息,按设备上的记录按钮或指令,将位置信息保存到设备的存储器中。

7. 在导航过程中,根据设备上的指示,按照预定的路径前进。

8. 如需导航到特定目的地,输入目的地的经纬度坐标或地址,并确认输入正确。

9. 在导航过程中,遵循设备上的指示,并根据实际道路情况进行调整。

10. 如需中途停留或改变目的地,使用设备上的功能按钮或指令进行操作。

11. 在到达目的地后,关闭GPS设备,并确保设备处于安全状态。

五、GPS设备维护1. 定期检查GPS设备的电池电量,并及时充电或更换电池。

2. 定期清洁GPS设备的屏幕和按钮,以确保正常操作。

3. 定期更新GPS设备的软件版本,以获取最新的功能和修复bug。

4. 定期备份GPS设备中的数据,以防止数据丢失或损坏。

5. 如发现GPS设备出现故障或异常情况,及时联系维修人员进行修复或更换设备。

GPS授时LED时钟屏方案

GPS授时LED时钟屏方案

GPS授时LED时钟屏方案
随着社会的进步人们对于时间信号的精度要求越来越高,而传统的时钟一般是采用内部晶振准确度不高,长期运行过程中由于种种原因都会产生误差已经不能满足工业生产和社会生活的需要,因此我们需要采用一种**可靠的方法来**产生准确的时钟。

使用GPS卫星同步时钟可以使时间精度达到纳秒级,所以在科学技术领域、人们日常的生活生产领域都可以广泛的运用“GPS卫星同步时钟”。

另外,LED显示屏是利用发光二级管点阵模块组成的平面式显示屏幕由于它具有发光率高、使用寿命长、组态灵活、适应能力强等优点在国内外的到广泛应用。

基于GPS授时的点阵LED屏显示时钟就是利用GPS接收卫星上“原子钟”的时间信号传送给接收模块,经过处理后发往LED显示屏并显示出标准时间。

用户需求:
规格:P10 户外全彩高亮LED时钟屏
尺寸:1280mm * 1280mm
显示方式:四面显示
安装位置:楼顶、需做防水处理
屏幕配电设计
配电柜具备防雷、过压、过流、欠压、短路、断路以及漏电保护措施。

配电柜内装有漏电保护开关、空气开关、熔断器、延时启动接触器、电源防雷器等,配电柜内电器设备均选用品牌元器件。

配电柜安装有PLC控制器,能够分步定时启动电源,并且能够远程控制开启和关闭,除了对各路电源通断状态实时监控外,可选配外接的温感、烟感、亮感等传感器,可以对显示屏内外工作环境进行实时监控。

数码管显示程序

数码管显示程序

数码管显示程序一、程序X11、程序X1的功能:最右边的数码管显示“0”2、程序:ORG 0LJMP STRORG 0100HSTR: MOV P3, #0FEH ;送最低位有效的位码MOV P0, #0C0H ;送“0”的段码“0C0H”SJMP STREND二、程序X2: 用查表方式显示某个显示缓冲器中的数字1、查表显示的预备知识设从右到左各显示器对应的显示缓冲器为片内RAM79H~7EH3、 实例:例:已知(79H )= 0 7H , 查段码表在最右边的数码管显示79H 中的“7”;注:共阳极的段码表:TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH若:(A )= 0XH则数字“X ”对应的段码在段码表中的表地址 = TAB + XORG 0LJMP STRORG 0100H① 各显示器与显示缓冲器地址对应关系显示缓冲器: 7EH 7DH 7CH 7BH 7AH 79H对应显示器:② 显示缓冲器的值与显示数字的关系:显示缓冲器中的值 对应段码表地址 显示的数字0XH表首址+OXH XSTR: MOV P3, #11111110B ;送最低位有效的位码MOV 79H , #07H ;送要显示的数据到显示缓冲器MOV A , 79H ;显示缓冲器的数作为查表变址送A MOV DPTR , #TAB ;表首址送DPTRMOVC A , @A+ DPTR ;查表将数字转换为对应段码MOV P0, A ; 段码送段码口(P0)SJMP STRTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEHEND例2:. 查段码表在最右边的数码管循环显示“0”~“F”ORG 0LJMP STRORG 0100HSTR: MOV P3, #11111110B ;送最低位有效的位码LP0: MOV 79H , #0H ;送要显示的数据的初值到显示缓冲器MOV R3 , #6 ; 送要显示的数据的个数LP: MOV A , 79H ;显示缓冲器的数作为查表变址送A MOV DPTR , #TAB ;表首址送DPTRMOVC A , @A+ DPTR ;查表将数字转换为对应段码MOV P0, A ; 段码送段码口(P0)LCALL SE19INC 79HDJMZ R3 ,LPSJMP LP0TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEHSE19: MOV R6 , #0A0HLO36: MOV R7 , #0FFHLO35: DJNZ R7 , LO35DJNZ R6 , LO36RETEND3、修改程序查段码表在最左边的数码管循环显示“0”~“9”三、对6个数码管的操作程序X3四、功能:通过查表使6个数码管从右到左依次循环显示对应显示缓冲器79H~7EH中的数字0~51.程序:ORG 0LJMP X3ORG 0100HX3: SETB RS1 ;选工作寄存器2MOV SP , #40H ;设置堆栈指针MOV R0 , #79H ;对79H~7EH单元送0~5MOV R2 , #6 ;CLR A ;LP0: MOV @R0 , AINC AINC R0DJNZ R2, LP0LP1: M OV 30H , #11111110B ;对字位口送选择第一个数码管的位电平;反相后得有效的位码01H(共阳极) MOV R2 , #6 ;送数码管个数,即重复操作的次数 MOV R0 , #79H ;送第一个数码管对应的显存地址LP: MOV A ,30H ;送位码MOV P3 , A ;MOV A , @R0 ;要显示的数字送AMOV DPTR , #TAB ;送段码表的首地址MOVC A , @A + DPTR ;查表将A中的数字转换为其对应的段码MOV P0 , A ; 段码送段码口LCALL SE19 ;调延时MOV A , 30H ;位码左移一位,变为使下一个数码管的位;电平有效的位码RL A ;MOV 30H , A ;位码存回30H,解放AINC R0 ;显存地址加1,指向下一个显存地址DJNZ R2 , LP ;(R2)- 1不为0(即没有使所有数码管都显;示),转LP,继续使下一个数码管显示的操作。

数码管显示程序(汇编语言)

数码管显示程序(汇编语言)

实验三数码显示一、实验目的了解LED数码管动态显示的工作原理及编程方法。

二、实验内容编制程序,使数码管显示“DJ--88”字样。

三、实验程序框图四、实验步骤联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。

(2)数码管显示“DJ--88”字样。

脱机模式:1、在P.态下,按SCAL键,输入2DF0,按EXEC键。

2、数码管显示“DJ--88”字样。

五、实验程序清单CODE SEGMENT ;S6.ASM display "DJ--88"ASSUME CS:CODEORG 2DF0HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H START0: CALL BUF1CON1: CALL DISPJMP CON1DISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,0DHMOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,08HMOV BUF+5,08HRETCODE ENDSEND START。

手持GPS采集仪操作说明

手持GPS采集仪操作说明

手持GPS采集仪操作手册一、功能描述1.GPS数据采集:采集上下行站点、转弯点及限速点的经纬度信息。

2.报站器功能:采集仪可以进行自动或手动报站,可用于测试采集的数据是否准确。

二、控制面板说明液晶屏显示说明:液晶屏显示分为两部分,上一行显示为:公交线路显示、上下行状态显示、站点序号显示、GPS 信号显示、电池容量显示、时间显示,在整个操作过程中,这些项目和数目不会发生变化;其他部分用于操作界面的显示,操作发生变化时,显示的内容也会变化。

按键功能说明:“F1”:报站模式下,服务语1。

“F2”:报站模式下,服务语2。

“F3”:报站模式下,服务语3。

“起步”:报站模式下,起步;主操作界面下,切换到上行。

“↑(上行)”:上移;报站模式及采集模式下切换到上行。

“到站”:报站模式下,到站;主操作界面下,切换到下行。

“←/-”:左移;移站减。

“↓(下行)”:下移;报站模式及采集模式下切换到下行。

“→/+”:右移;移站加。

“背光”:背光开关。

“返回”:返回上一级。

“确定”:进入菜单项或确认某个操作;报站模式下,服务语4(转弯)。

三、基本操作1.开机及主界面操作:开机后,系统进入初始化过程,停留2~3秒钟,系统进入主操作界面,液晶屏依次显示:公交线路,如“H292”(H开头表示空调车,L开头表示普通车);上下行状态,如“↑”(“↑”表示上行,“↓”表示下行),系统重启后,该状态保持不变;站点序号,如“000”,系统重启后,该序号默认显示“000”;GPS信号显示“”;电池状态显示“”,当显示为“”,表示要充电;时间显示,接上GPS天线并搜寻到信号后,图标显示为“”,系统自动同步GPS时间,无GPS信号时,时间默认显示“00:00”;以下依次显示“线路选择”、“采集模式”、“报站模式”、“导入数据”、“导出数据”、“U盘模式”6个菜单。

2.按键操作:按“起步”键,上下行状态显示为“↑”(表示上行),站点序号重置为“000”;按“↑”键,上移菜单项;按“到站”键,上下行状态显示为“↓”(表示下行),站点序号重置为“000”;按“←/-”键,站点序号减1;按“↓”键,下移菜单项;按“→/+”键,站点序号增1;按“确定”键,进入选中的菜单项。

简易制作GPS定位、轨迹记录仪设计分享(原理图+控制源码+上位机)

简易制作GPS定位、轨迹记录仪设计分享(原理图+控制源码+上位机)

简易制作GPS定位、轨迹记录仪设计分享(原理图+控制源码+上位机)基于C3-370C的GPS定位及轨迹记录仪!开始⽤M48作控制MCU,结果写着写着,发现Flash空间不⾜,想换个M8或M88的,还不好买,⼿上正好还有两块STC90C52,8K的,于是就换上C52了。

C52不带AD,那电池检测⼜成问题,于是从坏的万⽤表上拆下⼀个2904运放,做了个简单的电池电压检测。

现在整个设备的供电都由锂电池直接提供,配⼀块880mah的⼿机电池,可以⽤6⼩时左右;我⽤24C64记录轨迹信息,包括⽇期时间、经纬度在内的⼀组信息,可存储512条,按1min/条,可存8⼩时。

数据通过串⼝传给上位机,上位机软件转换数据,也可直接输出KML⽂件,在Goole earth中打开。

按键0: 短按(可见卫星信息|坐标数据); 长按(运⾏|暂停);按键1: 短按(记录当前坐标数据); 长按(暂停时长按删除所有数据);按键2: 短按(背光灯); 长按(记录模式切换H/A90s/A60s/A30s/A10s);实物图⽚展⽰:附件内容包括:该GPS定位、轨迹记录仪原理图截图;GPS轨迹记录控制端源码;上位机;上位机效果图:电路相关⽂件电路图⽂件原理图.png描述:原理图截图源代码GPS轨迹记录PC端.rar描述:源代码教程上位机.rar描述:上位机收藏 (45)电路城电路折扣劵获取途径:电路城7~10折折扣劵(全场通⽤):对本电路进⾏评分获取;电路城6折折扣劵(限购≤100元电路):申请成为卖家,上传电路,审核成功后获取。

(版权归chchg所有)版权声明:电路城所有电路均源于⽹友上传或⽹上搜集,供学习和研究使⽤,其版权归原作者版权声明:所有,对可以提供充分证据的侵权信息,本站将在确认后24⼩时内删除。

对本电路进⾏投诉建议,点击投诉本电路反馈给电路城。

使⽤说明:直接使⽤附件资料或需要对资料PCB板进⾏打样的买家,请先核对资料的完整性,使⽤说明:如果出现问题,电路城不承担任何经济损失!换⼀批more>>⼤家都在看:1英飞凌⽆⼈机XMC4500多机演⽰板 - 全系统解决⽅案2【2016英飞凌杯⼀等奖】基于英飞凌⽆⼈机解决⽅案的跟拍应⽤设计3简易制作GPS定位、轨迹记录仪设计分享(原理图+控制源码+上位机)4红外遥控开关——VS1838b红外接收(原理图+PCB+源代码)5 tb6560步进电机驱动器设计原理图和PCB6NANO~~东半球最⼩的⾃平衡机器⼈(硬件+源码+3D⽂件)7【送PCB电路板】Mini3208点阵时钟(原理图+源代码+BOM表)创意制作8开源CNC控制器设计(原理图+源代码+BOM清单)继续阅读RC522-RFID门禁刷⾃动卡识别系统本设计RC522-RFID门禁刷卡识别系统采⽤STC89C52作为主控芯⽚,专⽤读卡器模块RC522⽤来读射频卡的信息,当有卡进⼊到读卡器读卡的范围内时就会读取到相应的卡序列号,并根据得到的卡序列号做出相应的操作。

GPS时钟同步装置W9001(NTP)用户手册

GPS时钟同步装置W9001(NTP)用户手册

W9001主时钟用户手册1 概述随着计算机网络的迅猛发展,网络应用已经非常普遍,如电力、金融、通信、交通、广电、安防、石化、冶金、水利、建筑、国防、医疗、教育、政府机关、IT等领域的网络系统需要在大范围保持计算机的时间同步和时间准确,因此有一个好的标准时间校时器是非常必要的。

为了适应这些领域对于时间越来越精密的要求,唯尚公司精心设计、自主研发了W系列NTP网络时间服务器。

该装置以GPS信号/北斗信号/IRIG-B码/OCXO守时单元(可选)为时间基准,内嵌国际流行的NTP-SERVER服务,以NTP/SNTP协议同步网络中的所有计算机、控制器等设备,实现网络授时。

W9001主时钟组合选用高精度授时型GPS 接收机/北斗接收机/外部B码基准,提供高可靠性、高冗余度的时间基准信号,并采用先进的时间频率测控技术驯服晶振,使守时电路输出的时间同步信号精密同步在GPS/北斗/外部B码时间基准上,输出短期和长期稳定度都十分优良的高精度同步信号。

采用精准的测频与智能驯服算法,使装置守时单元输出的时间频率信号与GPS卫星/北斗卫星/外部B码时间基准保持精密同步。

由于装置输出的1PPS等时间信号是内置振荡器的分频秒信号输出,同步于GPS信号/北斗信号但并不受GPS/北斗秒脉冲信号跳变带来的影响,相当于UTC时间基准的复现。

采用了“智能学习算法”的主时钟,在驯服晶振过程中能够不断“学习”晶振的运行特性,并将这些参数存入板载存储器中。

当GPS/北斗/外部B码时间基准出现异常或不可用时,装置能够自动切换到内部守时状态,并依靠板载存储器中的参数对晶体振荡器特性进行补偿,使守时电路继续提供高可靠性的时间信息输出,同时避免了因晶体振荡器老化造成的频偏对守时指标的影响。

W9001主时钟(NTP网络时间服务器)采用SMT表面贴装技术生产,以高速芯片进行控制,无硬盘和风扇设计,精度高、稳定性好、功能强、无积累误差、不受地域气候等环境条件限制、性价比高、操作简单、全自动智能化运行,免操作维护,适合无人值守。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
inputbyte(ucAddr); //地址,命令
inputbyte(ucDa); //写1Byte数据
CLK = 1;
RST =0;
}
/********************************************************************
*
*名称: uc_R1302
/*************************串口数据接收**************************/
/***************************************************************/
void Uart_Receive(void) interrupt 4
*说明:先写地址,后读命令/数据
*功能:读取DS1302某地址的数据
*调用: v_RTinputbyte() , uc_RToutputbyte()
*输入: ucAddr: DS1302地址
*返回值: ucDa :读取的数据
***********************************************************************/
unsigned char read(unsigned char ucAddr)
{
unsigned char ucDa;
RST = 0;
CLK = 0;
RST = 1;
inputbyte(ucAddr); //地址,命令
ucDa = outputbyte(); //读1Byte数据
CLK = 1;
RST =0;
write(0x82,min);
write(0x80,sec);
}
}
else
dp=0xff; //如果不能成功定位,就把第一位数码管的小数点干掉
ES=1;
rev_stop=0;
}
if(flash>=250) {flash=0; LED=!LED; }//亲,您要不停的按电灯开关,1秒钟1次哦!
}
}
void Timer0() interrupt 1
{
buf[num++] = ch; //字符存到数组中
if (ch == '\n') //如果接收到换行
{
buf[num] = '\n';
rev_start = 0;
rev_stop = 1;//接收停止标志
num = 0;
}
}
}
RI = 0;//RI清0,重新接收
ES = 1;//串口1中断允许
}
*返回值:无
***********************************************************************/
void write(unsigned char ucAddr, unsigned char ucDa)
{
RST = 0;
CLK = 0;
RST = 1;
}
return(ACC);
}
/********************************************************************
*
*名称: v_W1302
*说明:先写地址,后写命令/数据
*功能:往DS1302写入数据
*调用: v_RTinputbyte()
*输入: ucAddr: DS1302地址, ucDa:要写的数据
return(ucDa);
}
void DS1302_init()
{
if(read(0xc1)!=0x82) //如果1302掉电,写入下面的初始值
{
write(0x8e,0x00);//关闭写保护
write(0x80,0x00); //设置秒
write(0x82,0x00);//设置分钟
write(0x84,0x00); //小时
#include "reg52.h"
#define LEDPORT P0
sbit D1=P3^4;
sbit D2=P3^5;
sbit D3=P3^6;
sbit D4=P3^7;
sbit LED=P2^5;
sbit CLK=P2^1;
sbit IO=P2^2;
sbit RST=P2^3;
sbit ACC0=ACC^0;
unsigned char buf[80];//请把GPS那货发来的数据放到我的肚子里
void TimerInit()
{
TMOD=0x21;
TH0 = 0xF1;//4ms左右
TL0 = 0x9A;
EA=1;
ET0=1;
TR0=1;
SCON = 0x50;//使用串行工作方式1,10位异步收发8位数据,波特率可变(由T1的溢出率控制)
write(0x90,0xa5);//涓流充电
write(0xc0,0x81);//掉电标志位
}
}
void Display(unsigned char hour,min) //数码管显示
{
static unsigned char i;
LEDPORT=0xff;
switch (i)
{
case 0: if(hour/16) LEDPORT=tab[hour/16]&dp; else LEDPORT=tab[10]&dp;D1=0;D2=D3=D4=1;break;
CLK = 1;
CLK = 0;
ACC = ACC >> 1;
}}Βιβλιοθήκη unsigned char outputbyte(void)
{
unsigned char i;
for(i=8; i>0; i--)
{
ACC = ACC >>1; //相当于汇编中的RRC
ACC7 = IO;
CLK = 1;
CLK = 0;
case 1: LEDPORT=tab[hour%16];D2=0;D1=D3=D4=1; break;
case 2: LEDPORT=tab[min/16];D3=0;D1=D2=D4=1;break;
case 3: LEDPORT=tab[min%16];D4=0;D2=D3=D1=1;break;
}
i++;
if(i==4)i=0;
}
void main()
{
unsigned char hour,min,sec;
TimerInit();
DS1302_init();
while(1)
{
if((rev_stop==1)&&(buf[5]=='C'))//如果接收到GPRMC
{
ES=0;
if(buf[18]=='A')//如果GPS成功定位
{
TH0 = 0xF1;
TL0 = 0x9A;
Display(read(0x85),read(0x83));//定时器兄弟简单而单调的工作,很轻松的。每4ms刷新下数码管,全年无休哦
flash++;
}
/***************************************************************/
{
unsigned char ch,num;
ES = 0;
if (RI)//如果接收完成则进入
{
ch = SBUF;
if (ch == '$') //如果收到字符'$',便开始接收
{
rev_start = 1;
rev_stop = 0;//接收停止标志
}
if (rev_start == 1) //标志位为1,开始接收
sbit ACC7=ACC^7;
unsigned char flash;
unsigned char dp=0xff;
bit rev_start,rev_stop;
unsigned char code tab[]={0xA0,0xBE,0x64,0x2C,0x3A,0x29,0x21,0xBC,0x20,0x28,0xff};//数码管码表
hour= (hour+8) % 24;//UTC Time换算成北京时间
hour=hour/10*16+hour%10;
if(sec!=read(0x81)||min!=read(0x83)||hour!=read(0x85))//如果GPS标准时间与DS1302不同就修正
{
write(0x84,hour);
{
dp=0xdf;//点亮第一位数码管的小数点
hour= (buf [7]-0x30)* 16+ buf[8] -0x30;
min= (buf [9]-0x30)* 16+ buf[10]-0x30;
sec= (buf[11]-0x30)* 16+ buf[12]-0x30;
hour= hour / 16 * 10 + hour % 16;
TH1 = 0xFD;//9600波特率的初值
TL1 = TH1;//9600波特率的初值
ES = 1;
TR1 = 1;
}
void inputbyte(unsigned char ucDa)
{
unsigned char i;
ACC = ucDa;
for(i=8; i>0; i--)
相关文档
最新文档