智能照明系统的课程设计报告

更新时间:2024-07-03 08:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

题目名称:智能照明控制系统设计

摘要: 本系统以光敏电阻的光强采集、A/D

转换、单片机AT89C51为

核心,组成最小控制系统,并和高亮LED显示电路共同构成。外界光强的大小通过电压的线性转换,并用延时来控制灯亮度来体现。该系统能够随环境光强的变化或软件所设定的时间自动控制灯的亮灭;同时系统可以根据光线强度自动控制灯的亮度,也可以手动调节灯的亮度。

关键词:51学习板 ADC0804 光敏电阻 中断定时 延时

目 录

1方案设计与论证 ................................................................................................................. 2

1.1 整体设计方比较和选择 ......................................................................................... 2

2 系统设计 ................................................................................................................................ 4

2.1 总体设计 ..................................................................................................................... 4 2.2 各单元模块功能介绍及电路设计 ....................................................................... 5

2.2.1光线采集模块 ........................................................................................................ 5 2.2.2模数转换模块 ........................................................................................................ 5 2.2.3 AT89C51单片机 .................................................................................................... 6 2.2.4 LED显示模块 ........................................................................................................ 6 2.2.5电源模块 ................................................................................................................ 7

3 软件设计 ............................................................................................................................... 7

1

4系统测试 ................................................................................................................................. 9

4.1测试方案 ........................................................................................................................ 9 4.2测试结果 ........................................................................................................................ 9 4.3结果分析 ........................................................................................................................ 9

5结语 .......................................................................................................................................... 10 附录:......................................................................................................................................... 11

附1:元器件明细表 ......................................................................................................... 11 附2:电路图图纸及实物图 ........................................................................................... 11 附3:程序清单 .................................................................................................................. 12

1方案设计与论证

1.1 整体设计方比较和选择

本系统包括智能系统和照明系统。这两个部分的具体的设计思路如下所示:

智能系统是基于学习板上的51单片机,理论结合实际的应用,故主要是软件程序的编写,其次是单片机的扩展口与A/D芯片和高亮发光二极管的连接。其有4个并行I/O端口,分别是P0、P1、P2和P3,每个端口都有双向I/O功能。P0口在学习板上控制数码管的显示,故在设计本系统时暂不考虑,P1口只能做I/O口使用,且其内部有上拉电阻,因P1.0-P1.3控制数码管、按键和学习板上的灯的使能端,故只剩P1.4-P1.7口,不妨将P1.5与高亮发光二极管相连(因为P1口有上拉电阻故可直接相连),P1.7控制A/D的使能端;P2口与A/D芯片的数字输出端相连,为单片机输入转化后的8位二进制;P3口实有特殊功能,直接与A/D芯片的WR和RD端口相连。

照明系统是基于光敏电阻的光线采集电路,光敏电阻器的阻值随入射光线

2

的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达1~10M欧,在强光条件下,它阻值(亮阻)仅有几百至数千欧姆。只要人眼可感受的光,都会引起光敏电阻的阻值变化。当外界光线强度变化时,可以将光敏电阻的电压值经过模数转换成8位二进制,送入单片机进行处理,再由程序根据这8位二进制数据来处理判断灯的亮灭或灯的亮度。

方案1: R1100kR25.1kQ1NPN方案1-光采集电路1LDR1TORCH_LDR2 方案的特点:该电路采用的是基极分压式射极偏置电路该电路具有很好的稳定性,阻值很大的R1直接接在三极管的基极,起到很强的控制基极电流的作用,可以有效防止由于温度等原因造成的电阻阻值波动对测量结果的影响。三极管将由光强变化引起的电流变化转化为电压变化输出,接入ADC0804数模转换的输入端口。 方案2:

LDR2R10k2TORCH_LDR1

3

方案特点:

该电路简单,利用光敏电阻与定值电阻R组成环境光检测电路,通过测量R两端电压的变化来体现环境光强弱的变化。

方案论证:

方案1的最大的特点是可以防止温度等其他原因造成的电阻波动对测量结果的影响,而考虑到此次的课程设计的目的是了解智能照明控制系统的基本原理,基于51学习板,掌握和夯实单片机的扩展和应用,故选择方案2这一简单的环境光采集电路,同样可以达到系统随时间和环境光线强度自动控制灯的亮灭。而且,该电路简单,不容易被损坏。

2 系统设计

2.1 总体设计

本设计硬件电路包括电源模块、光线采集模块、模数模块、AT89C51单片机模块和LED显示电路模块等5部分组成。各模块之间的关系如图1所示。

