基于gps授时的点阵led屏显示时钟设计报告-毕业论文

上传人:仙*** 文档编号:205511251 上传时间:2023-04-29 格式:DOC 页数:36 大小:1.25MB
收藏 版权申诉 举报 下载
基于gps授时的点阵led屏显示时钟设计报告-毕业论文_第1页
第1页 / 共36页
基于gps授时的点阵led屏显示时钟设计报告-毕业论文_第2页
第2页 / 共36页
基于gps授时的点阵led屏显示时钟设计报告-毕业论文_第3页
第3页 / 共36页
资源描述:

《基于gps授时的点阵led屏显示时钟设计报告-毕业论文》由会员分享,可在线阅读,更多相关《基于gps授时的点阵led屏显示时钟设计报告-毕业论文(36页珍藏版)》请在装配图网上搜索。

1、 全 国 大 学 生 嵌 入 式 物 联 网 设 计 大 赛 2013第九届“博创杯”全国大学生嵌入式物联网设计大赛作品设计报告 基于GPS授时的点阵LED屏显示时钟 A LED Clock Based on GPS 设 计 报 告 队伍编号: 参赛学校:扬州大学 作 者:蔡成瑶、严帅、沈照 指导教师:张凯 是否恩智浦单项:是 否摘 要本设计采用了大赛指定硬件开发平台:NXP LPC11C24FB(ARM Cortex-M0微控制器),设计了GPS授时的点阵LED屏时钟显示系统。系统从GPS卫星上获取标准的时钟信号,并将这些信息通过UART接口传到LPC11C24主控模块上,再通过LED点阵屏

2、将经过LPC11C24处理后的时间信息显示出来。如果UART未收到GPS数据则系统将采用LPC11C24的内部定时器计时,该设计以软硬件相结合的方式完成整个GPS数据的接收和显示过程完成了一台LED点阵屏显示GPS时钟的设备。此设计由于使用的是GPS时钟信号,所以时间精确度可以达到纳秒级,同时结合了点阵LED屏,就使得系统整体显示效果好。关键词: LPC11C24、 GPS、 LED点阵屏AbstractNXP LPC11C24(Cortex M0 micro controller)is used as the specified hardware platform in the design

3、 ofthe GPS timing lattice LED clock display system . System standard for the clock signal from GPS satellites, and upload the information through the UART interface LPC11C24 master control module, through the LED lattice screen will be displayed after LPC11C24 processing time information. If UART is

4、 not received GPS data system will adopt LPC11C24 internal timer timing, the design with a combination of hardware and software to complete the whole process of GPS data receiving and display completed a LED dot matrix screen GPS clock device. This design is due to the use of GPS clock signal, so th

5、e precision can reach nanosecond time, combined with lattice LED screen at the same time, makes the system as a whole display effect is better.Keyword:LPC11C24、 GPS、 LEDLatticescreen目录摘 要1目录2第一章 绪论41.1设计背景41.2 ARM CORTEX-M0处理器4第二章 系统方案52.1 系统总体方案52.2 系统方案结构图5第三章 基于GPS授时的点阵LED屏显示时钟的系统63.1 NXP LPC11C2

6、4主控板63.1.1 NXP LPC11C24简介63.1.2开发环境73.1.3 LPCXpresso的项目建立83.2点阵 LED屏显示模块83.2.1 P10 LED点阵屏电路图93.2.2 P10 LED点阵显示屏的指标93.2.3 LED点阵屏上控制LED的亮灭原理103.2.4 LED点阵屏的动态扫描原理103.2.5 主控模块LPC11C24与LED点阵屏的引脚连接113.2.6 LED点阵屏的显示的软件设计123.2.6.1控制LED亮灭的设计过程133.2.6.2LED点阵屏的动态扫描设计过程14Buf缓冲区数据组织153.2.7 时钟显示秒的控制193.3 GPS卫星数据接

7、收模块GR-87203. 3.1GPS技术简介203.3.2 GR-87213.3.3引脚功能21GR-87指标223.3.4硬件接口UART233.3.5 通信协议NMEA243.3.5主控模块LPC11C24与GR-87的连接243.3.6 UART接收GPS数据软件设计253.4供电电源的选择29第四章 系统测试294.1 测试仪器和设备294.2 测试方案304.2.1 LED点阵屏显示测试304.2.2 GPS通信测试304.2.3 NXP LPC11C24测试304.2.4 系统综合测试304.3测试304.3.1 LED点阵屏显示测试304.3.2 GPS通信测试314.3.3系

