2022年感应台灯的设计与实现.pdf
智能感应台灯电子科技大学微芯杯刘承文精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 15 页 - - - - - - - - - - 简介本智能感应台灯控制系统基于超声波测距方式,利用单片机进行处理,能够感知一定范围内的人、 或其他物体, 当人或物进入其探测范围,台灯开启,并随着距离台灯距离减少。可利用 PWM 控制台灯亮度,以节约电能。目录一项目背景 3二方案设计 3三设计过程 4四实用化的可能性、 推广价值 13五创新点 14六作品实物图片 14一项目背景精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 15 页 - - - - - - - - - - 随着科技的高速发展, 各种各样的科技产品、 家用电器开始走入人们的生活,这一切都大大地提高了人们的工作效率、改善了人们的生活, 现在电器的发展趋势是智能化,这样会使人们使用起来更加方便。随着智能控制理论和人工智能研究的深入,各种更加逼真地模拟人类智能的家用电器会更多地出现,而单片机和智能理论的结合, 将来不但更多地改进现行家用电器,而且将会产生全新的家用电器。 家用电器因为单片机的加入而走向智能化,并且随着人们生活水平的提高日益走向平民化, 我们的生活也随着家用电器的发展越来越方便、舒适。随着家用电器的发展,作为家用电器当中的小台灯也要顺应科技的发展步伐走向智能化。目前,灯具市场上出售的灯具种类繁多,一般台灯均采用220V交流电源供电,日光灯管、 白炽灯泡为光源, 手动开关或触摸感应式开光来控制。但这类台灯存在很多弊端, 一是电压是不安全电压, 给人们使用带来不安全因素;二是日光灯还具有频闪效应, 经常使用会给人的眼睛带来一定的伤害;三是耗电量大、 台灯通常都是以日光灯为主, 在几瓦到几十瓦之间; 四是人工化,人们由于手工操作,往往会忘记关灯, 这也造成电能的浪费。 正因如此, 制作生产智能感应台灯具有很重要的意义二方案设计2.1 设计题目:制作一个基于超声波、 红外等测距方式的智能感应台灯控制系统,系统能够感知一定范围内的人、或其他物体,当人或物进入其探测范围,台灯开启,并随着距离台灯距离减少,利用PWM 控制台灯亮度,以节约电能。2.2 基础要求:1、 在控制系统 2m 范围内,能正常感知物体并开启台灯2、 当人或物,移出其感应范围时,能够关闭台灯3、 在人或物与控制系统距离变化超过 20cm 时,台灯光线应用明显变化2.3 发挥部分:1、 控制系统能同时控制 2 路或 2 路以上台灯2、 控制系统能显示人或物体与控制系统距离3、 控制系统能够实时显示系统开启时间4、 其他三设计过程精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 15 页 - - - - - - - - - - 3.1 方案比较与选择3.1.1 测距模块的选择方案一:红外线测距模块SHARP 夏普原装红外测距传感器 GP2Y0A21YK0F 量程 10-80cm 红外测距模块虽然距离精准,但是最大距离不够,不能达到要求的2M距离。方案二:超声测距模块工作电压: 4.5V5.5V。功耗电流:最小 1mA 最大 20mA 谐振频率: 40KHz ;探测距离范围: 4 毫米 4 米。误差: 4% ;经比较,超声测距模块的距离和工作电压都符合系统要求,而且超声测距模块比较便宜,所以本次设计采用超声测距模块。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 15 页 - - - - - - - - - - 3.1.2 台灯电路的选择方案一 : 采用三极管放大电路方案二:采用上拉电源的方式经比较,本次设计采用四组LED ,没有必要采用三极管放大电路,三极管电路复杂,上拉电源的方法电路简单, 而且灌入单片机的电流在可控范围内,所以本次设计采用方案二。3.2 方案描述系统总体框图如图所示。 超声测距模块测出超声波从发出到返回过程的时间,单片机通过计时器记录这一时间, 并按照公式计算出物体到系统的距离。这个距离再通过显示模块显示出来,距离作为一个参数,PWM 波参考距离的值开启或关闭LED灯。STC89C52 单片机超 声 波 测距模块计 时 器显示精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 15 页 - - - - - - - - - - 当物体与系统间的距离为0-50cm时,开启四盏灯,距离为 50-100cm时开启三盏灯,距离为 100-150cm时开启两盏灯, 距离为 150-200cm时开启一盏灯, 距离大于 200cm时关闭台灯。3.3 设计原理由单片机的 P33引脚产生一个 20us 的脉冲信号,超声测距模块接收到此信号的时候,产生超声波, 同时 ECHO 引脚产生高电平信号, 当接收到超声波以后, echo引脚产生低电平信号,单片机通过定时器1 中断来记录时间,以此来计算距离。单片机得出距离以后, 通过定时器 0 中断来驱动计时数码管和距离显示数码管和PWM 波,以此来控制 LED灯。3.4 程序#include /包括一个 52 标准内核的头文件#define uchar unsigned char /定义一下方便使用#define uint unsigned int #define ulong unsigned long /* sfr CLK_DIV = 0 x97; /为 STC单片机定义 , 系统时钟分频 /为 STC单片机的 IO 口设置地址定义sfr P0M1 = 0X93; sfr P0M0 = 0X94; sfr P1M1 = 0X91; sfr P1M0 = 0X92; sfr P2M1 = 0X95; sfr P2M0 = 0X96; /* sbit Trig = P33; /产生脉冲引脚sbit Echo = P32; /回波引脚sbit test = P31; /测试用引脚sbit LED1=P34; sbit LED2=P35; sbit LED3=P36; sbit LED4=P37;/定义 4 个灯泡引脚static unsigned char second,minute,hour;/定义计时器计时变量unsigned int tcount; 距 离 显示4 个 LED灯精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 15 页 - - - - - - - - - - unsigned char m; uchar code table=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/计 时 用数码管显示 0-9 int time_count=1; unsigned char distances; uchar code SEG710=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;/数码管0-9 uint distance4; /测距接收缓冲区uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; /自定义寄存器bit succeed_flag; /测量成功标志/*函数声明void conversion(uint temp_data); void delay_20us(); void pai_xu(); void main(void) / 主程序 uint distance_data,a,b; uchar CONT_1; CLK_DIV=0X03; /系统时钟为 1/8 晶振( pdf-45 页) P0M1 = 0; /将 io 口设置为推挽输出 P1M1 = 0; P2M1 = 0; P0M0 = 0XFF; P1M0 = 0XFF; P2M0 = 0XFF; i=0; flag=0; test =0; Trig=0; /首先拉低脉冲输入引脚TMOD=0 x11; /定时器 0,定时器 1,16 位工作方式TR0=1; /启动定时器 0 IT0=0; /由高电平变低电平,触发外部中断ET0=1; /打开定时器 0 中断 ET1=1; /打开定时器 1 中断EX0=0; /关闭外部中断EA=1; /打开总中断 0 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 15 页 - - - - - - - - - - while(1) /程序循环 EA=0; Trig=1; delay_20us(); Trig=0; /产生一个 20us 的脉冲,在 Trig 引脚 while(Echo=0); /等待 Echo回波引脚变高电平 succeed_flag=0; /清测量成功标志 EX0=1; /打开外部中断 TH1=0; /定时器 1 清零 TL1=0; /定时器 1 清零 TF1=0; / TR1=1; /启动定时器 1 EA=1; while(TH130);/等待测量的结果,周期65.535 毫秒(可用中断实现) TR1=0; /关闭定时器 1 EX0=0; /关闭外部中断 if(succeed_flag=1) distance_data=outcomeH; /测量结果的高 8 位 distance_data=3) CONT_1=0; b=a; conversion(b); i=0; /* / 外部中断 0,用做判断回波电平INTO_() interrupt 0 / 外部中断是 0 号 outcomeH =TH1; /取出定时器的值 outcomeL =TL1; /取出定时器的值 succeed_flag=1; /至成功测量的标志 EX0=0; /关闭外部中断 /* / 定时器 0 中断, 用做显示timer0() interrupt 1 / 定时器 0 中断是 1 号 TH0=(65536-5)/256; TL0=(65536-5)%256; switch(flag) case 0 x00:P0=ge; P1=tableminute/10; P2=0 x17;flag+;break; case 0 x01:P0=shi;P1=(tableminute%10&0 x7f);P2=0 x2b;flag+;break; case 0 x02:P0=bai;P1=tablesecond/10;P2=0 x4d;flag+;break; case 0 x03:P1=tablesecond%10;P2=0 x8f;flag=0;break; /计时器显示和距离显示time_count+; if(distances5&distances=5) LED1=0; LED2=0; LED3=0; LED4=0; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 15 页 - - - - - - - - - - if(5distances&(distances50|distances=50) if(time_count50) time_count=1; / 距离在 0-50,1 个台灯变化,其余三个都亮if(51distances&(distances100|distances=100) if(time_count50) time_count=1; /50-100一个灭一个变化两个常亮精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 15 页 - - - - - - - - - - if(101distances&(distances150|distances=150) if(time_count50) time_count=1; /100-150依次类推if(151distances&(distances200|distances=200) if(time_count50) time_count=1; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 15 页 - - - - - - - - - - if(distances200) LED1=0; LED2=0; LED3=0; LED4=0; / 以上为台灯显示, pwm 波输出tcount+; if(tcount=5800) tcount=0; second+; if(second=60) second=0; minute+; if(minute=60) minute=0; hour+; if(hour=24) hour=0; /计时器时间变量增加 /* / 定时器 1 中断, 用做超声波测距计时timer1() interrupt 3 / 定时器 0 中断是 1 号 TH1=0; TL1=0; /* / 显示数据转换程序void conversion(uint temp_data) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 15 页 - - - - - - - - - - uchar ge_data,shi_data,bai_data ; bai_data=temp_data/100 ; temp_data=temp_data%100; /取余运算 shi_data=temp_data/10 ; temp_data=temp_data%10; /取余运算 ge_data=temp_data; bai_data=SEG7bai_data; shi_data=SEG7shi_data; ge_data =SEG7ge_data EA=0; bai = bai_data; shi = shi_data; ge = ge_data ; EA=1; /* void delay_20us() uchar bt ; for(bt=0;btdistance1) t=distance0;distance0=distance1;distance1=t; if(distance0distance2) t=distance2;distance2=distance0;distance0=t; if(distance1distance2) t=distance1;distance1=distance2;distance2=t; 四实用化的可能性、推广价值到目前为止,在灯具市场上,很少见到采用+5V的直流电源供电的一种人体智能台灯,它具有既不会出现触电的意外,又具有使用寿命长、无辐射、又不污染等优点,有许多普通按键台灯所无法比及的优势,智能化台灯一方面可以更节省电能,有利于环保, 另一方面, 在黑暗的时候自动开关灯的功能也让使用者使用起来更方便,省去黑暗中摸灯的麻烦。五创新点精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 15 页 - - - - - - - - - - 1. 附带测距显示功能,可实时掌握距离大小。2. 附带时间显示功能,可即时了解台灯开启时间。六作品实物图片精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 15 页 - - - - - - - - - - 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15 页,共 15 页 - - - - - - - - - -