基于物联网的安保系统软件设计-测控模块-毕业论文_第1页
基于物联网的安保系统软件设计-测控模块-毕业论文_第2页
基于物联网的安保系统软件设计-测控模块-毕业论文_第3页
基于物联网的安保系统软件设计-测控模块-毕业论文_第4页
基于物联网的安保系统软件设计-测控模块-毕业论文_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安欧亚学院本科毕业论文(设计)基于物联网的安保系统软件设计—测控模块摘要:在现在的信息时代,物联网已成为信息网络发展的一个必然趋势,而安防这个概念我们已不再陌生,它与我们的生活息息相关,所以安防物联就有待我们的研究与开发。安防物联网系统最突出的特点是其终端产品具有智能化、一体化,能够连接多种传感器,能够通过互联网传输报警图像和信息,同时具有网络平台监控报警服务功能。根据行业的特点,物联网安防产品要求具有体积小巧、造价低廉,集监控、图像分析、智能处理、前端存储、警笛讯响、主动报警等多种功能于一体,可连接多个传感器,能脱离电脑主机单独运行。在整个软件开发过程中利用IAR进行软件的编辑和仿真。通过仿真器JLINK将程序下载到目标板,先进行单个分支模块的设计与调试,最后进行整个模块的整合调试,实现人机交换。关键词:ARM;UART0;RTC

Basedonnetworksecuritysystemthatsoftwaredesign-measurement—controlmoduleAbstract:Nowintheinformationage,thethingnetworkinginformationnetworkhasbecomeacertaintrendofdevelopmentof,andpreventthisconcepttowenolongerstrange,itwithourlife,sothattheyshouldbeunitedsecurityofourresearchanddevelopment.Securitycontentnetworkingsystemthemostoutstandingcharacteristicisitsendproductshaveintelligence,integration,abletoconnectavarietyofsensors,canthroughtheInternettotransmitalarmimageandinformation,andatthesametimeanetworkplatformmonitoringalarmservicefunctions.Accordingtothecharacteristicsoftheindustry,networksecurityproductsthatarerequiredtohavesmallsizeandlowcost,thecollectionmonitoring,imageanalysis,intelligentprocessing,storage,sirenfront-sound,andtheactivealarmandotherfunctionsinabody,canconnectmultiplesensor,fromthemaincomputerrunseparately.InthesoftwaredevelopmentprocessofsoftwareandtheeditorofIARsimulation.ThroughthesimulatorwillJLINKprogramdownloadtothetargetboard,firstforasinglebranchmoduledesignandcommissioning,finallythemoduleintegrationcommissioning,realizehuman-machineexchange.Keywords:ARM;UART0;RTC西安欧亚学院本科毕业论文(设计)II目录TOC\o"2-3"\h\z\u\t"标题1,1"1绪论 11.1技术背景 11.2选题意义 11.3课题设计思路 11.4整体结构 22LPC1768芯片介绍 32.1LPC1768简介 32.2技术特性 32.3LPC1768的结构功能介绍 43应用模块 53.1存储器 53.2系统控制模块 63.3UART模块 63.3.1主要寄存器描述 63.3.2编程结构 73.4实时日历时钟RTC 83.4.1概述 93.4.2特殊寄存器 93.5LCD显示模块 103.5.1简介 103.5.2指令集使用示例 104开发工具介绍 144.1IAREWARM开发软件 144.1.1简介 144.1.2项目创建 144.1.3IAR项目管理 144.1.4集成开发环境的界面 154.1.5调试器 154.1.6C/C++编译器 164.1.7汇编器 174.2J-LINK仿真器简介 174.2.1J-LinkARM主要特点 174.2.2J-Link支持ARM内核 184.2.3J-Link在IAR开发环境调试过程 185程序设计 205.1LPC1768芯片底层代码 205.2主程序 225.3系统初化设计 265.4UARTO初始化 285.5GPIO模块程序 285.6RTC模块 295.7触屏操作界面模块 316系统调试 356.1整体概述 356.2调试环境 356.3调试及问题处理 35结论 36致辞 37参考文献 38PAGE351绪论1.1技术背景1999年美国麻省理工学院(MIT)提出物联网概念,10余年间物联网在世界范围内越来越受到关注。在国内,随着政府对物联网产业关注和支持力度的显著提高,物联网已呈现出一种从产业愿景走向现实应用的趋势。但是大家一直以来对物联网的概念没有一个准确而固定的定义,以及一些利益相关方各自对这一概念进行基于自身利益的解读,使得大家对物联网这一概念的内涵和外延认识明确。一般大家认为,物联网就是通过射频信息传感设备,按照约定的协议实现人与人、人与物、物与物之间进行全面互联的网络,主要特征是通过射频识别、传感器等方式采集物理世界的各种信息,结合互联网络、移动通信网络等进行信息的传送与交换,采用智能计算技术对所采集信息进行分析处理,提高对物质世界的感知能力,从而实现智能化的决策和控制。1.2选题意义安防物联网就是物联网和安防应用相结合而产生的,它将给安防领域带来新的应用价值,他的终端产品具有智能化和集成等特征,能够与多种传感器相连接,并通过互联网络报警传输图像和信息,同时也有一个网络平台的监控和报警功能。根据行业的特点,网络安全产品还要求其小体积、集监控、制造成本很低、图像分析、前端存储、智能处理、主动报警和警笛讯响等多种功能于一体,可连接多个传感器,可以脱离电脑主机单独进行运行。从这个概念看,已人们被广泛应用的室内入侵自动报警系统是物联网在安防领域的初步应用,目前安防行业已经在朝着物联网方向发展,具有率先广泛应用的基础和必然优势。由此可见,加快安防物联网应用建设,不但是提升安全防范水平有效的技术手段,而且也是提升社会信息化水平的重要杠杆,对推动物联网在其他行业应用有巨大的示范作用,对经济发展和社会生活都将产生深远影响。国家工信部在《物联网“十二五”发展规划》中指出:物联网已成为当前世界新一轮经济和科技发展的战略制高点之一,发展物联网对于促进经济发展和社会进步具有重要的现实意义。1.3课题设计思路通过相关资料,了解基于ARM的RTC模块开发、人机交互接口、LCD真彩屏的原理。基于ARM实验板进行设计开发,利用IAR开发软件对各个模块进行程序编写和调试,确认程序调试无误后,先将PC机与ARM实验板进行串口联接,进行收/发通信调试,最后再将各个部分整理综合起来调试整个安防系统。1.4整体结构通过外部无线模块的物理探测,将采集的数据信息传递到目标开发板LPC1768中,在目标板上进行数据处理并显示结果。外部信息采集J-Link目标板ARM外部信息采集J-Link目标板ARM(LPC1768)PC机LCDLCD显示图1-1整体结构图

