小型温室大棚控制系统电子设计报告_第1页
小型温室大棚控制系统电子设计报告_第2页
小型温室大棚控制系统电子设计报告_第3页
小型温室大棚控制系统电子设计报告_第4页
小型温室大棚控制系统电子设计报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、重庆交通大学信息学院电子设计实践报告设计项目名称: 小型温室大棚控制系统 设计项目性质: 设 计 性 设计所属课程: 电 子 设 计 实 践 姓 名: 11111 学 号: 11111 班 级: 电子信息工程专业1111 指 导 教 师 : 11111 设计完成时间: 1111 年 1 月 1 日一、设计要求(1)通过按键人为设计适宜温度;(2)通过单片机将温室大棚的温度控制在预设的温度范围;(3)超过预设范围时会报警通知二、设计分析设计主要是基于单片机控制的小型温室大棚的设计。首先使用DS18B20温度传感器进行对大棚实时温度的检测,通过单片机控制,使LCD12864显示大棚温度及状态,同时

2、与按键设置的温度进行比对,如果超过最高温度,则启动风扇进行降温,如果低于最低温度,则点亮白炽灯进行加热,同时这两种状态都会使蜂鸣器响、led灯闪烁来进行报警。三、系统方案设计1、系统功能(1)四个按键实现人为设计适宜温度;(2)LCD12864显示实时温度以及温度状态;(3)不在预设温度范围内,通过蜂鸣器和led灯进行报警;(4)温度超过最高温度,风扇工作,低于最低温度,白炽灯工作。2、系统设计方案(1)温度部分的设计用DS18B20温度传感器进行检测,单片机进行控制温度的数字转换,并通过LCD12864进行显示。 (2)按键部分的设计 设计四个按键,分别实现温度的上限+和,温度下限的+和-。

3、(3)控制部分的设计单片机进行控制,首先将传感器检测到的温度转换为对应的数字,然后与预设的温度值进行比较,由比较结果控制后续(蜂鸣器、led、风扇、白炽灯)。四、系统硬件设计1、设计总框图总框图如下图所示,按其箭头指示,第一步按键设置,第二步进行温度采集,输入到单片机,第三步单片机控制显示,第四步单片机控制温室大棚和报警装置。 STC12C5A60S2DS18B20温度采集12864LCD显示 温室大棚蜂鸣器、led灯报警装置风扇设置温度的按键白炽灯2、 系统主要硬件模块概述根据总框图可以看出,系统由七个主要模块构成,分别是按键设置模块、温度采集模块、显示模块、控制模块、报警模块、制冷模块、制

4、热模块。(1)键盘设置模块系统的主函数中有初始的默认温度范围,按键模块由四个按键组成,分别为上限温度+,上限温度-,下限温度+,下限温度-,并将设置的温度范围送入单片机,是后续步骤的基础。(2) 温度采集模块温度采集模块采用DS18B20传感器,主要功能是将大棚温度实时检测出来并将采集到的温度数据送入单片机,此模块和按键设置模块是两个将数据传送进单片机的模块。(3) 显示模块此模块采用LCD12864,是一种具有4 位/8 位并行、2 线或3 线串行多种接口方式,内部含有国标一级、二级简体 中文字库的点阵图形液晶显示模块,可以显示8×4 行16×16 点 阵的汉字.;其显示

5、分辨率为128×64,利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。且.电压低功耗低。(4) 控制模块此模块采用STC12C5A60S2单片机,是整个系统的控制中心,负责数据处理,控制显示模块、报警模块、制冷模块、制热模块.。TC12C5A60S2高速、低功耗、超强抗干扰,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换,针对电机控制,强干扰场合.采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。(5) 报警模块采用蜂鸣器和led灯来实现,可以直接由单片机控制实现

6、,操作简单,报警现象明显。(6) 制冷模块采用风扇,单片机虽可以输出5V电压,但电流只有几十mA,所以用MOS管作为驱动电路。(7) 制热模块采用白炽灯,想要快速将温度提高,就要采用大功率的装置,直流电一般不容易实现,所以采用220V的交流电, 用光耦和可控硅实现弱电(单片机)控制强电(220V的交流电)。五、系统软件设计(1)系统主程序void delay() ; / 延时函数void keyscan();/按键查询void WriteByteToLcm(uchar dat) ; /HB12864液晶并行显示void Strplay(uchar Command,uchar X, uchar

7、Y, uchar *s); /并行显示汉字void Numplay(uchar Command,uchar X, uchar Y, uchar Z); /并行显示数字void ds18b20_Reset(void);/ DS18B20 初始化uchar ds18b20_ReadByte(void) /从DS18B20读一个字节数据void ds18b20_WriteByte(unsigned char dat); /向DS18B20写1字节数据uchar ReadTemperature(void); /读取温度 返回温度值void warn(); /报警void deal(uchar t);