光 线 采 集模模 数 转 换 AT89C51 单片机 LED显 示电路 电 源 模 块

图1系统硬件结构框图

主控系统模块采用基于51内核的AT89C51单片机及模数转换电路来完成信号采集、控制和通信功能,在本设计中AT89C51单片机模块担当了控制核心,首先通过光线采集电路对外部的光强参数进行数据采集,输出的电压值经过8位A/D转换器,将光敏电阻感应光强产生的模拟信号转换为数字信号采样,送至单片机AT89C51进行处理,再通过算法将其与内部参考数据进行分析与比对,实现当外界环境光强变化时LED灯能够随之变化的功能。

4

2.2 各单元模块功能介绍及电路设计 2.2.1光线采集模块

光线采集模块通过ADC0804将光敏电阻感应光强产生的模拟信号转换为数字信号采样至单片机,实现对外界环境光强数据的采集。电路连接如下:

LDRR10k2TORCH_LDR1由VCC=5V,则光敏电阻两端的电压,即VIN(+)=VCC?R光敏/(R光敏+R),而 01.V

其中,本课程设计中R光敏范围大约是在5k?-300k?之间,故由上不等式可以得出:

1

49R光敏所以,我们在电路中与光敏电阻串联的电阻选择为10k?,符合上述的范围要求。

2.2.2模数转换模块

模数转换电路主要由ADC0804构成。当温度值转换为电压后,还需要将电压值进行A/D转换,转换后的8位二进制才能送到单片机进行处理。ADC0804芯片是典型的8位8通道逐次逼近式A/D转换器,可对8路模拟电压实现分时转换。为了换算方便,设置基准电压为5 V,即模拟量输入为+5.0时,ADC输出为0FFH,即255,系统分辨率为5/255=0.02V/LSB。

其外围设计电路为:

5

R310kR410kU11234581091967CSRDWRCLK ININTRA GNDD GNDVREF/2CLK RVIN+VIN-ADC0804VCCDB0(LSB)DB1DB2DB3DB4DB5DB6DB7(MSB)201817161514131211R110kC1150pF2.2.3 AT89C51单片机 单片机主要通过程序来控制灯的亮灭或灯的亮度。AT89C51单片机电路图如下:C2U133p191P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD3938373635343332212223242526272810111213141516172345678910KXTAL1RP1X112M18C133pXTAL29RST293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51

2.2.4 LED显示模块

LED显示模块主要由高亮LED灯构成。主要是由单片机的外部中断来控制LED灯的亮度。单片机每接收到一个同步信号后,就启动一个延时程序。而延

6

时的长短由按键或是外界光强来改变。当延时结束后,单片机会产生一个触发信号,使灯发光。电路连接如下:

D接单片机的P1_5口LED-RED 2.2.5电源模块

电源模块主要是由学习板连接电脑所获得的电压,再分别连到所需电路中去。

3 软件设计

根据智能照明系统的思想和原理,本次设计制作的电路比较简单。系统重点在软件设计,硬件设计相对较简单。主要和关键的问题是根据光敏电阻、A/D芯片和学习板上的51单片的工作原理来编写程序以达到所要求实现的照明系统和智能系统。其流程图如下所示:

1基本要求:系统能够随时间和环境的光线强度自动控制灯的亮灭。(先定时5s使灯不受外界环境变化的影响,5s结束后,灯随外界光强度变化,25s后,灯一直亮)

开始

端口初始化 定时器T0申请中断初始

定时中断

N 设定系统控制灯 的时间到否? 重装初值 Y

7

A/D芯片模数转换

设定外界控设定系统控

制灯的时间制灯的时间

单位(s) 显示灯随外界的 单位(s)

变化情况 N 设定外界控制灯

的时间到否? 中断返回

Y 灯 亮

结束

(a)主程序 (b)中断程序

2发挥部分:1.灯的亮度由外界光线的变化调节; 开始

A/D模数

转换

由电压值判断灯

的亮度的等级

Y 灯的显示

结束

3发挥部分:2.灯的亮度由学习板上的按键手动调节; 开始 开始 扫描第一行 端口初始化 N 有键闭合? 数码管显示 Y 占空比 延时消抖 延时,显示N 灯的亮度变有键闭合? 化 Y

8

判断键值和占空比变化

结束 (a)手动调节的主程序

键释放? Y N 数码管显示占空比(两位小数) N 返回主程

序 (b)数码管显示芯片 4系统测试

4.1测试方案

步骤1:基于proteus和keil软件,根据基本要求实现仿真;

步骤2:先安上元件后,焊接电路,用万用表测试电路是否正确连通,以确定

