版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西南科技大学信息工程学院电子技术与创新实践基地电子创新实践课程设计报告设计题目:基于单片机控制的楼道声控灯设计专业班级:姓 名:学 号:指导教师:设计期限:2010年6月20日2010年6月27日成绩:批阅教师:- 15 -一、设计任务 基于单片机控制的楼道声控灯设计 二、设计要求教师下达的设计基本要求:白天光线较强,照明灯不会点亮;晚上有脚步声照明灯被点亮,脚步声小时后灯亮延时10s再自动熄灭。三、设计内容1. 设计思想 该题目是基于单片机控制的楼道声控灯的设计。利用单片机丰富的外设和自动控制功能,设计出楼道声控灯的设计,该系统可控制十层楼的楼道或楼梯的电灯。电路原理图如下:图中按键Floo
2、r1-Floor10模拟1-10层楼的楼梯或楼道的声音传感器,声音传感器用于检测楼道或楼梯是否有人经过,K1-K10是继电器,目的是控制但等的开关。电源模块为电路提供+5V电源,外部时钟源可为单片机提供频率为8M的时钟脉冲,LED1-LED10是控制指示灯,用来指示楼道或楼梯的电灯的亮灭信息,也可指示楼道或楼梯是否正在有人经过。利用变压等方式转换为5V直流电源电源模块2. 系统方案或者电路结构框图220V交流电源继电器AVR Atmega8L单片机声音传感器楼道或楼梯的电灯外部时钟源 图1电源模块由+5V电源、两个1K电阻(R21、R22)、发光二极管LED11、电容C3、复位按键及Q11组成
3、,如下图: 图2其中,电容C3用于滤波。当输入电源不稳定,混有谐波分量时,由于电容的“通交流、阻直流”的特性,谐波分量会通过电容C3而滤去,从而保证电源的稳定和单片机稳定的运行。Q11为光敏三极管,当白天时,由于光线足够强,使得Q11导通,从而单片机处于复位状态,程序不会执行,即此时即使有脚步声使得传感器向单片机发送信号,单片机也不会控制继电器点亮电灯,但夜晚没有光线时,Q11截止,从而单片机可执行程序,控制继电器使得电灯的亮灭。外部时钟源由两个20pf的陶瓷电容和一只8M的井镇组成,此部分只是作为参考,因为单片机ATmega8单片机的XTAL1和XTAL2引脚接外部时钟源时,此端口不能作为通
4、用端口使用,为了节省端口资源,使得一片单片机尽可能控制多个楼层,而且不需要精确计时,因此不使用外部时钟源,而使用内部时钟源。3. 设计和使用说明在使用之前须将程序(见附件)下载到单片机中。本程序在ICCAVR7.14版测试通过,硬件环境为AVR ATmega8L 8M系统频率。开始当按键Floor1Floor10中任一按键按下(即表示1-10楼任一层有人走路时),单片机控制继电器点亮该楼层电灯,并且计时开始,当10s后再无按键按下(即10s后不再有声音),单片机控制继电器关闭电灯,程序框图如下: 是一楼传感器是否有信号输入否点亮一楼电灯是二楼传感器是否有信号输入否点亮二楼电灯是三楼传感器是否有
5、信号输入点亮三楼电灯否是十楼传感器是否有信号输入点亮十楼电灯否结束四、设计总结一直以来只是利用单片机来控制电路,但是单片机处理速度毕竟是慢于简单的电路,即使是利用中断实现多线程控制,也是需要一定的处理时间,因此有些简单控制控制场合,还是利用模电、数电设计的电路更加实用一些。这就需要有扎实的基础知识。这个电路本来可以不需要单片机就可以实现,但是需要更多的元器件搭建控制电路,算起来也要超过一片单片机的费用(ATmega8L只需6-8元),因此从经济角度考虑选择单片机作为控制芯片不失为最佳选择,而且由于该电路在白天不需要运行,因此可利用程序使得单片机在不需要工作是处于休眠模式,以降低功效,这也是单片
6、机的优于其他电路之处。该设计的优点是可以同时控制多个楼层,如果使用总线扩展端口,可同时控制更多的楼层。而控制程序使用外部中断检测传感器信号,可以提高单片机反应速度,而且有利于使用单片机的掉电休眠模式(说明:掉电单片机休眠后,单片机停止了时钟等大部分模块,只保留外部中断、两线地址匹配、复位等继续工作,单片机需要在外部中断等中断源唤醒后才能继续工作)。AVR ATmega8L的掉电模式下功耗仅需0.5uA的电流,充分节省了能源。控制该电路的程序中分为五个模块:1、计时并休眠模块,程序如下:#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVFvoi
7、d timer1_ovf_isr(void) /定时器溢出中断函数 Timer_Counter+; /开始计数 if(Timer_Counter>=Time_Limit) /判断是否已达10s钟 /达到10s后 Light_Close; /关闭电灯 Timer_Counter=0; /并且计数清零 Sleep(); /休眠单片机 TCNT1H = 0x85; /重载定时器 TCNT1L = 0xEE; void Sleep(void) /单片机休眠函数MCUCR|=(1<<SM1)|(1<<SE); /是能休眠并设置掉电模式 asm("SLEEP&quo
8、t;); /休眠单片机2、检测传感器及继电器控制模块,程序如下:void Open_Light(void)if(Read_Portc&Value_1=Value_1) /检测一楼Open_Light_1; /点亮一楼电灯if(Read_Portc&Value_2=Value_2)/ 检测二楼Open_Light_2; /点亮二楼电灯if(Read_Portb&Value_3=Value_3) /检测三楼Open_Light_3; /点亮三楼电灯if(Read_Portb&Value_4=Value_4)/ 检测四楼Open_Light_4; /点亮四楼电灯if(
9、Read_Portb&Value_5=Value_5) /点亮五楼电灯Open_Light_5; /点亮五楼电灯if(Read_Portb&Value_6=Value_6) /检测六楼Open_Light_6; /点亮六楼电灯if(Read_Portb&Value_7=Value_7) /检测七楼Open_Light_7; /点亮七楼电灯if(Read_Portb&Value_8=Value_8) /检测八楼Open_Light_8; /点亮八楼电灯if(Read_Portb&Value_9=Value_9)/ 检测九楼Open_Light_9; /点亮
10、九楼电灯if(Read_Portb&Value_10=Value_10) /检测十楼Open_Light_10; /点亮十楼电灯3、单片机休眠控制模块,程序如下:void Sleep(void)MCUCR|=(1<<SM1)|(1<<SE); /设置掉电模式 asm("SLEEP"); /休眠单片机4、外部中断检测声音传感器信号模块:程序如下:#pragma interrupt_handler int0_isr:iv_INT0void int0_isr(void) /外部中断函数 SEI(); /开启总中断 MCUCR&=(1<
11、<SE); /使能休眠 MCUCR&=(1<<SM1); /设置掉电模式 Timer_Counter=0; /计数清零 Open_Light(); /调用继电器控制模块以点亮电灯说明:此函数为外部中断函数,在此中断函数中嵌套了定时器溢出中断函数(计时并休眠模块),而AVR系列单片机中除复位(中断向量号为1)中断优先于外部中断外,其他中断源优先级均低于外部中断(外部中断INT0向量号是2),故在外部中断函数中没有开启总中断允许的情况下,其他中断源包括定时器溢出中断均不会执行,因为AVR系列单片机在进入中断后,以防其他中断干扰,会自动关闭总中断,因此在外部中断函数中需开启
12、总中断。5、主程序模块。程序如下:void main()init_devices(); /初始化单片机资源配置while(1) /死循环/程序都在外部中断函数里执行,故主程序为空说明:由于单片机执行程序需要不断地执行,而不是只执行一次就结束,故需要一个死循环来使程序无限期的执行下去。同时,由于为了提高单片机对传感器的信号的反应速度,查询信号的程序在外部中断里执行而不在主程序中执行。单片机上电后,若10S内没有外部信号时(没有接收到声音传感器信号时),单片机进入休眠,以节省电能,当传感器传来信号时,出发外部中断,是单片机从休眠状态中唤醒,进行查询声音传感器信号是哪个楼层和将计数器清零,从而开启那
13、个楼层的电灯,同时开始计时。五、参考资料江海波 王卓然 耿德根.深入浅出AVR单片机.北京:中国电力出版社,2008.103107康华光 陈大钦 张林.电子技术基础模拟部分(第五版).北京:高等教育出版社,2006.55370Atmel公司.Atmel公司主页.ATmega8(L)Datasheet中文版2010年6月27日星期日附件:楼道声控灯控制程序代码说明:此程序代码在ICCAVR7.14编译通过,硬件环境为:AVR ATmega8L 8M 系统频率。1、Syatem.c/* -* 主函数 * - */# include <iom8v.h># include <macr
14、os.h># include "Macrodefinition.h"# include "HD_Configure.h"# include "SF_Configure.h"void main()init_devices();while(1)/程序都在外部中断函数里执行,故主程序为空2、Macrodefinition.h/* 函数库说明: 宏定义声明库 * 版本 V1.00 * 作者 * 创建日期 2010.06.24 * - * 硬件说明 * 硬件环境 AVR At=Tmega8L * 系统时钟 8M * - *# ifndef
15、 _MACRODEFINITION_H_# define _MACRODEFINITION_H_# define Open_Light_1 PORTC|=BIT(2)# define Open_Light_2 PORTC|=BIT(3)# define Open_Light_3 PORTD|=BIT(7)# define Open_Light_4 PORTD|=BIT(6)# define Open_Light_5 PORTD|=BIT(5)# define Open_Light_6 PORTD|=BIT(4)# define Open_Light_7 PORTD|=BIT(3)# defin
16、e Open_Light_8 PORTD|=BIT(2)# define Open_Light_9 PORTD|=BIT(1)# define Open_Light_10 PORTD|=BIT(0)# define Value_1 0XFD# define Value_2 0XFE# define Value_3 0XFE# define Value_4 0XFD# define Value_5 0XFB# define Value_6 0XF7# define Value_7 0XEF# define Value_8 0XDF# define Value_9 0XBF# define Val
17、ue_10 0X7F# define Read_Portc PINC# define Read_Portb PINB# define Time_Limit 10# define Light_Close PORTD&=0X00;PORTC&=(BIT(2)|BIT(3);# endif3、HD_Configure.h/* 声明库说明:底层硬件配置驱动声明库 * 版本:V1.00 * 作者: * 创建日期:2010.6.24 * - */# ifndef _HD_CONFIGURE_H_# define _HD_CONFIGURE_H_extern void init_device
18、s(void);# endif4、HD_Configure.c/* 函数库说明:底层硬件配置驱动函数库 * 版本: V1.00 * 作者: * 创建日期: 2010.06.24 * - * 硬件说明 * 处理器: AVR At=Tmega8L * 系统时钟: 8M * - * 支 持 库 * 支持库名称:HD_Configure.h * 需要版本: - * 支持库说明:底层硬件配置声明库 */# include <iom8v.h># include <macros.h>void port_init(void) /端口初始化配置 PORTB = 0x00; DDRC &a
19、mp;= (BIT(0)|BIT(1); DDRC |= BIT(2)|BIT(3); PORTC = 0x00; DDRB = 0x00; PORTD = 0x00; DDRD = 0xFF;void timer1_init(void) /定时器初始化配置 TCCR1B = 0x00; TCNT1H = 0x85; TCNT1L = 0xEE; OCR1AH = 0x7A; OCR1AL = 0x12; OCR1BH = 0x7A; OCR1BL = 0x12; ICR1H = 0x7A; ICR1L = 0x12; TCCR1A = 0x00; TCCR1B = 0x04; void in
20、it_devices(void) /系统初始化配置函数CLI(); port_init(); timer1_init();MCUCR|= (1<<ISC10); GICR |= (1<<INT0); TIMSK = 0x04; SEI(); 5、SF_Configure.h/* 声明库说明:功能函数声明库 * 版本:V1.00 * 作者: * 创建日期:2010.6.24 */# ifndef _SF_CONFIGURE_H_# define _SF_CONFIGURE_H_ extern void Open_Light(void);# endif6、SF_Config
21、ure.c/* 声明库说明:功能函数库 * 版本:V1.00 * 作者: * 创建日期:2010.6.24 * - * 支 持 库 * 支持库名称:SF_Confihure.h * 需要版本: * 支持库说明:功能函数声明库 * - * - * 支 持 库 * 支持库名称: Macrodefinition.h * 需要版本: V1.00 * 支持库说明: 系统宏定义声明库 * - */#include <iom8v.h>#include <macros.h># include "Macrodefinition.h"void Open_Light(vo
22、id)if(Read_Portc&Value_1=Value_1)Open_Light_1;if(Read_Portc&Value_2=Value_2)Open_Light_2;if(Read_Portb&Value_3=Value_3)Open_Light_3;if(Read_Portb&Value_4=Value_4)Open_Light_4;if(Read_Portb&Value_5=Value_5)Open_Light_5;if(Read_Portb&Value_6=Value_6)Open_Light_6;if(Read_Portb&a
23、mp;Value_7=Value_7)Open_Light_7;if(Read_Portb&Value_8=Value_8)Open_Light_8;if(Read_Portb&Value_9=Value_9)Open_Light_9;if(Read_Portb&Value_10=Value_10)Open_Light_10;7、Timer.h/* 声明库说明:定时器中断函数声明库 * 版本:V1.00 * 作者: * 创建日期:2010.6.24 */# ifndef _TIMER_H_# define _TIMER_H_# endif8、Timer.c/* 声明库说
24、明:定时器中断函数声明库 * 版本:V1.00 * 作者: * 创建日期:2010.6.24 * - * 支 持 库 * 支持库名称: Macrodefiniyion.h * 需要版本: V1.00 * 支持库说明: 系统宏定义声明库 * - */#include <iom8v.h>#include <macros.h># include "Macrodefinition.h"unsigned char Timer_Counter=0;#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVFvoid timer1_ovf_isr(void) Timer_Counter+; if(Timer_Counter>=Time_Limit) Light_Close; /关闭电灯 Timer_Counter=0; /计数清零 Sleep(); /休眠单片机 TCN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学生写申请书退学
- 著作权盗版鉴定申请书
- 2025年企业内部控制制度执行与监督评估手册
- 报名参加省考申请书范文
- 学校爱心驿站申请书模板
- 关于复聘的申请书
- 保全申请书查控
- 通信网络故障应急处理指南
- 城乡规划用地申请书范文
- 申请书开头问候语
- 惠州市惠阳区(2025年)社工岗位考试题目及答案
- 2026年辽宁现代服务职业技术学院单招职业技能笔试参考题库带答案解析
- (2025年)病理学试题及答案
- 贵州省贵阳市普通中学2024-2025学年高二上学期语文期末试卷(含答案)
- 广西医疗机构病历书写规范与治理规定(第三版)
- 2026年浙江省公务员考试《行测》真题(A类)
- 2025年党务干部考试题目及答案
- 海外安保培训核心科目
- 2024-2025学年安徽省合肥市蜀山区七年级上学期期末考试数学试卷
- 统编版 2025-2026学年 语文三年级上册 第六单元 综合过关验收卷 (有答案)
- 九年级语文议论文写作教学设计
评论
0/150
提交评论