基于51单片机光强度控制系统设计参考.docx

上传人:b****2 文档编号:2746301 上传时间:2023-05-04 格式:DOCX 页数:36 大小:466.04KB
下载 相关 举报
基于51单片机光强度控制系统设计参考.docx_第1页
第1页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第2页
第2页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第3页
第3页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第4页
第4页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第5页
第5页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第6页
第6页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第7页
第7页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第8页
第8页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第9页
第9页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第10页
第10页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第11页
第11页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第12页
第12页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第13页
第13页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第14页
第14页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第15页
第15页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第16页
第16页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第17页
第17页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第18页
第18页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第19页
第19页 / 共36页
基于51单片机光强度控制系统设计参考.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机光强度控制系统设计参考.docx

《基于51单片机光强度控制系统设计参考.docx》由会员分享,可在线阅读,更多相关《基于51单片机光强度控制系统设计参考.docx(36页珍藏版)》请在冰点文库上搜索。

基于51单片机光强度控制系统设计参考.docx

基于51单片机光强度控制系统设计参考

光强度控制系统设计

摘要鸡舍控制系统是基于单片机的智能控制系统。

控制系统以STC89C52单片机为核心,实现采集光照强度功能。

,光强传感器采用TSL2561检测光照度。

将采集的鸡舍的数据信息在液晶LCD1602上显示出来。

本文设计的鸡舍控制系统,能够实时采集控制温鸡舍内的光照强度、温度等环境参数,并且定时控制音乐播放,以直观的数据显示给用户。

关键词stc89c52;报警控制;光照控制;液晶

1绪论

鸡舍的温度光照对蛋鸡的生长、发育和产蛋量有直接影响,合理的光照能刺激蛋鸡排卵,增加蛋鸡产蛋量。

对于封闭式鸡舍,完全采用人工光照方式,而对开放式或半开放式的鸡舍,可以采用自然光照和人工补充光照相结合的方式。

当自然光照时间充足时,无需人工光照,只有当自然光照时间不足时,才采用人工光照补充。

这样既可以节省开支,又能满足鸡舍光照强度的要求。

温度的调控可以减弱季节和昼夜温差对鸡的生长发育和产蛋量的影响。

音乐可以促进蓄养类动物的生长,并且可以提高肉质的质量还可以提高鸡对环境中突发的声响的适应能力,以免受到惊吓。

人工控制光照度和温度变化,可提高家禽生产力、繁殖力和产蛋品质,消除或改变家畜生产的季节性。

本系统可以根自动调整光照强度和温度,由独立键盘控制音乐播放,减少了人工参与,同时又能在满足要求的前提下节约用电量。

基于以上认识,本文设计出一种基于单片机技术的鸡舍控制系统。

2系统方案与论证

为了能够设计出一种成本低廉,精确度较高,连接简单的鸡舍控制系统,本设计给出了三种方案。

2.1方案论述

方案一:

控制系统以STC89C52单片机为核心,光强传感器采用TSL2561检测光照强度。

所需采集的数据将随被测各项数据变化的电压或电流采集过来,进行数据的处理,在显示电路上,将被测各项数据显示出来。

单片机将采集到数值在液晶1602上显示出来。

所采集的数据经过单片机的比较发出调整指令,通过调整灯的亮度和调节光照强度。

系统的总体结构框图,如图2.1所示。

图2.1系统框图

方案二:

控制系统的核心采用AT89C51单片机,温度采集采用SHT10数字式温湿度传感器。

光照度传感器采用GZD-01型光照度感应探头,A/D转换模块采用逐次渐近型8路A/D转换器ADC0809,利用AT89C51单片机的串行I/O口。

单片机将采集到数值在液晶nokia5110上显示出来。

独立键盘控制音乐播放,经过1min后由单片机控制停止播放音乐。

系统的总体结构框图,如图2.2所示。

图2.2系统框图

方案三:

控制系统以STC89C52单片机为核心,温度传感器采用改进型智能传感器DS18B20,采用加热炉调整温度。

光照控制不再经过单片机控制而直接利用光敏电阻阻值与光照强度之间的关系来控制鸡舍内灯光的光照强度。

数据采集部分使用STC89C52单片机,将随被测各项数据变化的电压或电流采集过来,进行数据的处理,在显示电路上,将被测各项数据显示出来。

单片机将采集到数值在液晶1602上显示出来。

独立键盘控制音乐播放,经过1min后由单片机控制停止播放音乐。

系统的总体结构框图,如图2.3所示。

图2.3系统框图

2.2方案比较

方案一使用的控制器为STC89C52单片机,方案二使用的控制器为AT89C51单片机。

与方案二的单片机相比较,STC89C52单片机功耗低,性能高而且成本不高,并且完全能够满足本方案的需求。

