毕业设计(论文)基于LPC2210的电子钟设计_第1页
毕业设计(论文)基于LPC2210的电子钟设计_第2页
毕业设计(论文)基于LPC2210的电子钟设计_第3页
毕业设计(论文)基于LPC2210的电子钟设计_第4页
毕业设计(论文)基于LPC2210的电子钟设计_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、本本 科科 毕毕 业业 设设 计计 论论 文文 题 目 基于 lpc2210 的电子钟设计 系 别 电气与信息工程 专 业 班 级 学 号 学生姓名 指导老师 2011 年 6 月 摘摘 要要 电子钟的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数 字式钟表,从刚开始的大件式、功能单一化到现在的小型化、多功能化。 本设计的主要任务是:通过 lpc2210 内部的实时时钟 rtc 产生时钟信号显 示在液晶屏上。它可以对年、月、日、星期、时、分、秒进行计时,还具有通 过按键对时间进行校准等功能。 本课题以 lpc2210 为核心,充分发挥微处理器功能,其电路设计简单明了, 系统稳定性高,

2、在现实生活中以得到很广泛的应用。硬件设计中将 lpc2210 与 hs12864-10a 液晶显示屏相结合,通过独立式键盘控制时间的调节。软件设计 是将 rtc 产生的时钟信号通过 i2c 高速通道经液晶的驱动 t6963c 对年、月、日、 星期、时、分、秒显示输出。 本设计基本上完成了所要求的任务,通过按键可调整年、月、日、星期、 时、分、秒的走时。这次毕业设计的制作,使本人对 ads1.2 的运用更加的熟练, 对 lpc2210 这款芯片了解的更多。 关键字关键字:lpc2210,arm,时钟,rtc,ads1.2 abstractabstract clock is very rapid

3、development, from the beginning of mechanical watches to digital is now widely used in watches, from the beginning of the large-type, single-function, then to the present small, multi-functional. the design of the main tasks are: the internal real time clock through lpc2210 rtc generates the clock s

4、ignal displayed on the lcd screen. it can be year, month, day, weeks, hours, minutes, seconds for time, also has a calibration through the key functions of time. this topic is based on the lpc2210 electronic clock design. hardware and software into the guidelines to give full play to the microproces

5、sor function, and its simple circuit design, system stability, in real life to get a very wide range of applications. hardware design is based on lpc2210 as the core controller, with hs12864-10a lcd screen, and stand-alone keyboard. software design is the rtc generates the clock signal, through the

6、i2c high-speed access to its data and clock for reading and feedback, and then by t6963c lcd driver on the year, month, day, weeks, hours, minutes, seconds display output. the design is basically completed the required tasks, through the button to adjust the year, month, day, week, hours, minutes, s

7、econds travel time. the production of the graduation project, so i am more skilled use of ads1.2 on lpc2210 chip learn more. key words: : lpc2210,arm,clock,rtc,ads1.2 目目 录录 摘摘 要要.i i abstractabstract.iiiiii 目目 录录.v v 一一 绪论绪论.1 1 1.1 选题意义 .1 1.2 国内外研究现状 .1 1.3 主要研究内容 .1 1.4 设计要求 .2 二二 硬件设计硬件设计.3 3 2.

8、1 设计方案 .3 2.2 硬件说明.3 2.2.1 主控模块 .3 2.2.2 液晶显示模块.8 2.2.3 键盘模块.10 2.3 硬件电路说明 .11 2.3.1 按键模块电路 .12 2.3.2 晶振电路 .12 2.3.3 显示模块电路 .12 三三 软件设计软件设计.1515 3.1 程序流程框图 .15 3.2 软件简介 .17 3.2.1 命令行开发工具 .17 3.2.2 arm 运行时库 .19 3.2.3 gui 开发环境 .21 四四 调试调试.2323 4.1 运行结果 .23 4.2 小结 .23 五五 总结与展望总结与展望.2525 5.1 总结 .25 5.2

9、展望 .25 致致 谢谢.2727 参考文献参考文献.2929 附录一附录一 源程序源程序.3131 附录二附录二 外文翻译外文翻译.4545 外文文献.45 中文对照.51 一一 绪论绪论 1.1 选题意义选题意义 随着计算机技术的发展,嵌入式系统获得了越来越广泛的应用。嵌入式处 理器的应用量远远超过了通用处理器,几乎在我们身边的所有电子设备中都有 嵌入式系统。嵌入式系统是很多产业慢慢地发生变化,包括家用电器、工业自 动化、国防、运输和航天领域。例如神州飞船和长征火箭中肯定有很多嵌入式 系统,高档汽车中也有多达几十个嵌入式系统。因此嵌入式应用的发展已进入 了一个全新的时期,成为当前 it 产

10、业的热点之一。 电子钟是采用数字电路实现对时,分,秒,数字显示的计时装置,与传统的 机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而广泛 应用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必 需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数子时钟的 精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而 且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时 间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、 甚至各种定时电气自动启用等,所有这些,都是以钟表数字化为基础的。因此, 研究电子钟及扩

