简单智能路灯测控原理系统设计Word文档下载推荐.docx

上传人:b****6 文档编号:18534924 上传时间:2022-12-19 格式:DOCX 页数:21 大小:1.05MB
下载 相关 举报
简单智能路灯测控原理系统设计Word文档下载推荐.docx_第1页
第1页 / 共21页
简单智能路灯测控原理系统设计Word文档下载推荐.docx_第2页
第2页 / 共21页
简单智能路灯测控原理系统设计Word文档下载推荐.docx_第3页
第3页 / 共21页
简单智能路灯测控原理系统设计Word文档下载推荐.docx_第4页
第4页 / 共21页
简单智能路灯测控原理系统设计Word文档下载推荐.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

简单智能路灯测控原理系统设计Word文档下载推荐.docx

《简单智能路灯测控原理系统设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《简单智能路灯测控原理系统设计Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。

简单智能路灯测控原理系统设计Word文档下载推荐.docx

封面,任务书,目录,正文,参考文献,附录等。

目录

第一章方案设计与论证1

1.1方案设计1

1.2方案论证1

1.2.1控制芯片的确定1

1.2.2A/D转换芯片的确定2

1.2.3LED调光控制方式确定2

1.2.4方案的最终确定2

第二章硬件的设计与实现3

2.1单片机最小系统3

2.1.1单片机引脚说明3

2.1.2时钟电路4

2.1.3复位电路5

2.1.4ADC0832模数转换5

第三章软件的设计与实现7

3.1程序流程图7

3.2AT89C51中断技术概述7

第四章实物调试9

参考文献10

附录A电路图11

附录B程序源代码12

附录C调试实物图17

第一章方案设计与论证

1.1方案设计

智能路灯控制系统是基于AT系列的C51单片机和PWM调光的LED路灯以AT89C51作为主控芯片,设置五个调节档位,由于PWM的输出不同,所以其占空比对LED的电流控制也不同,根据不同环境亮度,从而实现对光度调节的控制。

光敏电阻作为传感器,通过ADC0832芯片进行模拟转换和不断测量光敏电阻的两端电压来间接测量感应的光强度,将检测到的电压和预设的工作阈值进行对比,并且调整PWM的占空比对LED的电流进行控制,通过单片机的信号处理,以便实现对光度的自动调节。

系统总体框图如图1-1。

图1-1系统总体框图

1.2方案论证

1.2.1控制芯片的确定

选择嵌入式型MCU的主要考虑因素有以下几个方面:

所应用领域:

一个产品的主要功能一旦限定下来,其所应用的领域也随之确定。

应用领域的确定将减少选型的考虑。

自身带有的资源:

芯片自带资源越符合产品的需求,产品开发越相对便捷。

,芯片属于可扩展存储器。

低功耗的特征:

低功耗的产品节能环保,成本低,可以降低环境污染,还能增加使用的稳定性,所以选择芯片时,低功耗也是一个重要的指标。

而AT89C51单片机是具有40个引脚的双列直插式微型MCU,其价格低廉、兼容性强、超强抗干扰能力、超低功耗等优点。

其工作电压在3.3V~5.5V之间,内集成4K字节ROM和128字节RAM,具有扩展内存的功能,两个定时器和计数器中。

基于51单片机的这些特点并考虑到该系统实现的复杂程度,还有路灯所处的环境,AT89C51单片机是比较理想的。

其性能完全满足于系统要求。

1.2.2A/D转换芯片的确定

A/D模数转换芯片在这个系统中就是执行从传感器得到的模拟信号转换为单片机可以识别的数字信号。

在这个系统中,由环境的亮度引起光敏电阻的阻值变化,其变化过程比较缓慢,因而不需要采样保持器。

ADC0832是可以满足其要求的。

ADC0832与常用的ADC0809的主要区别是ADC0809为8通道模数转换器,可以对8路输入信号进行模数转换,而ADC0832是2通道模数转换器。

ADC0809是并行ADC,速度要比串行ADC0832快得多,不过外围电路比较复杂,价格也贵。

一般来说,串行ADC对于检测变化缓慢的信号非常有利,电路简单,价格也便宜,但坏处是速度非常受限,如果是对声音进行采样,必须考虑使用并行式的ADC,否则会丢失大量信息,造成失真。

1.2.3LED调光控制方式确定

LED的调光控制,传统上LED的调光是利用一个DC信号或滤液PWM对LED中的正向电流进行调节来完成的。

减小LED电流将起到调节LED光输出强度的作用,然而,正向电流的变化也会改变LED的彩色,因为LED的色度会随着电流的变化而变化。

许多应用(例如汽车和LCD背光照明)都不能允许LED发生任何的色彩漂移。

在这些应用中,由于周围环境中存在不同的光线变化,而且人眼对于光强的微小变化都很敏感,因此宽范围调光是必需的。

通过施加一个PWM信号来控制LED亮度的做法允许不改变彩色的情况下完成LED的调光。