8、/温度控制处理(2)流程图软件设计的算法主要是将按键设置的温度数据与实时温度数据进行比较,从而实现控制温度。主要有按键查询算法,DS18B20温度转换算法,LD12864温度显示算法,报警算法,温度处理算法。主程序的流程图如图所示:开始系统初始化DS18B20初始化按键查询读取温度显示温度是,加热小于下限 是,降温大于上限六、 仿真测试结果及分析我是直接用硬件来测试的,没有仿真。 (总体硬件图)七、实际结果及分析(1)测试结果实物图:a:温度正常 b1,b2:温度过高 c3,c3:温度过低(a) 显示正常 (b1)显示温度高 (b2)风扇工作,蜂鸣器响,led灯闪烁 (c1) 显示温度低 (c

9、2)白炽灯亮,蜂鸣器响,led灯闪烁(2)测试结果分析a:温度正常时,即大棚温度处于人为设定温度的范围内,P11输出1,光耦不产生光电流,可控硅处于关的状态,白炽灯不亮;P12输出0,MOS处于截止状态,风扇不工作;P36输出1,蜂鸣器不响;P35输出1,led灯不闪烁。 b1,b2:温度过高时,单片机P11将输出0,使光耦产生光电流,使可控硅处于开状态,白炽灯亮,进行加热;P12输出0,MOS处于截止状态,风扇不工作;P36输出0,蜂鸣器0响;P35输出0,led灯0闪烁,进行报警。c1,c2: 温度过低时,单片机P11将输出1,光耦不产生光电流,可控硅处于关状态,白炽灯不亮;P12输出1,

10、驱动MOS管,风扇工作进行降温;P36输出0,蜂鸣器响;P35输出0,led灯0闪烁,进行报警。八、总结(1)设计总结经过连续八周的设计实践,由最初的设想变为自己手中焊接的电路板,并且此电路板可以完成自己想要实现的功能,终于完成了这次课程设计。(2)心得体会本次实践我感触颇多,首先,在设想是就要考虑到实际的可行性,但同时又不能太过锢囿于自己完全会做的一些东西,要想着不断的扩展,这样在实际的动手过程中就会不断的为实现自己想要的功能去搜索各种书本外的知识,并且这些新学的知识立刻转化为实际,加强了所学的知识,同时也加强了已学过的理论性知识的应用,做到了学以致用。然后就是将自己的设计付诸于动手实现,这

11、一点最难,因为硬件电路会受到各种因素干扰,并不是按照你想象的焊接这一起就可以工作了。我最开始想着把所有的都直接焊在一块板子上,这样外观好看且容易直接放入自己做的温室大棚中,后来因为这样做如果不成功的话,不容易检查出问题究竟出在哪一部分,所以我采用了分块进行焊接,先是LCD12864,这是显示模块,先把这部分确认无误,下面才方便检测,接下来是温度传感器,虽然我之前了解了其工作原理及引脚的接法,但在检测中不小心把电源和地的引脚接反了,传感器直接就坏了,但是当时不知道,以为换过来就好,结果一直显示85度,最后又认真查资料,确认是坏了,同时我也意识到做实验一定要认真严谨,尤其是我们电子专业的,有一些芯

12、片是非常脆弱的。接着是降温控制,我最刚开始想到制冷片,但速度太慢,最后采用风扇,但直接用单片机不能驱动,于是用了MOS管作为驱动电路;最后是加热控制,最初想到加热片,问了学长,学长建议我用白炽灯,要用到交流电,要实现弱电控制强电,我查了资料,最后使用了光耦来实现电光电的转换,再用可控硅(相当于开关)接到交流电中。这一点我感触最深,我看到了电子元器件这么神奇,顿时增加了做实验的极大兴趣。以前总觉得自己的动手能力差,通过这次实践使我对自己的动手能力有了信心,虽然反复弄了好几遍才成功,我认为过程的艰辛与收获是呈正比的。通过这次实践看到在课本上学的东西转换成实际应用,在这过程中自己认识到了熟练掌握电子