11、大其应用,有着非常现实的意义。 1.2 国内外研究现状国内外研究现状 1819 世纪,钟表制造业已逐步实现工业化生产,并达到相当高的水平。 20 世纪,随着电子工业的迅速发展,电池驱动钟、交流电钟、电机械表、指针 式石英电子钟、数字式石英电子钟相继问世,时钟的日差已小于 0.5 秒,钟表 进入了微电子技术与精密机械相结合的石英化新时期。钟表的发展是非常迅速 的,从刚开始的机械式钟表到现在普遍用到的数字式钟表,现在钟表千奇百怪, 而且它们工作原理也已经不同了。我国在最近几十年也逐渐对钟表 有了比 较深刻的认识 ,电子钟对我们来说已经必不可少。在电子钟的发展上 看,主要向小型化、多功能化发展。 1

12、.3 主要研究内容主要研究内容 本课题基于嵌入式系统原理,以 lpc2210 微处理器作为核心控制器,通过 硬件电路的制作以及软件程序的编制,设计制作出一个多功能数字时钟系统。 该时钟系统主要由主控模块、液晶显示模块、键盘控制模块组成。系统具有简 单清晰的操作界面。能够准确显示时间,可随时进行时间调整。设计以硬件软 件化为指导思想,充分发挥微处理器功能,大部分功能通过软件编程来实现, 电路简单明了,系统稳定性高。 研究本课题的具体步骤如下:首先,通过查阅相关资料,学习并分析电子 钟的原理,组建电子钟的总体结构框图,从理论上分析设计方法和思路。选择 硬件设备,通过理论分析和计算选择电路参数并绘制

13、 pcb 电路板。其次,掌握 arm 接口扩展:显示、键盘,根据操作功能要求,确定键盘控制功能,按设计 要求确定显示器件。最后,采用 c 语言编写应用程序并调试通过,对系统进行 测试和结果分析。 1.4 设计要求设计要求 具有年、月、日、星期、时、分、秒等功能; 时间与阳历能够自动关联; 通过按键可以更改时间的实时显示; 二二 硬件设计硬件设计 2.1 设计方案设计方案 现代的电子时钟都是基于单片机的一种计时工具,而本课题是基于 lpc2210 的电子钟。单就功能而言, arm 芯片大多把 sdram,lcd 等控制器集成到片子当 中,而单片机大多需要外接扩展口。本次设计相比于以单片机为核心的

14、电子钟 的优点是:可实现的功能更多,不只是计时,还可以用做嵌入式 web 服务器, java 虚拟机等。arm 具有性能高、成本低和能耗省的特点。 总的来说,单片机是个微控制器,arm 显然已经是个微处理器了。 本次设计方案就是利用 arm 的多功能性的特点来设计的,具体思路为利用 lpc2210 和液晶的驱动对产生的信号进行液晶显示,并且通过按键可以实时的 调整年、月、日、时、分、秒的数值,此方案通过编程简化了外部电路,原理 简单,容易实现。设计框图如图 2-1。 时 间 调 节 lpc 2210 处 理 器 液 晶 显 示 图 21 总体框图 本次课题是由嵌入式系统 lpc2210 作为核

15、心控制器,具有在线编程功能、 低功耗;时钟是由 lpc2210 内部的实时时钟 rtc 提供的,它可以对年、月、日、 周日、时、分、秒进行计时,具有闰年补偿功能,显示部分是 hs12864-10a 液 晶屏,使用动态的方式对数值进行显示,还有 2*8 的按键。 2.2 硬件说明硬件说明 2.2.1 主控模块主控模块 主控模块 lpc2210 作为核心控制器功能框图如下: 图 32 lpc2210 的功能框图 实时时钟 rtc 提供秒、分、小时、日、月、年和星期给 vpb 进行时钟处理, vpb 分频器决定处理器时钟(cclk)与外设器件所使用的时钟(pclk)之间的 关系,vpb 分频器有两个

16、用途。第一个是通过 vpb 总线为外设提供所需的 pclk 时钟以便外设以为满足 arm 处理器而调整的速度下工作。为了实现此目的,vpb 总线可以降低到 1/2 或 1/4 处理器时钟速率,由于 vpb 总线必须在上电后正常 工作(并且如果由于 vpb 分频器控制器位于 vpb 总线上而使上电时 vpb 总线不 工作其时序就不能改变) ,vpb 总线在复位后默认的状态是以 1/4 速度运行。 图 33 vpb 分频器连接 1 简介 1)概述 lpc2210是基于一个支持实时仿真和嵌入式跟踪的16/32位arm7tdmi-s tm cpu的微控制器。对代码规模有严格控制的应用可使用16位thu

