基于单片机的智能LED台灯设计,附电路图、成品演示图、源程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.3 台灯模块电路设计
台灯模块电路如图 4,
图 4 台灯模块电路
本设计采用 16 颗 LED 作为发光系统,每两颗并联在一起后和一个 1K 的电 阻串联,用 P00 到 P03 口控制。电阻起限流作用,考虑到 I/O 口资源,我们用每 两个并联的方式以节省 I/O 口资源。通过按键 K5、K6 调节 PWM 输出以达到调 ຫໍສະໝຸດ Baidu光亮度的效果。4 个 I/O 均采用低电平有效方式,即给相应的 I/O 低电平 LED 工作。 2.4 温度模块电路设计 温度模块电路如图 5,
测按键是否按下,判断工作在那个模式下。单片机接收并处理来自 DS18B20 传 过来的数据在液晶上显示当时的室内温度,液晶还显示当前的时间,日期。当需 要设置闹钟或调整时间时,又检测按键是否按下,以便对时间进行修正、设置闹 钟时间。最后进入循环。
3.2 按键模块程序设计 按键用来调整时间和设置闹钟,调光亮度,各键功能在介绍硬件部分已描述。
2.2 按键模块电路设计 按键模块电路如图 3,
图 3 按键模块电路
按键 K5、K6 用来调节台灯的亮度,K7 控制模式,即控制台灯是工作在感应 模式下还是工作在手动模式下,亦或是关闭状态。其余的用作调节时钟以及闹铃。 按键均采用低电平有效连接方式。通过按下按键 K5 可以让台灯变暗,按下按键 K6 可以让台灯变亮。其余几个 S1 到 S4 按键可以对时钟进行设置调节,并调节 设置闹铃,当时间与设置的时间一致是闹铃报警,即蜂鸣器响。
void write_date(char date) {
rs=1; rw = 0; lcden=0; P1=date; delay(1); lcden=1; delay(1); lcden=0; }
void init() {
uchar num; flag1=0; flag=0; flag_ri=0; A=0;//人体感应
3 软件设计
3.1 主程序的设计
开始
系统初始化 检测屋内有人?
按键按下?
LED 工作
闹钟
显示时间、日期、温 度 修正时间,设置闹钟 图 10 主程序流程图
主程序如图 10,一给单片机上电,单片机就初始化。然后通过接收并处理 BIS0001 传感器出阿叔过来的数据,检测屋内是否有人,若有人则工作。然后检
关闭的功能。该传感器检测距离通过编写程序控制。 以上的程序见附录三。
4 总结
该设计实现了自动检测屋内是否有人并自动开启/关闭功能;台灯具有光亮 度调节功能;具有时间显示功能;具有温度显示功能;具有闹铃功能。但在细节 方面还有不足之处。LED 亮度达不到很亮的程度,只能在一个很小的范围变化, 以致于光亮度不够。
} void write_ds(char add,char date) {
dscs=0; dsas=1; dsds=1; dsrw=1;
P1=0xff; P1=add; dsas=0; dsrw=0; P1=0xff; P1=date; dsrw=1; dsas=1; dscs=1; } uchar read_ds(char add) { char ds_date; dsas=1; dsds=1; dsrw=1; dscs=0; P1=0xff; P1=add; dsas=0; dsds=0; P1=0xff; ds_date=P1; dsds=1; dsas=1; dscs=1; return ds_date; } void write_week(char we) { write_com(0x80+12); switch(we) { case 1: write_date('M');delay(5);
图 5 温度模块电路
由于 DS18B20 温度传感器的集成度很高,封装简单,所以我们选用该芯片 作温度模块电路。1 脚接电源 VCC,2 脚数据线接单片机 P24 口,3 脚接地。芯
片采集到的数据通过 2 脚传给单片机的 P24 口让单片机进行处理,之后送给显示 模块进行显示。 2.5 时钟模块电路设计 时钟模块电路如图 6,
EA=1; EX1=1; IT1=1; t0_num=0; slnum=0; write_com(0x38); write_com(0x01); write_com(0x06); write_com(0x0C);
write_com(0x80); for(num=0;num<=15;num++)
{ write_date(table[num]); delay(1);
因为有年月日,时分秒几个参数要调,所以设置这几个参数的计数。当按下一个 键时,单片机进行相应的操作。当调光亮度时,按下 K5 键变暗,按下 K6 键变 亮,这是通过调 PWM 实现的。
3.3 台灯模块程序设计 该模块只需给 P00 到 P03 口送低电平即可,再通过按键调光亮。
3.4 温度模块程序设计 设计初始化函数,设计读 DS18B20 数据和对 DS118B20 写数据的函数,再写出 从 DS18B20 读温度并转换为十进制的函数,最后写显示温度的函数。
break; case 4: write_date('T');delay(5);
write_date('H');delay(5); write_date('U'); break; case 5: write_date('F');delay(5);
{ while(t--) ;
} void di() {
BEEP=0; delay(100); BEEP=1; }
void write_com(char com) {
rs = 0; rw = 0; lcden=0; P1=com; delay(1); lcden=1; delay(1); lcden=0; }
关键词:单片机,智能,显示,温度,时间。
1 LED 台灯功能描述及总体该方案
1.1 功能描述 根据主要功能要求,该设计利用 51 单片机实现了电子时钟、温度的显示以 及设置闹铃等功能。具体可分为一下几种: 1) 显示当前的时间,24 时制的时、分、秒; 2) 可调节时间; 3) 显示当前屋内温度; 4) 能检测屋内是否有人并自动开启/关闭; 5) 可调节 LED 光亮度; 6) 可设置闹铃时间并报警。
write_date('O');delay(5); write_date('N'); break; case 2: write_date('T');delay(5);
write_date('U');delay(5); write_date('E'); break; case 3: write_date('W');delay(5); write_date('E');delay(5); write_date('D');
3.7 显示模块程序设计 设计 1602 的初始化函数,编写对 1602 写命令指令和对其写数据的子函数。
让所有的日期,时间,温度都在液晶上显示出来。
3.8 红外热释传感模块程序设计 编写一个从红外传感读数据的函数,检测有人与否,若有人,传感器发给单
片机一个高电平,单片机控制去 LED,使得单片机的 P00 到 P03 口为低电平, LED 亮,否则给低电平,LED 灭。这就实现了检测屋内有人与否并自动开启或
附录一 实物照片
附录二 硬件电路图
附录三 程序
#include<reg52.h> #include<shizhong.h> void delay(uint z) {
uint x,y; for(x=z;x>0;x--)
for(y=110;y>0;y--); } void delay1(unsigned char t)
1.2 系统组成及工作过程
六大模块以 STC89C52 单片机为控制核心,实现了该智能台灯的各项要求,外接一个 5V 的直流电源,为整个系统供电。图 1 为设计的系统组成框图。
显示模块 温度模块 闹铃模块
单
台灯模块 片
机 按键模块
控
制
红外传感模
模
块
块
时钟模块
图 1 系统组成框图
根据设计要求,该智能 LED 台灯可分为八大模块: 1) 单片机控制模块; 2) 按键模块; 3) 台灯模块; 4) 温度模块; 5) 时钟模块; 6) 闹铃模块; 7) 显示模块; 8)红外传感模块。
3.5 时钟模块程序设计 分别出写时间、日期的函数,再写出时间、日期的显示函数。设计时、分、
秒,年、月、日几个变量分别表示时分秒,年月日。
3.6 闹铃模块程序设计 对蜂鸣器,在其所接的 I/O 口写 1 即可实现它的蜂鸣,写程序时给它加了个
延时,以形成闹铃声。用数组来存储闹铃的值,闹铃声我们采用普通的嘀嘀嘀闹 铃声。
闹铃模块主要就是一个蜂鸣器,其作用是当到达设定的时间到时发出蜂鸣声 报警。用一个 PNP 型三极管和蜂鸣器连接主要是给蜂鸣器一个驱动,让蜂鸣器 为高电平有效,即 P07 口高电平时蜂鸣器发声报警。 2.7 显示模块电路设计
显示模块电路如图 8,
图 8 显示模块电路
液晶显示部分,我们选用 LCD1602C,其接法和普通的 1602 接法一样。1 脚接地,2 脚接电源,3 脚接一个电位器以调节液晶显示器的亮度,16 脚接地, 15 脚接背光电源,其余接法见图 8。在调试的时候,有时液晶不亮,多半是因为 遗漏背光电源,也有可能是虚焊导致。 2.8 红外传感模块电路设计 红外传感模块电路如图 9,
加上 5V 直流电源后,后七大模块在单片机控制之下分别工作。
2 硬件设计
2.1 单片机控制模块设计 硬件电路如图 2,
图 2 单片机控制模块电路
这里我们选用 12M 的晶振,晶振系统由两个 30pF 的电容 CAP 和晶振组成, 接到单片机的 18、19 两管脚。晶振给单片机提供硬件本身的时钟振荡。一个 10μF 的电解电容和一个 1k 的电阻组成复位电路,接至单片机的第 9 管脚。P0 口加上 排阻,即其就是 P0 口的上拉电阻,这就是给 P0 加驱动电路,电源通过排阻向 P0 口供电,使其能够驱动与 P0 口相连的元件。
第七届创兴杯电子设计 竞赛论文
智能 LED 台灯
智能 LED 台灯
完成人:黄 xx(组长,电子 1004);翟 xx(电子 1004);洪 xx(电子 1004) 指导教师:xx
摘要:本文介绍了设计的框架结构和组成模块以及各模块的原理,介绍了各部分硬件设计和 各部分软件设计以及软件流程图。该设计是以 STC89C52 单片机为控制核心的集多种功能于 一体的智能 LED 台灯。该台灯实现了自动检测屋内是否有人并自动开启/关闭功能;台灯光 亮度具有调节功能;具有时间显示功能;具有温度显示功能;闹铃功能。硬件设计分为单片 机控制模块、按键模块、台灯模块、温度模块、时钟模块、闹铃模块、显示模块,红外传感 模块等八个部分。单片机控制就用 STC89C52,显示模块用 LCD1602C 液晶显示温度、时间、 日期等内容,按键模块用来调整时间、日期、LED 的亮度等,时钟用 DS12C887 时钟芯片, 台灯模块用 16 颗 LED,用蜂鸣器发出闹铃声,温度传感器用 DS18B20 芯片,检测人的用 BIS0001 红外热释传感器。软件设计用单片机 C 语言编写,实现了全部控制功能。
图 9 红外传感电路
检测屋内是否有人我们选用 BIS0001 红外热释传感器,因为该传感器灵敏度 好,好控制,而且价钱不贵。3 脚接电源 VCC,1 脚接地,2 脚通过一个 NPN 型 的三极管接至单片机的 P37 口。由于该传感器的带负载能力较弱,加一个三极管 作为其驱动电路,当 P37 口给低电平时有效。检测距离可通过软件调节。
图 6 时钟模块电路
因为 DS12C887 时钟芯片的集成度都很高,而且它自带锂电池,即使断电了 时钟仍然在工作,所以我们选择了 DS12C887 时钟芯片作为时钟。各脚的连接见 图 6.由于其集成度很高,我们只需按照其数据手册焊接电路即可。 2.6 闹铃模块电路设计 闹铃模块电路如图 7,
图 7 闹铃模块电路
} write_com(0x80+0x40); for(num=0;num<16;num++)
{ write_date(table1[num]); delay(1);
} write_com(0x80+0x4e) ; write_date(0xdf) ; read_ds(0x0c); // set_time();
台灯模块电路如图 4,
图 4 台灯模块电路
本设计采用 16 颗 LED 作为发光系统,每两颗并联在一起后和一个 1K 的电 阻串联,用 P00 到 P03 口控制。电阻起限流作用,考虑到 I/O 口资源,我们用每 两个并联的方式以节省 I/O 口资源。通过按键 K5、K6 调节 PWM 输出以达到调 ຫໍສະໝຸດ Baidu光亮度的效果。4 个 I/O 均采用低电平有效方式,即给相应的 I/O 低电平 LED 工作。 2.4 温度模块电路设计 温度模块电路如图 5,
测按键是否按下,判断工作在那个模式下。单片机接收并处理来自 DS18B20 传 过来的数据在液晶上显示当时的室内温度,液晶还显示当前的时间,日期。当需 要设置闹钟或调整时间时,又检测按键是否按下,以便对时间进行修正、设置闹 钟时间。最后进入循环。
3.2 按键模块程序设计 按键用来调整时间和设置闹钟,调光亮度,各键功能在介绍硬件部分已描述。
2.2 按键模块电路设计 按键模块电路如图 3,
图 3 按键模块电路
按键 K5、K6 用来调节台灯的亮度,K7 控制模式,即控制台灯是工作在感应 模式下还是工作在手动模式下,亦或是关闭状态。其余的用作调节时钟以及闹铃。 按键均采用低电平有效连接方式。通过按下按键 K5 可以让台灯变暗,按下按键 K6 可以让台灯变亮。其余几个 S1 到 S4 按键可以对时钟进行设置调节,并调节 设置闹铃,当时间与设置的时间一致是闹铃报警,即蜂鸣器响。
void write_date(char date) {
rs=1; rw = 0; lcden=0; P1=date; delay(1); lcden=1; delay(1); lcden=0; }
void init() {
uchar num; flag1=0; flag=0; flag_ri=0; A=0;//人体感应
3 软件设计
3.1 主程序的设计
开始
系统初始化 检测屋内有人?
按键按下?
LED 工作
闹钟
显示时间、日期、温 度 修正时间,设置闹钟 图 10 主程序流程图
主程序如图 10,一给单片机上电,单片机就初始化。然后通过接收并处理 BIS0001 传感器出阿叔过来的数据,检测屋内是否有人,若有人则工作。然后检
关闭的功能。该传感器检测距离通过编写程序控制。 以上的程序见附录三。
4 总结
该设计实现了自动检测屋内是否有人并自动开启/关闭功能;台灯具有光亮 度调节功能;具有时间显示功能;具有温度显示功能;具有闹铃功能。但在细节 方面还有不足之处。LED 亮度达不到很亮的程度,只能在一个很小的范围变化, 以致于光亮度不够。
} void write_ds(char add,char date) {
dscs=0; dsas=1; dsds=1; dsrw=1;
P1=0xff; P1=add; dsas=0; dsrw=0; P1=0xff; P1=date; dsrw=1; dsas=1; dscs=1; } uchar read_ds(char add) { char ds_date; dsas=1; dsds=1; dsrw=1; dscs=0; P1=0xff; P1=add; dsas=0; dsds=0; P1=0xff; ds_date=P1; dsds=1; dsas=1; dscs=1; return ds_date; } void write_week(char we) { write_com(0x80+12); switch(we) { case 1: write_date('M');delay(5);
图 5 温度模块电路
由于 DS18B20 温度传感器的集成度很高,封装简单,所以我们选用该芯片 作温度模块电路。1 脚接电源 VCC,2 脚数据线接单片机 P24 口,3 脚接地。芯
片采集到的数据通过 2 脚传给单片机的 P24 口让单片机进行处理,之后送给显示 模块进行显示。 2.5 时钟模块电路设计 时钟模块电路如图 6,
EA=1; EX1=1; IT1=1; t0_num=0; slnum=0; write_com(0x38); write_com(0x01); write_com(0x06); write_com(0x0C);
write_com(0x80); for(num=0;num<=15;num++)
{ write_date(table[num]); delay(1);
因为有年月日,时分秒几个参数要调,所以设置这几个参数的计数。当按下一个 键时,单片机进行相应的操作。当调光亮度时,按下 K5 键变暗,按下 K6 键变 亮,这是通过调 PWM 实现的。
3.3 台灯模块程序设计 该模块只需给 P00 到 P03 口送低电平即可,再通过按键调光亮。
3.4 温度模块程序设计 设计初始化函数,设计读 DS18B20 数据和对 DS118B20 写数据的函数,再写出 从 DS18B20 读温度并转换为十进制的函数,最后写显示温度的函数。
break; case 4: write_date('T');delay(5);
write_date('H');delay(5); write_date('U'); break; case 5: write_date('F');delay(5);
{ while(t--) ;
} void di() {
BEEP=0; delay(100); BEEP=1; }
void write_com(char com) {
rs = 0; rw = 0; lcden=0; P1=com; delay(1); lcden=1; delay(1); lcden=0; }
关键词:单片机,智能,显示,温度,时间。
1 LED 台灯功能描述及总体该方案
1.1 功能描述 根据主要功能要求,该设计利用 51 单片机实现了电子时钟、温度的显示以 及设置闹铃等功能。具体可分为一下几种: 1) 显示当前的时间,24 时制的时、分、秒; 2) 可调节时间; 3) 显示当前屋内温度; 4) 能检测屋内是否有人并自动开启/关闭; 5) 可调节 LED 光亮度; 6) 可设置闹铃时间并报警。
write_date('O');delay(5); write_date('N'); break; case 2: write_date('T');delay(5);
write_date('U');delay(5); write_date('E'); break; case 3: write_date('W');delay(5); write_date('E');delay(5); write_date('D');
3.7 显示模块程序设计 设计 1602 的初始化函数,编写对 1602 写命令指令和对其写数据的子函数。
让所有的日期,时间,温度都在液晶上显示出来。
3.8 红外热释传感模块程序设计 编写一个从红外传感读数据的函数,检测有人与否,若有人,传感器发给单
片机一个高电平,单片机控制去 LED,使得单片机的 P00 到 P03 口为低电平, LED 亮,否则给低电平,LED 灭。这就实现了检测屋内有人与否并自动开启或
附录一 实物照片
附录二 硬件电路图
附录三 程序
#include<reg52.h> #include<shizhong.h> void delay(uint z) {
uint x,y; for(x=z;x>0;x--)
for(y=110;y>0;y--); } void delay1(unsigned char t)
1.2 系统组成及工作过程
六大模块以 STC89C52 单片机为控制核心,实现了该智能台灯的各项要求,外接一个 5V 的直流电源,为整个系统供电。图 1 为设计的系统组成框图。
显示模块 温度模块 闹铃模块
单
台灯模块 片
机 按键模块
控
制
红外传感模
模
块
块
时钟模块
图 1 系统组成框图
根据设计要求,该智能 LED 台灯可分为八大模块: 1) 单片机控制模块; 2) 按键模块; 3) 台灯模块; 4) 温度模块; 5) 时钟模块; 6) 闹铃模块; 7) 显示模块; 8)红外传感模块。
3.5 时钟模块程序设计 分别出写时间、日期的函数,再写出时间、日期的显示函数。设计时、分、
秒,年、月、日几个变量分别表示时分秒,年月日。
3.6 闹铃模块程序设计 对蜂鸣器,在其所接的 I/O 口写 1 即可实现它的蜂鸣,写程序时给它加了个
延时,以形成闹铃声。用数组来存储闹铃的值,闹铃声我们采用普通的嘀嘀嘀闹 铃声。
闹铃模块主要就是一个蜂鸣器,其作用是当到达设定的时间到时发出蜂鸣声 报警。用一个 PNP 型三极管和蜂鸣器连接主要是给蜂鸣器一个驱动,让蜂鸣器 为高电平有效,即 P07 口高电平时蜂鸣器发声报警。 2.7 显示模块电路设计
显示模块电路如图 8,
图 8 显示模块电路
液晶显示部分,我们选用 LCD1602C,其接法和普通的 1602 接法一样。1 脚接地,2 脚接电源,3 脚接一个电位器以调节液晶显示器的亮度,16 脚接地, 15 脚接背光电源,其余接法见图 8。在调试的时候,有时液晶不亮,多半是因为 遗漏背光电源,也有可能是虚焊导致。 2.8 红外传感模块电路设计 红外传感模块电路如图 9,
加上 5V 直流电源后,后七大模块在单片机控制之下分别工作。
2 硬件设计
2.1 单片机控制模块设计 硬件电路如图 2,
图 2 单片机控制模块电路
这里我们选用 12M 的晶振,晶振系统由两个 30pF 的电容 CAP 和晶振组成, 接到单片机的 18、19 两管脚。晶振给单片机提供硬件本身的时钟振荡。一个 10μF 的电解电容和一个 1k 的电阻组成复位电路,接至单片机的第 9 管脚。P0 口加上 排阻,即其就是 P0 口的上拉电阻,这就是给 P0 加驱动电路,电源通过排阻向 P0 口供电,使其能够驱动与 P0 口相连的元件。
第七届创兴杯电子设计 竞赛论文
智能 LED 台灯
智能 LED 台灯
完成人:黄 xx(组长,电子 1004);翟 xx(电子 1004);洪 xx(电子 1004) 指导教师:xx
摘要:本文介绍了设计的框架结构和组成模块以及各模块的原理,介绍了各部分硬件设计和 各部分软件设计以及软件流程图。该设计是以 STC89C52 单片机为控制核心的集多种功能于 一体的智能 LED 台灯。该台灯实现了自动检测屋内是否有人并自动开启/关闭功能;台灯光 亮度具有调节功能;具有时间显示功能;具有温度显示功能;闹铃功能。硬件设计分为单片 机控制模块、按键模块、台灯模块、温度模块、时钟模块、闹铃模块、显示模块,红外传感 模块等八个部分。单片机控制就用 STC89C52,显示模块用 LCD1602C 液晶显示温度、时间、 日期等内容,按键模块用来调整时间、日期、LED 的亮度等,时钟用 DS12C887 时钟芯片, 台灯模块用 16 颗 LED,用蜂鸣器发出闹铃声,温度传感器用 DS18B20 芯片,检测人的用 BIS0001 红外热释传感器。软件设计用单片机 C 语言编写,实现了全部控制功能。
图 9 红外传感电路
检测屋内是否有人我们选用 BIS0001 红外热释传感器,因为该传感器灵敏度 好,好控制,而且价钱不贵。3 脚接电源 VCC,1 脚接地,2 脚通过一个 NPN 型 的三极管接至单片机的 P37 口。由于该传感器的带负载能力较弱,加一个三极管 作为其驱动电路,当 P37 口给低电平时有效。检测距离可通过软件调节。
图 6 时钟模块电路
因为 DS12C887 时钟芯片的集成度都很高,而且它自带锂电池,即使断电了 时钟仍然在工作,所以我们选择了 DS12C887 时钟芯片作为时钟。各脚的连接见 图 6.由于其集成度很高,我们只需按照其数据手册焊接电路即可。 2.6 闹铃模块电路设计 闹铃模块电路如图 7,
图 7 闹铃模块电路
} write_com(0x80+0x40); for(num=0;num<16;num++)
{ write_date(table1[num]); delay(1);
} write_com(0x80+0x4e) ; write_date(0xdf) ; read_ds(0x0c); // set_time();