基于ARMLPC2138的简易多功能服务计时器的设计.docxVIP

基于ARMLPC2138的简易多功能服务计时器的设计.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ARMLPC2138的简易多功能服务计时器的设计 摘要:随着我国经济的迅速发展和人们生活节 奏的不断加快,时间和效率的观念愈加重要。因此给 铁路、银行、邮政、社保等服务窗口提出了高效率的 要求,限时完成各种业务以达到提高服务质量的目的 从而提升其竞争能力。于是,一种简单实用的服务计 时器便应运而生。本文详细介绍一种基于 ARM/LPC2138[1]的简易多功能服务计时器的软硬件设 计方法。 关键词:ARM/LPC2138服务计时器 主程序 中断 程序 中图分类号:TP332文献标识码:A文章编号: 1007-9416(2011)12-0091-03 1>刖5 Philips公司的32位ARM7微控制器具有强大的存 储空间,内嵌32KB片内RAM和512KB的Flash存储 器,可在线编程及移植U C/OS-II操作系统,工作可靠。 因此硬件选用ARM/LPC2138,配置电源电路、时钟复 位电路、存储器电路、键盘电路、液晶接口电路组成 一个完整的简易多功能服务计时器。 2、系统功能功能设计 ⑴按下计时器time键,机器开始计时,当“耗时” 数不断递增,直至和限时数一致时,便连响两次蜂鸣 声;随后,“超时”数便开始计时,直至按下完成finish 键。⑵在耗时”或“超时”工作状态,按下停止stop 键,机器停止计时,显示器显示实际的服务工作时数, 并把操作员的该笔业务所用的服务时间保存到 E2PR0M AT24C512存储器中。⑶若下一次的服务限时 和上次相同,不需重新设定,机器自动从内存中读岀 限时数。⑷按下清除C键,机器清除“耗时”和“超 时”数返回初始状态,按下计时Time键,进入计时状 态。(5)按下更正CE键可清除前次输入的内容。⑹输 入1-4位数字后再按回车键设置服务限时的分、秒数, 机器自动取前两位数作为分钟数,后两位数作为秒数。 3、 硬件设计 系统硬件结构图如图1所示。硬件电路主要由 ARM控制器LPC2138扩展LCM240128图形液晶模块、 AT24C512串行电可擦写存储器、时钟复位电路构成。 4、 软件设计 4.1系统由主程序和定时器中断服务程序组成 主程序主要执行各工作单元初始化、中断设置初 始化、显示初始化,显示、测键和键处理等功能,主 流程图如图2所示。中断服务程序主要完成时间计数 及处理等功能,具体的中断程序不再列岀。 4.2部分程序代码 系统采用ARM嵌入式系统C语言编写⑵⑶主程 序主要代码如下: #include void main(void) { Int key=O; PO=Oxff; lnit(); While (1) { Display)); Read(); Process(); Subkey(); If key goto key pro } Keypro: ???..;处理程序省略 } 测键子程序代码如下(用ARM/LPC2138的并行口 P0接4X4矩阵键盘,以P0.0-P0.3作输入线,以P0.4 -P0.7作输出线): Public int key; void subkey(void) { unsigned char temp; unsigned char ij; key=0; PO=Oxff; P0_4=0; temp=P0; temp=temp OxOf; if (temp!=0x0f) { for(i=50;i0;i-) for(j=200;j0;j-); temp=P0; temp=temp OxOf; if (temp!=0x0f) temp=P0; temp=temp OxOf; switch(temp) case OxOe: key=l; break; case OxOd: key=2; break; case OxOb: key=3; break; case 0x07: key 二 4; break; } temp=P0; temp=temp OxOf; while(temp!=0x0f) { temp=P0; temp=temp OxOf; PO=Oxff; P0_5=0; temp=PO; temp=temp 讦(temp!=0x0f) { for(i=50;i0;i-) for(j=200;j0;j-); temp=P0; temp 二 temp if (temp!=0x0f) temp=P0; temp=temp OxOf; switch(temp) case OxOe: key=5; break; case OxOd: key=6; break; case OxOb: key=7; break; case 0x07: key=8; break; } temp=P0; temp 二 temp 二 temp while(temp!=0x

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档