8、统综合测试324.3.4结果分析32第五章 系统特色335.1 高精度的时钟信号335.2 LED点阵屏特色33第六章 结 论34附录34第一章 绪论1.1设计背景随着社会的进步人们对于时间信号的精度要求越来越高,而传统的时钟一般是采用内部晶振精确度不高,长期运行过程中由于种种原因都会产生误差已经不能满足工业生产的需要,因此我们要寻找一种稳定可靠的方法来来产生精确的时钟。使用原子钟可以使时间精度达到纳秒级,所以在科学技术领域、人们日常的生活生产领域都可以广泛的运用“原子钟”。另外,LED显示屏是利用发光二级管点阵模块组成的平面式显示屏幕由于它具有发光率高、使用寿命长、组态灵活、适应能力强等优点

9、在国内外的到广泛应用。基于GPS授时的点阵LED屏显示时钟就是利用GR-87接收卫星上“原子钟”精确的时间信号传送给LPC11C24,经过LPC11C24处理后发往点阵LED显示屏并显示出时间。1.2 ARM Cortex-M0处理器 作为ARM Cortex处理器系列的最新成员,32位Cortex-M0处理器采用了低成本90纳米低功耗(LP)工艺,耗电量仅 9A/MHz,约为目前主流8位或16位处理器的三分之一,却能提供更高的性能。这种行业领先的低功耗和高性能的结合为仍在使用8位或16位架构的用户提供了一个转型开发32位器件的理想机会,从而在不牺牲功耗和面积的情况下,提高日常设备的智能化程度

10、。Cortex-M0处理器的特点促成了智能、低功耗微控制器的面市,并为“物联网”中大量的无线连接设备提供高效的沟通、管理和维护。低功耗联网功能深具潜能,可驱动各种节能和生活关键应用,包括从无线方式分析住宅或办公大楼性能与控制的感测器,到以电池运作、通过无线方式连接监控设备的身体感测器。而现有的8位或16位微控制器(MCU)缺少足够的智能和功能来实现这些应用。Cortex-M0处理器不仅延续了易用性、C语言编程模型的优势,而且能够二进制兼容已有的Cortex-M0处理器工具和实时系统(RTOS)。作为Cortex-M处理器系列的一员,Cortex-M0处理器同样能够获得ARM Cortex-M生

11、态系统的全面支持,而其软件兼容性使其能够方便地被移植到更高性能的Cortex-M3或Cortex-M4处理器。率先获得Cortex-M0+处理器授权的厂商包括飞思卡尔半导体和恩智浦半导体。第二章 系统方案2.1 系统总体方案本系统利用NXP LPC11C24作为主控模块。首先从GPS系统获取全球标准时间源,经过CPU处理后将时间数据通过UART接口输出到LPC11C24主控模块上,LPC11C24可把接收到的GPS时间数据利用软件来处理,再把数据发送到显示模块,实现时间的显示。LED点阵屏为主要的显示模块,把从LPC11C24传来的数据显示出来,并且可以实现左右移动等功能。2.2 系统方案结构

12、图根据总体方案画出了系统的结构图,是按照结构层次划分三层:硬件平台NXP LPC11C24为核心,同UART连接的是GPS模块,32*16的点阵屏是用杜邦线和和控制系统相连的。整体方案结构框图如下:GPS模块32*16LED点阵屏系统控制中心NXPLPC11C24核心板电路UART串口杜 邦 线电源供电模块行驱动电路列驱动电路图2.1 系统总体方案结构图第三章 基于GPS授时的点阵LED屏显示时钟的系统3.1 NXP LPC11C24主控板LPC11C24为核心控制芯片,工作过程分为两个部分:数据接受处理和时钟数据扫描显示。LPC11C24开发板内部集成了串口通信电路,本设计就是应用UART通

13、用串行数据接口接受外部GR-87发来的卫星数据,有选择的将数据存储到数据缓冲区,然后我们将缓存区里的数据取出经过CPU的处理后送到LED点阵显示屏上显示出我们所需要的时钟信息。3.1.1 NXP LPC11C24简介LPC11C24FBD48是ARM Cortex-M0微控制器,设计用于8位/16位微控制器应用,具有高新能,低功耗,简单指令集,统一编址寻址等优点,而且,LPC11C24可以比传统的8位/16位单片机在执行大多数普通的微控制器任务时减少40%到50%的代码量,这是通过强大的Cortex-M0 v6-M指令集实现的。这种指令集以16位的Thumb指令为基础,迄今唯一应用于32位微处