2LPC1768芯片介绍2.1LPC1768简介LPC1768是NXP公司推出的基于ARMCortex-M3内核的微控制器LPC17XX系列中的一员。LPC17XX系列Cortex-M3微处理器用于处理要求高度集成和低功耗的嵌入式应用。LPC1700系列微控制器的操作频率可达100MHz(新推出的LPC1769和LPC1759可达120MHz)。ARMCortex-M3CPU具有3级流水线和哈佛结构[1]。LPC17XX系列微控制器的外设组件包含高达512KB的flash存储器、64KB的数据存储器、以太网MAC、USB主机/从机/OTG接口、8通道DMA控制器、4个UART、2条CAN通道、2个SSP控制器、SPI接口、3个IIC接口、2输入和2输出的IIS接口、8通道的12位ADC、10位DAC、电机控制PWM、正交编码器接口、4个通用定时器、6输出的通用PWM、带有独立电池供电的超低功耗RTC和多大70个的通用IO管脚[1]。2.2技术特性64KB片内SRAM。32KB可供高性能CPU通过本地代码/数据总线访问。2个静态存储器模块、带独立访问路径、可以进行吞吐量更高的操作,静态存储器可用做Ethernet、通用串行总线、DMA存储器,以及通用指令与Datastorage。以太网串行EEPROM中的物理地址带简化媒体独立接口和相关的直接存储器。USB2.0全速从机/主机/OTG控制器,带有用于从机、主机功能的片内PHY和相关的控制器。4个异步串行通信、全部的UART都支持IrDA[2]。CAN控制器,带有2个通道。2个SSP控制器,带有FIFO,可按多种协议进行通信。其中一个可选择用于SPI,并且和SPI公用中断。SSP接口可以与GPDMA控制器一起使用[3]。IIS接口可与GPDMA一起使用。IIS接口支持3线数据发送和接收或4线组合发送和接收连接,以及主机时钟输入输出[3]。4个通用定时/计数器,共有8个捕获输入和10个比较输出。每个定时器都有一个外部计数输入。一个电机控制PWM,支持三相的电机控制。通过片内PLL,没有高频晶振,CPU页可以以最高频率运转。第二个专用的PLL可用于USB接口,以允许增加主PLL的灵活性。100MHz的工作频率。嵌套向量中断控制器,可快速确定中断。四种节能模式:睡眠模式、深度睡眠模式、关机模式,和深度省电模式。唤醒中断控制器支持超低漏电保持模式,并针对关键事件提供瞬时完全活动模式。2.3LPC1768的结构功能介绍LPC1768芯片包含一个支持仿真的Cortex-M3CPU,片内存储器控制器接口的Cortex-M3局部总线,中断控制器接口的AMBA高性能总线(AHB)和连接片内外设功能的外设总线(VPB,ARMAMBA总线的兼容超集)LPC1768将Cortex-M3处理器配置为小端(little-endian)字节顺序[4]。AHB外设分配了2M字节的地址范围,它位于4G字节ARM存储器空间的最顶端。每个AHB外设都分配了16kb字节的地址空间。LPC1768的外设功能(中断控制器除外)都连接到VPB总线。AHB到VPB的桥将VPB总线与AHB总线相连。VPB外设也分配了2M字节的地址范围,从3.5GB地址点开始。每个VPB外设在VPB地址空间内都分配了16k字节地址空间。Cortex-M3处理器专为控制极低动态功耗和漏电而设计。类似于所有Cortex-M部分处理器,Cortex-M3处理器也利用ARM180ULL电源管理工具包(PMK)和标准单元库来支持超低功耗休眠实现。这款处理器与集成唤醒中断控制器(WIC)相结合,支持迅速将内核置为超低漏电状态保持模式,并可在发生关键事件时以近乎瞬时的响应速度返回完全活跃模式[5]。这些技术的整合便产生了超低功耗的32位处理器,其性能效率和响应能力可最大限度地减少活动持续时间,在利用ARM物理IP实现时,可在活跃和休眠状态下实现更低功耗。

