资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软 件 学 院课程设计报告书课程名称 ARM课程设计 设计题目 基于嵌入式开发的智能家居系统 专业班级 软件08-1班 学 号 0820010115 姓 名 刘 伟 指导教师 刘佳旭 1 设计时间 2010年 12 月2 设计目的 “智能家居”(Smart Home),又称智能住宅。通俗地说,它是融合了自动化控制系统、计算机网络系统和网络通讯技术于一体的网络化智能化的家居控制系统。将家中的各种设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、网络家电以及三表抄送等)通过家庭网络连接到一起。 与普通家居相比,智能家居不仅具有传统的居住功能,提供舒适安全、高品位且宜人的家庭生活空间;还由原来的被动静止结构转变为具有能动智慧的工具,提供全方位的信息交互功能,帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性,甚至为各种能源费用节约资金。3设计任务本系统一共设计了四个模块:分别是智能窗帘,红外线控制灯具开关,防盗设备,防火灾设备。通过这套系统,您可以利用手持的控制器、遥控器等设备非常方便地对窗帘、灯具进行操作和控制,通过防盗设备你可以安心的离开家,感受到高科技带给您的轻松、惬意。4 设计内容 4.1主要设备:智能窗帘控制器;智能灯光控制器;遥控器;光电传感器; 4.2实现原理 本系统通过51单片机利用红外线发射接收来实现对各个开关量的控制以及按钮的控制,利用传感器的原理把模拟信号转换成为数字信号使单片机做出相应的反应来实现控制功能。智能家居框架图:智能窗帘灯具以及其他电器光电传感器烟雾传感器步进电机单片机MCU按钮开关光电传感器烟雾传感器正反转定时器软启动报警报警 4.2.1 模块原理窗帘工作原理运用步进电机正反转实现窗帘的开关,定时系统实现每天的开关,按钮实现手动功能调节窗帘的开关。灯具控制原理:利用红外线控制灯具以及其他开关量,电器采用软启动方式启动,可以调节多模式亮度。传感器工作原理:利用传感器实现报警,模拟信号转换成为数字信号,返回到单片机使之做出反应,做出相应的指示。 4.2.2 模块程序窗帘控制,防盗程序#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include sbit SCK=P36;/时钟sbit SDA=P34;/数据sbit RST = P35;/ DS1302复位sbit LS138A=P22; sbit LS138B=P23;sbit LS138C=P24; sbit F1 = P10;sbit F2 = P11;sbit F3 = P12;sbit F4 = P13;sbit K1=P32;sbit K2=P20;sbit K3=P21;sbit beep=P27;sbit z=P37;unsigned int K;bit ReadRTC_Flag;/定义读DS1302标志 unsigned char l_tmpdate7=0,0,12,15,5,3,8;/秒分时日月周年08-05-15 12:00:00unsigned char l_tmpdisplay8;unsigned char code FFW8=0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6; /反转unsigned char code FFZ8=0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe; /正转code unsigned char write_rtc_address7=0x80,0x82,0x84,0x86,0x88,0x8a,0x8c; /秒分时日月周年 最低位读写位code unsigned char read_rtc_address7=0x81,0x83,0x85,0x87,0x89,0x8b,0x8d; code unsigned char table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /共阴数码管 0-9 - 熄灭表函数声明void Write_Ds1302_byte(unsigned char temp); void Write_Ds1302( unsigned char address,unsigned char dat );unsigned char Read_Ds1302 ( unsigned char address );void Read_RTC(void);/read RTC void Set_RTC(void); /set RTC void InitTIMER0(void);/inital timer0延时程序 void delay(unsigned int t) unsigned int k; while(t-) for(k=0; k80; k+) void hong(void) if (z=0) beep=0; else beep =1; 步进电机驱动 void motor_ffw() unsigned char i; unsigned int j; for (j=0; j12; j+) /转1*n圈 for (i=0; i8; i+) /一个周期转30度 if(K=1) P1 = FFWi&0x1f; /取数据 if(K=2) P1 = FFZi&0x1f; delay(5); /调节转速 主函数void main(void) InitTIMER0(); /初始化定时器0 Set_RTC(); /写入时钟值,如果使用备用电池时候,不需要没每次上电写入,此程序应该屏蔽 EA=1;/开总中断EX0=1; /开外部中断 0IT0=0;RST=0;while(1) hong(); if(ReadRTC_Flag) ReadRTC_Flag=0;Read_RTC(); l_tmpdisplay0=l_tmpdate2/16; if(l_tmpdate0=0) K=1; motor_ffw(); if(l_tmpdate0=9) K=2; motor_ffw(); /数据的转换,因我们采用数码管09的显示,将数据分开l_tmpdisplay1=l_tmpdate2&0x0f;l_tmpdisplay2=10; /加入-l_tmpdisplay3=l_tmpdate1/16;l_tmpdisplay4=l_tmpdate1&0x0f;l_tmpdisplay5=10;l_tmpdisplay6=l_tmpdate0/16;l_tmpdisplay7=l_tmpdate0&0x0f; void int0() interrupt 0 K1=0; if (!K2) K=1; motor_ffw(); if (!K3) K=2; motor_ffw(); K1=1; 定时器0初始化void InitTIMER0(void) TMOD|=0x01;/定时器设置 16位 TH0=0xef;/初始化值 TL0=0xf0; ET0=1; TR0=1; EA=1;写一个字节void Write_Ds1302_Byte(unsigned char temp) unsigned char i; for (i=0;i=1; /右移一位 SCK=1; 写入DS1302void Write_Ds1302( unsigned char address,unsigned char dat ) RST=0;_nop_(); SCK=0;_nop_(); RST=1; _nop_(); /启动 Write_Ds1302_Byte(address);/发送地址 Write_Ds1302_Byte(dat);/发送数据 RST=0; /恢复读出DS1302数据unsigned char Read_Ds1302 ( unsigned char address ) unsigned char i,temp=0x00; RST=0;_nop_();_nop_(); SCK=0;_nop_();_nop_(); RST=1;_nop_();_nop_(); Write_Ds1302_Byte(address); for (i=0;i=1;/右移一位_nop_(); _n
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号