17、mb模式将代码规 模降低超过30%,而性能的损失却很小。 由于lpc2210的144脚封装、极低的功耗、多个32位定时器、8路10位 adc、pwm输出以及多达9个外部中断使它们特别适用于工业控制、医疗系统、访 问控制和pos机。 通过配置总线 lpc2210 最多可提供 76 个 gpio。由于内置了宽范围的串行 通信接口,它们也非常适合于通信网关、协议转换器、嵌入式软 modern 以及其 它各种类型的应用。 2)特性 16/32位144脚arm7tdmi-s微控制器 16k字节片内静态ram 串行boot装载程序通过uart0来实现在系统下载和编程 通过外部存储器接口可将存储器配置成4组

18、每组的容量高达16mb数据宽度 为8/16/32位 embeddedice-rt接口使能断点和观察点当前台任务使用片内realmonitor 软件调试时中断服务程序可继续执行 嵌入式跟踪宏单元etm支持对执行代码进行无干扰的高速实时跟踪 8路10位a/d转换器转换时间低至2.44ms 2个32位定时器带4路捕获和4路比较通道pwm单元6路输出实时时钟和看门 狗 多个串行接口包括2个16c550工业标准uart高速i 2c接口400 kbit/s和2个 spi接口 向量中断控制器可配置优先级和向量地址 多达76个通用i/o口可承受5v电压12个独立外部中断引脚ein和cap功能 通过片内pll可

19、实现最大为60mhz的 cpu操作频率 片内晶振频率范围130 mhz 2个低功耗模式空闲和掉电 通过外部中断将处理器从掉电模式中唤醒 可通过个别使能/禁止外部功能来优化功耗 双电源 -cpu操作电压范围1.651.95 v(1.8 v 8.3%) -i/o 操作电压范围 3.03.6 v(3.3 v 10%) 3)结构概述 lpc2210包含一个支持仿真的arm7tdmi-s cpu、与片内存储器控制器接口的 arm7局部总线、与中断控制器接口的amba高性能总线(ahb)和连接片内外设功 能的vlsi外设总线(vpb,arm amba总线的兼容超集)。lpc2210将arm7tdmi-s

20、配置为小端(little-endian)字节顺序。 ahb外设分配了2m字节的地址范围,它位于4g字节arm存储器空间的最顶端。 每个ahb外设都分配了16k字节的地址空间。lpc2210的外设功能(中断控制器除) 外都连接到vpb总线。ahb到vpb的桥将vpb总线与ahb总线相连。vpb外设也分配 了2m字节的地址范围,从3.5gb地址点开始。每个vpb外设在vpb地址空间内都分 配了16k字节地址空间。 片内外设与器件管脚的连接由管脚连接模块控制。该模块必须由软件进行控 制以符合外设功能与管脚在特定应用中的需求。 4)pll锁相环 需要指出的是为了提高led显示屏的可扩展性,就势必使系统

21、提高了对频率 的要求, 为此本设计在系统软件的设计过程中, 利用lpc2210 微处理器自带的 锁相环( pll) , 对系统进行了倍频设计, 以提高系统的可扩展性。 lpc2210的pll接收的输入时钟频率范围是1025mhz, 选用111059 2 mhz作为系 统的外部晶振频率, 首先需要配置pll, 计算公式如式(1)所示。 cclk =m fosc或cclk = fcco / (2 p) (1) 其中, fosc为晶振频率, fcco为pll电流控制振荡器的频率, cclk为pll的输出 频率即处理器的时钟频率,m 与p分别为pll的倍增器值与分频器值。 cco频率可由式(2)得到。

22、 fcco = cclk 2 p或fcco = fosc m 2 p (2) pll模块部分源代码如下: pllcon = 3; / /使能pll pllcfg = 0 x2d; / / 设置m 为6, p为2 pllfeed = 0 xaa; / / 发送pll馈送序列 pllfeed = 0 x55; v icintselect = 0 x00000000; / / 设置所有中断分配为irq中断 v icvectcntl0 = 0 x20 | 12; / / pll 中断分配到irq slot0, 即最高优先级 v icvectaddr0 = ( uint32) pll_ int; / /

23、 设置中断服务程序地址 v icintenable = 1 12; / / 使能e int0中断 2 实时时钟rtc 实时时钟 rtc 提供一套计数器在系统上电和关闭操作是对时间进行测量。 rtc 消耗的功率非常低,这使其适合于电池供电的,cpu 不连续工作(空闲模式) 的系统。可编程基准时钟分频器允许调节 rtc 以适应不同的晶振频率。 rtc 包含了许多寄存器 。地址空间按照功能分成 4 个部分。 前 8 个地 址为混合寄存器组。 第二部分的 8 个地址为定时器计数器组 ,第三部分的 8 个地址为报警寄存器组 。最后一部分为基准时钟分频器。 实时时钟模块所包含的寄存器见表 3-1 名称规格