无虚焊、漏焊和焊接错误等问题,然后将集成芯片安上。以此可以防止集成芯片由于电压过大而烧坏;

步骤3:将焊接好的电路与学习板上的51单片机相连,检查连接无误后,装载

程序,调试,运行;

步骤4:观察硬件反映情况,检查错误,调整程序,以达到实现所要求的功能

和现象的目的。

4.2测试结果

当装载基本要求的程序后,数码管由5--0倒计时,在此期间高亮发光二极管灯灭,且当外界变暗或是变亮,都对灯没有影响;当数码管为0时,在接下来的25秒内,外界的变化会影响灯的亮灭;

当装载自动调节灯的亮灭的程序后,光线逐渐变强的时候,灯的亮度也会逐渐增加。

当装载手动调节灯的亮度的程序,随着按键的变化,可以发现灯随着按键K0,数码管显示的占空比增加,灯变亮;若按K1键,数码管显示的占空比减小,灯变暗;若按K3键占空比清零。

4.3结果分析

在实现基本要求时,光敏电阻对光线比较敏感,外界光线变化会使灯亮灭明显,不足的是数码管显示系统控制灯的时间(t1)和外界控制灯的时间(t2)是

9

同步的,限制了t2>t1;

在手动调节灯的亮灭的时候,数码管可以正确显示占空比的值,不足是灯的亮度改变等级不明显。

经过各项性能的测试,系统的指标和电路基本达到预期的效果,如果能考虑到实际的光敏电阻的感光性和灯的亮灭区间,系统将更加完善。

5结语

本报告详细讲述了系统设计方案,并给出了相关程序流程。由于系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标。基于学习板系统进行软件调试很容易。在自动调节灯的亮度时,通过延时用数码管显示灯的亮的占空比,从而改变了灯的亮度。

本系统的智能控制是以51学习板上的AT89C51单片机控制单元为核心,通过电脑的驱动,完成对系统灯的控制,采用一个高亮发光二级管的亮灭来显示整个系统的效果。系统设计智能化控制的同时,还设计了手动按键的控制,达到了简单的智能照明。

10

附录:

附1:元器件明细表

器件名称 电容 光敏电阻 电阻 芯片底座 芯片 学习板 插针 杜邦线 LED灯 规格 150PF 10千欧 20pin ADC0804 高亮灯 数量 1个 1个 4个 1个 1个 1个 若干 19根 一个 附2:电路图图纸

实物图

11

附3:程序清单

基本要求的程序:

#include

#define uint unsigned int #define uchar unsigned char sbit adcs=P1^7; sbit adrd=P3^7; sbit adwr=P3^6; sbit led=P1^5; sbit Seg_ce=P1^0; sbit Dig_ce=P1^1;

uchar tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //0到9 uint ad_data,m=0,n=0,t1=5,t2=25; //ad_data表示AD输出8位2进制,t1为定时5秒后启动光采集电路,t2为定时25秒后关闭光采集电路 void delay(uint i) {

uint j;

for(i;i>0;i--)

for(j=124;j>0;j--); }

void keyscan(uint num) //显示5秒 {

uint ge,shi; ge=num;

12

shi=num/10;

P0=0; Seg_ce=1;Seg_ce=0; //清段选 P0=0xff; Dig_ce=1;Dig_ce=0; //清位选 P0=tab[ge]; Seg_ce=1;Seg_ce=0;

P0=0xfe; Dig_ce=1;Dig_ce=0; //显示5秒 }

void read_ad() {

adcs=0;

adwr=0;delay(1);adwr=1;delay(1); //启动AD,开始采样(/wr低电平保持的最短时间为100ns启动转换后必须加入一个延时以等待AD采样结束 adrd = 0;delay(1);ad_data =P2;delay(1);adrd=1; //读数据读取转换结果(/rd>200ns) adcs=1; }

void main() { P0=0;

P1=0x2c; //初始化P1_5为低(灯一开始是灭的)

TMOD=0x01; //方式1,16位定时器 TH0=(65536-50000)/256;

TL0=(65536-50000)%6; //设置定时器初值 IE=0x82; //设置中断允许 TR0=1; //启动定时器 while(1) {

if(m==0)keyscan(t1);

if(t1==0) //5秒已完,启动光采集电路 {

while(t2)

{ read_ad();

if(ad_data<125) //当外界很亮的时候关灯

{

led=1; } else {

led=0; //亮灯 delay(1); } }

if(t2==0) led=0; //25秒已完 ,forever亮

} }

13

}

void T0_timer()interrupt 1 //定时器T0中断函数 {

TH0=(65536-50000)/256; TL0=(65536-50000)%6;

if(t1!=0)m++; //不为0说明光采集电路还未启动,还在5秒之内

if(m==20) //1秒 时间 {

m=0; t1--; }