14、理器。具有高于45DMIPS处理能力的LPC11C24为CAN节点提供了强有力的信息和数据处理能力。这种对电源的优化能力是当今的8位/16位单片机难以实现的特色和优点l ARM Cortex-M0处理器,工作频率高达50 MHzl ARM Cortex-M0内置可嵌套中断向量控制器(NVIC)l 程序代码的密度要比8/16位MCU更小l 闪存ISP命令可通过UART或C_CAN发出l 超快速模式下,2个IC总线引脚上的大电流吸收驱动器 (20 mA)l 带小数波特率生成器的UARTl 36个高速5V相容GPIO引脚,可选择引脚高电流驱动(20 mA)l 12MHz内部RC振荡器,温度及电压范围

15、精确度可达1%l 支持完整IC总线规范及超快速模式的IC总线接口l CAN 2.0 B C_CAN控制器具备on-chip CANopen驱动器与整合式收发器片内高速CAN收发器l 工作范围从1 MHz到25 MHz的晶体振荡器l 频率范围从7.8 kHz到1.8 MHz的可编程看门狗振荡器l 最大限度降低功耗的集成式PMU(电源管理单元)l 采用中断和强制复位的4个独立阀值进行的掉电检测l 可用作芯片识别的唯一序列号l 3.3 V单电源(1.8 V至3.6 V)3.1.2开发环境此次设计的软件开发环境使用的大赛的合作方恩智浦半导体针对它旗下采用的ARM处理器的LPC系列微控制器推出的开发工具

16、平台LCXpresso。LCXpresso根据简单易用的理念设计而成, 它为系统设计人员提供了一种快速便捷的使用LPC1100的方式。利用LPCXpresso这款功能全面的工具链还可以轻松实现在高性能的ARM7、ARM9以及包括LPC1300和LPC1700 在内的Cortex系列微控制器之间的产品移植。 LPCXpresso开发平台基于功能强大的Eclipse集成开发环境(IDE)工具,拥有由恩智浦设计的全新、直观的用户界面、针对Cortex-M0优化的编译器和函数库、LPC-Link JTAG/SWD调试探针和目标板,同时具有一流的C编程环境以及语法高亮度显示、代码折叠和展开、快速点击导航

17、变量和函数定义及声明的高级功能,为用户提供丰富的开发工具,加速产品开发,缩短新品上市时间。3.1.3 LPCXpresso的项目建立1打开LPCxpresso软件弹出workspace launcher对话框选择项目要放的文件夹2.菜单栏FILE-new-project 弹出new project对话框选择LPCxpresso c project-next再选择lpc 11xx- c progect next -在project neme中输入项目名称-netx -选择lpc11c24/301next在cmsis library to link project to:中选择NONE - fin

18、ish3这样项目就建立好了,在编译过程中缺什么头文件就去示例文件夹中复制到SRC文件夹下就可以了3.2点阵 LED屏显示模块 这次我们选用的是P10 LED成品屏。P10 LED点阵显示屏作为此次设计的数据显示模块,它的作用就是将从缓冲区里取出的数据经过CPU的处理后显示出我们所需要的信息。我们可以利用LPC11C24的GPIO端口控制LED点阵屏显示相应的信息。3.2.1 P10 LED点阵屏电路图 下图是P10 LED点阵屏的电路图,其中 74HC245D是驱动放大芯片、74HC595是移位寄存器、74HC138D是译码器图4.2 P10 LED点阵屏电路图3.2.2 P10 LED点阵显

19、示屏的指标l LED分辨率:LED显示屏像素的行列数称为LED显示屏的分辨率,我们所用的P10 LED点阵屏的分辨率是32*16。l LED点距: 10mml 像素配置: 1R(纯红)l 视距: 3m300m3.2.3 LED点阵屏上控制LED的亮灭原理 通过P10 LED屏的电路图可以发现,整个屏有通过一个74HC138来控制行和16个74HC535一位寄存器控制列。按正常理解32*16的LED点阵2个138和16个595才能控制整个屏。而这里只用了1个138是用了4953LED驱动芯片,一个138输出信号被分成了4个一样的信号连接到了每个4*8小模块的LED的阳极上这样138输出的4路信号

20、就被分成了16个信号,这16个信号中每4个一组一样的信号共4组。这样行就能全部控制了。因为屏上4*8小模块都配了一个595所以一次通过595输入端通过移位可以输入16*8位数据进入595中。这就移位着当138输出高电平信号,595移位移入128个0进去时这是屏就会显示4行且这4行是隔4个亮一行。如果要只亮一个点只需把送入595的128中对应的那一位写0其他127位写1就可以显示一个点了。例如要让下图中第一行第一列的那个LED亮,只需要OUT1送高电平,列1送入低电平即可。OUT1端的高低电平由74HC138来控制,而它阴极的电平高低则是由74HC595来控制。让138输出信号快速的输出四个信号