24、 (位 数) 描述访问 复位值 地址 ilr2 中断位置 寄存器 r/w * 0 xe0024000 ctc15 时钟节拍 计数器 ro * 0 xe0024004 ccr4 时钟控制 寄存器 r/w * 0 xe0024008 ciir8 计数器递 增中断寄 存器 r/w * 0 xe002400c amr8 报警屏蔽 寄存器 r/w * 0 xe0024010 ctime0(32) 完整时间 寄存器0 ro * 0 xe0024014 ctime1(32) 完整时间 寄存器1 ro * 0 xe0024018 ctime2(32) 完整时间 寄存器2 ro * 0 xe002401c se

25、c6 秒寄存器 r/w *0 xe0024020 min6 分寄存器 r/w * 0 xe0024024 hour5 小时寄存 器 r/w * 0 xe0024028 dom5 日期月寄 存器 r/w * 0 xe002402c dow3 星期寄存 器 r/w * 0 xe0024030 doy9 日期年寄 存器 r/w * 0 xe0024034 month4 月寄存器 r/w * 0 xe0024038 year12 年寄存器 r/w * 0 xe002403c alsec6 秒报警值 r/w* 0 xe0024060 almin6 分报警值 r/w * 0 xe0024064 alhou

26、r5 小时报警 值 r/w * 0 xe0024068 aldom5 日期月报 警值 r/w * 0 xe002406c aldow3 星期报警 值 r/w * 0 xe0024070 aldoy9 日期年报 警值 r/w * 0 xe0024074 almon4 月报警值 r/w*0 xe0024078 alyear12 年报警值 r/w*0 xe002407c preint13 预分频值, 整数部分 r/w00 xe0024080 prefrac15 预分频值, 小数部分 r/w00 xe0024084 * rtc 当中除预分频器部分之外的其它寄存器都不受器件复位的影响。如果 rtc 使能

27、,这 些寄存器必须通过软件来初始化。 2.2.2 液晶显示模块液晶显示模块 本次所使用的显示设备是 hs12864-10a,它是一种图形点阵液晶显示器,它 主要由行驱动器/列驱动器及 12864 全点阵液晶显示器组成。可完成图形显示, 也可以显示 84 个(1616 点阵)汉字。 hs12864-10a 内嵌控制器为 toshiba 的 t6963c,外部显示存储器为 32k 字 节。t6963c 具有独特的硬件初始化设置功能,最大驱动点阵液晶为单色 640*128(单屏),支持图形和文本单独显示和混合显示,并具有字符发生器,如 图 3-4: t6963c 芯片 sram mmm 240*12

28、8lcd 液晶显示器 ta40 ta39ta39ta39 ta40 数据总线 64 64 808080 图 3-4 内置 t6963c 的 240*128 点阵液晶模块原理图 下面是对 hs12864-10a 进行一些基本的介绍: 1 概述 hs12864-10a为带中文字库的128x64是一种具有4位/8位并行、2线或3线串 行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示 模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ascii 字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人 机交互图形界面。可以显示84行

29、1616点阵的汉字. 也可完成图形显示.低电压 低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵 液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的 价格也略低于相同点阵的图形液晶模块。 2 基本特性 (1)低电源电压(vdd:+3.0-+5.5v) (2)显示分辨率:12864点 (3)内置汉字字库,提供8192个1616点阵汉字(简繁体可选) (4)内置 128个168点阵字符 (5)2mhz时钟频率 (6)显示方式:stn、半透、正显 (7)驱动方式:1/32duty,1/5bias (8)视角方向:6点 (9)背光方式:侧部高亮白色led,功耗仅为

30、普通led的1/51/10 (10)通讯方式:串行、并口可选 (11)内置dc-dc转换电路,无需外加负压 (12)无需片选信号,简化软件设计 (13)工作温度: 0 - +55 ,存储温度: -20 - +60 3 模块接口说明 hs12864-10a的接口说明如表3-2 控制总 线 管脚号管脚名称电平管脚功能描述 1vss0v 电源地 2vcc3.0+5v 电源正 3v0- 对比度(亮度)调整 4 rs(cs) h/l rs=“h”,表示db7db0为显示数据 rs=“l”,表示db7db0为显示指令数据 5r/w(sid)h/l r/w=“h”,e=“h”,数据被读到db7db0 r/w

31、=“l”,e=“hl”, db7db0的数据被写到ir 或dr 6e(sclk)h/l 使能信号 7db0h/l 三态数据线 8db1h/l 三态数据线 9db2h/l 三态数据线 10db3h/l 三态数据线 11db4h/l 三态数据线 12db5h/l 三态数据线 13db6h/l 三态数据线 14db7h/l 三态数据线 15psbh/l h:8位或4位并口方式,l:串口方式(见注释1) 16nc- 空脚 17/reseth/l 复位端,低电平有效(见注释2) 18vout- lcd驱动电压输出端 19avdd 背光源正端(+5v) (见注释3) 20kvss 背光源负端(见注释3)