13、元器件和理论要联系实际的重要性,真的很感谢自己的刻苦努力,同时也感谢张老师对我的严格要求。附1(各模块硬件电路)d:控制模块和显示模块e按键设置模块f:数据采集模块g:制冷模块h:制热模块i:报警模块 (d) (e) (f) (g) (h) (i)附2#include<STC12C5A60S2.H>#include<intrins.h>#define uint unsigned int#define uchar unsigned char#define DB P2 /8位并口方式数据口 /0XB9 显示12X12中文和6X12ASCII混合字符串命令 uchar dat

14、,date,temph=25,templ=15;sbit BUSY=P06; /查忙 LCD接口引脚定义sbit REQ= P05; /响应sbit hot = P11; / hot deng 0 enablesbit cold = P12; / cold fengshan 1 enablesbit DQ = P13; /温度传感器数据线sbit beep=P36; /蜂鸣器sbit LED= P35; /闪烁灯sbit keyh1=P34; /上限温度键+ sbit keyh2=P33; /上限温度键-sbit keyl1=P32; /下限温度键+ sbit keyl2=P31; /下限温度

15、键- void delay() unsigned char i; for(i=250;i>0;i-);/按键查询void keyscan() if(keyh1=0) delay(); if(keyh1=0) temph+; if(keyh2=0) delay(); if(keyh2=0) temph-; if(keyl1=0) delay(); if(keyl1=0) templ+; if(keyl2=0) delay(); if(keyl2=0) templ-; /HB12864液晶并行显示/void WriteByteToLcm(uchar dat)while( BUSY = 1 )

16、;/等待LCM空闲(BUSY为低)DB=dat; /向总线送数_nop_();_nop_();REQ = 0;/REQ=0,向LCD发请求命令while( BUSY = 0 ); /等待LCM相应请求(BUSY为高) REQ = 1;/复原请求信号void Strplay(uchar Command,uchar X, uchar Y, uchar *s) WriteByteToLcm(Command); WriteByteToLcm(X); WriteByteToLcm(Y); while (*s) WriteByteToLcm(*s); / 显示字符 s+; WriteByteToLcm(0

17、x00); /结束符 void Numplay(uchar Command,uchar X, uchar Y, uchar Z)WriteByteToLcm(Command); WriteByteToLcm(X); WriteByteToLcm(Y);WriteByteToLcm(Z);WriteByteToLcm(0x00); /*void delayxus(unsigned int n)while(n -)_nop_();_nop_();/*复位DS18B20 初始化*/void ds18b20_Reset(void)unsigned char x = 0;DQ = 1;delayxus(

18、60);DQ = 0;delayxus(240);delayxus(240);DQ = 1;delayxus(80);x = DQ;delayxus(120);/*从DS18B20读一个字节数据*/uchar ds18b20_ReadByte(void)unsigned char i = 0;unsigned char dat = 0;for(i = 0;i < 8;i +)DQ = 0;dat >>= 1;delayxus(1);DQ = 1;delayxus(1);if(DQ) dat |= 0x80;delayxus(60);return (dat);/*向DS18B2

19、0写1字节数据*/void ds18b20_WriteByte(unsigned char dat) unsigned char i = 0; for(i = 0;i < 8;i +) DQ = 0;DQ = dat&0x01;delayxus(1);delayxus(60);DQ = 1;dat >>= 1;delayxus(1); /*读取温度 返回温度值*/uchar ReadTemperature(void)unsigned int a = 0;unsigned int b = 0;unsigned int t = 0;ds18b20_Reset();ds18

20、b20_WriteByte(0xCC);ds18b20_WriteByte(0x44);ds18b20_Reset();ds18b20_WriteByte(0xCC);ds18b20_WriteByte(0xBE);a = ds18b20_ReadByte();b = ds18b20_ReadByte();b<<= 4;b+=(a&0xf0)>>4 ; t=b;return (t);/*报警*/*延时*/void delayy(uchar y) unsigned char i; while(y-); for(i=250;i>0;i-); void warn() uchar count; for(count=200;count>0;count-) beep=beep; delayy(2); LED=LED; /*温度*/ void deal(uchar t) if(t>temph) Strplay(0xb9,0x02,0x00," A little hot! "); cold=1;warn(); else if(t<templ) Strplay(0xb9,0x02,0x0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论