21、,这时屏上显示的就是点亮的那个点的所在的4*8的小模块中的亮点所在的列的4个点都亮了起了。这就是动态扫描。后面还会详细解释。 3.2.4 LED点阵屏的动态扫描原理通过上面已经可以把一个点点亮了,接下来就是要在屏幕上显示要显示的内容了。如果138的输出内容不变只能显示4行,只有把138输出的内容改变,且速度要快这样16行就可以全部显示出来了。这就是动态扫描。比如我们要在左边的16*8的区域显示一个数字“1”首先就要的编写“1”在16*8的区域的16进制编码并放入一个数组中,这就是字库。编写好字库后还要再加一个64字节的数据缓存区用来存放屏上所用点的数据,595就从数据缓存区中取数据送去显示。而

22、缓存区中的内容是从字库通过算法加载进去的。现在我们把“1”的数据放入数据缓存区中对应显示的地方。595取128位送入屏幕,这时138选择的是4*8的第一行,这时在要显示的16*8中亮了1,5,9.13行,接着595再取下一行的128位数据送入屏,138选中4*8的第二行。这时在要显示的16*8中亮了2,6,10,14行,依次类推共4次,就把16*8的所有行就都显示了。由于程序执行速度很快,肉眼看不出切换所以就看到一个完整的“1”了。这就实现了动态扫描。3.2.5 主控模块LPC11C24与LED点阵屏的引脚连接LPC11C24 引脚LED点阵屏引脚+5VIN5V供电电源GNDGNDP0_3OE

23、P1_8SCLKP2_6RP2_7CLKP2_8BP2_10ALPC11C24 32*16LED点阵屏P0_3 P1_8P2_6 P2_7 P2_8 P2_10OESCLKRCLKBA图5.4 LED点阵屏与LPC11C24引脚的连接图LPC11C24与LED点阵屏的连接图3.2.6 LED点阵屏的显示的软件设计对于这个系统的软件设计一开始是我们是从控制LED点阵屏的显示入手,而为了防止在控制LED显示的初始阶段烧坏LPC11C24开发板以及更快的入手LPC11C24开发板,我们首先决定先用51单片机来写程序点亮控制LED点阵屏,在可以任意的控制LED屏的显示之后再将程序移植到LPC11C24

24、开发板上。而控制LED点阵屏的首要问题就是点阵屏上每一行的亮灭是如何在单片机中实现的,接下来我们就试着去控制点阵屏的的每一个点的亮灭,直到可以控制任意点亮和灭。然后,我们再考虑去让点阵屏去显示数字以及在哪个位置去显示,最后我们才再想方设法的使LED点阵屏的不同位置显示出我们想要显示的数字而这又是最困难的一步,由于在一个时刻LED点阵屏只能让一块显示所以要想让整个的屏都显示不同的数字就使用到动态扫描的技术。这里要真正实现动态扫描则分为两部分第一部分是buf数据缓存区的数据的动态变化,第二部分是对LED屏的行的动态扫描。控制一个点显示控制一行显示任意显示数字 图 LED点阵屏显示设计思路程3.2.

25、6.1控制LED亮灭的设计过程首先我们是先通过看对P10 LED点阵屏电路图走线方式,电路的芯片的作用来理解电路。电路是用74HC138译码器和74HC595移位寄存器组合实现的,这样就大概知道电路是如何工作的,我们就试着按自己的理解去连接的电路并给通过单片机控制LED点阵屏,写了几个程序发现LED点阵屏上一直不亮,就考虑是否是硬件出了问题,但是经过测试后发现LED屏的正负极是有+5V电压的,并且LED的引脚同51单片机的连接也正确。只能是程序写的不对,然后我们就上网查阅各种资料,包括595移位寄存器和138译码器的手册、例程,通过查阅之后才对595和138 的工作有了更进一步的了解,我们之后

26、又重新编写了一个程序和发现还是不能点亮LED屏,问了老师后才知道是我们对595理解有误,之后我们试着写了一个程序发现LED点阵屏果真亮了,但是LED灯都是在乱闪的,琢磨的一晚上也没找到是什么原因,直到第二天问了老师才发现是LED屏和单片机没有共地,我们找了一跟线将LED的地和单片机的地线连接起来这下屏上的显示就稳定了,但是是4行一起亮的,看了原理图后发现138的输出信号又通过LED驱动芯片分出4个一样的信号,输出的信号被用于控制4行,所以16行需要4个138译码输出信号,这样2个138的输入信号输出00、01、10、11四个信号,就能把整块屏的16行给控制起来。 能够控制行,还得能控制任意一个