32、*注释1:如在实际应用中仅使用串口通讯模式,可将psb接固定低电平,也可以将模块上的 j8和“gnd”用焊锡短接。 *注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。 *注释3:如背光和模块共用一个电源,可以将模块上的ja、jk用焊锡短接。 2 2.2 2.3 3 键盘模块键盘模块 按键采用 16 位按键式键盘,从 s1-s16,对应的控制方式是 s1、s2 对应秒 的俩位,s4、s5 对应分的俩位,s7、s8 对应时的俩位,s6 对应星期,从 s9 s16 对应的依次是日、月、年。调节方式是对应位按键按下,对应时间就自增 长,长按的话对应位的数字会一直从 0-9 循

33、环递增。 2.3 硬件电路说明硬件电路说明 整体的硬件电路图如下 2.3.1 按键模块电路按键模块电路 按键部分的作用是改变时钟的数值显示,实现实时调节。按键的控制由低 位到高位,s1、s2 控制秒的数值,s4、s5 控制分的数值,s6 控制星期的数值, s7、s8 控制时的数值,从 s9s16 控制的依次是日、月、年的数值。按键的去 抖动由软件来实现。 图 36 按键电路 2.3.2 晶振电路晶振电路 石英晶体连接在晶振引脚的输入和输出之间,等效为一个并联谐振回路, 振荡频率是石英晶体的并联谐振频率。晶体旁边的俩个电容接地,实际上就是 电容三点式电路的分压电容,接地点就是分压点。以接地点即分

34、压点为参考点, 振荡引脚的输入和输出是反相的,但从并联谐振回路即石英晶体两端来看,形 成一个正反馈以保证电路持续振荡。 图 37 晶振电路 2.3.3 显示模块电路显示模块电路 如图 37 所示,采用液晶屏 hs12864-10a 显示,下图为液晶屏的插针式接 口,w3 为可调式电阻,其余的电阻作为降压、防短路用。 图 38 显示接口电路 三三 软件设计软件设计 3.1 程序流程框图程序流程框图 首先对系统进行初始化,再对日期、时间位进行读取并准备显示,当有按 键按下是程序跳入功能子程序,进行功能子程序相应的读取、显示;若没有按 键按下就显示系统预定时间 00:00:00,并记时。 开始 初始

35、化 读、写时间、日期 是否有键按下? 按键功能子程序 显示时间 返回 是 否 图 41 主程序流程 开 始 控制键有效,进入年调整程序 控制键有效,进入月年调整程 序 加键有效 年加 1 加键有效 月加 1 等待按键程序 等待按键程序 控制键有效,进入日调整程序 控制键有效,进入时调整程序 控制键有效,进入星期调整程 序 等待按键程序 等待按键程序 等待按键程序 加键有效 加键有效 加键有效 日加 1 星期加 1 时加 1 控制键有效,进入分调整程序 等待按键程序 加键有效 控制键有效,进入秒调整程序 等待按键程序 加键有效 分加 1 秒加 1 按键有效,跳出时间调 整程序,进入主循环程 序

36、图 42 时间调整程序流程图 3.2 软件简介软件简介 这次毕设的编译工具是使用了 ads1.2 。 ads1.2 是一个使用方便的集成开发环境,全称是 arm developer suite v1.2。它是由 arm 公司提供的专门应用于 arm 相关应用开发和调试的综合性软 件功能非常强大。他的前身是 sdt,sdt 是 arm 公司几年前的开发环境软件,目 前 sdt 早已经不再升级。ads 包括了四个模块分别是:simulator;c 编译器; 实时调试器;应用函数库。 ads 的编译器调试器较 sdt 都有了非常大的改观, ads1.2 提供完整的 windows 界面开发环境。c

37、编译器效率极高,支持 c 以及 c+,使工程师可以很 方便的使用 c 语言进行开发。提供软件模拟仿真功能,使没有 emulators 的学 习者也能够熟悉 arm 的指令系统。配合 fft-ice 使用,ads1.2 提供强大的实时 调试跟踪功能,片内运行情况尽在掌握。ads1.2 需要硬件支持才能发挥强大功 能。目前支持的硬件调试器有 multi-ice 以及兼容 multi-ice 的调试工具如 fft-ice。 ads主要由以下部件构成:命令行开发工具,arm运行时库,gui开发环境 (和axd) 3.2.1 命令行开发工具命令行开发工具 这些工具完成将源代码编译,链接成可执行代码的功能

38、。 ads 提供下面的命令行开发工具: armcc armcc 是 arm c 编译器。这个编译器通过了 plum hall c validation suite 为 ansi c 的一致性测试。armcc 用于将用 ansi c 编写的程序编译成 32 位 arm 指令代码。 因为 armcc 是我们最常用的编译器,所以对此作一个详细的介绍。 在命令控制台环境下,输入命令: armcc help 可以查看 armcc 的语法格式以及最常用的一些操作选项 armcc 最基本的用法为: armcc options file1 file2 . filen 这里的 option 是编译器所需要的选项