3应用模块3.1存储器存储器是构成嵌入式系统硬件(处理器、存储器、I/O电路)的重要做成部分。设计嵌入式系统的存储器时需要考虑许多因素:有的嵌入式控制器集成了存储器,一般不需要额外扩展,甚至有的嵌入式控制器无法扩展;有的嵌入式微处理器片上没有存储器,必须外部扩展;有的嵌入式处理器片上集成了一定数量的存储器,可以满足一定的需要,如果软件占用空间比较大,可能需要扩展存储器,所以整个存储器系统由片上片外两部分组[6]。RAM空间ROM空间EEPROM图3-1嵌入式系统典型的存储空间分配示意图随机存储器RAM这种存储器之所以称之为随机存储器(RAM),是因为任一存储单元的数据可以以任一顺序而非固定顺序被访问(读/写)。在RAM中有两种重要的存储元件:SRAM(静态RAM)和DRAM(动态RAM)。它们之间的主要差别是存储于其中的数据的寿命长短。SRAM只要是芯片有就会保留其中的内容,但如果切断了电源或者是暂时断电了,其中的内容就会永久的丢失;DRAM只有极短的数据寿命,通常不超过0.25s,即使是在连续供电的情况下也是如此。因此使用DRAM时,需要配合SRAM控制器,对DRAM进行周期性刷新或再生[6]。只读存储器ROMROM家族中的存储器是按照向其写入或更新数据的方法(通常叫作编程)及其可以从写的次数来区分的,其中包括不可擦除型。通常,系统开发过程中常用的是可擦除型只读存储器。可一次编程的只读存储器通常与处理器集成在一起。快闪存储器FLASH是存储器技术最新的发展结果,具有高密度、低价格、非意失性、快速读取以及电气可重编程等特点,在嵌入式系统中的使用迅速增长。嵌入式系统中使用FLASH有两种形式,一种是嵌入式处理器上集成了FLASH,另一种是片外扩展FLASH。3.2系统控制模块一个ARM芯片中通常有很多功能部件,其中有一些是独自工作的,不会对其他部件产生影响,比如UART接口、I2C接口等。而有一些部件的影响是全局性的,它们的状态改变时可能引起整个系统运行状态的改变,这些部件如表3-1所列。表3-1系统控制模块名称及简介部件名称功能简介晶体振荡器通过外外结晶振或时钟源为系统提供时钟信号复位复位使ARM内核与外设部件进入一个确定的初始状态存储器隐射控制控制异常向量表的重新映射方式锁相环(PLL)将晶体振荡器输入的时钟倍频到一个合适的时钟频率VPB分频器将内核时钟与外设时钟分开的部件功率控制使处理器空闲或者掉电,还能关闭指定的功能部件,以降低芯片功耗唤醒定时器系统上电或掉电唤醒后,保证晶体振荡器能输出稳定的时钟信信号时钟系统是计算机系统的脉搏,处理器核在一拍接一拍的时钟驱动下完成指令执行、状态变换等动作。外设部件在时钟的驱动下进行着各种工作,比如串口数据的收发、A/D转换、定时器计数等[7]。因此时钟对于一个计算机系统是至关重要的,通常时钟系统出现问题也是最致命的,比如振荡器不起振、振荡不稳、停振等[7]。时钟系统包括4个部分,分别为晶体振荡器、唤醒定时器、锁相环(PLL)和VPB分频器。其中“晶体振荡器”为系统提供基本的时钟信号。当复位或处理器从掉电模式被唤醒时,“唤醒定时器”要对输入的时钟信号做计数延时,使芯片内部件有时间进行初始化。接下来Fosc信号被PLL提高到一个符合用户需要的频率(Fcclk),Fcclk用于CPU内核。因为CPU内核通常比外设部件的工作速度要快,所以用户可以设置VPB分频器,把Fcclk信号降低到一个合适的值Fpclk,该信号用于外设部件。3.3UART模块3.3.1主要寄存器描述UART是异步通信收发器的简称,遵守工业异步通信标准。目前大多数嵌入式处理器都配了UART接口,有的处理器上称为SCI。异步通信允许处理器之间的通信不使用公共的参考时钟。通信的双方使用相同的波特率,数据发送和接收的单位是帧。帧由一系列在通信线上传输的位组成[8]。UART的特性:16字节接收FIFO和16字节发送FIFO。寄存器位置符合16C550工业标准。接收器FIFO触发点可为1、4、8和14字节。内置波特率发生器。UART1含有标准调制解调器接口信号。3.3.2编程结构UART的编程结构通常包括发送寄存器、接收寄存器、模式寄存器、状态寄存器、控制寄存器和波特率发生器等;如果串行接口模块支持同步通信方式,则还会包含同步字符寄存器等。对于高性能的UART模块,发送寄存器和接收寄存器可能被多个字节的发送缓冲区和接收缓冲区所取代,以最大限度地减少处理器内核的负担[8]。U0RBR是UART0RxFIFO的最高字节,是UART0接收FIFO的出口,如图3-3所示。它包含了最早接收到的字符,可通过总线接口读出。LSB(bit0)代表最早接收到的数据位。如果接收到的字符小于8位,未使用的MSB填充为0。如果要访问U0RBR,U0LCR的除数锁存访问位(DLAB)必须为0。U0RBR为只读寄存器。由于PE、FE和BI位与RBRFIFO顶端的字节相对应(即下次读RBR时读出的字节),因此,将接收的字节及其状态位成对读出的正确方法是先读U0LSR寄存器的内容,再读U0RBR的字节[9]。图3-2接收FIFO16字节U0THR是异步串行通信0口Tx先进先出的高字节,UART0发送FIFO的入口。我们可以用总线接口写入TxFIFO中最近的字符[9]。假如访问U0THR,U0LCR的除数锁存访问位(DLAB)要置为0。U0THR为只能写入的寄存器。图3-3发送FIFO16字节其中PCLK为外围时钟,U0DLM和U0DLL为标准的异步串行通信T0波特率除数寄存器,DIVADDVAL和MULVAL为异步串行通信T0规定的值[10]。MULVAL和DIVADDVAL的参数值应具备[11]:0<MULVAL≤150≤DIVADDVAL≤15如果U0FDR寄存器的数值不满足以上条件,则会引起小数分频后输出未定义。如果DIVADDVAL为0,就不会被分频。UART0可以使能4个UART0中断源,操作示例:U0IER=0X01;//使能RBR中断,即接收中断。U0IIR提供状态代码用于指示一个挂起中断的中断源和优先级。在访问U0IIR过程中中断被冻结。如果在访问U0IIR时产生了中断,该中断被记录,下次U0IIR访问可读出[11]。3.4实时日历时钟RTC日历时钟主要包括日历数据(年、月、日)和时钟数据(时、分、秒)。目前大多数嵌入式系统的日历时钟采用专用的日历时钟芯片实现,有的时钟芯片需要外接电池,也有的时钟芯片与电池组装在一起,形成模块电路,即使系统掉电,凭借电池也可以维持日历时钟芯片准确的运行。3.4.1概述内部的RTC实时日历时钟模块需要以外部晶振来提供时钟源,并且可以在系统关闭的情况下运行计时,具有闰年产生器、报警功能和时钟节拍中断等功能。内部实时日历时钟RTC模块,在系统电源掉电的情况下,支持备用电池供电,从而保持了日历时间的持续。用ARM的STRB/LDRB指令,RTC能发送8位BCD码数据给处理器,包含了秒、分、时、星期、日、月和年。RTC单元也具备报警功能。RTC总体特性:BCD数据包含秒、分、时、星期、日、月和年。具有闰年产生器。具有报警中断或者从掉电模式中唤醒等功能。独立的电源供电引脚VDDRTC。支持毫秒级的时钟节拍中断,可用于RTCS的内核时钟节拍。具备循环时间复位功能。3.4.2特殊寄存器控制寄存器(RTCCON)控制寄存器RTCCON由4位组成,RTCEN位于控制BCD寄存器的读/写功能,CLKSEL、CNTSETL和CLKRST位用于测试。由于RTCEN位控制着处理器和RTC的所有接口,所以在系统复位之后,RTC控制程序要使能数据的读/写功能。在掉电之前,RTCEN位又必须清零,以防止对RTC寄存器的不安全操作。在小端存储模式下,RTCCON寄存器位于0x01D70040地址处;在大端存储模式下,RTCCON寄存器位于0x01D70043地址处,各位定义如下表[12]。表3-2RTCCON寄存器RTCCON位描述初始值CLKRST[3]RTC时钟计数重置0=不重置1=重置0CNTSEL[2]BCD计数选择0=组合BCD计数器1=保留0CLKSEL[1]BCD时钟选择0=XTAL1/215分频1=保留0RTCEN[0]RTC读/写使能0=禁止1=使能0报警控制寄存器(RTCALM)报警控制寄存器RTCALM用于设置报警使能和报警时间,在掉电模式下,RTCALM寄存器可产生ALMINT和PMWKUP信号,但是在正常模式下,只产生ALMINT信号。在小端模式下,RTCALM寄存器位于0x01D70050地址处;在大端模式下,位于0x01D70053地址处[13]。报警时间数据寄存器报警时间数据寄存器共6个,为ALMSEC到ALMYEAT。均为8位,最高位保留,其他位保存设置的报警时间。循环复位寄存器(RTCRST)循环复位寄存器RTCRST用于设置循环复位使能和循环边界值。在小端存储模式下,RTCRST寄存器位于0x01D7006C地址处;在大端存储模式下,位于0x01D7006F地址处。BCD时间数据寄存器BCD时间数据寄存器一共7个,为BCDSEC到BCDYEAR,分别保存时间秒、分、时、日、星期、月和年。时钟节拍计数寄存器(TICNT)时钟节拍计数寄存器TICNT用于设置节拍时钟使能和时钟计数值。在小端存储模式下,TICNT寄存器位于0x01D7008C地址处;在大端存储模式下,位于0x01D7008F地址处[13]。3.5LCD显示模块3.5.1简介采用32位ARM处理器和FPGA双核控制架构开发的一款高性能、低功耗、易使用的64K的TFT真彩显示器,可以直接和具有UART串行接口的MCU(如51单片机、AVR、PIC、DSP、ARM、工控机等)连接。只需通过串口向终端发命令,便可完成相应的操作。主要特点如下:处理器:采用32位ARM处理器+FPGA双核控制架构,加强图像处理功能。存储容量:1GBitFlash存储容量,储存一百多张16bit真彩色图片。接口特性图片下载接口:全速USB,速度600KB/S。通讯接口:3.3VRS232或TTL/CMOS电平。PC软件功能IDE编译下载环境,可视化窗口、界面美观大方;IDE集成了大量工控行业图标、按钮、3D视图等矢量图,降低了美工难度;支持新建多个页面,编译后软件自动生成每个页面的驱动函数;支持PC软件与HMI同步显示,具有单步调试等功能;支持二进制文件烧录,量产更快更安全。工程编译后IDE将自动生成工程二进制文件。电源:9-12V@1A工作温度:20℃~70℃3.5.2指令集使用示例握手(0x00)发送:fd000000ddccbbaa返回:05ffff清屏(0x02)发送:fd020000ddccbbaa设置调色板(0x05)发送:fd050004fffff800ddccbbaa0xff0xff:前景色的颜色编码,0xffff代表白色。0x550x00:背景色的颜色编码,0xf800代表红色。智能终端收到该命令后将白色和红色分别设为默认的前景色和背景色。在没有执行该命令前,系统默认的前景色为黄色,背景色为蓝色。背景色取色(0x06)发送:fd06000400030005ddccbbaa返回:无解析:0xfd:命令头,每个指令发送前必须发送。0x06:背景色取色指令的指令码。0x000x04:用两个字节表示数据长度。在本指令中需要发送的数据为0x000x030x000x05,共4个。0x000x03:表示x轴的坐标。0x000x05:表示x轴的坐标。用十进制表示其XY坐标为(3,5)。智能终端收到该命令后将坐标值为(3,5)的点的颜色设为默认的背景色。前景色取色(0x07)发送:fd07000400030005ddccbbaa返回:无解析:0x07:前景色取色指令的指令码。智能终端收到该命令后将坐标值为(3,5)的点的颜色设为默认的前景色。设置字符显示模式(0x08)。发送:fd080003010000ddccbbaa背光灯关闭背光灯指令(0x09),发送:fd090000ddccbbaa返回:无系统默认开机自动打开背光灯。打开背光灯指令(0x0a),发送:fd0a0000ddccbbaa返回:无调节背光亮度(0x0b),发送:fd0b000166ddccbbaa返回:无解析:0x7f:为为背光亮度PWM控制设定值PWM_Light,PWM_Light设为0x7f即将背光亮度设为半暗。PWM_Light的取值范围0x00-0xff,值越大背光亮度越大,例如0x00将关闭背光,0x7f将背光调至半暗,0xff将背光调至最亮。工作模式设定(0x0c)发送:fd0c00020005ddccbbaa返回:无解析:0x000x02:用两个字节表示数据长度,本指令只有两个字节的参数:ModePic_num。0x000x05:设定为工作模式0。在工作模式0下,支持32*32点阵汉字(指令0x13)、支持5幅终端图片的保存与调用(指令0x30)。发送:fd0c0002ff12ddccbbaa返回:无0xff0x12:设定为工作模式1。在工作模式1下,支持12幅终端图片的保存与调用(指令0x30)。这是出厂默认设置,与之前版本完全兼容。当指令执行完毕后,彩屏终端会返回Mode的值。字符显示6X10点阵ASCII字符串显示(0x10),首先定义数组:charAscii[]="GoldenPalmElectronicsGroup";发送:fd10002200000000Ascii1[0]…Ascii1[29]ddccbbaa返回:无0x000x00:表示x轴的坐标。0x000x00:表示y轴的坐标。即以(0,0)为显示起始位置开始显示字符串。8X16点阵ASCII字符串显示(0x11),发送:fd11002200000000Ascii1[0]…Ascii1[29]ddccbbaa返回:无16X16点阵GB2312字符串显示(0X12),发送:fd13001500000000GB2312[0]…GB2312[16]ddccbbaa返回:无解析:使用本示例方式显示的字符必须为全角字符。32X32点阵GB2312字符串显示(0X13)首先定义数组:charGB2312[]="通信工程毕业设计"。发送:fd12001500000000GB2312[0]…GB2312[16]ddccbbaa返回:无注意:要能正常使用本功能必须保证:工作在模式0下,32x32字库已正确烧写到终端。画点(0x21)首先定义数组:uint8dot[]={0,5,0,140,0,10,0,140,0,15,0,140,0,20,0,140,0,25,0,140,0,30,0,140,0,35,0,140,0,40,0,140,0,45,0,140,0,50,0,140,0,55,0,140,0,60,0,140,0,65,0,140,0,70,0,140};发送:0xfd0x210x000x38dot[0]…dot[55]0xdd0xcc0xbb0xaa返回:无画圆框或圆域指令(0x26)首先定义数组:uint8circle[]={1,0,160,0,135,5,0,0,180,0,125,5};发送:0xfd0x230x000x10circle[0]…circle[15]0xdd0xcc0xbb0xaa返回:无画矩形框或矩形域指令(0x27)首先定义数组:uint8rectangle[]={0,0,30,0,30,0,90,0,200};发送:0xfd0x270x000x09rectangle[0]…rectangle[8]0xdd0xcc0xbb0xaa返回:无LCD初始化步骤1:使用设置波特率(0x01)命令(fd01000555aa5aa5ffddccbbaa)将通讯波特率改为本终端所支持的最大通讯波特率115200。相应的在串口选择115200,且选中HEX。发送:fd01000555aa5aa5ffddccbbaa返回:ff步骤2:去掉电源后,再次插好,波特率更换成功。步骤3:发送实时满屏显示(0x35)指令(fd350000ddccbbaa)后,返回fc提示可以发送图数据。发送:fd350000ddccbbaa返回:FC

