资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
物理与电子信息学院嵌入式系统课程设计成绩评定表专业:电子信息工程 班级:1102电信 学号:110802111 姓名 课题名称基于ARM时钟显示设计任务与要求1、 可以用按键调整时间2、 可用数码管显示时、分、秒3、 以用蜂鸣器实现闹钟的功能4、 用Protues实现仿真5、 完成课程设计报告设计报告成绩评分标准:设计报告成绩:电子作品成绩评分标准:电子作品成绩:课程设计成绩 总成绩: 指导教师:2014年6月27日嵌入式系统课程设计报告设计课题: 基于ARM时钟显示 专业班级: 电信1102 学生姓名: 学 号: 指导教师: 设计时间:2014年6月27日 基于ARM时钟显示 一、 设计任务与要求1、 用数码管显示时、分、秒2、 可以用按键来调整时间3、 可以用蜂鸣器实现闹钟的功能4、 用Protues实现仿真5、 完成课程设计报告二、方案设计与论证基于ARM的时钟显示:本课程设计是通过LPC2132ARM处理器而设计的显示时钟,由硬件和软件相配合使用。硬件由数码管显示模块、按键模块、蜂鸣器三个模块。实现电子时钟的功能,并在LED上显示类似的时钟界面,动态显示时间,时间包括时、分、秒。1.方案一、利用LPC2132内部定时器定时,把数据送到数码管,通过数码管显示时、分、秒。设定八个按键,时、分、秒分别通过两个按键来控制加减,从而实现时间的调整。通过蜂鸣器模块,当数码管显示达到设置的报警时间后,蜂鸣器蜂鸣,从而实现闹钟的功能。至此,一个相对简单的基于ARM的时分秒时钟显示。 LPC2132按键模块数管显码示模块蜂鸣器模块 图2-1 基于LPC2132ARM时钟显示方案框图2.方案二本方案是基于LPC2106处理器而设计的时钟,综合性较强,涉及到RTC外部中断,引脚的GPIO功能,C语言编程等知识。显示模块采用液晶模块模块LCD1602同时显示实时时间和报警时间。从而实现电子时钟显示和报警。系统启动系统初始化判断正常走时?进入调整时钟程序 LCD显示时间闹钟调整YES时钟调整进入调整闹钟程序NO图2-2 基于LPC2106ARM时钟显示方框流程图通过课题的设计的要求,基于ARM的时钟显示,显示时、分、秒。通过框图可以看出第二种方案过于复杂,第一种方案就可以实现简单的显示时、分、秒。所以通过分析,结合设计电路性能指标、器件的性价比,本设计电路选择方案一。三、软件设计与调试通过Protues和keil实现程序的设计和仿真程序设计#include config.huint32 second=0; /秒初始化uint32 minute=0; /分初始化uint32 hour=9; /时初始化uint32 keyr=123; /定义P1.23为复位按键uint32 key=116; /定义P1.16为停止按键uint32 keyadd1=117;/定义P1.17为秒加按键uint32 keysec1=118;/定义P1.18为秒减按键uint32 keyadd2=119;/定义P1.19为分加按键uint32 keysec2=120;/定义P1.20为分减按键uint32 keyadd3=121;/定义P1.21为时加按键uint32 keysec3=10; dly-) for(i=0; i3400; i+); /初定为3400个自减变量,用于数码管延时显示/* 函数名称 :IRQ_Timer0()* 函数功能 :定时器中断*/void _irq IRQ_Timer0 (void) if(hour=9)&(minute=30)&(second=0)/若时间为9点30分时,则执行下面程序 IO0SET=116;/给P0.16口一个高电平,即使发声器响,从而实现闹钟功能 else IO0CLR=160)/当秒加到大于60时,秒变为59 second=59; if(minute60)/当分加到大于60时,分变为59 minute=59; if(second=60)/当秒等于60时,分加1,秒清零 minute+; second=0; if(minute=60) /当分等于60时,时加1,分清零 hour+; minute=0;second=0; if(hour=24) /当小时为24时,时清零 hour=0; T0IR = 0x01; / 打开定时器VICVectAddr = 0x00; /向量IRQ通道0的中断服务程序地址为0/* 函数名称 :Time0Init()* 函数功能 :定时器0初始化*/void Time0Init(void) T0TC = 0; /定时器设置为0 T0PR = 0; /时钟不分频 T0MCR = 0x03; / 设置T0MR0匹配后复位T0TC,并产生中断标志 T0MR0 = Fpclk /3; /设置匹配寄存器的值 T0TCR = 0x01; / 启动定时器0 VICIntSelect = 0x00; /所有中断通道设置为IRQ中断VICVectCntl0 = 0x20 | 0x04; / 设置定时器0中断通道分配最高优先级VICVectAddr0 = (uint32)IRQ_Timer0; / 设置中断服务程序地址 VICIntEnable = 1 0x04; / 使能定时器0中断/* 函数名称 :displays()* 函数功能 :秒显示程序*/void displays(unsigned int second) uint32 i; uint32 dis_num2; uint32 temp; temp=second; for(i=0;i2;i+) /限定2位显示 dis_numi=temp%10; /把最低位的模取出来取余,显示个位数 temp=temp/10; /除法,显示十位数 IO0CLR=0xff
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号