39、,fiel1,file2filen 是相关的文件 名。 这里简单介绍一些最常用的操作选项。 -c:表示只进行编译不链接文件; -c:(注意:这是大写的 c)禁止预编译器将注释行移走; -d:定义预处理宏,相当于在源程序开头使用了宏定义语句 #define symbol , 这里 symbol 默认为 1; -e:仅仅是对 c 源代码进行预处理就停止; -g:指定是否在生成的目标文件中包含调试信息表; -i:将directory所指的路径添加到#include的搜索路径列表 中去; -j:用directory所指的路径代替默认的对#include的 搜索路径; -o:指定编译器最终生成的输出文件

40、名。 -o0:不优化; -o1:这是控制代码优化的编译选项,大写字母o后面跟的数字不同,表示 的优化级别就不同,-o1关闭了影响调试结果的优化功能; -o2:该优化级别提供了最大的优化功能; -s:对源程序进行预处理和编译,自动生成汇编文件而不是目标文件; -u:取消预处理宏名,相当于在源文件开头,使用语句#undef symbol; -w:关闭所有的或被选择的警告信息; 有关更详细的选项说明,读者可查看ads软件的在线帮助文件。 armcpp armcpp是arm c+编译器。它将iso c+ 或ec+ 编译成32位arm指令代码。 tcc tcc是thumb c 编译器。该编译器通过了pl

41、um hall c validation suite为 ansi 一致性的测试。tcc将ansi c源代码编译成16位的thumb指令代码。 tcpp tcpp是thumb c+ 编译器。它将iso c+ 和ec+ 源码编译成16位thumb指 令代码。 armasm armasm是arm和thumb的汇编器. 它对用arm 汇编语言和thumb 汇编语言写 的源代码进行汇编。 armlink armlink是arm连接器。该命令既可以将编译得到的一个或多个目标文件和 相关的一个或多个库文件进行链接,生成一个可执行文件,也可以将多个目标 文件部分链接成一个目标文件,以供进一步的链接。arm链接

42、器生成的是elf格 式的可执行映像文件。 armsd armsd 是 arm 和 thumb 的符号调试器。它能够进行源码级的程序调试。用户可 以在用 c 或汇编语言写的代码中进行单步调试,设置断点,查看变量值和内存 单元的内容。 3.2.2 armarm 运行时库运行时库 1. 运行时库类型和建立选项 ads 提供以下的运行时库来支持被编译的 c 和 c+代码: ansi c库函数: 这个c函数库是由以下几部分组成: 1) 在iso c标准中定义的函数; 2) 在semihosted环境下(semihosting是针对arm目标机的一种机制,它 能够根据应用程序代码的输入/输出请求,与运行有

43、调试功能的主机通 讯。这种技术允许主机为通常没有输入和输出功能的目标硬件提供主机 资源)用来实现c库函数的与目标相关的函数; 3) 被c和c+编译器所调用的支持函数。 arm c 库提供了额外的一些部件支持c+,并为不同的结构体系和处理器编 译代码。 c+库函数: c+库函数包含由iso c+库标准定义的函数。c+库依赖于相应的c库实现 与特定目标相关的部分,在c+库的内部本身是不包含与目标相关的部分。这个 库是由以下几部分组成的: 1) 版本为2.01.01的rogue wave standard c+库; 2) c+编译器使用的支持函数; 3) rogue wave库所不支持的其他的c+函

44、数。 正如上面所说,ansi c库使用标准的arm semihosted 环境提供例如,文件 输入/输出的功能。semihosting是由已定义的软件中断(software interrupt) 操作来实现的。在大多数的情况下,semihosting swi是被库函数内部的代码所 触发,用于调试的代理程序处理swi异常。调试代理程序为主机提供所需要的通 信。semihosted被armulator ,angel和multi-ice所支持。用户可以使用在ads 软件中的arm开发工具去开发用户应用程序,然后在armulator或在一个开发板 上运行和调试该程序。 用户可以把c库中的与目标相关的函

45、数作为自己应用程序中的一部分,重新 进行代码的实现。这就为用户带来了极大的方便,用户可以根据自己的执行环 境,适当的裁剪c库函数。 除此之外,用户还可以针对自己的应用程序的要求,对与目标无关的库函 数进行适当的裁剪。 在c库中有很多函数是独立于其他函数的,并且与目标硬件没有任何依赖关 系。对于这类函数,用户可以很容易地从汇编代码中使用它们。 在建立自己的用户应用程序的时候,用户必须指定一些最基本的操作选项。 例如: 字节顺序,是大端模式(big endian:字数据的高字节存放在低地址,低字 节存放在高地址),还是小端模式(little endian:字数据的高字节存放在高地 址,低字节存放在

46、低地址); 浮点支持:可能是fpa,vfp,软件浮点处理或不支持浮点运算; 堆栈限制:是否检查堆栈溢出; 位置无关(pid):数据是从与位置无关的代码还是从与位置相关的代码中读 /写,代码是位置无关的只读代码还是位置相关的的只读代码。 当用户对汇编程序,c 程序或 c+程序进行链接的时候,链接器会根据在建立 时所指定的选项,选择适当的 c 或 c+运行时库的类型。选项各种不同组合都 有一个相应的 ansi c 库类型。 2库路径结构 库路径是在 ads 软件安装路径的 lib 目录下的两个子目录。假设,ads 软件 安装在 e:armadsv1_2 目录,则在 e:armadsv1_2lib