方案一选择的TSL2561光强传感器相比于方案二使用GZD-01型光照度感应探头和方案三的光敏电阻,TSL2561光强传感器采用先进的电路模块技术开发变送器,体积小、安装方便、线性度好、传输距离长、抗干扰能力强,来采集鸡舍内的光照强度。

方案一和方案三选择温度传感器DS18B20采集鸡舍内的温度,与方案二的温度传感器相比SHT10数字式温湿度传感器不需外围元件,直接输出温度的数字信号,无需经过AD转换,连接简单,可以有效地解决传统温度传感器的不足。

方案一和方案二使用的显示设备是液晶nokia5110相对于方案二的LCD1602有以下优点。

性价比高,LCD1602可以显示32个字符,而Nokia5110可以显示15个汉字,30个字符,Nokia5110裸屏仅8.8元,LCD1602一般15元左右。

接口简单,仅四根I/O线即可驱动,LCD1602需11根I/O线。

速度快,是LCD1602的40倍。

Nokia5110工作电压3.3V,正常显示时工作电流200uA以下,具有掉电模式,适合电池供电的便携式移动设备。

综上所述,根据对三种方案的比较以及对设计的鸡舍控制系统性价比,精确度较高,连接简单的要求,选择方案一来设计本鸡舍控制系统。

3系统硬件设计

鸡舍控制系统硬件部分主要由控制器模块、电源电路模块、室内温度检测模块、光照强度检测模块、显示电路模块、控制电路模块组成。

3.1控制器模块

本设计的控制器模块选用STC89C52,它是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52在众多嵌入式控制应用系统中得到广泛应用。

(1)标准功能:

8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路[4]。

另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

(2)在外部结构上,STC89C52单片机和MCS-51系列单片机的结构相同,有三种封装形式,分别是PDIP形式,为40针脚;PLCC形式,为44针脚;TAFP形式,也为44针脚[5]。

其中,常用的为PDIP形式。

STC89C52单片机的引脚分布如图3.1所示。

图3.1STC89C52的引脚图

3.2温度检测电路模块

DS18B20可以将现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。

适合于恶劣环境的现场温度测量。

DS18B20的温度检测和数据输出全集成于一个芯片之上,从而抗干扰能力更强。

其中一个工作周期可分为两个部分,即温度检测和数据处理。

其管脚介绍如下:

(1)GND为电源地;

(2)DQ为数字信号输入/输出端;

