已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
小车电子产品显示系统毕业论文1 绪论 目前,科学技术处于不断的发展当中,电子产品日益更新,已经成为我们生活中必不可少的一部分,不论是日常生活还是工业应用等等,都已经与电子技术紧密的联系在一起。从瓦特发明蒸汽机开始,世界技术已经进入到了一个新的时期,伴随着第一台计算机的出世,科学技术就有了一个飞跃,伴随着科学技术的提高,而显示技术也应用广泛起来,从而提高了人民的生活水平。而今,随着信息社会的发展,在工业应用方面,显示系统也已经广泛的应用于各个领域。诸如温度检测的显示系统、智能仪表的显示系统等服务于社会的各行各业。在主控硬件开发方面,ARM微控制器已被广泛应用。ARM(Advanced RISC Machines)微处理器是Acorn计算机有限公司面向低预算市场设计的第一款RISC微处理器,更早称作Acorn RISC Machine。ARM处理器本身是32位设计,但也配备16位指令集。一般来讲,比等价32位代码节省达35,却能保留32位系统的所有优势,具有很高的性价比。ARM处理器是一种性能高、成本低的微处理器,具有很高的实用性,ARM的Jazelle技术使Java加速得到比基于软件的Java虚拟机 (JVM)高得多的性能,和同等的非Java加速核相比功耗降低80。同时ARM处理器的CPU功能上增加DSP指令集提供增强的16位和32位算术运算能力,提高了性能和灵活性。而且ARM还提供两个前沿特性来辅助带深嵌入处理器的高集成SoC器件的调试,它们是嵌入式ICE-RT逻辑和嵌入式跟踪宏核(ETMS)系列。由于一系列的优点使得ARM微处理器具有很高的市场占有率,使得ARM处理器得以被广泛的应用于生活和科研中1。在软件开发方面,IAR软件是一款主流的开发集成环境软件,其中IAR为所有ARM开发者带来很大的益处,IAR Systems为所有使用ARM MCU的开发者提供了业界最领先的集成开发环境:IAR Embedded Workbench for ARM; 它支持很多知名公司的微处理器。它带有高度优化的C/C+编译器和先进的C-SPY调试器。此外,JTAG硬件调试工具IAR J-Link也帮助成千上万的开发者解决了在使用ARM MCU进行开发过程中的许多问题,使得用户能够在IAR Embedded Workbench for ARM软件中进行全面的开发和调试。全球很多著名的公司都在使用IAR SYSTEMS提供的开发工具,用以开发最前沿的科技产品,从手机应用系统到航天航空、消费电子及工业制造等等2。目前的显示系统,在各个领域都有广泛的应用,尤其是在一些公共场合,像室外液晶显示,机场航班动态信息显示,证券交易、金融信息显示港口、车站旅客引导信息显示,体育场馆信息显示道路交通信息显示,调度指挥中心信息显示,电力调度、车辆动态跟踪、车辆调度管理,邮政、电信、商场购物中心等服务领域的业务宣传及信息显示,这些足以证明,显示系统在我们当今的生活中变得越来越重要。图1 整体框图2 系统设计ARM控制器(LM3S811)外 部数 据数据接 收数据处 理中断处 理内部数 据数据处 理数据传 输12864显示器2.1 整体设计本设计是以德州仪器半导体技术有限公司LM3S811为主控芯片,12864LCD为显示模块及其他外围电路共同工作,实现对欢迎词及外部数据的实时显示。首先,控制器从传感器采集到各参数的数据,数据经过初步处理,在液晶上分为4行同步显示出来。由于主控芯片可以工作在中断方式,如果有串行中断到来,控制器会利用中断与主控制芯片进行通信,把数据传送到显示器,实现了数据的实时显示。2.2 显示模块选择1602 液晶显示器采用57点阵,可以显示2行,每行16个字。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”3。 12864LCD 显示器 (LCD) 具有功耗低、体积小、重量轻、超薄等,其它显示器无法比拟的优点,近年来被广泛用于单片机控制和微控制器控制的智能仪器、仪表和低功耗电子产品中。LCD主要分为段位式LCD、字符式LCD和点阵式LCD三种,其中段位式 LCD和字符式LCD只能用于字符和数字的简单的显示,而不能满足图形曲线和汉字显示的要求,在很多方面有很大的弊端;而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线和汉字,像12864TH点阵式液晶显示模块就可以显示汉字、图片,还可以显示自定义字符,是1602所不具有的功能4。 由于本设计需要显示汉字、图形等,用1602显示模块及其他简易的显示器已经不能满足本设计的需求,因此本文选用了12864(12864)LCD显示器,它是128(列)64(行)点阵的 LCD 显示模块。在该系统中,通过LM3S811微控制器输入输出接口,利用C语言编程控制输入输出端口的高低电平,根据时序,以实现对LCD的控制,使得所需显示的数据以及功能得以在LCD显示模块上显示。3 硬件设计3.1 元件的创建 由于在Protel5画图时库中没有找到LM3S811和12864的元件,因此在画原理图的过程中,自己创建了元件如图2: 图2 LM3S811原理图图2为LM3S811元件,在创建的过程中,把管脚标识放在外面,影响原理图的连接及效果,如果要把管脚标识放在里面,需要对管脚的属性进行调整,在protel里面的操作为:点击Place选择Pins,双击放置的管脚,根据管脚需要的标识改动name,管教的标号number,再根据上下左右需要选择Orientatic(如左边管脚选择180,右边0,上下分别为90和270),最终得到了LM3S811元件如图。希望能给以后的元件制作带来一些借鉴。图3则是12864元件图,共有20个引脚,经历了LM3S811的创建,此12864就方便了很多,其引脚功能后面有描述。 图3 12864原理图3.2 主控芯片LM3S811LM3S811有48个引脚,其大部分引脚具有复用功能,如LM3S811用作JTAG的五个管脚,同时也可以作为GPIO使用,这是LM3S811的一个缺点,但同时也是它的一个优点,由于JTAG被用来下载(烧写)程序使用,再用作GPIO可能会使得芯片锁死,这是它的缺点;但同时,它有防锁死的措施,如果使用者细心加上防锁死程序,或者在不需要使用太多GPIO的情况下,可以尽量不用这五个管脚,如果需要,那么在加上防锁死程序后,就有五个GPIO管脚可以复用,这是它的一大优点。在LM3S811中,有很多功能模块,比如串口,可以应用在调试过程中,一个USB虚拟串口和一个实际串口,通过串口调试器的调试,在电脑上可以看到输入输出的结果,同时对照硬件的工作情况,可以更直观得到运行结果。在本设计中,定时器是必不可少的一部分,因为在小车的运动中,需要显示其运动总时间。LM3S811支持多种定时模式,主要有以下三种,32-位定时器模式、16-位定时器模式、16-位输入捕获模式。LM3S811的功能模块很多,其中主要有JTAG、UART(串口)、PWM(脉冲宽度调制)、Timer(定时器)、ADC(模数转换)等等,在LM3S811的DATASHEET里面有详细解释。本设计主要使用GPIO端口为主,通过模拟同步串行时序来对显示模块进行控制。3.2.1 LM3S811申请在设计的过程中,通过LM3S811的熟悉,同时也了解了其生产厂家Ti公司的情况,该公司提供给大学生免费的LM3S811芯片,登录,进行信息注册,得到公司的认可后,进行登录,再对样片进行选择,通过审核,公司就会发货给我们。公司发货给我的通知单:图4 LM3S811申请图3.2.2 GPIO(通用输入输出端口)LM3S8116中有五个GPIO端口,分别为PORTA、PORTB、PORTC、PORTD及PORTE。其中各个端口所拥有的引脚数不相同,PE口具有两个引脚,在不作通用输入输出用时,此两个引脚作为脉冲编码调制使用,而PA口有六个管脚,在不作为GPIO使用时,它是作为SSI和UART两个功能模块使用的。在LM3S811芯片的引脚中,很多都具有复用功能,这也是的芯片的可用性有了很大的提高。在作为通用输入输出端口时,其中的PB7及PC0PC3一般不要使用,因为此五个引脚通常是用于JTAG的,它是用作烧写程序的,一旦被使用,可能芯片在执行命令时会出现无法估计的错误,导致把芯片锁死,无法再次使用。3.3 显示模块12864LCD本设计使用的是TH12864显示模块,如图3所示。TH12864 液晶显示模块是128 64点阵的汉字图形型液晶显示模块,可显示中文汉字及字符,且内含图形库,可显示自定义字符,内置国标GB2312码简体中文字库(1616 点阵)、128个字符(816 点阵)及64256 点阵显示RAM(GDRAM)。与外部 CPU 接口采用并行或串行两种控制方式。其中TH12864的供电电源有3.3V和5V的,在本设计中使用的是3.3V。其引脚说明如下7:在本小车显示系统的设计中共使用了6条12864管脚与LM3S811进行连接,其12864 表1 12864引脚说明 引脚名称方向说明 1 VSS -GND(0V) 2 VDD - Supply Voltage For Logic(+3.3V) 3 V0 -Supply Voltage For LCD 4 RS(CS) 0H:Data L:Instruction Code 5 R/W(SID) 0H:Read L:Write 6 E(SCLK) 0Enable Signal7-14 DB0-DB7 |数据0-数据7 15 PSB 0H:Parallel Mode L:Serial Mode 16 NC -空脚 17 /RST 0Reset signal 低电平有效 18 NC -空脚 19 LEDA -背光电源正极(LED+3.3V) 20 LEDK -背光电源负极(LED-0V)的引脚为1、2、4、5、6、15,其中1、2两条分别是接地和电源(3.3V);4引脚在串行状态下为12864的芯片选择端,控制12864到底是使用还是禁止,高电平有效,并行状态下为12864的数据、命令选择端,高电平为数据端,低电平为命令端;5引脚在串行状态下12864的数据传送端,并行状态下为读写控制端,高电平读,低电平写;6引脚串行状态下为12864的同步时钟引脚,并行状态下为信号使能端;15引脚为设置12864为并行还是串行模式,高电平为并行,低电平为串行,在本设计中使用串行模式,低电平有效。3.4供电部分图5 电源原理图 图5是TLV1117供电电源的原理图,由于常用稳压电源为5V,而LM3S811主控芯片与12864显示模块所需的供电电压为3.3V,所以需要供电电源对电压进行转换,以匹配两者所需的不同电压值。通过TLV1117给芯片供电,使得电路得以正常运行。3.5 其他外设LED:图6是发光二极管与主控芯片的连接,发光二极管作为LM3S811的一个外围设备,在设计调试的过程中起着很重要的作用,在给LM3S811的36引脚(PWM5)高电平的时候,发光二极管导通,开始发光,在36引脚为低电平时截止,二极管熄灭。发光二极管在调试程序的时候起着很重要的作用,在没有完成显示系统的连接时,可以根据LED的闪光来调试程序。需要注意的是:需要将JP3的跳线接上,保证硬件电路的接通,很多人容易忽略这一点。 图6 LED原理图 图7 按键原理图按键:图7按键与LM3S811的连接,在LM3S811中,按键是必不可少的一部分,按键可以作为防锁死和普通的按键使用。由于LM3S811的JTAG管脚可以与GPIO复用,所以可能导致JTAG的五个管脚被作为GPIO使用,致使程序跑死后,下一次无法继续使用该芯片,所以有了防锁死程序,在这种情况下,锁死了以后需要进行解锁,就可以按下按键,使得JTAG处于等待中,进而可以继续使用。另外,此按键在作为JTAG使用完后,可以作为普通按键使用,比如在时间程序中,按下键以后开始计时,再次按键,则停止计时。此按键与LM3S811连接时,在按键无效时,43(PB5)引脚为高电平时,按键处于断开状态;在按键有效时,43引脚为低电平时,按键导通。3.6 芯片连接本设计使用德州仪器有限公司的LM3S811控制芯片作为控制器 , 该控制器有功能很齐全的调试解决方案,内部有串行线JTAG调试端口 (SWJ-DP)、Flash 修补和断点(FPB)单元,用于实现断点操作、数据观察点和触发(DWT)单元,用于执行观察点、触发源和系统性能分析、仪表跟踪宏单元(ITM)用于支持printf 型调试、跟踪端口接口单元(TPIU)用作跟踪端口分析仪的桥接8。TH12864 液晶显示器与外部 CPU接口有两种控制方式,本设计采用的是串行方式, 因此利用控制器的GPIOB端口作为与TH12864连接的接口,用PB2与12864的4(12864的串行片选端)引脚进行连接,对显示模块是否工作进行选择;PB4与12864的5(串行数据传输端)引脚进行连接;PB6控制时钟,与12864的6引脚进行连接,控制12864传输每个字符为多少个脉冲;12864的第15引脚为选择串行或者是并行工作方式,与主控芯片LM3S811的地线进行连接,使其置为低电平,为串行工作方式。另外,主控芯片可以从外部传感器获得数据,通过LM3S811的控制读取,处理,传送,最终可以同内部数据一样得以在显示模块上显示出来。LM3S811与TH12864的接线如图8所示。 图8 LM3S811与12864连接图LM3S81112864PB2PB4PB6RS/CSR/W/SIDE/SCLK外部数据PD2、图9 芯片连接框图 与此同时,12864显示模块的3、18、19、20引脚也在显示系统中起着很 重要的作用,其中19、20引脚分别为12864模块的背光电源正负极,19引脚连接到LM3S811的电源,20引脚接地,使得显示模块得以亮起来。图9为芯片连接框图。4 软件设计4.1 IAR软件IAR是全球领先的嵌入式系统开发工具和服务供应商。IAR Systems成立于1983年,到目前为止,已经有27年的历史,它所提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括带有C/C+的编译器和调试器的集成开发环境、实时操作系统、硬件仿真器等。IAR Systems公司总部在北欧的瑞典,在美国、日本、巴西、中国等国家设有分公司,他最著名的、被广泛应用的产品是C编译器-IAR Embedded Workbench,它支持很多知名公司的微处理器。全球很多著名的公司都在使用IAR SYSTEMS提供的开发工具,用以开发最前沿的科技产品,从手机应用系统到航天航空、消费电子及工业制造等等。2003年6月,IAR Systems传入中国,在中国成立办事处;2007年5月,成立了爱亚软件技术咨询(上海)有限公司,加强了对中国办事处及部分东亚国家的产品销售和技术支持,至此,国内开始正式引用该软件9。4.1.1 IAR的下载(1) 登陆IAR公司的网站:。(2) 点击“下载”,出现下载版本选择界面如图11所示,由于IAR EWARM试用版有:30天功能无限制版本、32K代码限制版本,32K代码限制版的优点是在使用时间上无限制。点击ARM一栏32K限制版,出现软件下载确认页面点击左下角的“continue”,出现注册信息页面,输入注册信息。注意需在“Chip manufacture”中选择“Texsas instruments”图10 EWARM 下载版本选择 (3) 填完全部选项后,点击“Submit Registion”,会出现注册成功的页面如图11:图11 注册成功页面提示(4) 稍过一会,可收到IAR系统发出的确认邮件,点击页面中的链接,在弹出的页面中,获得IAR提供的试用版序列号和密钥,如图12,点击页面中的“Download from”中的链接便可下载安装程序。图12 EWARM 提供的序列号及密钥4.1.2 IAR安装(1) 下载完IAR开发软件,找到安装文件,双击安装程序“EWARM-KS-WEB-5501”,启动安装。(2) 在安装页面中,点击Install IAR Embedded workbench,开始安装。在安装过程中,需要输入试用版序列号和密钥在下载过程中得到,输入完成后,点击Next继续安装。(3) 安装完成后,点击Finish,结束安装。4.1.3 IAR文件的创建、使用(1) 先创建一个工程文件目录,用来存放工作区文件、工程文件及源文件10。以时间显示为例,存放于D:qclshijian目录下。(2) 启动IAR EWARM(3) 创建“shijian”项目 打开IAR EWARM,在工作区内新建项目:1) 点击“project”,选择“Creat new project”。2)默认选择ARM和Empty project,创建一个基于ARM得空项目。3)保存项目,设置其名称为shijian.ewp。(4) 创建文件组 项目创建完成后,在项目中添加三个文件组lib、src、startup,用于存放不同类型的源文件。1) 右击项目名称,点击“add”,选择“add group”,在弹出的add group对话框中输入文件组的名称,如图13:图13添加文件组名称2) 向文件组中添加文件,右击文件组名,单击“add”,选择“add files”,添加所需文件,比如lib文件组中的driverlib.a,是任何一个项目中必不可少的,路径为:C:stellarisWaredriverlibewarmExe。如图14:图14 添加文件driverlib.a另一个必不可少的文件为startup_ewarm.c,需添加在startup文件组下,其路径为C:stellarisWareboardsek-lm3s9b92hello。此文件需复制到新项目的文件夹下,再添加到startup文件组 3) 在本例中,直接向源程序添加“shijian.c”及其它程序,添加完成后,如图15所示:图15 项目主页面 (5) 项目属性设置 在完成前两步之后,对项目进行设置,右击“shijian-Debug”,弹出如图16窗口:图16 项目属性设置窗口 1) 通用选项设置 点击General Options选项,在Target选项下,点击Device,在右侧选择Texas Insruments、LM3S811。 2) C/C+编译器设置点击Preprocessor选项卡,添加Include文件目录,如图17所示:添加C:stellarisWaredriverlib、C:stellarisWareinc等。图17 C/C+ Compiler设置 3) Output Converter设置 在Output选项卡中,勾中General additional output,在output format里选择binary,再勾中override default。这样在编译时会自动生成二进制文件shijian.bin,方便下载。 4) Linker选项设置 勾中override default,在选择添加D:qclshijianLM3S811.icf。在List选项中选择generate linker map file,生成MAP文件。 5) Debugger选项设置 在setup里面的driver选项选择LMFTDI;在download下勾中verify download和use flash load。 6) LMI FTDI 设置 在Interface下选择JTAG,在JTAG里选择100KHz。(6) 编译、下载 若代码经过调试、编译没有问题,可以下载仿真,编译调试界面如图18:图18 编译调试4.2 控制显示在显示系统中,我们通过主控芯片LM3S811对12864显示模块进行控制,通过12864显示模块对主控芯片的命令进行读取,得到需要显示的数据或者指令,对所需显示的数据进行显示。12864液晶显示模块的每一个字符分为三个字节进行传送,其串行传送过程如图19: 图19 串行时序图 串行数据传送分三个字节完成: 第一个字节:串口控制格式为 11111ABC A为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCD B为数据类型选择:H表示数据时显示数据,L表示数据是控制指令 C固定为0 第二个字节: 8位数据的低4位格式为 DDDD0000 第三个字节: 8位数据的高4位DDDD0000 在本设计中使用了如上的串行传送方式,每一个数据分三个字节进行传送,其中第一个字节的前五位与最后一位为固定的1或0,第六位控制数据的传送方向,第七位对传送的数据类型进行选择;第二个字节开始对具体数据进行传送,首先传送的是数据的高四位,经过第二个字节的传送,就完成了对数据的高四位的传送,第三个字节就对数据的第四位进行了传送,至此,一个完整的数据得以传送成功。 以下是对几个基本的在设计中用到的具体指令集的介绍11: (1) 清除显示CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLLH 功能:清楚显示屏幕,把DDRAM位址计数器调整为“ 00H”(2) 显示状态 开/关CODERW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLHDCB功能:D=1:整体显示ON C=1:游标ON B=1:游标位置ON(3) 功能设定CODERW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLHDLX0 REXX 功能:DL=1(必须设为1)RE=1:扩充指令集动作 RE=0:基本指令集动作(4) 位址归位CODERW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLHX功能:把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM(5) 反白选择CODERW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLHR1R0功能:选择4行中任意一行作反白显示,并可以决定反白的与否。其中R1R0为00是表示第一行反白与否,01表示第二行的反白与否,依此类推。下面是一段字符传送程序,即一个字符是如何分为三个字节传送的:void Send(uchar type,uchar transdata)uchar firstbyte = 0xf8;/synchronizing bit stringuchar temp;uchar i,j = 3; if(type) firstbyte |= 0x02; GPIOPinWrite(cy_PORT, cyCS, 0xFF); GPIOPinWrite(cy_PORT, cyCLK, 0x00); while(j 0) if(j = 3) temp = firstbyte; /Synchronizing bit string else if(j = 2) temp = transdata&0xf0; /1st byte = Higher Data else temp = (transdata 0;i-)if(temp & 0x80) GPIOPinWrite(cy_PORT, cySID, 0xFF); else GPIOPinWrite(cy_PORT, cySID, 0x00); GPIOPinWrite(cy_PORT, cyCLK, 0xFF); temp = 1; GPIOPinWrite(cy_PORT, cyCLK, 0x00);if(j = 3) SysCtlDelay(600 * (TheSysClock/ 3000000); / 延时约600us else SysCtlDelay(200 * (TheSysClock/ 3000000); / 延时约200us j-; GPIOPinWrite(cy_PORT, cySID, 0x00); GPIOPinWrite(cy_PORT, cyCS, 0x00);4.2.1 汉字显示在12864显示模块中,带有中文字库,可以显示汉字,下面的程序就是汉字显示的主程序,它显示的是8行汉字,由于12864显示模块为128*64,即可以显示四行汉字,每行可以显示八个汉字,所以通过循环显示,每次显示四行,完成八行汉字的显示。void main(void) jtagWait(); / 防止JTAG失效,重要! clockInit(); / 时钟初始化:晶振,6MHz /初始化指针数组 ptr0 = h0; ptr1 = h1; ptr2 = h2; ptr3 = h3; ptr4 = h4; ptr5 = h5;ptr6 = h6;Ini_Lcd(); / 初始化液晶 unsigned char tmp; for(;) tcnt+; if(tcnt = 0x02) Disp_HZ(0x80,ptrd1,8); Disp_HZ(0x90,ptrd2,8); Disp_HZ(0x88,ptrd3,8); Disp_HZ(0x98,ptrd4,8); tmp = d4; d4+; if(d4 = 7) d4 = 0; d1 = d2; d2 = d3; d3 = tmp; tcnt = 0; SysCtlDelay(1000 * (TheSysClock/ 3000); / 延时约1000ms 4.2.2 图片显示 12864显示模块可以显示图片,由于在显示图片的过程中,需要根据图片的内容来控制128*64个点的每个点的高低电平,从而达到显示图片的效果,在这里我非常感谢晓奇提供的液晶显示字模提取系统,给予了我很大的方便,在实现显示延大校徽的时候,通过图形编辑器对图片进行处理处理,先用魔棒对图片部分进行选择,再根据需要调整图片的饱和度、色度以及黑白、锐化等,最终使用晓奇提供的液晶显示字模提取工具对图片进行字模提取,在图片编辑和提取的过程中,需要注意的是图片的大小必须是128*64的,在提取的界面中,参数书设定为128*64,才可以得到正确的显示内容,否则会出现显示器显示出来为乱码的情况,如图20是字模提取的显示结果: 图20 提取的图片 4.2.3 按键中断控制时间显示 在小车显示系统的设计中,根据需要,对时间的显示是必不可少的一部分内容,其中要对总时间显示。在时间显示中,需要用到的功能主要为定时器,在定时的过程中,把秒转换成我们平时所见的时分秒的形式,由于是小车时间显示,所以需要在小车启动的时候,开始计时,在小车停止的时候,停止计时。所以就需要设置按键,在按下键时,开始计时,再次按键时,停止计时,在三次按键时,由于对变量eiTi进行清零处理,因此从零开始再计时。从而达到可以计出每次小车运行的总时间。如下是按键计时的流程图和部分源程序:t=1启 动 动GPIO中断处理停止t=0if(t=0) t=1;if(t=1) t=0;按 键计 时图21 按键计时void GPIO_Port_B_ISR(void) unsigned char ucVal; unsigned long ulStatus; ulStatus = GPIOPinIntStatus(KEY_PORT, true); /读取中断状态 GPIOPinIntClear(KEY_PORT, ulStatus); /清除中断状态,重要 if (ulStatus & KEY_PIN) /如果KEY的中断状态有效 SysCtlDelay(10 * (TheSysClock /3000); /延时约10ms,消除按键抖动 while (GPIOPinRead(KEY_PORT, KEY_PIN) = 0x00) ; SysCtlDelay(10 * (TheSysClock /3000); /延时约10ms,消除松键抖动 if(t=0) t=1; TimerLoadSet(TIMER0_BASE, TIMER_A, 60000); /定时1s TimerEnable(TIMER0_BASE, TIMER_A); /使能Timer计数 GPIOPinWrite(LED_PORT, LED_PIN, 0xFF);/点亮LED,定时开始 eiTi=0; /三次按键后时间清零 else if(t=1) t=0; 进入程序for定 时1S按 键中断处理eiTi+否是eiTi换算为时分秒的形式显 示 按 键停 止 图22 时间显示流程 在启动程序之后,对GPIO、定时器、中断进行一系列的设置,再通过for循环显示出小车运行的总时间,再通过处理使得时间以x时x分x秒的形式显示出来。进入for循环之后,第一次按键之后,设置定时器定时为1秒,即每隔一秒进入中断一次,变量eiTi将增加1,LED将翻转一次,计时器开始计时。流程图见图22:/ 计算并显示 eiHo=eiTi / 3600; n=eiTi %3600; eiMi=n/60; eiSe=n%60; Disp_HZ(0x88,cstr,8); sprintf(cbuf, 时间:%dS,%d , eiTi,i); sprintf(cstr, 时钟%2d时%2d分%2d秒 ,eiHo,eiMi,eiSe); Disp_HZ(0x98,cbuf,8); i+; void Timer0A_ISR(void) unsigned char ucVal; unsigned long ulStatus; ulStatus = TimerIntStatus(TIMER0_BASE, true); / 获取当前中断状态 TimerIntClear(TIMER0_BASE, ulStatus); /清除全部中断状态 if (ulStatus & TIMER_TIMA_TIMEOUT) /如果是超时中断 ucVal = GPIOPinRead(LED_PORT, LED_PIN); /反转LED GPIOPinWrite(LED_PORT, LED_PIN, ucVal); +eiTi; 4.2.4 “小车状态”动态显示在实现显示的过程中,我做了“小车状态”的动态显示,由于一个汉字要占两个字节,因此在编写程序的过程中,需要一次移位两个字节,如果只移一位,显示出的结果是乱码。下面是实现动态显示的过程:首先把第一个汉字的两个字节赋给两个临时变量,然后把第二个汉字的两个字节按高低字节放入第一个汉字原占的单元中,第三个汉字放入第二个汉字的单元中,依此类推,直到最后一个放入倒数第二个汉字的单元中,再把第一个汉字的两个临时变量中的内容放入最后一个汉字原来占的单元中,至此完成了第一个循环,如此一直下去,则可完成汉字的动态(循环往左)显示。 if(i%10=0) psl=strlen(cstr1); ctemp=cstr10; ctemp1=cstr11; for(j=0;jpsl-2;) cstr1j=cstr1j+2; cstr1j+1=cstr1j+3; j=j+2; if(j=psl-3) cstr1j=ctemp; cstr1j+1=ctemp1; Disp_HZ(0x80,cstr1,8); 4.2.5 串口实现控制LED亮灭串口是LM3S811的一个功能模块,它可以通过串口调试器对程序进行调试。在调试的过程中需要设定它的参数:其中有:波特率一般为9600、数据长度为8位、1个停止位、无奇偶校验、FIFO禁能、无中断。选择串口一般为COM2、COM4、COM6等,在使用它进行调试时,先打开串口,再在输入栏里输入on+回车或Off+回车,观察LED的亮灭情况。源程序见附录1: 4.2.6 防JTAG失效程序程序:void jtagWait(void) SysCtlPeriEnable(KEY_PERIPH); GPIOPinTypeIn(KEY_PORT, KEY_PIN); if (GPIOPinRead(KEY_PORT, KEY_PIN) = 0x00) for (;); SysCtlPeriDisable(KEY_PERIPH); 在LM3S811芯片中,JTAG是作为下载(烧写)程序来使用的,同时,它的五个管脚也可以与GPIO复用,如果这五个管脚作为GPIO进行使用了,那么可能会使得这五个管脚上有高低电平不断存在,在进行新的程序烧写的时候,可能会与原来的高低电平冲突,这样一来会导致芯片无法进行下一次烧写操作,永久性的无法使用。因此,在写LM3S811的程序时,需要在每个程序的最前面写上jtagWait()这一句就解决了上面的麻烦,有了这个程序,在每次系统上电以后,如果没有按下JTAG键,系统就会执行以前有的程序,不影响正常运行;如果需要下载入新的程序,则只需要按下JTAG键,程序就会进入死循环,等待下一次程序的的下载。4.2.7 显示系统总体流程图延大校徽前进(后退)显示个人信息时间显示欢迎词准备按键图23是所要显示的整体框图,详细程序见附录3。否按键启动小车(总时间)是否是按键 图23 整体显示流程5 调试 5.1 硬件调试完成LM3S811与12864的连接后,发现显示器不能显示,因此为了使得显示模块得以显示,在显示模块3、18引脚间接了一个电阻,其电阻大小与显示模块的显示的具体情况经试验得出下表:表2 阻值变化与背光情况阻值大小背光情况 2K 灰棕色 清晰度差 7K 深蓝色带灰 清晰度一般 10K 深蓝色 清晰度适中 20K 蓝色 清晰度差 36K 蓝色 光强 清晰度一般由此可见,选择阻值为10k的阻值为最好。在硬件电路的焊接过程中,需要注意的是所使用的电路板纵向导通的,如果没有注意到的话,可能导致最终所焊接电路会短路。在硬件电路焊接完毕后,需要使用万用表对所焊电路进行检查,电路是否导通,或者电路是否短路等。从LM3S811带仿真器的开发板上往不带仿真器的最小系统开发板上移植程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度企业咨询服务与技术转让合同2篇
- 运输合同纠纷运输合同简单版本
- 化工原理自测题:第六章(自)
- 人教版九年级化学第九单元过关训练课件
- 人教版九年级化学第八单元3金属资源的利用和保护课时1常见的金属矿石和铁的冶炼分层作业课件
- 人教版九年级化学第一单元走进化学世界3走进化学实验室课时2物质的加热仪器的连接和洗涤教学教学课件
- 最简单沙子购销合同范本
- 人教版九年级化学第二单元我们周围的空气2氧气课时2化合反应和氧化反应教学教学课件
- 客房员工年终总结
- 职业生涯规划课件
- 庆祝第75个国庆节共筑中国梦大国华诞繁盛共享课件
- 2024年江西省高考化学试卷(真题+答案)
- 人教版小学语文一年级单元测试题-全册
- 2024-2030年中国PQQ行业市场发展分析及前景趋势与投资研究报告
- 2024年新青岛版四年级上册科学全册知识点六三制
- 注册消防工程师案例分析真题(完整)
- 实验室经费管理制度
- 2024-2030年中国数字商务行业市场发展趋势与前景展望战略分析报告
- 烟草专卖行政执法中存在的问题及对策研究
- 二手车交易定金合同范本5篇
- 《乌鲁木齐市国土空间总体规划(2021-2035年)》
评论
0/150
提交评论