PWM是脉冲宽度调制信号,其中的“宽度”,就是脉冲的高电平的时间。

PWM信号调节LED亮度时,信号频率是不变的,改变的是脉冲的高电平的时间,即LED的导通时间。

这种信号调节亮度相当于调节LED的平均电流,所以电流会变化。

1.2.4方案的最终确定

控制芯片采用AT89C51单片机,A/D转换器采用ADC0832,还需要一个光敏电阻。

另外考虑到条件的限制和课程设计的实质性,在本系统中采用普通的发光二极管替代LED灯,而控制灯光的目的也是实现了。

第二章硬件的设计与实现

2.1单片机最小系统

最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。

电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。

AT89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单且可靠。

用AT89C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,由于集成度的限制,最小应用系统只能用作一些小型的控制。

2.1.1单片机引脚说明

单片机的引脚如图2-1所示。

VCC:

供电电压。

GND:

接地。

图2-1单片机引脚图

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2INT0(外部中断0)

P3.3INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6WR(外部数据存储器写选通)

P3.7RD(外部数据存储器读选通)

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。

EA/VPP:

当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,EA将内部锁定为RESET;

当EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

2.1.2时钟电路

图2-2时钟电路图

AT89C51单片机的时钟信号通常有两种方式产生:

一是内部时钟方式,二是外部时钟方式。

内部时钟方式如图2-2所示。

在AT89C51单片机内部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。

图中电容C2和C3的作用是稳定频率和快速起振,电容值在5~30pF,典型值为30pF。

晶振的振荡频率范围在1.2~12MHz间选择,典型值为12MHz和6MHz。

2.1.3复位电路

当在AT89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。

复位电路的基本功能是:

系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。

为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分合过程中引起的抖动而影响复位。

复位电路通常采用上电自动复位和按钮复位两种方式。

图2-3上电复位电路

最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。

只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。

时钟频率用11.0592MHZ时C取10uF,R取10kΩ,如图2-3所示。

2.1.4ADC0832模数转换

ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。

由于它体积小,兼容性强,性价比高。

ADC0832具有以下特点:

8位分辨率;

双通道A/D转换;

输入输出电平与TTL/CMOS相兼容;

5V电源供电时输入电压在0~5V之间;

工作频率为250KHZ,转换时间为32μs,一般功耗仅为15mW;

8P、14P—DIP(双列直插)、PICC多种封装

ADC0832各端口的接线如图2-4所示。

CLK为芯片时钟输。

时钟信号通过单片机P1.1口利用定时器中断输出

图2-4ADC0832转换接线图

CS为片选使能,低电平芯片使能。

GND为芯片参考0电位(地)。

Vcc/REF为电源输入及参考电压输入。

CH0为模拟输入通道0,或作为IN+/-使用。

CH1模拟输入通道1,或作为IN+/-使用。

这里只使用CH0作为输入端接光敏电阻。

DI为数据信号输入,选择通道控制。

DO为数据信号输出,转换数据输。

正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。

但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。

当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。

当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。

此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。

在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。

在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能。

硬件设计的电路总图在附录A。

第三章软件的设计与实现

3.1程序流程图

在编写程序之前,对系统的软件要实现的功能进行流程图的编写能大大提高程序形象直观性,使得各种操作一目了然,不会产生“歧义性”,便于理解,算法出错时容易发现。

该系统的程序流程图如图3-1所示。

 

图3-1程序流程图

3.2AT89C51中断技术概述

中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并作出快速响应、及时处理。

这是由片内的中断系统来实现的。

当中断请求源发出中断请求时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求。

中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。

中断技术是如何产生的呢?

当CPU与外部设备交换信息的时候,如果用查询的方式,那么CPU就会浪费很多时间去等待外部设备。

这样就存在快速的CPU与慢速的外部设备之间的矛盾,当CPU与外设工作不同步时,很难确保CPU在对外设进行读写操作时,外设一定是准备好的。

为保证数据的正确传送,可采用查询方式。

但是在查询方式下,CPU主动地查询所有外设以确定其是否准备好,是否需要进行数据传送,会使CPU的效率降低,特别是与低速外设进行数据交换时,CPU需要等待更多的时间。

另外在对多个外设进行I/O操作时,如果有些外设的实时性要求较高,CPU有可能因来不及响应而造成数据丢失。

这也是计算机在发展过程中面临的严重问题之一。

为了解决这个问题,一方面要提高外部设备的工作速度;

另一方面,就应运而生了中断技术。

如果单片机没有中断系统,单片机的

主程序

中断服务程序

大量时间可能会浪费在查询是否有服务请

求发生的定时查询操作上。

采用中断技术

断点

继续执行主程序

完全消除了单片机在查询方式中的等待现

象,大大地提高了单片机的工作效率和实

时性整个中断响应和处理过程如图3-2所

示。

图3-2中断响应和处理过程

第四章实物调试

在面包板上连接完实物且把程序烧入到单片机中后,对实物进行了调试。