47、目录下的两个子目录 armlib 和 cpplib 是 arm 的库所在的路径。 armlib 这个子目录包含了arm c 库,浮点代数运算库,数学库等各类库函数。与 这些库相应的头文件在e:armadsv1_2include目录中。 cpplib 这个子目录包含了rogue wave c+库和c+支持函数库。rogue wave c+库 和c+支持函数库合在一起被称为arm c+库。与这些库相应的头文件安装在 e:armadsv1_2include目录下。 环境变量armlib必须被设置成指向库路径。另外一种指定arm c和arm c+ 库路径的方法是,在链接的时候使用操作选项-libpat

48、h directory(directory 代表库所在的路径),来指明要装载的库的路径。 无需对armlib和cpplib这两个库路径分开指明,链接器会自动从用户所指 明的库路径中找出这两个子目录。 这里需要让读者特别注意的以下几点: 1). arm c库函数是以二进制格式提供的; 2). arm 库函数禁止修改。如果读者想对库函数创建新的实现的话,可以 把这个新的函数编译成目标文件,然后在链接的时候把它包含进来。这 样在链接的时候,使用的是新的函数实现而不是原来的库函数。 3). 通常情况下,为了创建依赖于目标的应用程序,在ansi c库中只有很 少的几个函数需要实现重建。 4). rogu

49、e wave standard c+函数库的源代码不是免费发布的,可以从 rogue wave software inc.,或arm公司通过支付许可证费用来获得源 文件。 3.2.3 guigui 开发环境开发环境 调试器本身是一个软件,用户通过这个软件使用 debug agent 可以对包含 有调试信息的,正在运行的可执行代码进行比如变量的查看,断点的控制等调 试操作。 ads中包含有3个调试器: axd(arm extended debugger):arm扩展调试器; armsd(arm symbolic debugger):arm符号调试器; 与老版本兼容的windows或unix下的a

50、rm调试工具,adw/adu(application debugger windows/unix)。 下面对在调试映像文件中所涉及到的一些术语做一个简单的介绍。 debug target 在软件开发的最初阶段,可能还没有具体的硬件设备。如果要测试所开发 的软件是否达到了预期的效果,这可以由软件仿真来完成。即使调试器和要测 试的软件运行在同一台pc上,也可以把目标当作一个独立的硬件来看待。 当然,也可以搭建一个pcb板,这个板上可以包含一个或多个处理器,在这 个板上可以运行和调试应用软件。 只有当通过硬件或者是软件仿真所得到的结果达到了预期的效果,才算是 完成了应用程序的编写工作。 调试器能够发

51、送以下指令: 1). 装载映像文件到目标内存; 2). 启动或停止程序的执行; 3). 显示内存,寄存器或变量的值; 4). 允许用户改变存储的变量值。 debug agent debug agent执行调试器发出的命令动作,比如:设置断点,从存储器中读 数据,把数据写到存储器等。 debug agent既不是被调试的程序,也不是调试器。在arm体系中,它有这 几种方式:multi-ice(multi-processor in-circuit emulator),armulator和 angel。其中multi-ice是一个独立的产品,是arm公司自己的jtag在线仿真器, 不是由ads提供的

52、。 axd可以在windows 和unix下,进行程序的调试。它为用c,c+,和汇编语 言编写的源代码提供了一个全面的windows 和unix 环境。 四四 调试调试 4.1 运行结果运行结果 本设计采用不等间隔拍照,运行起点时间设为 00:00:00,图 4-1 为初始 时间也是复位后的显示时间;图 4-2 为运行 1 秒后的照片;图 4-3 为按键调整 分值的时间显示;图 4-4 为调整时值和星期值的时间显示。 图 4-1 开始运行 图 4-2 运行 1 秒 图 4-3 分按键选择 图 4-4 时及星期按键选择 4.2 小结小结 调试的过程中按键程序运行不了,经过老师和同学的指点,发现执

53、行语句 指令中按键指令少了一句运行语句,还有就是年、月、日以及星期无法按键执 行,经过反复的查看,我觉得可能是寻址地址有问题,这是未解决的一个问题。 五五 总结与展望总结与展望 5.1 总结总结 通过做这次毕业设计,我学到了很多东西,首先是对 ads1.2 软件的运用, 并对液晶屏动态显示方面的知识有了更多了解,在以前我只是对这些软件有个 大概的了解,但通过这次的实践,使我对这些软件有了更深刻的了解,在以后 的学习及工作中将会起到很大的作用,这次我将自己所学的知识运用到了实践 当中,使得理论有了实践的指导。 但是由于我以前没有实际做过按键控制液晶屏动态显示这方面的内容,所 以在有些内容的准备上

