ARM嵌入式系统课程设计-红外感应自动窗帘控制器设计.doc_第1页
ARM嵌入式系统课程设计-红外感应自动窗帘控制器设计.doc_第2页
ARM嵌入式系统课程设计-红外感应自动窗帘控制器设计.doc_第3页
ARM嵌入式系统课程设计-红外感应自动窗帘控制器设计.doc_第4页
ARM嵌入式系统课程设计-红外感应自动窗帘控制器设计.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

电气与控制工程学院课程设计(论文) 课程名称: ARM嵌入式系统_ 题 目:_红外感应自动窗帘控制器设计_ 院 (系): 电气与控制工程学院_ 专业班级: 自动化1002班_ 姓 名: X_ 学 号: X 指导教师:_ 2014年01月09日目录绪论 -一 、系统方案论证-二 、硬件系统结构图-三 、程序流程图-四 、软件设计-五 、实物图-六 、结论-七 、心得体会-八 、参考文献-绪论:随着人民生活水平的不断提高,人们对家庭生活舒适性的需求越来越强烈,窗帘作为每个家庭生活中最必须的家居用品之一,自然也需要满足人民更舒适性的需求。窗帘最基本的作用无非是保护业主的个人隐私以及遮阳挡尘等功能,但传统的窗帘您必须手动去开关,每天早开晚关也是挺麻烦的,特别是别墅或复式房的大窗帘,比较长,而且重,用时需要很大的力才能开关窗帘,特别不方便;于是遥控电动窗帘在最近几年被广泛应用于高级公寓,只要遥控器轻按一下,窗帘就自动开合,非常方便;当然,如果采用智能窗帘控制系统还可以实现窗帘的定时开关,场景控制等更多高级的窗帘控制功能,真正让窗帘成为现代家居的一道亮丽风景线。本次课程设计为了更好地去完成自动窗帘的工作,我们设计包括LPC2131最小系统、ULN2003A驱动芯片、TH12864-15液晶显示、红外对管、五线四相步进电机等几大部分组成。通过LPC2131芯片、ULN2003A驱动芯片控制电机动作,红外接受信号,通过人体感应控制,电机的正转、反转、停止等几种运行状态控制着窗帘的各种状态。一、 系统方案论证:(1)方案一:采用LPC2131 ARM芯片为主控制芯片,由ULN2003A为驱动芯片控制步进电机转动;并通过MG12864点阵图形液晶图形模块显示步进电机转动模式(包括正转、反转和停止等)。(2)方案二:用三极管组成的H桥驱动直流电机,优点有电路简单,价格低廉等,重量也轻许多,适合驱动小车。系统最终选择方案一,因为LPC2131外接简单,价格低廉,能够最大化的的减少工作量。二、 硬件系统结构图:本次设计硬件部分有LPC2131最小系统、ULN2003A驱动电路、按键模块、五线四相步进电机、TH12864-15,及部分相互协调的工作实现控制功能。下面就对这些模块进行介绍:1、 LPC2131介绍:LPC2131是一个支持实时仿真和跟踪的16/32位ARM7TDMI-S CPU的微控制器,并带有256KB嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行,且可使用16位Thumb模式。LPC2131支持多种通信接口,包括UART, 和SPI等串行接口以及PWM输出接口,外围接口部分设计极为方便、灵活。LPC2131开发板是广州周立功公司设计的EasyARM系列开发套件之一,采用了PHILIPS公司基于ARM7TDMI-S 核、单电源供电、LQFP64封装的LPC2131,具有JTAG仿真调试、ISP编程等功能。如下图所示为LPC2131功能框图。 LPC2131开发板功能框图可进行GPIO的控制实验,如LED闪烁控制、键盘输入、蜂鸣器控制、模拟SPI等; 可进行外部中断实验,学习向量中断控制器(VIC); 定时器控制实验,如定时控制LED、按键捕获输入、匹配比较输出等;使用RS232转换电路,完成UART通讯实验等。2、 系统原理结构框图: 12864液晶显示EasyARMLPC2131最小系统红外感应模块四相五线步进电机ULN2003A驱动芯片3、 ULN003A驱动芯片:ULN是集成达林管IC,内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压为50V,电流为500MA,输入电压为,适用于TTL COMS,由达林顿管组成驱动电路。下图为ULN2003A的管脚功能图: ULN2003A管脚图ULN2003 高压大电流达林顿晶体管阵列芯片,吸收电流可达500mA,输出耐压50V,具有很强的驱动能力。内部具有7组达林顿管电路,可以驱动7路负载。IN为输入端可由单片机引脚直接控制,当输入端为高电平时,输出端OUT输出低电平。4、 TH12864-15液晶显示:TH12864-15是128(列)64(行)点阵的液晶显示模块。当15脚为低且16脚为高时选中TH12864-15的左区(左边的6464),当15脚为高且16脚为低时选中MG12864的右区(右边的6464)。19脚和20脚是为了在光线暗的环境下看到液晶显示器的显示内容而加的背光,即在液晶显示器的背面加一光源。控制线RW、CSI、CS2、RS必须在使能线E为低的时候改变。当使能线E为高时控制线RW、CSI、CS2、RS不能改变;使能线E为高时TH12864-15从数据线DB0DB7输出数据。下图为TH12864-15的管脚说明:引脚号 符号 功能引脚号 符号 功能1GND 模块的电源地714 DB0DB7 并行数据072VDD 模块的电源正端15PSB 并/串行接口选择3 V0 LCD驱动电压输入端16NC空脚4 RS 并行的指令/数据选择信号;串行的片选信号17RET复位,低电平有效18 NC 空脚5 R/W 并行的读/写选择信号;串行的数据口19 BLA 背光源正极(LED+5V)6 E 并行的使能信号;串行的同步时钟19BLK 背光源负极(LED-0V)TH12864-15管脚说明5、 电机驱动模块ULN2003A:设计使用ULN2003A驱动芯片来驱动步进电机,用发光二极管来显示程序的运行状态。驱动电路如下图所示: 电机驱动模块电路6、 显示模块TH12864-15:设计采用TH12864-15点阵式液晶显示屏,使用串行接法,电路模块图如下图所示:三、 程序流程图:设置引脚功能液晶初始化是否上升沿跳变是电机正转是否下降沿跳变是电机反转四、 软件设计:1、 程序:#include config.h#include stdio.h#define KEY1 117 / P0.17#define KEY2 120 / P0.20 #define BEEPCON 17 / P0.7#define KEY3 121 / P0.21#define MOTO1 19 / P0.9 #define MOTO2 110/ P0.10#define MOTO3 112/ P0.12#define MOTO4113/ P0.13#define MOTOCON0x3c003600 / MOTO控制字#define GPIOSET(PIN) IO0SET = PIN / 方便修改置位端口#define GPIOCLR(PIN)IO0CLR = PIN / 方便修改清位端口#define LCD_CON 0x000c0080 /液晶显示控制字#define E_CLK (118) ; /clock input 同步时钟输入端 const uint32 RW_SID= (119) ; /data input/output 串行数据输入、输出端 const uint32 CS = (10; dly-)for (i=0; i10; i+); /串行发送一字节数据 void SendByte(uint8 dat) uint8 i; IO0SET=CS; for(i=0;i8;i+) IO0CLR=E_CLK ;delay(5);if(dat&0x80)IO0SET=RW_SID;delay(5);else IO0CLR=RW_SID; IO0SET=E_CLK;delay(5); dat=dat1; IO0CLR=CS; /串行接收一字节数据 unsigned char ReceieveByte(void) uint8 i,d1,d2; for(i=0;i8;i+) IO0CLR=E_CLK;delay(5); IO0SET=E_CLK;delay(5); if(RW_SID)d1+; d1=d11; for(i=0;i8;i+) IO0CLR=E_CLK;delay(5); IO0SET=E_CLK;delay(5); if(RW_SID)d2+; d2=d21; return (d1&0xF0+d2&0x0F); /写控制命令 void SendCMD(uint8 dat) SendByte(0xF8); SendByte(dat&0xF0); SendByte(dat&0x0F)4); /写显示数据或单字节字符 void SendDat(uint8 dat) SendByte(0xFA); SendByte(dat&0xF0); SendByte(dat&0x0F)0; dly-) for(i=0; i4000; i+); void MOTO_Mode2(uint8 i) while(fan!=0x5cf)&(KEY3&IO0PIN)!=0) initlcm(); display(0x80,FZ); delay(100); display(0x90,ZZ1); delay(100); /* AB */ GPIOSET(MOTO1); GPIOSET(MOTO4); DelayNS(i); GPIOCLR(MOTO1); GPIOCLR(MOTO4); /* BC */ GPIOSET(MOTO4); GPIOSET(MOTO3); DelayNS(i); GPIOCLR(MOTO4); GPIOCLR(MOTO3); /* CD */ GPIOSET(MOTO3); GPIOSET(MOTO2); DelayNS(i); GPIOCLR(MOTO3); GPIOCLR(MOTO2); /* DA */ GPIOSET(MOTO2); GPIOSET(MOTO1); DelayNS(i); GPIOCLR(MOTO2); GPIOCLR(MOTO1); fan+; if(fan=0x5cf) initlcm(); display(0x80,TZ); delay(100);void MOTO_Mode1(uint8 i) if(KEY3&IO0PIN)!=0) while(zhen!=0x5cf) initlcm(); display(0x80,ZZ); display(0x90,ZZ1); delay(100); if(zhen=1400) display(0x88,KD);delay(100);SendCMD(0x8B);SendDat(zhen/14)/10+0x30); SendCMD(0x8C);SendDat(zhen/14)%10+0x30); /* AB */ GPIOSET(MOTO1); GPIOSET(MOTO2); DelayNS(i); GPIOCLR(MOTO1); GPIOCLR(MOTO2); /* BC */ GPIOSET(MOTO2); GPIOSET(MOTO3); DelayNS(i); GPIOCLR(MOTO2); GPIOCLR(MOTO3); /* CD */ GPIOSET(MOTO3); GPIOSET(MOTO4); DelayNS(i); GPIOCLR(MOTO3); GPIOCLR(MOTO4); /* DA */ GPIOSET(MOTO4); GPIOSET(MOTO1); DelayNS(i); GPIOCLR(MOTO4); GPIOCLR(MOTO1); zhen+; if(KEY3&IO0PIN)=0) while(tin=0) initlcm(); display(0x80,TZ); delay(100); GPIOCLR(MOTO1); GPIOCLR(MOTO2); GPIOCLR(MOTO3); GPIOCLR(MOTO4); DelayNS(10); if(zhen=0x5cf) initlcm(); display(0x80,TZ); delay(100); void MOTO_Mode3(uint8 i) while(KEY3&IO0PIN)=0) initlcm(); display(0x80,TZ); delay(100); GPIOCLR(MOTO1); GPIOCLR(MOTO2); GPIOCLR(MOTO3); GPIOCLR(MOTO4); DelayNS(i); 2、 仿真图:五、 实物图: 六、 结论:本次课程设计中主体功能采用步进电机实现,显示功能采用液晶12864实现,对于步进电机的驱动采用uln2003芯片,使用方便,简化电路。对于液晶12864的操作采用串行通信,串行通信操作简单,连线方便。检测感应模块主要通过检测人体运动产生电平跳变即有人走近窗帘或者离开窗帘,然后将信号发送给lpc2131来控制电机正反转。对于主程序的设计,先定义一个标志变量flag,当检测到电平上升沿时,控制电机正转,变量flag=1;当检测到下降沿,同时flag=1时即人离开窗帘,控制电机反转,关闭窗帘。定义两个变量用来计数,在开关窗帘过程中,每当电机转动一圈时,相应变量自动加一,当变量达到设定上限值时,电机停止转动,即窗帘已经完全打开或者完全关闭。七、 心得体会:1、 陈显设计心得体会:为期两周的ARM课程设计实习马上就要结束了,我们组的课设题目是红外感应自动窗帘控制控制器设计,我们组共五个人,我作为本次实习的组长,不仅要完成好自己的工作,还要分配和监督其他组员完成好相应的工作,虽然过程有点辛苦,但我还是非常开心的,因为我从本次实习中收获了很多宝贵的经验。首先,本次实习是将我本学期所学的ARM嵌入式系统基础教程和ARM实验课的结合,综合性和实用性比较强,能极大地提高我将知识与实践相结合的能力。接着就是具体的课题设计体会了,我主要负责软件、找资料和写报告等等,没办法,因为我是组长,但我乐在其中。我的硬件原理图是用Proteus仿真软件画出来的,其中用到的主要元器件有LPC2131、TH1286415液晶显示器、ULN2003A电机驱动、五线四相步进电机、红外对接二极管和按钮开关等等。尽管刚开始很多元器件都找不到,但最后通过大家的共同努力,得到了解决,这充分体现了团队合作的力量。其次就是硬件与软件相结合,调试时遇到的问题了,刚开始我们的液晶显示频都不太亮,后来发现原来是电压过低(刚开始接的是3.3V),于是我们通过用51单片机(5V)供电得到了解决,可液晶显示屏虽变亮了,但就是没有任何文字显示,并且电机也没有任何反应,后来发现我们将红外发射与红外接收这对二极管接反了等等。总之,最后的调试是最考验大家耐心和毅力的了,同时这也要求我们要有很强的责任心和团队能力,这里,就要发挥我这个组长的能力了。最后,我觉得这次ARM课程设计实习是我大学四年里做过的最有实际意义的实习,因为我能真正的从中学到很多影响我今后人生的知识,不管是生活上的,还是学习上的。因为我是保研的,并且将来还会有很多与ARM和嵌入式接触的机会,所以这次实习也相当于是我研究生生涯的启蒙了,尽管知识不是很多,可这次实践是知识的现实化,它打开了我对将来学业的无尽兴趣,我会保持这份热情一路高昂的走向未来的。2、 王刚设计心得体会:经过两个周的ARM课程设计,使得我对ARM的了解从书本知识上升到了实践应用,以前对ARM的认识一直是感觉它是可望而不可及的,在学习ARM之前我只知道手机就是一个ARM,因此感觉ARM好神奇呀,经过这次课程设计,终于让我揭开了ARM的神秘面纱。其实,ARM就是一个升级版的单片机,只不过它内部的资源比单片机更多更丰富,但是学习起来也就比单片机难上手的多,不过总体来说二者是一脉相通的,那就是同是作为控制部分,二者的编程也都是以C语言和汇编语言为基础的。我们这次课程设计的题目是红外感应的自动窗帘控制器的设计,实现的主要功能是通过电机的正反转来实现窗帘的打开和关闭,它主要的器件有ARM2131,TH1286415显示器,和电机驱动电路,我们所用的步进电机为28BYJ48 5VDC,其驱动芯片为ULN2003A。起先,我们用Protel画了整个控制系统的原理图,这是个艰难的过程,由于对Protel的使用不是很熟悉,故花了好多时间去找元器件和画元器件,好在终于将原理图画了出来。然后,我们根据画出的原理图,焊接了整个系统的硬件,由于以前有单片机课程设计的基础,故这个过程不是很艰难。最后我们通过查相关书籍,上网查资料,参考借鉴编写了程序,几经调试修改终于一个没有错误的程序得以实现。而后我们通过JTAG口下载程序到ARM中,实现了通过编写程序来控制电机的正反转,从而控制窗帘的打开和关闭。美中不足的是虽然实现了电机的正反转,可是我们是通过按键来控窗帘的关闭的,这与我们刚开始的想象有点偏差,因此,我们有进一步通过光敏传感器来实现。通过这次ARM课程设计的实习,一方面让我们感到团队合作的重要,另一方面,我们小组每个人都或多或少的贡献出了自己的想法和汗水,使得这次课程设计顺利完成。最重要的是我们每个人通过这次课程设计都对ARM的了解更加深入,对ARM的应用也得以更好的掌握,总而言之,这次ARM实习让我们获益匪浅。3、 江腾飞设计心得体会:为期两周的ARM课程设计结束了,我们组选择的题目是红外感应的自动窗帘控制器设计。它主要的器件有ARM2131,TH1286415显示器,电机驱动等。这次实习时对我们的课程ARM的一次实际应用,通过实习让我们对嵌入式系统有了更加深入的理解,并把理论应用与实际,虽然我们让然有很多不足,但是通过查资料请教老师使得做起来不是特别艰难。在完成课程设计期间,我们先通过查资料,了解红外感应自动窗帘控制器的工作原理,以此为依据画出仿真图,在这里我们遇到了很多难题,有的元件我们只知道名称但是在元器件库中找不到,通过请教老师我们掌握了如何在元器件库中生成元件。我们应用了protel软件。焊接是我们组的王刚和张力同学一起完成的,在期间好多东西都焊接在了一起,没有很好的焊功,但是不气馁,仍然不断完善,通过努力,我们的电路板完成的不错。在最后的接线调试阶段,出现了很多问题,比如显示屏不显示,我们通过检测以及修改程序问题都得解决,最终通过大家的努力我们做的红外感应自动窗帘控制器实现了通过点击的正反转控制窗帘的打开以及关闭。通过这次课程设计,让我懂得了学到的理论知识一定要学以致用,更要懂得团队之间的相互配合。在这次课程设计中我的动手能力有了很大的提高,对protel软件能更好的掌握了,对嵌入式系统的理论有了更家透彻的理解。这次实践让我们学到的知识能很好地运用于实践,感觉这是一次很好的锻炼机会。通过查资料以及请教老师,我们的课程设计得以成功,感觉很开心。4、 甘育超设计心得体会:两周的ARM课程设计就快要结束了,这次我们的课程设计题目是红外感应的自动窗帘控制器设计,实现的主要功能是通过电机的正反转来实现窗帘的打开和关闭,主要器件有ARM2131,TH1286415显示器,和电机驱动电路。这一学期我们学习了一学期的ARM嵌入式系统的理论知识,通过一学期的学习,懂得了ARM7TDMI-S的基本结构和基础知识,对嵌入式系统有了初步的了解,这一学期末安排我们进行ARM课程设计,对我们这一学期学习的理论知识进行实践操作,理论与实践结合是学习治好的方法。 我们通过在protel画出系统的仿真图,通过仿真图来实现硬件的焊接,最后在程序的运行下实现了红外感应的自动窗帘控制的设计(通过电机的正反转实现)。我们在画protel的仿真图时,遇到了一些困难,比如TH12864-15这个元件在元件库中找不到,我们通过查资料,在protel中利用protel中生成元件的方法,画出了TH12864-15,我们也学会了如何生成元件库中没有的元件。在焊接过程中我们也遇到了一些问题,就是对系统的原理图没有充分弄懂的基础上就去焊接,导致刚开始电机并没有被驱动,无法实现系统的功能。通过这次ARM课程设计,我们充分认识到了理论知识在实际中的应用才能最大化,同时理论在实际中的应用并不是想象的那么简单,因为在实际应用中往往要考虑更多的综合问题。通过这次课程设计我对protel软件的应用更加熟练了,同时也体会

温馨提示

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

最新文档

评论

0/150

提交评论