毕业设计(论文)-基于LPC2210的电子钟设计.doc_第1页
毕业设计(论文)-基于LPC2210的电子钟设计.doc_第2页
毕业设计(论文)-基于LPC2210的电子钟设计.doc_第3页
毕业设计(论文)-基于LPC2210的电子钟设计.doc_第4页
毕业设计(论文)-基于LPC2210的电子钟设计.doc_第5页
免费预览已结束,剩余59页可下载查看

下载本文档

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

文档简介

本本 科科 毕毕 业业 设设 计计 论论 文文 题 目 基于 lpc2210 的电子钟设计 系 别 电气与信息工程 专 业 班 级 学 号 学生姓名 指导老师 2011 年 6 月 摘要 i 摘摘 要要 电子钟的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数 字式钟表,从刚开始的大件式、功能单一化到现在的小型化、多功能化。 本设计的主要任务是:通过 lpc2210 内部的实时时钟 rtc 产生时钟信号显 示在液晶屏上。它可以对年、月、日、星期、时、分、秒进行计时,还具有通 过按键对时间进行校准等功能。 本课题以 lpc2210 为核心,充分发挥微处理器功能,其电路设计简单明了, 系统稳定性高,在现实生活中以得到很广泛的应用。硬件设计中将 lpc2210 与 hs12864-10a 液晶显示屏相结合,通过独立式键盘控制时间的调节。软件设计 是将 rtc 产生的时钟信号通过 i2c 高速通道经液晶的驱动 t6963c 对年、月、日、 星期、时、分、秒显示输出。 本设计基本上完成了所要求的任务,通过按键可调整年、月、日、星期、 时、分、秒的走时。这次毕业设计的制作,使本人对 ads1.2 的运用更加的熟练, 对 lpc2210 这款芯片了解的更多。 关键字关键字:lpc2210,arm,时钟,rtc,ads1.2 ii abstract iii abstractabstract clock is very rapid 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 signal 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 microprocessor 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 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, seconds 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 iv 目录 v 目目 录录 摘摘 要要i i abstractabstractiiiiii 目目 录录v v 一一 绪论绪论1 1 1.1 选题意义 1 1.2 国内外研究现状 1 1.3 主要研究内容 1 1.4 设计要求 2 二二 硬件设计硬件设计3 3 2.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 展望 .25 致致 谢谢2727 参考文献参考文献2929 附录一附录一 源程序源程序3131 vi 附录二附录二 外文翻译外文翻译4545 外文文献.45 中文对照.51 绪论 1 一一 绪论绪论 1.1 选题意义选题意义 随着计算机技术的发展,嵌入式系统获得了越来越广泛的应用。嵌入式处 理器的应用量远远超过了通用处理器,几乎在我们身边的所有电子设备中都有 嵌入式系统。嵌入式系统是很多产业慢慢地发生变化,包括家用电器、工业自 动化、国防、运输和航天领域。例如神州飞船和长征火箭中肯定有很多嵌入式 系统,高档汽车中也有多达几十个嵌入式系统。因此嵌入式应用的发展已进入 了一个全新的时期,成为当前 it 产业的热点之一。 电子钟是采用数字电路实现对时,分,秒,数字显示的计时装置,与传统的 机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而广泛 应用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必 需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数子时钟的 精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而 且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时 间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、 甚至各种定时电气自动启用等,所有这些,都是以钟表数字化为基础的。因此, 研究电子钟及扩大其应用,有着非常现实的意义。 1.2 国内外研究现状国内外研究现状 1819 世纪,钟表制造业已逐步实现工业化生产,并达到相当高的水平。 20 世纪,随着电子工业的迅速发展,电池驱动钟、交流电钟、电机械表、指针 式石英电子钟、数字式石英电子钟相继问世,时钟的日差已小于 0.5 秒,钟表 进入了微电子技术与精密机械相结合的石英化新时期。钟表的发展是非常迅速 的,从刚开始的机械式钟表到现在普遍用到的数字式钟表,现在钟表千奇百怪, 而且它们工作原理也已经不同了。我国在最近几十年也逐渐对钟表 有了比 较深刻的认识 ,电子钟对我们来说已经必不可少。在电子钟的发展上 看,主要向小型化、多功能化发展。 1.3 主要研究内容主要研究内容 本课题基于嵌入式系统原理,以 lpc2210 微处理器作为核心控制器,通过 硬件电路的制作以及软件程序的编制,设计制作出一个多功能数字时钟系统。 该时钟系统主要由主控模块、液晶显示模块、键盘控制模块组成。系统具有简 单清晰的操作界面。能够准确显示时间,可随时进行时间调整。设计以硬件软 2 件化为指导思想,充分发挥微处理器功能,大部分功能通过软件编程来实现, 电路简单明了,系统稳定性高。 研究本课题的具体步骤如下:首先,通过查阅相关资料,学习并分析电子 钟的原理,组建电子钟的总体结构框图,从理论上分析设计方法和思路。选择 硬件设备,通过理论分析和计算选择电路参数并绘制 pcb 电路板。其次,掌握 arm 接口扩展:显示、键盘,根据操作功能要求,确定键盘控制功能,按设计 要求确定显示器件。最后,采用 c 语言编写应用程序并调试通过,对系统进行 测试和结果分析。 1.4 设计要求设计要求 具有年、月、日、星期、时、分、秒等功能; 时间与阳历能够自动关联; 通过按键可以更改时间的实时显示; 硬件设计 3 二二 硬件设计硬件设计 2.1 设计方案设计方案 现代的电子时钟都是基于单片机的一种计时工具,而本课题是基于 lpc2210 的电子钟。单就功能而言, arm 芯片大多把 sdram,lcd 等控制器集成到片子当 中,而单片机大多需要外接扩展口。本次设计相比于以单片机为核心的电子钟 的优点是:可实现的功能更多,不只是计时,还可以用做嵌入式 web 服务器, java 虚拟机等。arm 具有性能高、成本低和能耗省的特点。 总的来说,单片机是个微控制器,arm 显然已经是个微处理器了。 本次设计方案就是利用 arm 的多功能性的特点来设计的,具体思路为利用 lpc2210 和液晶的驱动对产生的信号进行液晶显示,并且通过按键可以实时的 调整年、月、日、时、分、秒的数值,此方案通过编程简化了外部电路,原理 简单,容易实现。设计框图如图 2-1。 时 间 调 节 lpc 2210 处 理 器 液 晶 显 示 图 21 总体框图 本次课题是由嵌入式系统 lpc2210 作为核心控制器,具有在线编程功能、 低功耗;时钟是由 lpc2210 内部的实时时钟 rtc 提供的,它可以对年、月、日、 周日、时、分、秒进行计时,具有闰年补偿功能,显示部分是 hs12864-10a 液 晶屏,使用动态的方式对数值进行显示,还有 2*8 的按键。 2.2 硬件说明硬件说明 2.2.1 主控模块主控模块 主控模块 lpc2210 作为核心控制器功能框图如下: 4 图 32 lpc2210 的功能框图 实时时钟 rtc 提供秒、分、小时、日、月、年和星期给 vpb 进行时钟处理, vpb 分频器决定处理器时钟(cclk)与外设器件所使用的时钟(pclk)之间的 关系,vpb 分频器有两个用途。第一个是通过 vpb 总线为外设提供所需的 pclk 时钟以便外设以为满足 arm 处理器而调整的速度下工作。为了实现此目的,vpb 总线可以降低到 1/2 或 1/4 处理器时钟速率,由于 vpb 总线必须在上电后正常 工作(并且如果由于 vpb 分频器控制器位于 vpb 总线上而使上电时 vpb 总线不 工作其时序就不能改变) ,vpb 总线在复位后默认的状态是以 1/4 速度运行。 硬件设计 5 图 33 vpb 分频器连接 1 简介 1)概述 lpc2210是基于一个支持实时仿真和嵌入式跟踪的16/32位arm7tdmi-s tm cpu的微控制器。对代码规模有严格控制的应用可使用16位thumb模式将代码规 模降低超过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组每组的容量高达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功能 6 通过片内pll可实现最大为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 配置为小端(little-endian)字节顺序。 ahb外设分配了2m字节的地址范围,它位于4g字节arm存储器空间的最顶端。 每个ahb外设都分配了16k字节的地址空间。lpc2210的外设功能(中断控制器除) 外都连接到vpb总线。ahb到vpb的桥将vpb总线与ahb总线相连。vpb外设也分配 了2m字节的地址范围,从3.5gb地址点开始。每个vpb外设在vpb地址空间内都分 配了16k字节地址空间。 片内外设与器件管脚的连接由管脚连接模块控制。该模块必须由软件进行控 制以符合外设功能与管脚在特定应用中的需求。 4) pll锁相环 需要指出的是为了提高led显示屏的可扩展性,就势必使系统提高了对频率 的要求, 为此本设计在系统软件的设计过程中, 利用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)得到。 fcco = cclk 2 p或fcco = fosc m 2 p (2) pll模块部分源代码如下: pllcon = 3; / /使能pll pllcfg = 0x2d; / / 设置m 为6, p为2 硬件设计 7 pllfeed = 0xaa; / / 发送pll馈送序列 pllfeed = 0x55; v icintselect = 0x00000000; / / 设置所有中断分配为irq中断 v icvectcntl0 = 0x20 | 12; / / pll 中断分配到irq slot0, 即最高优先级 v icvectaddr0 = ( uint32) pll_ int; / / 设置中断服务程序地址 v icintenable = 1 :定义预处理宏,相当于在源程序开头使用了宏定义语句 #define symbol , 这里 symbol 默认为 1; -e:仅仅是对 c 源代码进行预处理就停止; -g:指定是否在生成的目标文件中包含调试信息表; -i:将directory所指的路径添加到#include的搜索路径列表 中去; -j:用directory所指的路径代替默认的对#include的 搜索路径; -o:指定编译器最终生成的输出文件名。 -o0:不优化; -o1:这是控制代码优化的编译选项,大写字母o后面跟的数字不同,表示 的优化级别就不同,-o1关闭了影响调试结果的优化功能; -o2:该优化级别提供了最大的优化功能; -s:对源程序进行预处理和编译,自动生成汇编文件而不是目标文件; -u:取消预处理宏名,相当于在源文件开头,使用语句#undef symbol; -w:关闭所有的或被选择的警告信息; 有关更详细的选项说明,读者可查看ads软件的在线帮助文件。 armcpp armcpp是arm c+编译器。它将iso c+ 或ec+ 编译成32位arm指令代码。 tcc tcc是thumb c 编译器。该编译器通过了plum 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链接器生成的是elf格 软件设计 19 式的可执行映像文件。 armsd armsd 是 arm 和 thumb 的符号调试器。它能够进行源码级的程序调试。用户可 以在用 c 或汇编语言写的代码中进行单步调试,设置断点,查看变量值和内存 单元的内容。 3.2.2 armarm 运行时库运行时库 1. 运行时库类型和建立选项 ads 提供以下的运行时库来支持被编译的 c 和 c+代码: ansi c库函数: 这个c函数库是由以下几部分组成: 1) 在iso c标准中定义的函数; 2) 在semihosted环境下(semihosting是针对arm目标机的一种机制,它 能够根据应用程序代码的输入/输出请求,与运行有调试功能的主机通 讯。这种技术允许主机为通常没有输入和输出功能的目标硬件提供主机 资源)用来实现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+函数。 正如上面所说,ansi c库使用标准的arm semihosted 环境提供例如,文件 输入/输出的功能。semihosting是由已定义的软件中断(software interrupt) 操作来实现的。在大多数的情况下,semihosting swi是被库函数内部的代码所 触发,用于调试的代理程序处理swi异常。调试代理程序为主机提供所需要的通 信。semihosted被armulator ,angel和multi-ice所支持。用户可以使用在ads 软件中的arm开发工具去开发用户应用程序,然后在armulator或在一个开发板 上运行和调试该程序。 用户可以把c库中的与目标相关的函数作为自己应用程序中的一部分,重新 20 进行代码的实现。这就为用户带来了极大的方便,用户可以根据自己的执行环 境,适当的裁剪c库函数。 除此之外,用户还可以针对自己的应用程序的要求,对与目标无关的库函 数进行适当的裁剪。 在c库中有很多函数是独立于其他函数的,并且与目标硬件没有任何依赖关 系。对于这类函数,用户可以很容易地从汇编代码中使用它们。 在建立自己的用户应用程序的时候,用户必须指定一些最基本的操作选项。 例如: 字节顺序,是大端模式(big endian:字数据的高字节存放在低地址,低字 节存放在高地址),还是小端模式(little endian:字数据的高字节存放在高地 址,低字节存放在低地址); 浮点支持:可能是fpa,vfp,软件浮点处理或不支持浮点运算; 堆栈限制:是否检查堆栈溢出; 位置无关(pid):数据是从与位置无关的代码还是从与位置相关的代码中读 /写,代码是位置无关的只读代码还是位置相关的的只读代码。 当用户对汇编程序,c 程序或 c+程序进行链接的时候,链接器会根据在建立 时所指定的选项,选择适当的 c 或 c+运行时库的类型。选项各种不同组合都 有一个相应的 ansi c 库类型。 2库路径结构 库路径是在 ads 软件安装路径的 lib 目录下的两个子目录。假设,ads 软件 安装在 e:armadsv1_2 目录,则在 e:armadsv1_2lib 目录下的两个子目录 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+ 库路径的方法是,在链接的时候使用操作选项-libpath directory(directory 代表库所在的路径),来指明要装载的库的路径。 无需对armlib和cpplib这两个库路径分开指明,链接器会自动从用户所指 明的库路径中找出这两个子目录。 软件设计 21 这里需要让读者特别注意的以下几点: 1). arm c库函数是以二进制格式提供的; 2). arm 库函数禁止修改。如果读者想对库函数创建新的实现的话,可以 把这个新的函数编译成目标文件,然后在链接的时候把它包含进来。这 样在链接的时候,使用的是新的函数实现而不是原来的库函数。 3). 通常情况下,为了创建依赖于目标的应用程序,在ansi c库中只有很 少的几个函数需要实现重建。 4). rogue 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下的arm调试工具,adw/adu(application debugger windows/unix)。 下面对在调试映像文件中所涉及到的一些术语做一个简单的介绍。 debug target 在软件开发的最初阶段,可能还没有具体的硬件设备。如果要测试所开发 的软件是否达到了预期的效果,这可以由软件仿真来完成。即使调试器和要测 试的软件运行在同一台pc上,也可以把目标当作一个独立的硬件来看待。 当然,也可以搭建一个pcb板,这个板上可以包含一个或多个处理器,在这 个板上可以运行和调试应用软件。 只有当通过硬件或者是软件仿真所得到的结果达到了预期的效果,才算是 完成了应用程序的编写工作。 调试器能够发送以下指令: 1). 装载映像文件到目标内存; 2). 启动或停止程序的执行; 3). 显示内存,寄存器或变量的值; 4). 允许用户改变存储的变量值。 22 debug agent debug agent执行调试器发出的命令动作,比如:设置断点,从存储器中读 数据,把数据写到存储器等。 debug agent既不是被调试的程序,也不是调试器。在arm体系中,它有这 几种方式:multi-ice(multi-processor in-circuit emulator),armulator和 angel。其中multi-ice是一个独立的产品,是arm公司自己的jtag在线仿真器, 不是由ads提供的。 axd可以在windows 和unix下,进行程序的调试。它为用c,c+,和汇编语 言编写的源代码提供了一个全面的windows 和unix 环境。 调试 23 四四 调试调试 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 小结小结 调试的过程中按键程序运行不了,经过老师和同学的指点,发现执行语句 指令中按键指令少了一句运行语句,还有就是年、月、日以及星期无法按键执 行,经过反复的查看,我觉得可能是寻址地址有问题,这是未解决的一个问题。 24 总结与展望 25 五五 总结与展望总结与展望 5.1 总结总结 通过做这次毕业设计,我学到了很多东西,首先是对 ads1.2 软件的运用, 并对液晶屏动态显示方面的知识有了更多了解,在以前我只是对这些软件有个 大概的了解,但通过这次的实践,使我对这些软件有了更深刻的了解,在以后 的学习及工作中将会起到很大的作用,这次我将自己所学的知识运用到了实践 当中,使得理论有了实践的指导。 但是由于我以前没有实际做过按键控制液晶屏动态显示这方面的内容,所 以在有些内容的准备上还有很多不足之处,我希望自己通过这次设计可以有很 大的提高,从这次实践中学到一些经验,并在以后的工作中有实践的指导。在 软件编译方面使我有了很好的编译习惯,并掌握了一些软件编译技巧。 在论文的编写方面,让我有了很好的文字表达能力及理论到实践的应用能 力,并对简单的文字编译有了更熟悉的掌握。 总之,这次毕业设计使我受益匪浅,经过认真的编译,使我对本科阶段的 学习有了圆满的总结。 5.2 展望展望 通过本次毕业设计,让我解决问题的能力有了很大的提高。这次毕业设计, 让我深深体会到:世上无难事,只怕有心人。碰到难题不要惧怕,只要你肯钻 研,问题总会有解决的办法。我想在以后的进一步学习中,我对自己未来充满 信心。 26 致谢 27 致致 谢谢 在本次系统的研究和设计过程中,我得到了老师和同学们的热情帮助。在 此,对他们表示衷心的感谢。 首先,要对我的指导老师老师表示衷心的感谢。从方案的选取、审题、查 找资料,到系统软硬件的各部分设计工作,到最后论文的书写和完成,老师在 我的整个毕业设计工作中给了我很大的帮助和支持。老师的谆谆教导,使我受 益匪浅。 其次,也对大学四年以来所有给我授课的老师们表示感谢。是他们教会了 我大学应该掌握的知识和技能,给我打下了坚实的理论基础。只有运用四年学 习的基础知识和经验的积累,才能使我能够顺利的完成本次毕业设计工作。 最后,要感谢我们班的众多同学,本次设计能够圆满完成,和各位同学的 帮助是息息相关的。在本次设计中,我遇到了不少困难,在需要帮助的时候, 各位同学给了我无私的帮助,助我度过了一个又一个的难题。 28 参考文献 29 参考文献参考文献 1杨拴科, 模拟电子技术 ,北京:高等教育出版社,2003. 2杨 恒, arm 嵌入式系统设计及实践,西安:西安电子科技大学出版社, 2005. 3李玉峰,msc-51 单片机原理与接口技术,北京:人民邮电出版社,2004. 4张克农,数字电子技术,北京:高等教育出版社,2003. 5江国强,pld 在电子电路设计中的应用,北京:清华大学出版社,2007. 6王志功,集成电路设计,北京:电子工业出版社,2006. 7马建国,电子系统设计,北京:高等教育出版社,2003. 8李伯成,微型计算机嵌入式系统设计, 西安: 西安电子科技大学出版社, 2004. 9王田苗,嵌入式系统设计与实例开发,北京:清华大学出版社,2003. 10周立功,深入浅出 arm7-lpc213x214x(下),北京: 北京航空航天大学出版社 2006. 30 附录一 源程序 31 附录一附录一 源程序源程序 /* * * 文件名:test.c * 功能:在图形液晶模块 hs12864-10a 上显示年、月、日、星期、时、分、秒。 * */ #include “config.h“ #define tcoloruint8 extern uint8 gui_disp_bufgui_lcm_ymaxgui_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; i400000) fi2c = 400000; pinsel0 = (pinsel0 / 设置 i2c 控制口有效 i2sclh = (fpclk/fi2c + 1) / 2;/ 设置 i2c 时钟为 fi2c i2scll = (fpclk/fi2c) / 2; i2conclr = 0x2c; i2conset = 0x40;/ 使能主 i2c /* 设置 i2c 中断允许 */ vicintselect = 0x00000000;/ 设置所有通道为 irq 中断 vicvectcntl0 = 0x29;/ i2c 通道分配到 irq slot 0,即优先级 最高 vicvectaddr0 = (int)irq_i2c; / 设置 i2c 中断向量地址 vicintenable = 0x0200; / 使能 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 = 0x03; / 匹配通道 0 匹配中断并复位 t0tc t0mr0 = 110592; / 比较值(1s 定时值) t0tcr = 0x03; / 启动并复位 t0tc t0tcr = 0x01; 附录一 源程序 33 /*延时程序*/ void delayns(uint32 dly) uint32 i; for(;dly0;dly-) for(i=0;i8); /确定 t6963c ram 的指针 if(lcd_teststabit01()!=0) lcd_writetcommand2(0xc4,charsign0); /条件运算符 /* for(;) number_disp(5,48,number_point,1876); char_disp(9,48,charsign_point,n,b,m); delayns(200); clear_area(5,48,0,b,4); delayns(200); */ /*模拟电子钟,可以实时调整 */ 附录一 源程序 39 while(1) /* 读取按键,设置键值对应的显示位闪烁 */ delayns(1); key = 0; ircvstr(lcd, 0x70, disp_buf, 8); if(0=disp_buf1) key = disp_buf0; switch(key) case 9: /按下 9,10,11,12 键后,定时器 0 复位停止计数,停止显示。 case 10: case 11: case 12: t0mcr=0x00; t0tcr=0x00; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); break; case 1: /之后按下 1,与之对应的位加 1 并显 示。 if(data_buf0=0x09) data_buf0=0x00; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); else data_buf0=data_buf0+1; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); break; case 2: /之后按下 2,与之对应的位加 1 并显示。 if(data_buf1=0x05) 40 data_buf1=0x00; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); else data_buf1=data_buf1+1; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); break; case 4: /之后按下 4,与之对应的位加 1 并显示。 if(data_buf3=0x09) data_buf3=0x00; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); else data_buf3=data_buf3+1; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); break; case 5: /之后按下 5,与之对应的位加 1 并显示。 if(data_buf4=0x05) data_buf4=0x00; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); else data_buf4=data_buf4+1; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); break; 附录一 源程序 41 case 7: /之后按下 7,与之对应的位加 1 并显示。 if(data_buf6=0x09) data_buf6=0x00; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); else data_buf6=data_buf6+1; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); break; case 8: /之后按下 8,与之对应的位加 1 并显示。 if(data_buf7=0x02) data_buf7=0x00; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); else data_buf7=data_buf7+1; lcd_sendbuf(data_buf, 8); lcd_sendseg(dis_buf,2); break; case 13: /之后按下 13,14,15,16,重新初始化定 时器 0。 case 14: case 15: case 16: time0init(); / 初始化定时器 0 break; default: break; 42 /*电子钟计时*/ /* 等待定时时间到,中断位置位*/ if(t0ir / 清除中断标志 if(data_buf0=0x09) data_buf0=0; data_buf1=data_buf1+1; if(data_buf1=0x06) data_buf1=0x00; if(data_buf3=0x09) data_buf4=0x00; if(data_buf6=0x03) data_buf7=0; else if(data_buf6=0x09) data_buf6=0; data_buf7=data_buf7+1; else data_buf6=data_buf6+1; else if(data_buf3=0x09) data_buf3=0; data_buf4=data_buf4+1; else data_buf3=data_buf3+1; 附录一 源程序 43 else data_buf0=data_buf0+1; lcd_sendbuf(data_buf,8); lcd_sendseg(dis_buf,2); return(0); 44 附录二 外文翻译 45 附录附录二二 外文翻译外文翻译 外文文献外文文献 lpc2210 16/32-bit arm microcontroller; with 10-bit adc and external memory interface rev. 01 09 february 2004 preliminary data 1. general description the lpc2210 is based on a 16/32 bit arm7tdmi-s cpu with real-time emulationand embedded trace support. for critical code size applications, the alternative 16-bitthumb mode reduces code by more than 30% with minimal performance penalty. with its 144 pin package, low power consumption, various 32-bit timers, 8-channel 10-bit adc, pwm channels and up to 9 external interrupt pins this microcontroller is particularly suitable for industrial control, medical systems, access control and point-of-sale. lpc2210 provides up to 76 gpio depending on bus configuration. witha wide range of serial communications interfaces, it is also very well suited forcommunication gateways, protocol converters and embedded soft modems as well as many other general-purpose applications. 2. features 2.1 key features 16/32-bit arm7tdmi-s microcontroller in a lqfp144 package. 16 kb on-chip static ram. serial boot-loader using uart0 provides in-system download and programming capabilities. embeddedice-rt an

温馨提示

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

评论

0/150

提交评论