27、点。一开始只知道595是如何工作的,就全送入0,后来改变输入595的128位,发现第一个送进去的0会在4行中的最后一个点上,就理解了什么叫“位显示的先送”这句话,这样就已经能控制128位中的任意一点的亮和灭。3.2.6.2LED点阵屏的动态扫描设计过程实际上,我们要做的远不止让行和点亮起来这么简单,因为引脚的有限,我们只能用动态扫描的方式来让屏幕显示全部的内容,但是问题有来了,138和595的组合输入究竟是什么样的。时序是如何组合在一起的,我们就试了一下发现屏上的显示规律并不是我们想的那样从左到右依次来的,而是8位一组从左下方开始再到左上方,然后再从下方的往右8位再往上依次类推,直到右上方。这

28、样就影响到了数据组织问题,做到这里老师对我们提出了一个数据缓冲区的概念,说这块屏的显示程序对应有三部分,第一部分就是一个64字节的缓冲区里面是屏上的每个点对应的值,第二个部分是4个变量也就是屏上列分成8位一组的点钟要现实的内容的值。第三个部分就是扫描输出程序,这个程序只需要扫描64字节的缓冲区其它的不用管,这三部分的工作过程是,程序通过4个变量在字库中选择要显示的值的编码送入64字节的显示缓冲区中对应的位置,在通过扫描程序来把显示缓冲区中的内容送给显示屏。这个过程也是成为整个程序的主要框架后面的功能在这些基础上添加和修改的。程序写到这里出现了单片机无法解决的问题RAM的大小不够用无法执行程序。

29、这时就不再使用单片机来编写了,我们把程序移植到LPC22C24上面去,由于LPC11C24中引脚的使用不同单片机引脚使用初始化引脚即GPIOSETDIRL(x,x,1)第三位为1表示引脚的状态为输出,前面两位分别为第几个IO口的第几位。而IO口的输出要用GPIOSETVAIL(x,x,x).第一个x表示第几个IO口,第二个x表示第几个IO口的第几位,第三个x表示输出0或1.由于这种输出方式带来的问题是只能用0和1 来输出,所以只能把原来程序中的数据移位一个一个输出,这是和单片机的一个区别。原来程序移植到LPC11C24中后下载可用位就可改变现实的内容了。原来只能显示4位数字,现在要把时间和日期

30、一起显示了。这样就要重新规划数据缓冲区的数据组织和传入数据缓冲区的算法了,用移位来把重新规划的数据缓冲区填入正确的值,并正确显示年-月-日-时-分Buf缓冲区数据组织 控制点阵屏显示时钟就要知道点阵屏上每个点在Buf缓冲区中对应的存储位置,因为我们所使用的是32*16的LED点阵屏,所以 Buf缓冲区就应该是一个64字节的数据缓冲区,每一个字节表示LED屏上的8个点如果我们要在某个位置上显示某一个数字就把Buf缓冲区中对应位置的值改成要显示数字的编码。下图是我们定义时间的年、月、日、时、分在点阵屏上的显示位置和Buf缓冲区对应关系。注:图中063每个数字代表一个字节,数字表示这个字节在BUF缓

31、冲区数组中的位置。比如说图中51就是从左往右的八个小方格,图中的6就是从左往右的八个小方格。51 35 年十位19 3 显示50 34 位置18 年个位显示位置55月十位显示位置59月个位43显示27位置1158422663日十47显示31位置 15 624630日个位显示位置39237点点5438222610144953576133时十位显示位置37时个位显示位置41分十位显示位置45分个位29显示1360位置4428121721点 251594852563236401620点 24048图4 LED点阵屏上的点与buf缓冲区的对应关系在这里要真正实现动态扫描则分为两部分第一部分是buf数据

32、缓存区的数据的动态变化,第二部分是对LED屏的行的动态扫描1.BUF数据缓冲区的动态变化 例如:这是对显示的时钟分的个位的数字在缓冲区的动态变化的计算方法 比如要显示数字8 buf45=(buf45|0xf0)&(numcode7*fen1+14)|0x0f);buf29=(buf29|0xf0)&(numcode7*fen14)|0x0f);buf61=(buf61|0xf0)&(numcode7* fen1+24)|0x0f); buf12=(buf12|0xf0)&(numcode7* fen1+34)|0x0f);buf28=(buf28|0xf0)&(numcode7* fen1+4

33、4)|0x0f);buf44=(buf44|0xf0)&(numcode7* fen1+54)|0x0f);buf60=(buf60|0xf0)&(numcode7* fen1+64)|0x0f);分析:由上图可得到分的个位(即fen1)在点阵屏的位置是“分个位显示位置”对应的在数组中的字节数据是45,29,13,60,44,28,12.且是这7个字节的高4位。由于要统一操作所以我会先把数据送到每个字节的低四位,通过移位来对BUF中字模数据的位置的确定。如第一个buf45=(buf45|0xf0)&(numcode7*fen1+14)|0x0f);buf45|0xf0先通过按位或把要显示的位置