4开发工具介绍4.1IAREWARM开发软件4.1.1简介IAREmbeddedWorkbench是一种有效的基于ARM的嵌入式系统软件开发工具,它不但使用户能够充分有效地进行开发管理嵌入式应用项目,而且其界面类似于MSVisualC++,并且可以在Windows95/98/2000/XP/7等多种平台上运行。IAR中不仅包含了源程序文件编辑器和源程序调试器(Debug)而且还包括项目管理器(Project)等,并且为C/C++编译器、汇编器、链接定位器等提供了单一而又灵活的软件开发环境。其中的文件查找功能可在指定的若干种文件中进行全局文件搜索;IAREW还提供了对第三方工具软件的接口,允许启动用户指定的应用程序[14]。4.1.2项目创建在IAREW集成开发环境中用户需要建立一个工作区(Workspace),用于创建一个或多个项目,每个项目都可以建立以组(Group)为级别的结构,用户的源程序文件可以直接添加到项目中,也可以分别添加到各个组中。在创建项目前,应先创建一个新的工作区。进入IAREW集成开发环境后,选择File→New→Workspace菜单项,即可创建一个工作区。4.1.3IAR项目管理各个项目中可以包含不同的组(Group)和文件(File)模块,并且可以为每个项目进行选项设置[14]。在项目开发过程中任何修改都会被记录,从而保证修改设计时可以获得所有需要的模块。通过目标创建(Make)选项可以很方便地实现对一个IAREW项目进行完整的编译和链接,直接产生最终的应用目标文件,而且可执行文件中不包含已过期的模块。4.1.4集成开发环境的界面分层次的工程组织。同一工作空间中允许存放多个工程。可停靠的窗口和多视图。源代码浏览。创建和维护库的工具。可以和源代码控制系统相集成。文本编辑器。IAREmbededWorkbench的工作界面。1为工作窗口,2是程序源代码窗口,3是反汇编窗口,4是寄存器窗口,5是存储器窗口,其实还可以打开更多的窗口,例如变量窗口等。由此可见IAR为编程人员在调试过程中提供了很大的方便。图4-1调试窗口4.1.5调试器IARC-SPY调试器是IAR可设置复杂的条件断点,具有在任意时刻中断的能力,调试时可选择实时模式,可进行内存验证[14]。图4-2C-SPY调试窗口IARC-SPY调试器使用户能进行C,C++和汇编语言源代码调试、反汇编调试或二者混合调试。采用源代码调试是验证用户应用程序逻辑性正确与否的最快捷、最便利的方式;而反汇编调试则针对应用程序的错误段,并对硬件进行精确控制。在混合显示模式中,调试器显示相应的C/C++源代码及其它对应的反汇编代码清单。4.1.6C/C++编译器IARC/C++编译器是一个具有世界先进水平并具备标准C/C++特性的编译器,与其他IAR系统软件一起集成在IAREW环境之中。IARC/C++编译器的主要特性包括:支持符合ANSIC标准的C/C++编程语言;提供了运行库IARDLLB,其中包含丰富的库函数;同时还支持IEEE754格式的浮点数、多字节参数和局部参数。IARC/C++编译顺提供灵活的变量分配能力,可真接采用C/C++语言编写中断函数,具有针对不同CPU保持可移性的“#pragma”编译命令,支持IAR扩展嵌入式C++特性,例如模板、名称空间、多重虚拟外设、固定操作符(static_cast、const_cast和reinterpret_cast)以及标准模板库(STL)等。支持特殊目标语言的扩展,例如特殊函数的输入、扩展关键字、指示、预设标志、同部函数等。IARC/C++编译器运行速度快,采用面向存储器的设计避免了暂存文件及覆盖技术。编译时进行严格的扩展类型检查,链接时进行严格的模块接口类型检查。IARC/C++编译器采用最优化技术产生高效的目标代码,可选择以代码大小或速度快慢进行目标代码优化。多种输出格式选择,有重定位二进制、汇编源代码和可选的汇编器列表文件等。提供容易理解的错误和警告信息。生成与C-SPY高级调试兼容的扩展调试信息。4.1.7汇编器IAR可以从新置位宏汇编器,兼容很多格式的宏,而且具有很多指示符号和表达式。在IAR中既可以进行C语言的编辑也可以用汇编语言编写程序,并且与其余IAR系统软件相集成。支持外部调用的复杂表达式、每个模块有多达65536个可重定位段、符号可长达255个有效字符。4.2J-LINK仿真器简介图4-3J-LINK仿真器4.2.1J-LinkARM主要特点IAREWARM集成开发环境无缝连接的J-Link仿真器。支持所有ARM7/ARM9内核的芯片,以及cortexM3,包括Thumb模式。支持ADS,IAR,KEIL,WINARM,REALVIEW等几乎所有的开发环境。下载速度高达ARM7:600kB/s,ARM9:550kB/s,通过DCC最高可达800kB/s。最高JTAG速度12MHz。开发板安全电压区间1.2V–3.3V,兼容5V。自动快速识别功能。监测所有J-Link信号和开发板电压。可以实现即插即用。使用USB电源。带USB连接线和20芯扁平电缆。支持多J-Link器件串行连接。标准20芯J-Link仿真插头。选配14芯J-Link仿真插头。带J-LinkTCP/IPserver,允许通过TCP/IP网络使用J-Link。4.2.2J-Link支持ARM内核ARM7TDMI(Rev1)ARM7TDMI(Rev3)ARM7TDMI-S(Rev4)ARM720T/ARM920TARM926EJ-SARM946E-SARM966E-SARM11Cortex-M3表4-1速度信息RevisionARM7MemorydownloadARM9MemorydownloadJ-LinkRev.1-4150.0kB/s(4MHzJTAG)75.0kB/s(4MHzJTAG)J-LinkRev.5-8720.0kB/s(12MHzJTAG)550.0kB/s(12MHzJTAG)J-TraceRev.1420.0kB/s(12MHzJTAG)280.0kB/s(12MHzJTAG4.2.3J-Link在IAR开发环境调试过程在IAR既可以使用IAR提供的JLINK的驱动,也可以使用RDI接口的驱动,推荐使用RDI接口的驱动,因为IAR版本的JLINK对速度和功能做了限制。首先打开一个工程,然后按照下图开始进入设置页面:图4-4选项设置界面图4-5选项设置界面