通过改变照射在光敏电阻上的光强,观察LED灯发出的光亮度的变化,并记录当前LED灯的亮度是否达到照明的效果,最后在程序上进行占空比的调节使得LED灯能达到当前光敏电阻所在的光强的环境所需要的照明亮度。

经过不断地测试与修改,最终会得出一系列适合该LED路灯的占空比值。

由于系统采用了普通二极管替代了LED路灯,而且也因为条件的限制,无法测量出当前的环境的光强。

因而本课程设计中自行设定了五个档位并对应一系列的占空比值。

具体数值在如下面表4-1中所示。

其中,只需要五个档位能根据光敏电阻在不同光强下显示出来,并能看到普通二极管的亮度的变化,即可认为该设计的目的已经达到。

该系统的实物调试结果在后面的附录C中的图2至图7。

其中图2、图3、图4、图5的结果都是在灯光下测试得到的,图2为0级调光,即在光强很高的环境下,二极管不发光。

这就模拟了路灯在晴天的时候的情景。

图3为1级调光,用手挡住部分照射在光敏二极管上的光线,这是二极管是发出微弱的光。

这在模拟凌晨时将要天亮的情景。

图4为2级调光,这是手靠得更近,光敏电阻能接收的光更少。

图5是3级调光,这需要一张纸片将光敏电阻隔离起来,这是模拟将要进入夜晚的情景。

图6和图7是在灯关闭后测试得到的结果。

图6为4级调光,图7为5级调光,它们都是在模拟晚上的情景。

在这次测试中,二极管的发光亮度变化得不太大,需要连续环境亮度才很明显地看出二极管的发光情况。

表4-1光敏电阻阻值与调光级别和占空比的关系

光敏电阻阻值

调光级别

占空比

0.7KΩ以下

0级

2.4KΩ~4KΩ

1级

100

4KΩ~7KΩ

2级

1000

7KΩ~12KΩ

3级

2500

12KΩ~26KΩ

4级

3500

26KΩ以上

5级

4500

参考文献

1.周明珠.无触点开关在控制中的应用[J].现代电子技术,2002.

2.赵玉安.人体热释电红外传感器介绍[J].中国电子制作,2006.

3.俞海珍,李宪章,冯浩.热释电红外传感器及其应用[J].电子照明技术,2006.

4.曹巧媛.单片机原理及应用[M].北京:

北京:

电子工业出版社,1997.

5.谢晓军.红外遥控技术在付费率电度表中应用[J].电测与仪表,1996.

6.吴可久.8031单片机在遥控解码方面的应用[J].电子技术,1993.

附录A电路图

图1电路总图

附录B程序源代码

#include<

reg51.h>

intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

#defineledP0

sbitcs=P1^0;

sbitclk=P1^1;

sbitdio=P1^2;

sbityellow=P2^5;

ucharcodedisplay[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

//数码管驱动信号0---9,共阳

ucharbuf=10;

ucharadc_dat=0;

uinttime1[5]={100,1000,2500,3500,4500};

//占空比调节

uinttime2[5]={4900,4000,2500,1500,500};

bitflag=1;

uchark;

//===============定时器初始化================

voidtime0_init()

{

TMOD=0x01;

TL0=(65535-5000)%256;

TH0=(65535-5000)/256;

ET0=EA=TR0=1;

}

//===========读出ADC转换的结果函数===========

ucharread_adc_convert()

uchari;

uchardat=0;

uchardat1=0;

clk=0;

cs=1;

dio=0;

cs=0;

dio=1;

clk=1;

_nop_();

dio=0;

for(i=0;

i<

8;

i++)

{

clk=1;

_nop_();

clk=0;

dat<

<

=1;

if(dio)

{

dat|=0x01;

}

else

{

dat|=0x00;

}

dat1>

>

if(dio)

dat1|=0x80;

else

dat1|=0x00;

cs=1;

if(dat==dat1)

returndat;

else

return0;

returndat;

voidmain()

uinti;

time0_init();

while

(1)

i++;

if(i>

10000)

i=0;

adc_dat=read_adc_convert();

//读出ADC转换的结果

if((255>

=adc_dat)&

&

(adc_dat>

213))

{

k=buf=5;

}

elseif((213>

171))

k=buf=4;

elseif((171>

129))

k=buf=3;

elseif((129>

87))

k=buf=2;

elseif((87>

=45))

k=buf=1;

elseif((45>

=0))

k=buf=0;

led=display[buf];

}

voidtime0_interrupt()interrupt1//中断处理函数

if(k==0){yellow=1;

if(flag==1)

TL0=(65535-time1[k-1])%256;

TH0=(65535-time1[k])/256;

flag=0;

yellow=0;

elseif(flag==0)

TL0=(65535-time2[k-1])%256;

TH0=(65535-time2[k])/256;

flag=1;

yellow=1;

附录C调试实物图

图31级调光

图20级调光

图53级调光

图42级调光

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1