(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

测温电路连接如图3.2所示。

图3.2温度检测电路图

3.3光照强度检测电路模块

本设计选择TSL2561光强传感器检测鸡舍内的光照强度。

各引脚的功能如下:

脚1和脚3分别是电源引脚和信号地。

其工作电压工作范围是是2.7V-3.5V。

脚2,器件访问地址选择引脚。

由于该引脚电平不同,该器件有3个不同的访问地址。

脚4和脚6,总线的时钟信号线和数据线。

脚5中断信号输出引脚。

当光强度超过用户编程设置的上或下阈值时器件会输出一个中断信号。

TSL2561光强度数字转换芯片与单片机P0口相接,电路原理图如图3.3所示。

图3.3TSL2561光强传感器连接电路图

3.4显示模块

液晶nokia5110的特点如下:

(1)84x48的点阵LCD,可以显示4行汉字,采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9条。

(2)支持多种串行通信协议(如AVR单片机的SPI、MCS51的串口模式O等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。

(3)可通过导电胶连接模块与印制版,而不用连接电缆,用模块上的金属钩可将模块固定到印制板上,因而非常便于安装和更LCD控制器/驱动器芯片已绑定到LCD晶片上,模块的体积很小。

(4)采用低电压供电,正常显示时的工作电流在200μA以下,且具有掉电模式。

液晶nokia5110的引脚图如图3.4所示。

液晶nokia5110与单片机的连接电路图如图3.5所示。

图3.4液晶nokia5110引脚图

图3.5液晶nokia5110连接电路图

3.5控制电路模块

本设计的控制电路模块选用继电器作为控制系统的开关。

继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。

故在电路中起着自动调节、安全保护、转换电路等作用。

如图3.6所示,从机从主机接受指令控制继电器的开关,从而使各类执行器件起到对温室环境调节的作用。

图3.6继电器控制电路

3.6电源电路模块

本设计中用到3种电源,分别为-5V、+5V、+12V。

电源电路图如图3.7所示,220V交流电经变压器降压、桥式整流、电容滤波后由7905、7805、7812三端集成稳压管分别得到-5V、+5V、+12V电压,为整个系统供电。

图3.7电源电路图

4系统软件设计

本设计软件部分以STC89C52为控制核心,由传感器采集温度、光照和键盘操作数据,经过单片机比较后作出相应的操作。

实现自动调整温度和光照并且控制音乐播放时间。

系统程序流程图如图4.1所示。

图4.1系统程序流程图

5结论

本次设计结合单片机技术和传感器技术,构建了一个基于单片机技术的鸡舍控制系统。

本系统是本着在不影响功能实现的前提条件下尽可能降低生产成本的宗旨,以STC89C52为核心,以继电器控制为主要控制方式,以检测并调节鸡舍内温度、光照度和音乐播放时间为主要目的的测控系统。

该系统可以实现对鸡舍参数信息的实时检测和调整并显示。

结果表明,该控制系统具有良好的扩展性和实用性,对于实现鸡舍的智能化测控管理,降低劳动强度,提高生产效率,创造鸡舍盈利的最佳效益将产生积极作用。

参考文献

[1]邹存明,满红,林强.鸡舍温度控制器设计与实现[J].2011(04):

254.

[2]童诗白,华成英主编.模拟电子技术基础(第四版)[M].北京:

高等教育出版社,2006.5(2010重印)

[3]王广辉,吴振桥,光控自动窗帘的设计[J].电子世界,2007,(08)

[4]胡汉才.单片机原理及系统设计[M].北京:

清华大学出版社,2001.

[5]刘守义.单片机应用技术[M].西安:

西安电子科技大学出版社,2002.

[6]戴勇,周建平,梁楚华,赵二明.基于STC89C52单片机的多功能智能温室测控系统[J].

  农机化研究,2009(5):

139.

[7]谭浩强.C程序设计(第三版)[M].北京:

清华大学出版社,2005

[8]来清民.传感器与单片机接口及实例[M].北京:

北京航空航空大学出版社,2008:

139

  -141.

[9]钱能主编.C++程序设计[M].清华大学出版社.2009.6

[10]张宇河,金钰.计算机控制系统[M].北京;北京理工大学出版社,1996.

[11][美]KatsuhikoOgata.陆伯英,于海勋等(译).现代控制工程(第三版)[M].北京:

电子工业出版社,2000,3.

DesignoftheIntelligentMonitoringSystemfortheHenHouse

AbstractThehenhousecontrolsystemismicrocontroller-basedintelligentcontrolsystem.STC89C52MCUworksasthecore,thecontrolsystemistoautomaticallyadjustthelightandtemperature,aswellasthemusicisbroadcastregularlyfeatures.TemperaturesensorthissystermusesiswhichwithimprovedsmartsensorDS18B20.AndthelightintensitysensorusingTSL2561lightintensityisdetected.TheshedsdatawillbecollectedontheLCDnokia5110displayed.Thisarticleshedsdesignedcontrolsystem,real-timeacquisitionandcontroltemperatureshedslightintensity,temperatureandotherenvironmentalparameters,andtimingcontroltomusicplayer,intuitivedatadisplayedtotheuser.

KeywordsSTC89C52;temperaturecontrol;lightcontrol;LCDnokia5110

 

附录1系统总电路图

附录2程序

#include

#include

#include

#include//要用到取绝对值函数abs()

#defineucharunsignedchar

#defineuintunsignedint

sbitlight=P0^5;

sbitds=P1^0;

sbitlight1=P0^6;

sbitlight2=P0^7;

sbitre=P2^0;

sbitguang=P2^1;

sbityin=P2^2;

sbitjian=P3^3;

inttempValue1;

unsignedinttemp;

ucharcodeth0=(65535-3000)/256;

ucharcodetl0=(65535-3000)%256;

uchardispbuf[6];

charnum[]={"0"};

ucharcodedisptab[]={0x3f,0x6,0x5b,0x4f,0x66,

0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e,

0x79,0x71,0x0};

ucharcodedisptabwithdot[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0xa7,0xff,0xef,0xf7,

0xfc,0xb9,0xf9,0xf1};

ucharcodedispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

//延时函数,对于11.0592MHz时钟,例i=10,则大概延时10ms.

voiddelay(unsignedinti)

{

unsignedintj;

while(i--)

{

for(j=0;j<125;j++);

}

}

voiddsInit()

{

//对于11.0592MHz时钟,unsignedint型的i,作一个i++操作的时间大于?

us

unsignedinti;

ds=0;

i=100;//拉低约800us,符合协议要求的480us以上

while(i>0)i--;

ds=1;//产生一个上升沿,进入等待应答状态

i=4;

while(i>0)i--;

}

voiddsWait()

{

unsignedinti;

while(ds);

while(~ds);//检测到应答脉冲

i=4;

while(i>0)i--;

}

//向DS18B20读取一位数据

//读一位,让DS18B20一小周期低电平,然后两小周期高电平,

//之后DS18B20则会输出持续一段时间的一位数据

bitreadBit()

{

unsignedinti;

bitb;

ds=0;

i++;//延时约8us,符合协议要求至少保持1us

ds=1;

i++;i++;//延时约16us,符合协议要求的至少延时15us以上

b=ds;

i=8;

while(i>0)i--;//延时约64us,符合读时隙不低于60us要求

returnb;

}

//读取一字节数据,通过调用readBit()来实现

unsignedcharreadByte()

{

unsignedinti;

unsignedcharj,dat;

dat=0;

for(i=0;i<8;i++)

{

j=readBit();

//最先读出的是最低位数据

dat=(j<<7)|(dat>>1);

}

returndat;

}

//向DS18B20写入一字节数据

voidwriteByte(unsignedchardat)

{

unsignedinti;

unsignedcharj;

bitb;

for(j=0;j<8;j++)

{

b=dat&0x01;

dat>>=1;

//写"1",将DQ拉低15us后,在15us~60us内将DQ拉高,即完成写1

if(b)

{

ds=0;

i++;i++;//拉低约16us,符号要求15~60us内

ds=1;

i=8;while(i>0)i--;//延时约64us,符合写时隙不低于60us要求

}

else//写"0",将DQ拉低60us~120us

ds=0;

i=8;while(i>0)i--;//拉低约64us,符号要求

ds=1;

i++;i++;//整个写0时隙过程已经超过60us,这里就不用像写1那样,再延时64us了

}

}//向DS18B20发送温度转换命令

voidsendChangeCmd()

{

dsInit();//初始化DS18B20,无论什么命令,首先都要发起初始化

dsWait();//等待DS18B20应答

delay

(1);//延时1ms,因为DS18B20会拉低DQ60~240us作为应答信号

writeByte(0xcc);//写入跳过序列号命令字SkipRom

writeByte(0x44);//写入温度转换命令字ConvertT

}//向DS18B20发送读取数据命令

voidsendReadCmd()

{EA=0;//关闭中断是因为进入显示中断会影响到DS18B20的读写时序

dsInit();

dsWait();

delay

(1);

writeByte(0xcc);//写入跳过序列号命令字SkipRom

writeByte(0xbe);//写入读取数据令字ReadScratchpad

EA=1;

}//获取当前温度值

intgetTmpValue()

{

unsignedinttmpvalue;

intvalue;//存放温度数值

floatt;

unsignedcharlow,high;

EA=0;

sendReadCmd();//连续读取两个字节数据

low=readByte();

high=readByte();

//将高低两个字节合成一个整形变量

//计算机中对于负数是利用补码来表示的

//若是负值,读取出来的数值是用补码表示的,可直接赋值给int型的value

tmpvalue=high;

tmpvalue<<=8;

tmpvalue|=low;

value=tmpvalue;

/*/使用DS18B20的默认分辨率12位,精确度为0.0625度,即读回数据的最低位代表0.0625度*/

t=value*0.0625;

//将它放大100倍,使显示时可显示小数点后两位,并对小数点后第三进行4舍5入

//如t=11.0625,进行计数后,得到value=1106,即11.06度

//如t=-11.0625,进行计数后,得到value=-1106,即-11.06度

value=t*100+(value>0?

0.5:

-0.5);//大于0加0.5,小于0减0.5

returnvalue;

EA=1;

}

voidInit_timer0()

{

TMOD=0x01;

TH0=th0;

TL0=tl0;

EA=1;

ET0=1;

TR0=1;

}

voidtimer0()interrupt1

{uchartmp;

uchartmp1;

staticucharcount;

P0|=0x3f;

we=1;

tmp=dispbit[count];

tmp1=tmp;

P0&=tmp;

we=0;

du=1;

tmp=dispbuf[count];

if(tmp1==0xfb)

{

tmp=disptabwithdot[tmp];

}

else

{

tmp=disptab[tmp];

}

P0=tmp;

du=0;

count++;

if(count==6)

{

count=0;

}

//unsignedinttemp=abs(tempValue);

dispbuf[0]=temp/10000;

dispbuf[1]=temp%10000/1000;

dispbuf[2]=temp%1000/100;

dispbuf[3]=temp%100/10;

dispbuf[4]=temp%10;

TH0=th0;

TL0=tl0;

}

voidmain()

{dio=0;

floata;

LCD_init();//初始化LCD模块

Init_timer0();

while

(1)

{

sendChangeCmd();//启动温度转换

tempValue1=getTmpValue();

temp=abs(tempValue1);

LCD_write_hanzi(0,0,0);//鸡

LCD_write_hanzi(2,0,1);//舍

LCD_write_hanzi(4,0,2);//温

LCD_write_hanzi(6,0,3);//度

LCD_write_maohao(8,0,0);//:

LCD_write_

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2