5程序设计5.1LPC1768芯片底层代码ARM芯片开发应用的重要环节之一底层开发,即用汇编和C语言混合编程来启动代码,系统配置及部份启动代码程序如下:config.h#ifndef__CONFIG_H#define__CONFIG_H#ifndefTRUE#defineTRUE1#endif#ifndefFALSE#defineFALSE0#endiftypedefunsignedcharuint8;/*无符号8位整型变量*/typedefsignedcharint8;/*有符号8位整型变量*/typedefunsignedshortuint16;/*无符号16位整型变量*/typedefsignedshortint16;/*有符号16位整型变量*/typedefunsignedintuint32;/*无符号32位整型变量*/typedefsignedintint32;/*有符号32位整型变量*/typedeffloatfp32;/*单精度浮点数(32位长度)*/typedefdoublefp64;/*双精度浮点数(64位长度)*/#include"nxp/iolpc1768.h"#include"stdio.h"#include"intrinsics.h"//ARM核特征头函数/*****************************************************************************系统时钟配置:Fosc、Fcclk、Fcco、Fpclk/*****************************************************************************/#defineFosc12000000//时钟频率:12MHz(晶振频率范围:10MHz~25MHz)。#defineFcclk(Fosc*5)//系统时钟:60MHz(系统频率范围:Fcclk=(1~32)*Fosc,且<=60MHZ)。#defineFcco(Fcclk*4)//流控振荡频率:240MHz(允许频率范围:Fcco=156MHz~320MHz,且必须为Fcclk的2、4、8、16倍)。#defineFpclk(Fcclk/4)*2//外设时钟频率:30MHz(Fpclk必须为(Fcclk/4)的1、2、4倍,且不能高于Fcclk)。#defineKOM_HIO1SET_bit.P1_24=1;#defineKOM_LIO1CLR_bit.P1_24=1;voidZLG7289_cmd_dat(charcmd,chardat);voidZLG7289_Init();#endif部份启动代码MODE_MSKDEFINE0x1F;//设置比特位CPSR模式USR_MODEDEFINE0x10;//用户模式FIQ_MODEDEFINE0x11;//快速中断请求模式IRQ_MODEDEFINE0x12;//中断请求模式SVC_MODEDEFINE0x13;//管理模式ABT_MODEDEFINE0x17;//终止模式UND_MODEDEFINE0x1B;//未定义模式SYS_MODEDEFINE0x1F;//系统模式mrsr0,cpsr;//原始PSR值bicr0,r0,#MODE_MSK;//清除模式位orrr0,r0,#SVC_MODE;//设置管理模式位msrcpsr_c,r0;//改变模式ldrsp,=SFE(SVC_STACK);//SVC_STACK结束bicr0,r0,#MODE_MSK;//清除模式位orrr0,r0,#ABT_MODE;//终止模式设置位msrcpsr_c,r0;//改变模式ldrsp,=SFE(ABT_STACK);//ABT_STACK结束bicr0,r0,#MODE_MSK;//清除模式位orrr0,r0,#UND_MODE;//未定义模式设置位msrcpsr_c,r0;//改变模式ldrsp,=SFE(UND_STACK);//UND堆栈结束bicr0,r0,#MODE_MSK;//清除模式位orrr0,r0,#FIQ_MODE;//设置有限脉冲响应位msrcpsr_c,r0;//改变模式位ldrsp,=SFE(FIQ_STACK);bicr0,r0,#MODE_MSK;//清除模式位orrr0,r0,#IRQ_MODE;//设置中断请求位msrcpsr_c,r0;//改变模式位ldrsp,=SFE(IRQ_STACK);//结束中断请求堆栈bicr0,r0,#MODE_MSK;//清除模式位orrr0,r0,#SYS_MODE;//设置系统模式位msrcpsr_c,r0;//改变模式位ldrsp,=SFE(CSTACK);//结束堆栈类5.2主程序图5-1主环路程序代码:#include"nxp/iolpc1768.h"#include"type.h"#include"irq.h"#include"target.h"#include"intrinsics.h"#include"hw.h"#include"hmi.h"intmain(void){uint8lines[]={0xfd,0x23,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x10,0x00,0x90,0xdd,0xcc,0xbb,0xaa};//画线数组uint8addrxy1[]={0xfd,0x23,0x00,0x08,0,160,0,45,0,160,0,20,0xdd,0xcc,0xbb,0xaa};//uint8addrxy1[]=uint8state=0;//界面状态变量定义、赋值uint16touch_x=0x0;//触摸点X坐标变量定义/赋(任意)初值uint16touch_y=0x0;//触摸点Y坐标变量定义/赋(任意)初值uint8pic_id=0x1f;//图片编号变量定义、赋值uint8option3=0x3;//二级目录启动停止判断TargetResetInit();//目标板初始化UART1_Init();//UART1初始化DelayMS(100);//用于做其他处理或延时,使得彩屏终端上电完SetColor(0x6781F,0x06ff);//白底蓝WaitNoBusy();//LCM空闲判跳DisPicture(2);//显示第1幅图片SetColor(0x9152,0x6eff);ClearScreen();//清屏(调色板设置后必须清屏)DelayMS(10);PutString(10,10,0x12,"二零一二界毕业设计");DelayMS(100);PutString(65,60,0x13,"基于物联网的");DelayMS(100);PutString(100,100,0x13,"安保系统");DelayMS(100);PutString(170,190,0x12,"西安欧亚学院");DelayMS(100);PutString(150,210,0x12,"通信工程四人小组");DelayMS(3000);PageMenu();//菜单函数for(;;)//循环体{WaitNoBusy();//无触摸判跳switch(state)//散转(条件跳转){//主菜单界面case0:if(GetTouchValue(&touch_x,&touch_y))//触摸判断,返回触摸值{pic_id=GetTouchID(touch_x,touch_y);//获得图片ID,同时改变颜色if(pic_id<12)//ID边界判跳{Page2();panbie(pic_id);state=1;//跳转界面状态}elsebreak;}break;case1:if(GetTouchValue(&touch_x,&touch_y)){option3=TouchValid(touch_x,touch_y);{if(option3==0){Page2();state=panbie_bt(pic_id);}elseif(option3==1){Page2();panbie(pic_id);state=1;}elseif(option3==2){WaitNoTouch();DelayMS(15);//延时state=2;}elseif(option3==3){WaitNoTouch();DelayMS(15);//延时state=2;}else{WaitNoTouch();state=1;}break;}}break;//在下级界面中被按了返回键case2:PageMenu();state=0;break;default:break;}}}5.3系统初化设计(1)程序流程图图5-2系统初始化(2)程序源代码voidsystem_init(){/*VPB分频系数配置*/PLLCON=1;//PLL使能(开启)#if((Fcclk/4)/Fpclk)==1//VPB总线时钟为处理器时钟的1/4时VPBDIV=0;//VPB分频器设置为0#endif#if((Fcclk/4)/Fpclk)==2//VPB总线时钟为处理器时钟的1/2时VPBDIV=2;//VPB分频器设置为2#endif#if((Fcclk/4)/Fpclk)==4//VPB总线时钟与处理器时钟相同VPBDIV=1;//VPB分频器设置为1#endif/*PLL倍频/分频值自动配置*/#if(Fcco/Fcclk)==2//流控振荡频率是系统频率的2倍时PLLCFG=((Fcclk/Fosc)-1)|(0<<5);//PLLCFG配置寄存器,4:0PLL倍频器值,6:3分频器值。#endif#if(Fcco/Fcclk)==4PLLCFG=((Fcclk/Fosc)-1)|(1<<5);#endif#if(Fcco/Fcclk)==8PLLCFG=((Fcclk/Fosc)-1)|(2<<5);#endif#if(Fcco/Fcclk)==16PLLCFG=((Fcclk/Fosc)-1)|(3<<5);#endifPLLFEED=0xaa;//PLL馈送寄存器使PLLCOM/PLLCFG的值更改生效。PLLFEED=0x55;while((PLLSTAT&(1<<10))==0);//等待PLL锁存PLLCON=3;//将PLL作为时钟源连接到微控制器。PLLFEED=0xaa;PLLFEED=0x55;//存储器加速配置MAMCR=0;#ifFcclk<20000000MAMTIM=1;#else#ifFcclk<40000000MAMTIM=2;#elseMAMTIM=3;#endif#endifMAMCR=2;//VIC初始化VICIntSelect=0;VICIntEnClear=0xFFFFFFFF;VICSoftIntClear=0xFFFFFFFF;VICProtection=0;VICVectAddr=0;VICDefVectAddr=0;}5.4UARTO初始化(1)程序流程图图5-3程序流程图(2)程序源代码voiduart0_init(){uint32baud=115200;U0LCR=0x83;//数据格式设置(字长、停止位、奇偶选择/校验位)/除数锁存器访问使能。U0DLM=((Fpclk/16)/baud)/256;//除数锁存器高字节计算。U0DLL=((Fpclk/16)/baud)%256;//除数锁存器低字节计算。U0LCR=0x03;//数据格式设置/除数锁存寄存器访问禁能。}5.5GPIO模块程序GPIO控制蜂鸣器程序代码:voidDelayNS(uint32dly){uint32i;for(;dly>;dly--)for(i=0;<5000;i++)}/*******************************名称main()功能控制蜂鸣器蜂鸣*******************************intmain(void){PINSEL0=0x00000000;IO0DIR=BEEPCON;while(1){IO0SET=BEEPCON;DelayNS(10);IO0CLR=BEEPCON;DelayNS(10);}return(0);}5.6RTC模块实时时钟日历RTC程序代码:intmain(void){TargetResetInit();/*初始化RTC模块*/RTCInit();local_time.RTC_Sec=0;local_time.RTC_Min=0;local_time.RTC_Hour=0;local_time.RTC_Mday=8;local_time.RTC_Wday=3;local_time.RTC_Yday=12;/*当前时间03/12/2012*/local_time.RTC_Mon=03;local_time.RTC_Year=2012;RTCSetTime(local_time);/*设置当前时间*/alarm_time.RTC_Sec=0;alarm_time.RTC_Min=0;alarm_time.RTC_Hour=0;alarm_time.RTC_Mday=1;alarm_time.RTC_Wday=0;alarm_time.RTC_Yday=21;/*报警时间03/21/2012*/alarm_time.RTC_Mon=3;alarm_time.RTC_Year=2012;RTCSetAlarm(alarm_time);/*设置报警时间*//*主要用于安装RTC定时器处理报警控制*///if(install_irq(RTC_INT,(void*)RTCHandler,HIGHEST_PRIORITY)==FALSE)//此处报错{while(1);/*verybadhappened*/}/**maskoffalarmmask,turnonIMYEARinthecounterincrementinterruptRegister**/RTCSetAlarmMask(AMRSEC|AMRMIN|AMRHOUR|AMRDOM|AMRDOW|AMRDOY|AMRMON|AMRYEAR);//CIIR=IMMIN|IMYEAR;//此处报错/*2012/03/21/00:00:00在此时报警*/RTCStart();while(1){/*进入死循环*/current_time=RTCGetTime();if(alarm_on!=0){alarm_on=0;/*在现在的时间报警*/current_time=RTCGetTime();}}return0;}5.7触屏操作界面模块uint16touch_x=0x0;//触摸点X坐标变量定义/赋(任意)初值uint16touch_y=0x0;//触摸点Y坐标变量定义/赋(任意)初值/**************************框内字符显示**************************/PutString(105,20,0x12,"测控模块功能界面");PutString(10,75,0x13,"一路检测");PutString(180,75,0x13,"二路检测");PutString(10,165,0x13,"三路检测");PutString(180,165,0x13,"四路检测");}/*******************************************************************函数名称:GetTouchID()函数功能:主界面触摸数据判跳。入口参数:x,y坐标数据。返回参数:图片编号(据此判断触摸信息,确定按下的区域)。*************************************************************/uint8GetTouchID(uint16x,uint16y){if(x>=10&&x<=110){if(y>=50&&y<=100)return0;elseif(y>=140&&y<=190)return2;}elseif(x>=180&&x<=300){if(y>=50&&y<=100)return1;elseif(y>=140&&y<=190)return3;}/*****************************************************************/voidPage2(void){uint16Rectangles2[]={//x_sy_sx_ey_e//矩形坐标15,65,87,101,//0组坐标15,121,87,157,//1组坐标15,177,87,213,//2组坐标120,60,300,220//3组坐标};/*********************矩形框&字符前景/背景色设置****************/SetColor(0x9152,0x0eff);//矩形框前景/背景色设置ClearScreen();//清屏(调色板设置后必须清屏)DrawRectangles(Rectangles2,4);//画矩形框组:共3组(利用指针实现)SetColor(0xffd0,37768);//字符前景/背景色设置SetC

温馨提示

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

评论

0/150

提交评论