54、还有很多不足之处,我希望自己通过这次设计可以有很 大的提高,从这次实践中学到一些经验,并在以后的工作中有实践的指导。在 软件编译方面使我有了很好的编译习惯,并掌握了一些软件编译技巧。 在论文的编写方面,让我有了很好的文字表达能力及理论到实践的应用能 力,并对简单的文字编译有了更熟悉的掌握。 总之,这次毕业设计使我受益匪浅,经过认真的编译,使我对本科阶段的 学习有了圆满的总结。 5.2 展望展望 通过本次毕业设计,让我解决问题的能力有了很大的提高。这次毕业设计, 让我深深体会到:世上无难事,只怕有心人。碰到难题不要惧怕,只要你肯钻 研,问题总会有解决的办法。我想在以后的进一步学习中,我对自己未来

55、充满 信心。 致致 谢谢 在本次系统的研究和设计过程中,我得到了老师和同学们的热情帮助。在 此,对他们表示衷心的感谢。 首先,要对我的指导老师老师表示衷心的感谢。从方案的选取、审题、查 找资料,到系统软硬件的各部分设计工作,到最后论文的书写和完成,老师在 我的整个毕业设计工作中给了我很大的帮助和支持。老师的谆谆教导,使我受 益匪浅。 其次,也对大学四年以来所有给我授课的老师们表示感谢。是他们教会了 我大学应该掌握的知识和技能,给我打下了坚实的理论基础。只有运用四年学 习的基础知识和经验的积累,才能使我能够顺利的完成本次毕业设计工作。 最后,要感谢我们班的众多同学,本次设计能够圆满完成,和各位同

56、学的 帮助是息息相关的。在本次设计中,我遇到了不少困难,在需要帮助的时候, 各位同学给了我无私的帮助,助我度过了一个又一个的难题。 参考文献参考文献 1杨拴科, 模拟电子技术 ,北京:高等教育出版社,2003. 2杨 恒, arm 嵌入式系统设计及实践,西安:西安电子科技大学出版社, 2005. 3李玉峰,msc-51 单片机原理与接口技术,北京:人民邮电出版社,2004. 4张克农,数字电子技术,北京:高等教育出版社,2003. 5江国强,pld 在电子电路设计中的应用,北京:清华大学出版社,2007. 6王志功,集成电路设计,北京:电子工业出版社,2006. 7马建国,电子系统设计,北京:

57、高等教育出版社,2003. 8李伯成,微型计算机嵌入式系统设计, 西安: 西安电子科技大学出版社, 2004. 9王田苗,嵌入式系统设计与实例开发,北京:清华大学出版社,2003. 10周立功,深入浅出 arm7-lpc213x214x(下),北京: 北京航空航天大学出版社 2006. 附录一附录一 源程序源程序 /* * * 文件名:test.c * 功能:在图形液晶模块 hs12864-10a 上显示年、月、日、星期、时、分、秒。 * */ #include config.h #define tcoloruint8 extern uint8 gui_disp_bufgui_lcm_ymax

58、gui_lcm_xmax/8; extern irq_i2c(void); extern lcd_sendbuf(); extern lcd_senddata(); extern lcd_sendseg(); extern ircvstr(); extern lcd(); /* * * 名称:gui_fillscr() * 功能:全屏填充。直接使用数据填充显示缓冲区。 * 入口参数:dat填充的数据(对于黑白色 lcm,为 0 的点灭,为 1 的点 显示) * 出口参数:无 * */ void gui_fillscr(uint8 dat) uint32 i, j; for(i=0; igui_

59、lcm_ymax; i+)/ 历遍所有行 for(j=0; j400000) fi2c = 400000; pinsel0 = (pinsel0 / 设置 i2c 控制口有效 i2sclh = (fpclk/fi2c + 1) / 2;/ 设置 i2c 时钟为 fi2c i2scll = (fpclk/fi2c) / 2; i2conclr = 0 x2c; i2conset = 0 x40;/ 使能主 i2c /* 设置 i2c 中断允许 */ vicintselect = 0 x00000000;/ 设置所有通道为 irq 中断 vicvectcntl0 = 0 x29;/ i2c 通道分

60、配到 irq slot 0,即优先级 最高 vicvectaddr0 = (int)irq_i2c; / 设置 i2c 中断向量地址 vicintenable = 0 x0200; / 使能 i2c 中断 /* * *定时器初始化 * */ void time0init(void) /* fcclk = fosc*4 = 11.0592mhz*4 = 44.2368mhz fpclk = fcclk/4 = 44.2368mhz/4 = 11.0592mhz */ t0pr = 99; / 设置定时器 0 分频为 100 分 频,得 110592hz t0mcr = 0 x03; / 匹配通道

温馨提示

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

评论

0/150

提交评论