嵌入式系统综合实训说明书基于ARMCortexM0定时预警器.docx
- 文档编号:28610266
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:24
- 大小:938.56KB
嵌入式系统综合实训说明书基于ARMCortexM0定时预警器.docx
《嵌入式系统综合实训说明书基于ARMCortexM0定时预警器.docx》由会员分享,可在线阅读,更多相关《嵌入式系统综合实训说明书基于ARMCortexM0定时预警器.docx(24页珍藏版)》请在冰豆网上搜索。
嵌入式系统综合实训说明书基于ARMCortexM0定时预警器
各专业全套优秀毕业设计图纸
编号:
嵌入式系统综合实训说明书
题目:
基于ARMCortex-M0定时预警器
院(系):
信息与通信学院
专业:
电子信息工程
学生姓名:
黄彬
学号:
11002
指导教师:
晋良念
2015年1月11日
摘要
随着社会和科技的发展,人类的各种预警器都有了好大的发展,如有温度预警器、压力预警器、定时预警器等等,总之只有你想不到的,没有没研究出来的预警器。
而定时预警器也有了好大的应用,如它可以作为闹钟、又可以做为秒表等等,它集时间、日期、星期功能于一身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
本文介绍了基于arm-m0嵌入式的开发平台设计的多功能的定时预警器的思路和技巧。
在keil开发环境中编译和仿真了所设计的程序,并逐一调试验证程序的运行状况。
仿真和验证的结果表明,该设计方法切实可行,该定时预警器可以实现调时定时播放警报声和点亮警报灯功能具有一定的实际应用性。
关键字:
定时预警器;调时定时;放警报声;点亮警报灯;keil;嵌入式
Abstract
Withthedevelopmentofsocietyandscienceandtechnology,humanbeingshaveallsortsofwarningdeviceoftheverybigdevelopment,suchastemperaturewarningdevice,pressurewarningdevice,timing,warningdevice,etc.,inshort,onlyyouthinknotnotnotdevelopedearlywarningdevice.Timingandwarningdevicethathashadalotofapplications,suchasitcanserveasanalarmclock,andcanbeasastopwatch,andsoon,itsettime,date,weekfunctionsinone,iseasytoread,display,intuitiveandfunctionaldiversity,circuitissimple,andmanyotheradvantages,inlinewiththedevelopmenttrendofelectronicinstrumentsandmeters,hasabroadmarketprospect.Thispaperintroducesthedevelopmentplatformdesignbasedonarm-m0multi-functiontimingofearlywarningofideasandskills.Compilationandsimulationinthekeildevelopmentenvironment,thedesignprogramanddebugoperationconditionofthevalidator.Simulationandverificationresultsshowthattheproposeddesignmethodisfeasible,thetimingwhenwarningdevicecanrealizethefunctionoftimingalarmsoundandlightwarninglamphasacertainpracticalapplications.
KeyWords
Timingwarningdevice;andthetiming;alarm;lightlamp;keil;embedded
目录
1绪论···················································1
1.1嵌入式的发展····················································1
1.2ARM的发展······················································1
2NUC140开发板实时时钟RTC介绍··························1
3总体设计框图··········································2
3.1NUC140VE3AN芯片管脚介绍········································3
3.2复位和时钟电路设计··············································3
3.3预警提醒电路设计················································3
4设计的步骤和过程·······································4
4.1初始化··························································4
4.2计时模块························································4
4.3校时模块························································5
4.4、设定闹钟模块···················································5
4.5显示模块设计····················································5
4.6蜂鸣器和LED灯模块设计··········································5
5仿真实现···············································5
5.1软件调试························································6
5.2仿真分析························································6
6总结···················································7
谢辞···················································8
参考文献·················································9
附录原程序·············································10
1绪论
1.1嵌入式的发展
嵌入式开发是一项系统工程,要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持。
目前很多厂商已经充分考虑到这一点,在主推系统的同时,将开发环境也作为重点推广。
比如三星、ARM在推广Arm7,Arm9芯片的同时还提供开发板和板级支持包(BSP)。
网络化、信息化的要求随着因特网技术的成熟、带宽的提高日益提高,使得以往单一功能的设备如电话、手机、冰箱、微波炉等功能不再单一,结构更加复杂。
这就要求芯片设计厂商在芯片上集成更多的功能,为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如32位、64位RISC芯片或信号处理器DSP增强处理能力,同时增加功能接口。
1.2ARM的发展
ARM的Jazelle技术使Java加速得到比基于软件的Ja ,va虚拟机(JVM)高得多的性能,和同等的非Java加速核相比功耗降低80%。
CPU功能上增加DSP指令集提供增强的16位和32位算术运算能力,提高了性能和灵活性。
ARM还提供两个前沿特性来辅助带深嵌入处理器的高集成SoC器件的调试,它们是嵌入式ICE-RT逻辑和嵌入式跟踪宏核(ETMS)系列。
arm的特点:
体积小、低功耗、低成本、高性能;支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定。
2NUC140开发板实时时钟RTC介绍
实时时钟(RTC)控制器用于记录实时时间及日历功能。
RTC的时钟源由外部32.768kHz晶振提供,管脚为X32I和X32O(请参考管脚描述)或者管脚X32I外接32.768kHz振荡器输出信号源。
RTC控制器提供时间信息(秒、分、时)在时间载入寄存器(TLR)以及通过日历载入寄存器(CLR)提供日历信息(日、月、年)。
时间信息由BCD码格式进行表示。
该控制器也提供闹钟功能,用户可以预先在时间闹钟寄存器(TAR)中设置闹钟时间、日历闹钟寄存器(CAR)中设置闹钟日期来进行闹铃设置。
RTC控制器支持周期时间节拍和闹钟匹配中断。
通过设定TTR(TTR[2:
0]),周期中断有8个周期选项1/128,1/64,1/32,1/16,1/8,1/4,1/2及1秒。
当闹钟中断使能(RIER.AIER=1)的情况下,RTC计数器内的值TLR和CLR分别等于闹钟设定时间寄存器TAR和CAR时,中断标志(RIIR.AIF)将被置,并产生闹钟中断请求。
如果唤醒芯片功能被使能(TWKE(TTR[3])=1),那么RTC时间与闹钟匹配时能够将芯片从掉电模式中唤醒。
RTC模块框图1如下:
图1RTC模块框图
3总体设计框图
本电路主要由3大部分电路组成。
ARM最小系统电路、时钟显示电路和警报电路本设计用LED灯指示。
其中ATM最小系统主要由复位电路和时钟电路组成。
在该设计中闹钟提醒由LED灯代替当定时时间到的话,LED灯亮延时设定的时间后自动关闭。
3.1NUC140VE3AN芯片管脚介绍
图2NUC140VE3AN芯片管脚
3.2复位和时钟电路设计
外部采用32.768kHz晶振使能控制,而当缺省的时钟源时为外部4~24MHz晶振。
32.768KHZ是一个标准的频率,因为32768是2的15次方。
当把32.768k晶振的信号连到一个16位的计数器时,第16位数字每变化一次,正好就是1秒钟时间,这样就可以计时了。
3.3预警提醒电路设计
本设计的预警提醒电路采用蜂鸣器,并且为了调试方便用实验板上的发光二极管LED1~LED4指示,其与实验板对应接口为PC0~PC3,高电平为亮,低电平为灭。
如图3所示。
图3led预警图
4设计的步骤和过程
4.1初始化
1、晶振的选择初始化:
SYSCLK->PWRCON.XTL32K_EN=1;
SYSCLK->PWRCON.XTL12M_EN=1;
2、LCD初始化:
init_LCD();
LED清零:
clear_LCD();
3、RTC初始化:
init_RTC();
首先,启用和选择RTC时钟源;然后启动和解锁RTC模块;再然后启动时间和日历设置;再然后启动预警时间和日历设置。
UNLOCKREG();
SYSCLK->PWRCON.XTL32K_EN=1;
SYSCLK->APBCLK.RTC_EN=1;
START_RTC();
RTC->TSSR.HR24_HR12=1;//Set24hourmode
set_CLR(1,4,1,2,2,2);
set_TLR(1,5,2,0,0,0);
set_CAR(1,4,1,2,2,2);
set_TAR(1,5,2,0,0,4);
RTC->RIER.AIER=1;
RTC->RIER.TIER=1;
NVIC_EnableIRQ(RTC_IRQn);
4.2计时模块
通过使用rtc的时钟芯片,中断函数来实现,每秒调用一次中断,然后每调用一次秒数加一。
RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。
RTC的技术器是一个32位的计数器,使用32.768khz的外部晶振。
4.3校时模块
首先,读取其的时钟时刻年、月、日、时、分、秒。
然后通过按键1来选择要调整的具体的年月日时分,再然后通过按键2使其加一,而通过按键3来使其减一,再然后通过按键9来实现退出时钟调整函数。
4.4设定闹钟模块
同理,通过按键4选择来调整的是具体的预警时间:
时分,再然后通过按键2使其加一,而通过按键3来使其减一,再然后通过按键9来实现退出时钟调整函数。
4.5显示模块设计
voidprint_Line(int8_tline,chartext[])
{
int8_ti;
for(i=0;i printC(i*8,line*16,text[i]); } 通过其函数来实现吧要显示的英文数字写进去寄存器中,进而通过调用使其显示出来。 4.6蜂鸣器和LED灯模块设计 当inpw(&RTC->RIIR)&0x1为真则led等亮并发出预警声音。 if(inpw(&RTC->RIIR)&0x1) { print_Line(3,"RTCAlarm! ! ! "); DrvGPIO_ClrBit(E_GPC,12);//outputLowtoturnonLED DrvGPIO_ClrBit(E_GPC,13);//outputLowtoturnonLED DrvGPIO_ClrBit(E_GPC,14); DrvGPIO_ClrBit(E_GPC,15); DrvGPIO_ClrBit(E_GPB,11); Alarm_E=0; outpw(&RTC->RIIR,1); } 5仿真实现 5.1软件调试 本课题子KEIL软件进行代码调试。 Keil uVision2是美国Keil Software公司出品的51系列单片机C语言软件开发系统,使用接近于传统C语言的语法来开发。 与汇编相比,C语言在结构行、功能上、可维护行、可读性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期。 首先打开KEIL软件,运行Keil uVision2 IDE软件。 在KEIL下建立项目保存在一个文件中,然后选择所要用的单片机类型这里选择Atmel公司的AT89C51。 然后添加已经写好的汇编程序,给项目添加程序文件。 在编译、连接前注意选择Project菜单下的Options for Target‘Target1’命令进行设置,选择Output选项卡,在Create Executable选项前打钩,选择生成可执行文件HEX文件,便于以后硬件仿真。 如下图4所示: 图4编程软件key 5.2仿真分析 通过硬件和软件的调试,按键1能准确的选择调节时间,而按键2和按键3是准确的调整时间加一或减一,而按键4是准确的调整预警时间,而按键8是关闭警报,按键9是确定调整退出。 总之能准确的能够实现了定时预警效果。 rm0开发板测试如图5所示。 图5arm0开发板测试图 6总结 从设计开始到最终完成设计,一点一滴积累,在实践中成长,在挫折中前进。 在设计的前期,我系统的学习了arm0的相关资料,掌握了arm0外部电路的合理设计以及各个引脚的功能。 这一步一步的不断努力,让我学到了很多在书本上学不到的东西,尤其是在处理故障和电路兼容方面的考虑,都使我受益颇多。 在这里课程设计中,我深深感受到实践的重要性,它是检验我们所学知识的有效途径。 没有付出,就没有回报,通过为期五周的准备与学习是我完成设计的前提。 在这过程中也遇到过一些难题,经过自身的努力以及向同学请教,我学到很多,也解决了很多问题。 本次设计的题目为基于arm0的定时预警器设计,通过五周努力,可以顺利实现的功能有: 在LCD上显示时间,并且能通过按键实现设置时间的调节、闹钟的调节和开关等控制 最后,我深刻感受到要做好一个课程设计,就必须做到: 在设计程序之前,对所需资料的综合整理,有效的挑选资料;要明确目标,整理思路;合理设计出系统所必须的流程图,做好充分的心里准备。 这次设计是对我所学arm一书的综合考验,使我能查漏补缺,复习课本知识,加深理解记忆,所以每一步我都用心去做。 谢辞 感谢学院给我们提供了一个展现自己的舞台,给我们一次难得煅炼的机会,使得我们的动手能力和专业技能都有了很大的提高。 在设计和制作的过程中,我们深切的体会到,实践是理论运用的最好检验和团队合作的重要性,这一次的设计是对我们所学知识的一次综合性检测,无论是动手能力还是理论知识运用能力都得到了提高,同时加深了我们对网络资源的认识,大大提高了查阅资料的效率,使我们有充足的时间投入到电路设计当中。 在做作品的日子里得到了指导教师的悉心指导,在此向我们的指导教师致以诚挚的谢意。 并且感谢提供相关技术帮助的老师和同学,你们的支持和鼓励使我们对这次的作品完成有了信心和动力,也给了我们很多无私的帮助和支持,我们在此深表谢意。 参考文献 [1]高吉祥.电子技术基础实验与课程设计[M].电子工业出版社,2002 [2]赵俊.ARMCortext-M0从这里开始.北京航空航天大学出版社,2012 [3]温子琪.ARMCortex-M0微控制器原理与实践.北京航空航天大学出版社,2013 [4]黄建华.ARMCortex嵌入式系统开发教程.西安电子科技大学出版社,2012 [5]刘同法.ARMCortexM0最小系统应用与C程序编写.北京航空航天大学出版社,2014 [6]张庆双.电子元器件的选用与检测[M].机械工业出版社,2003 附录原程序 #include #include #include"NUC1xx.h" #include"Scankey.h" #include"LCD.h" #include"GPIO.h" staticuint8_tAlarm_E=1; uint8_ttemp=0x0,ret=0; uint8_t*arr[7]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"}; //RTCregisteraccess voidset_TLR(int32_ta,int32_tb,int32_tc,int32_td,int32_te,int32_tf) { outpw(&RTC->TLR,a<<20|b<<16|c<<12|d<<8|e<<4|f); } voidset_CLR(int32_ta,int32_tb,int32_tc,int32_td,int32_te,int32_tf) { outpw(&RTC->CLR,a<<20|b<<16|c<<12|d<<8|e<<4|f); } voidset_TAR(int32_ta,int32_tb,int32_tc,int32_td,int32_te,int32_tf) { outpw(&RTC->TAR,a<<20|b<<16|c<<12|d<<8|e<<4|f); } voidset_CAR(int32_ta,int32_tb,int32_tc,int32_td,int32_te,int32_tf) { outpw(&RTC->CAR,a<<20|b<<16|c<<12|d<<8|e<<4|f); } //startReal-TimeClock voidSTART_RTC(void) { while (1) { RTC->INIR=0xa5eb1357; if(inpw(&RTC->INIR)==1) break; } while (1) { RTC->AER.AER=0xA965; if(inpw(&RTC->AER)&0x10000)//AERbit break; } } //InitializeRTC voidinit_RTC(void) { UNLOCKREG(); /*Step1.EnableandSelectRTCclocksource*///步骤1。 启用和选择RTC时钟源 SYSCLK->PWRCON.XTL32K_EN=1;//Enable32KhzforRTCclocksource使能外部32.768kHz晶振 SYSCLK->APBCLK.RTC_EN=1;//EnableRTCclocksource使能RTC时钟 /*Step2.InitiateandunlockRTCmodule*///步骤2。 启动和解锁RTC模块 START_RTC(); /*Step3.InitiateTimeandCalendarsetting*///步骤3。 启动时间和日历设置 RTC->TSSR.HR24_HR12=1;//Set24hourmode //Settimeandcalendarforloadingregister,Calendar劤09/1/19,Time劤13: 20: 00 set_CLR(1,4,1,2,2,2); set_TLR(1,5,2,0,0,0); /*Step4.Setalarminterrupt*/ //Settimeandcalendarforalarmregister,Calendar劤09/1/19,Time劤13: 30: 00 set_CAR(1,4,1,2,2,2); set_TAR(1,5,2,0,0,4); //Enablealarminterrupt RTC->RIER.AIER=1; RTC->RIER.TIER=1; NVIC_EnableIRQ(RTC_IRQn); } voidfount(charTEXT3[16],int32_ta,int32_tb,int32_tc,int32_td,int32_te,int32_tf,int32_tp) { sprintf(TEXT3+6,"%x",a); sprintf(TEXT3+7,"%x",b); sprintf(TEXT3+9,"%x",c); sprintf(TEXT3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 综合 说明书 基于 ARMCortexM0 定时 预警
![提示](https://static.bdocx.com/images/bang_tan.gif)