34、全部置为1(即不显示),(numcode7*fen1+14) |0x0f再在字库中找出数字8的位置并把每个字节都左移四位之后再和0x0f按位与一下消除对显示位置之外的影响,(buf45|0xf0)&(numcode7*fen1+14)|0x0f)再和原来置一的数据按位与把数据放入缓冲区。这样就可以把数据送入想要的位置了。别的位置也可以用同样的方法来实现数据的传送。2.对数据的缓存区的动态扫描 通过上面的要显示的数据的位置及内容送入了缓存区,现在要显示在LED屏上这个显示分为两步,第一步 74HC595移位寄存器中数据移位,第二步 行数据扫描。开始关闭74HC138D译码器和74HC595移位寄

35、存器取缓冲区里的前16个字节N16个字节是否扫完闭Y分别设置AB的值为00、10、00、11对74HC138D译码器进行位选给SCLK1一个上升沿开74HC595开74HC138译码器数据并行输出返回 图 扫描输出流程图(1)列数据的移位(74HC595移位寄存器中数据移位)第一步 移位时钟信号清零第二步 用送过来的数据来和0x80按位与取出最高位,再和0x80比是0还是1是1就送一个1个595输入端R否则送0第三步 把送来的数据左移一位第四步 开移位时钟信号第五步 继续比较,重复8次;关键代码:void shiftbyte(int inbyte) int i; for(i=0;i8;i+)

36、CLK0; if(inbyte&0x80)=0x80) RDI1; else RDI0; inbyte=inbyte1; CLK1; (2)74HC138译码器行选择第一步,把译码器138的OE的值清零第二步,把移位寄存器595并行输出时钟信号清零第三步,选择要扫描数据这里是015共128位的数据(后面的三段语句分别是1631,3248,4863)第四步,把取缓冲区总的一个字节的数据发送到零时变量中,并把零时变量作实参调用移位函数第五步,当128位数据都移位完成时说明列数据已经有了,这时设置A,B的值并把并行输出时钟置1使之产生一个上升沿,把595数据输出到并行输出口上,开138使能端OE置一

37、第六步,等待一会儿第七步,修改A,B和选择的数据重复一到六步。当然,由于人的视觉停留,只要刷屏的速度够快所看到的的LED显示屏上显示的图像还是全屏稳定的图像。关键代码:OE0; /OE=0;138译码器使能端为低电平SCLK0; /OE=1; 138译码器使能端为高电平for(i=0;i16;i+)temp=bufi;shiftbyte(temp);AIN0;/ABIN0;/BSCLK1; /SCLK OE1; /OEdelay(1);这是行扫描的一部分程序,后面的语句和这个类似,要修改AIN,和BIN的值和选择的在缓冲区的数据的位置的值。3.2.7 时钟显示秒的控制在此次的设计中本起初是想在

38、点阵LED屏分成上下两部分,上面一部分显示年月日下面一部分显示时分秒,但是后来发现下面如果要将时分秒在LED屏上都显示出来的话数字间就没法有足够的间距来区分,所以就采取了另一种方案,在时和分之间加两个点隔一秒闪烁一次,当闪过60次之后分的个位上就加1,下面就来实现时和分之间加两个点的闪烁。点的闪烁主要就是用的延时,在LPC11C24的开发板中已经提供给我们16位定时器,我们就是利用这个16位定时器timer32把timer32中的终端程序修改加入标志位来实现1秒定时。如下是在16位定时器中的闪烁计数程序: if(timer16_0_counter50&timer16_0_counter=100

39、) shanshuo=0;在主函数中只要控制两个点的位置的与和或的值就能使两个点闪烁起来。程序代码如下: if(shanshuo=1)/灭 buf37=buf37|0X01; buf20=buf20|0x01; buf24=buf24|0x80; buf41=buf41|0x80; else/亮 buf37=buf37&0Xfe; buf20=buf20&0xfe; buf24=buf24&0x7f; buf41=buf41&0x7f; 3.3 GPS卫星数据接收模块GR-87GR-87的主要功能是负责接受卫星数据并实现高精度的时间信号输出。GR-87接受GPS卫星数据并且每秒发出几种数据,包

