ARM报告2重点.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM报告2重点

摘 要 日历在生活中经常用到,电子制作的带时钟的日历更是在生活中广泛用到。 关键字:日历;LPC2138;按键;LCD1602; 摘 要 1 1.设计方案与系统构成 3 2.主要器件介绍 3 2.1 LPC2138主要性能 3 2.2 RTC寄存器 4 2.3报警寄存器 4 3. 硬件电路图 4 4. 软件设计及调试 5 4.1流程图 5 4.2程序 6 4.3硬件电路检测 12 4.4 功能调试 12 5. 改进方案 12 6.反思与体会 13 7.参考文献 13 1.设计方案与系统构成 本次实训课题——基于嵌入式ARM的日历的制作。软件程序从下载口接入LPC2138嵌入式芯片,通过调用LPC2138中的RTC实时时钟模块来实现日历功能,外部接个D/A转换电路,实现生日提示音的功能。外加5个按键,分别控制日期时间的调整,和生日的设定。电路系统构成框图如图 2.主要器件介绍 2.1 LPC2138主要性能 (1)小型LQFP64封装的16/32位ARM7TDMI-S微控制器。 (2)8/16/32kB片内静态RAM。 (3)片内Boot装载软件实现在系统/在应用中编程(ISP/IAP) 。扇区擦除或整片擦除的时间为400ms,1ms可编程256字节。 (4)EmbeddedICE?RT 和嵌入式跟踪接口可实时调试(利用片内 RealMonitor 软件)和高速跟踪执行代码。 (5)1个(LPC2132/2132)或 2 个(LPC2138)8 路 10 位 A/D 转换器共包含 16 个模拟输入,每个通道的转换时间低至2.44us。 (6)1个10位D/A转换器,可提供不同的模拟输出(LPC2132/2138) 。 (7)2个32位定时器/计数器(带4路捕获和4路比较通道) 、PWM单元(6路输出)和看门狗。 (8)实时时钟具有独立的电源和时钟源,在节电模式下极大地降低了功耗。 (9)多个串行接口,包括2个16C550工业标准 UART、2个高速I2C接口(400 kbit/s) 、SPITM 和SSP(具有缓冲功能,数据长度可变) 。 2.2 RTC寄存器 时钟节拍计数器CTC是用于尝试秒的时钟节拍计数,这是一个只读寄存器,但它可以通过时钟控制寄存器(CCR)复位为0,如图所示。 时钟控制寄存器CCR是一个4位寄存器,它用于控制时钟分频电路的操作,包括启动RTC和复位时钟节计数器琴CTC等 2.3报警寄存器 报警寄存器如表2.3.2(3)所示,这些寄存器的值与时间计数器相比较,如果所有未屏蔽的报警寄存器都与它们相对应的时间计数器相匹配,那么将产生一次中断。像中断位置寄存器的bit1写入1清除中断。 表2.3.2(3)报警寄存器 硬件电路图 LPC2138的外围电路及为简单,如下图所示,LCD1602为显示电路,按键S1-S5为控制电路,蜂鸣器为生日提醒电路。 硬件电路图如图所示: 软件设计及调试 4.1流程图 4.2程序 #include LPC21xx.H #define uint8 unsigned char #define uint32 unsigned long #define SW_1 (17) #define SW_2 (19) #define SW_3 (21) #define SW_4 (23) #define SW_5 (25) #define LCD_RS (18) #define LCD_RW (19) #define LCD_E (110) #define LCD_BUSY (17) #define Fpclk#define BELL (27) uint8 txt0[]={birthday}; uint32 uint32 i; for(i=0; in; i++); } void LCD_ChkBusy(void) { IO0DIR=0x000007ff; IO0CLR=LCD_RS; IO0SET=LCD_RW; IO0SET=LCD_E; while((IO0PINLCD_BUSY)!=0); delay(400); IO0CLR=LCD_E; IO0DIR=0x000007ff; } void LCD_write_command(uint8 dat, uint8 busy) { if(busy) LCD_ChkBusy(); IO0CLR=LCD_E; IO0CLR=LCD_RS; IO0CLR=LCD_RW; IO0CLR=0x000000ff; IO0SET=dat; IO0SET=LCD_E; delay(400); IO0CL

文档评论(0)

麻将 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档