if(t2!=0)n++; //不为0说明还在25秒之内

if(n==20) //1秒 时间 {

n=0; t2--; } }

#include #define uint unsigned int #define uchar unsigned char

sbit Dig_ce = P1^1; sbit Seg_ce = P1^0; sbit Key_ce = P1^3; sbit led= P1^5; uint z;

uchar tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //0-9

void delay(uint i) {

uint j;

for(i;i>0;i--)

for(j=19;j>0;j--); }

void keyscan() {

uchar Temp1,Temp2;

P0=0;Seg_ce=1;Seg_ce=0;

P0=0xfe;Dig_ce=1;Dig_ce=0;delay(1); //扫描第一行,将第一行置低电平

Key_ce=0; //将P1_3口拉低,74LS244使能

Temp1=P0; //读P0口数据

14

Temp1=Temp1&0x0f; //提取按键相关数据-P0口的低四位

if(Temp1!=0x0f) //判断是否有按键按下 {

delay(10); //延时消抖

Temp2=P0;Temp2=Temp2&0x0f; //再读P0口,并提取P0口低四位数据

if(Temp1==Temp2) {

switch(Temp2) {

case 0x0e:z=z+10; break; // 按K0键每按一次键就增加10%的亮度,从而逐渐变亮,若低四位的值与0x0e相等,就执行其后的语句

case 0x0d:z=z-10;break; // 按K1键每按一次键就减少10%的亮度,从而逐渐变暗

case 0x07:z=0; break; //按K3键清零 default:break;

} //等待按键释放

while(Temp2!=0x0f) {

//不断地读取P0口数据,只要结果不等于0x0f,说明有按键没有被释放,直到释放,才退出 Temp2=P0;

Temp2=Temp2&0x0f; } } }

Key_ce=1; //关使能端 if(z<=100)

{ P0=0xff; Dig_ce=1;Dig_ce=0; //清段选 P0=tab[z]; Seg_ce=1;Seg_ce=0;delay(5); // 个位 P0=0xfe; Dig_ce=1;Dig_ce=0;delay(5);

P0=0xff; Dig_ce=1;Dig_ce=0;

P0=tab[(z/10)]; Seg_ce=1;Seg_ce=0;delay(5); // 十位 P0=0xfd; Dig_ce=1;Dig_ce=0;delay(5);

P0=0xff; Dig_ce=1;Dig_ce=0;

P0=tab[z/100]|0x80; Seg_ce=1;Seg_ce=0;delay(5); // 百位 P0=0xfb; Dig_ce=1;Dig_ce=0;delay(5); }

else z=0; }

void main()

15

{

P0=0; P1=0x2c;

z=0; // 100为100%的占空比 // 机器周期 led=1; while(1) {

keyscan(); led=0; delay(z); led=1;

delay(100-z); } }

拓展2(自动控制灯的亮灭)

#include

#define uchar unsigned char #define uint unsigned int

sbit adcs=P1^7;

//A/D使能端

sbit adrd=P3^7; sbit adwr=P3^6; sbit led=P1^5; uint ad_data,num;

void delay(uint z) {

uint x,y;

for(x=z;x>0;x--) for(y=10;y>0;y--); }

void read_ad() {

adcs=0;

adwr=0;delay(10);adwr=1;delay(10); adrd = 0;delay(10);ad_data =P2;delay(10);adrd=1; 换结果(/rd>200ns) adcs=1; }

void main() {

uint z[]={0,10,20,30,40,50,60,70,80,90};

16

//50微 //启动AD,开始 //读数据读取转

P0=0xff; //初始化 while(1) {

read_ad();

if(ad_data<=50)

num=0;

//判断外界光的强弱从而判断灯应该亮的等级

else if(ad_data>50&&ad_data<=60) num=1;

else if(ad_data>60&&ad_data<=73) num=2;

else if(ad_data>73&&ad_data<=87) num=3;

else if(ad_data>87&&ad_data<=120) num=4;

else if(ad_data>120&&ad_data<=140) num=5;

else if(ad_data>140&&ad_data<=160) num=6;

else if(ad_data>160&&ad_data<=180) num=7;

else if(ad_data>180&&ad_data<=215) num=8;

else if(ad_data>215&&ad_data<=255) num=9;

led=0;delay(z[num]); led=1;delay(100-z[num]); } }

17

本文来源:https://www.bwwdw.com/article/l5s.html

Top