40、括:$GPGGA、$GPRMC、$PGRMV、$PGRMO、$PGRMC等数据格式,因为我们只是显示它的时钟信息所以我们要从中筛选和时间有关的数据格式&GPRMC。3. 3.1GPS技术简介GPS导航系统是以全球24颗定位人造卫星为基础,向全球各地全天候地提供三维位置、三维速度等信息的一种无线电导航定位系统。它由三部分构成,一是地面控制部分,由主控站、地面天线、监测站及通讯辅助系统组成。二是空间部分,由24颗卫星组成,分布在6个轨道平面。三是用户装置部分,由GPS接收机和卫星天线组成。民用的定位精度可达10米内。在“十二五”期间,卫星导航将在众多领域如航空、海路、铁路、建筑、电信、电力等方面的

41、应用都会有很大的发展空间。在未来的数年间,随着定位手机的高速增长和移动位置服务业的展开,原先以车辆应用为主的局面将逐步让位给卫星导航与蜂窝通信融合的定位手机。在行业总产值中,运营服务的份额也会逐步加大。图4.1 GPS系统空间卫星星座3.3.2 GR-87 此次设计的GPS模块系统选择了采用第三代高效能芯片高灵敏、低耗电量芯片STAR 的GR-87。内建ARM7TDMI CPU定位精度小于10米,能够同时追踪20个卫星信道。芯片内建200,000个卫星追踪运算器,可以保持星历数据,快速定位。其远达能力,满足汽车导航灵敏度的要求,以及其他基于位置的应用程序。因此,holux的GR87引擎是非常适

42、合AVL系统集成和基于位置的服务。3.3.3引脚功能l 图为GPS模块外观图,可以看出它有6个引脚,分别为:l 引脚1(VCC):主要的直流+3.35.5V的引擎板供电l 引脚2(TXA):主要的传输通道,用于导航和输出为编写的软件的用户测量数据。l 引脚3(RXA):接受通道,主要接受用户的命令l 引脚4(RXB):辅助接受通道,用于输入差分l 引脚5(GND):接地端l 引脚6(RESET):复位端 图3.1 GR-87外观图GR-87指标l 最多可同时接收20个卫星 l 时间标示: 1脉波/秒, GPS时间 +/-0.1秒误差 l 晶片内建 200,000 个卫星追踪运算器 l 运算程序

43、:ARM7/TDMIl 处理速度:50 MHZl 更新速率: 1HZl 串口输出精度可达微秒级l 时间标示: 1脉波/秒, GPS时间 /-0.1秒误差寻星时间小于10秒l 定位时间(平均值)l 重新抓取:0.1秒l 热开机: 1秒l 暖开机: 38秒l 冷开机: 42秒3.3.4硬件接口UARTUART传输结构UART:Universal Asynchronous Receiver/Transmitter,通用异步接收/发送装置,UART是一个并行输入成为串行输出的芯片,通常集成在主板上,多数是16550AFN芯片。它是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C

44、数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数

45、据前在其缓冲区内存储16字节数据,而通常的UART是8250。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。通信UART首先将接收到的并行数据转换成串行数据来传输。微控制器中的UART传送数据的速度范围为每秒几百位到1.5Mb。例如,嵌入在ElanSC520微控制器中的高速UART通信的速度可以高达1.152Mbps。UART波特率还受发送和接收线对距离(线长度)的影响。3.3.5 通信协议NMEANMEA协议是为了在不同的GPS(全球定位系统)导航设备中建立

46、统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Association)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。 NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。NMEA协议常用的输出类型有很多种,但是我们需要的只是下面的这种:GPRMC(建议使用最小GPS数据格式)&GPRMC,l 标准定

47、位时间(UTC time)格式:时时分分秒秒.秒秒秒(hhmmss.sss)。l 定位状态,A=数据可用,V=数据不能用。l 纬度,格式:度度分分.分分分分(ddmm.mmmm)。l 纬度区分,北半球(N)或南半球(S)。l 经度,格式:度度分分.分分分分。l 精度区分,东(E)半球或西(W)半球。l 相对位移速度,0.0至1851.8knotsl 相对位移方向,000.0至359.9度。实际值l 日期,格式:日日月月年年(ddmmyy)。3.3.5主控模块LPC11C24与GR-87的连接注:由于我们只需要从GR-87中读数据所以我们只用了GR-87输出引脚LPC11C24引脚GR-87引脚

48、+5VIN5V供电电源GNDGNDP1_6TXA因为此次设计的只需要从GR-87中读数据所以我们只用了GR-87第二引脚TXA,TXA为串行输出通道,用于输出模块接收到的GPS数据,与LPC11C24上的P1_6引脚相连即UART的串行接收端RXD相连。G R-87TXA引脚 LPC11C24 U A R T 接口RXD引脚第二引脚P1_6引脚图5.3 GR-87与LPC11C24的连接图3.3.6 UART接收GPS数据软件设计GPS先和电脑用串口连接观察串口调试助手收到的内容,这里的问题就是把波特率修改直到收到正确的内容,下一步就是开启LPC11C24的UART异步串行通信,把UART接收

49、到的数据保存下来再输出。这里遇到一系列问题比如FIFO中的数据是如何进入RBR中的是一个字符接受还是一段字符保存下来再中断的。这个通过对初始化的阅读来了解的。在主函数中对缓存区进行处理就可以了,使用临时缓冲区但存有用的数据的。UART可以使用后接入GPS实现对时这时候加入的timer32就不能使用了,而是用timer16。1.UART数据的接收 UART在初始化的时候会设置控制寄存器FCR中有个7:6可以设置RX触发等级,这里设置00,即收到一个字符就会触发中断这样就可以收一个处理一个了。在UART中断中,收到一个字符就放入缓存区,在主函数中对缓存区进行处理就可以了。开始系统初始化NUART是

50、否收到数据?Y定时器秒1+1筛选并处理数据进入时间控制程序送入临时数组结束 图 UART数据的接收流程图关键代码:if (IIRValue = IIR_RDA) UARTBufferUARTCount+ = LPC_UART-RBR; if (UARTCount = BUFSIZE) UARTCount = 0; 这段程序就是如果收到的数据是有效的就会把FIFO中的最高位的数据给缓存区,知道缓存区64字节全满。 2.UART数据的处理我们要用的数据是GPS中的$GPRSM中的时间和日期的内容。 时间的格式是:时时分分秒秒 日期格式是:日日月月年年 GPS信息的数据是以$为开始,以*号结束 筛选

51、GPS数据的方法是:a. 判断是不是收到了开头$以及后面的GPRMC是否都满足b. 把缓存数组中的第713,4752的数据通过字符转数字并赋给对应的变量。当然因为是在东八区,小时要+8之后判断是不是超过了24小时。c. 这样就把时间和GPS上的数据同步了以下是这段程序代码:if ( UARTCount != 0 ) LPC_UART-IER = IER_THRE | IER_RLS; /关闭UART接收for(i=0;i24)shi-=24;/过了24小时就减去24小时shi1=shi%10;/分别把对应的在缓存区的数据给对应的变量shi2=shi/10;fen2=cmd9-0x30;fen1

52、=cmd10-0x30;miao2=cmd11-0x30;miao1=cmd12-0x30;if(cishu=0|fChange!=shi2)/由于在调试时发现日期的数据有可能丢失就在第一次对时改变一下,以后分钟变化是才让日期对一次,这样可以降低出错率 ri2=cmd47-0x30; ri1=cmd48-0x30; yue2=cmd49-0x30; yue1=cmd50-0x30; nian2=cmd51-0x30; nian1=cmd52-0x30; cishu=1; fChange=shi2; choice();f=0;/对时时步用定时器计时 fCmd=0; pHead=0; UARTCo

53、unt = 0;/对时结束清空计数位 LPC_UART-IER = IER_THRE | IER_RLS | IER_RBR;/开UART接收3.4供电电源的选择采用开关电源作为整个系统的供电电源,因为当电压输出为+5V时最大的直流电流可以达到22A,能满足驱动LED点阵屏显示时所需大电流的要求。第四章 系统测试4.1 测试仪器和设备1、PC一台2、数字万用表1块3、数字示波器1台4.2 测试方案4.2.1 LED点阵屏显示测试将LED点阵屏与主控制芯片NXP LPC11C24连接,直接给其写入一个显示年月日时分的程序观察LED屏的的响应速度和显示的效果。在夜间测试LED点阵屏的亮度观察它的亮度是否同样达到我们所预想的要求4.2.2 GPS通信测试 先将GPS模块连接到RS232电平转换芯片MAX3232上,再通过RS232串口连接到电脑上,设置串口调试助手(波特率为4800bit/s,8位有效数据1个停止位,无奇偶校验位)打开串口接受GPS的信息,观察串口调试助手中的显示缓冲区中所接受的内容是否准确。4.2.3 NXP LPC11C24测试我们在测试这个主芯片的时候,将事例程序中的blink程序烧入主控模板LPC11C24,我们还将其它的模块与它相连来测试他们是否正常工作。4.2.4 系统综合测试 把系统的各个模块电路全部连接到一起,将系统放在有G

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!