目录
1 设计任务要求 ……………………………………………………….…3
2 系统设计总体方案 ………………………………………….…………3
3系统硬件设计 …………………………………………………….……4
4软件设计 ………………………………….……………………………11
5总结体会………………………….…………………….………………14
6参考文献 ………………………………………………………………15
附录1…………………………………………….…………….…………16
附录2…………………………………………………………………. …17
附录3 ……………………………………………………………….……18
1 设计任务要求要求:
(1)查阅有关养鸡场的资料和鸡舍的温度要求,简述当前温度控制的方法,效果。
(2)要求远程计算机可监控鸡场内温度及视频。
(3)写出设计方案和所实现的技术指标。
(4)画出养鸡场的加热、测温和摄像头设备布置图。
(5)设计下位机测控系统,同时要求设计计算机上位机界面。
(6)详述选择器件的型号、功能、指标和原因。
(7)其他见目录。
规定:
(1)设计硬件线路,用protel画图。
(2)按单元电路详细说明硬件线路设计思路,元件参数,选取根据。附详细的元件清单。
(3)软件设计。设计传感器采集,转换和LED显示部分程序。
(4)有完整的程序流程图,包括总流程图和模块流程图。对程序设计思想做详细说明。
(5)有完整的程序清单,并加注释。
(6)总结设计过程和设计体会。
(7)完成时间2周。
2养鸡场室内温度远程监控系统设计总体方案温度是养鸡场的成败的关键因素。如果温度过低,鸡容易受凉而引起拉稀或产生呼吸道疾病等;小鸡为了取暖容易造成扎堆,影响采食和活动,造成伤残,严重时会造成大量死亡。因此,养鸡场一定要注意温度的控制。
小鸡生长适宜温度随日龄的增长而下降,1日龄至2日龄孵化器温度35℃至34℃,养鸡场温度25℃~24℃;3日龄~7日龄孵化器温度34℃~31℃,养鸡场温度24℃~22℃;第2周孵化器温度31℃~29℃,养鸡场温度22℃~21℃;第3周孵化器温度29℃~27℃,养鸡场温度21℃~19℃;第4周孵化器温度27℃~25℃,养鸡场温度19℃~18℃。养鸡场温度要比孵化器的低,使舍内有一定温差,孵化就可随意选择所需的适宜温度,有利于小鸡的生长;小鸡生长温度必须保持平稳,不能忽高忽低,否则饲料再好也不能养好小鸡。综上述控制好温度对于养鸡是非常之关键因素。
舍内常用的控温设备是风机。风机降温系统:湿垫风机降温系统的主要作用是,夏季空气通过湿垫进入鸡舍,可以降低进入鸡舍空气的温度,起到降温的效果;热风炉供暖系统:热风炉供暖系统主要由热风炉、鼓风机、有孔通气道和调节风门等设备组成。它是以空气为介质,煤为燃料,为空间提供无污染的洁净热空气,用于鸡舍的加温。
养鸡场远程监控系统由单片机、上位机、无线收发模块、网络摄像头、传感器、显示屏、继电器、报警器八大主要部分组成。其工作原理是以STC12C5A60S2单片机为核心,温度传感器、测得数据传入60S2单片机,控制继电器开关,进而控制风机控温系统达到控制温度的效果。无线收发模块将单片机数据传送到上位机从而起到监控作。框图如图1所示。
图1 养鸡场远程监控系统总体框图
3系统硬件设计3.1单片机
STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。
STC12C5A60S2是8051系列单片机,与普通51单片机相比有以下特点:
1、同样晶振的情况下,速度是普通51的8~12倍
2、有8路10位AD
3、多了两个定时器,带PWM功能
4、有SPI接口
5、有EEPROM
6、有1K内部扩展RAM
7、有WATCH_DOG
8、多一个串口
9、IO口可以定义,有四种状态
10、中断优先级有四种状态可定义
图2 STC12C5A60S2引脚图
P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,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口也可作为AT89C51的一些特殊功能口:
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 INT0(外部中断0)
P3.3 INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 WR (外部数据存储器写选通)
P3.7 RD (外部数据存储器读选通)
同时P3口同时为闪烁编程和编程校验接收一些控制信号;
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高平时间;
ALE / PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效;
PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问内部部数据存储器时,这两次有效的PSEN信号将不出现;
EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP);
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入;
XTAL2:来自反向振荡器的输出。
图3最小单片机系统
3.2温度传感器
DS18B20芯片是一家美国Dallas子公司研发的一款单一总线的数字式传感器,具有简单的构造、体积小、测量精度高、操作灵活、使用方便等特点,其拥有多样的封装形式,这种微型化的芯片大都利用在空间比较狭小的电子设备中,实现对电子设备很好的监控,确保设备的正常运行。DS18B20具有以下特点。
(1)1-wire接口,单片机只凭借一个I/O端口与该器件相连进行正常的通信。能够轻松的实现多点测温。
(2)无需外部元件,只需采用数据线作为芯片的供电,电源电压的范围是3.0-5.5V之间。
(3)对于每个芯片都用具有独一无二64位光刻ROM编码,对应的家族码是28H.
(4)温度测量范围为-55至125℃,在-10至85℃之间,精度可以达到±0.5℃.
(6)每款温度传感器的分辨率可编程的部分在9至12位之间,其中里面有1位是符号位。
(7)DS18B20的转换时间的大小离不开分辨率的设定,一般是设定的分辨率越大,转换的时间越长。
(8)温度的数据主要由两个字节组成,分别为LSB和MSB,DS18B20在使用11位数据时,对应的分辨率为0.125℃.
(9)DS18B20数字式温度传感器内部有EEPROM的存在,用户先前设定的温度报警上限或下限值以及设定的分辨率倍数,即使中途断电,数据也不会丢失。
DS18B20引脚定义封装形式如图4:GND为电源地。DQ为数据信号输入/输出端。VDD用来作为电源供给端,一般为+5V直流电压(如果选择寄生电源接线形式,该引脚需要接地)。
图4 DS18B20的封装形式
DS18B20数字式温度传感器的内部框架结构图如图5所示,主要分别由64位ROM、温度传感器、高温触发器、低温触发器、暂存寄存器和八位的CRC发生器和高速暂存RAM组成。其中64位ROM主要用于存储各自单一序列号(在出厂前已写入片内ROM),高温触发器和低温触发器主要由用户通过软件写入报警的上、下限值,高速RAM由9个字节组成。
图5 DS18B20内部框架结构
3.3继电器控制电路
光耦隔离电路使被隔离的两部分电路之间没有电的直接连接,主要是防止因有电的连接而引起的干扰,特别是低压的控制电路与外部高压电路之间。
温度的控制由继电器控制电路、温度传感器电路和冷热风机组成。传感器检测的温度与单片机设定的温度进行比较,控制继电器断开与闭合,温度过高冷风机开启,反之热风机开启。控制电路如图6所示。
图6继电器控制电路
3.4LCD显示屏
LCD1602是一款能够显示2行32个字符的液晶显示器,每个字符由5×7的点阵形成,每一行能够显示16个字符。目前现实生活中我们所见到的的LCD字符液晶主要是由HD44780液晶芯片制作而成,它们具体工作方法与控制原理都是一模一样,这样对于程序编写在很大程度上带来了方便。这样基于HD44780写的控制程序能够很好的用于市面上多数的字符型液晶,LCD1602显示器拥有微型化、功耗低、色彩鲜艳、轻薄等诸多优点。其具体的参数如下表1。
表1 LCD1602 液晶显示器大致的技术参数表
LCD1602液晶一共16 个引脚,每个引脚的功能各有所不同,如图7所示。
图7 LCD1602显示电路
VSS:供电电源地。
VDD:供电电源输入端(接+5V)。
VEE:LCD显示器对比度端口,通过调节端口电流大小可以调节屏幕的显示度。当接正+5v直流电压源时,对比度最低,屏幕显得的较暗;当将该端口接地时,对比度最强。我们可以通过给予端口连接一个电位器(滑动变阻器)来调整其对比度的大小。
RS:寄存器选择输入端.RS=0:表示我们选择指令寄存器,能够完成写指令、读取LCD忙标志位和地址计数器。RS=1:选择数据寄存器,可以写或读数据。
R/W:读/写控制信号。当R/W=1,都操作。当R/W=0,写操作。R/W与RS配合使用,可写指令、读LCD忙标志、写数据等操作。
E:命令使能端口。只有该端口由高电平信号转化为低电平信号,LCD模块才能正常执行命令,否则lCD处于关闭状态,不能正常显示。
D0~D7:8位双向数据线。
3.5无线收发模块
USB转nRF24L01无线收发模块无线串口通信2.4G 大功率,长距离,稳定可靠 透明数据传输,设置协议简单,支持AT指令。其实物图如图8所示。RFX2401C射频前段放大芯片可以将无线信号放大到最大22dbm,有效增加信号通信距离,实测空旷通信距离可达500米。
图8 nRF24L01无线收发模块
CH341是一个USB总线的转接芯片,CH341 芯片支持 5V与 3.3V 供电,转换的接口为 TTL 电平,输出高电平与供电电压保持一致。
图9 USB驱动电路
5V 供电时芯片 V3 引脚需要接一个 104 电容到地,3.3V 供电时需要注意以下几点:
与 USB 芯片相连接的所有电路的电源电压都必须不高于 3.3V; USB 芯片的 VCC 引脚与 V3 引脚必须短接,必须同时输入 3.3V 电源电压;如果使用 ESD 保护器件或瞬变电压抑制器件,那么其正电压应该是 3.3V。
3.6网络摄像头
悦安高清POE网络数字监控摄像头YA-3064实物图如图10所示。本网络摄像机产品特点:
●超强夜视高清型,200万像素清晰度;
●支持双码流;本地录像,远程监看互不影响;
●内置双滤光片切换,支持日夜转换;
●强大的网络自适应功能,根据网络带宽自动调整码流大小和编码帧率;
●先进的H.264压缩算法,方便在窄带上实现高清的图像传输;
●安装简单,使用方便,只需一根网线和一个软件就可以搞定一切;
●多样化的网络服务功能支持手机、电脑同时监控;
●采用高性能的阵列红外灯,配合超强夜视,红外夜视可达50米。
图10摄像头连接方式
4软件设计养鸡场室内温度远程监控系统软件设计包括DS18B20温度采集,继电器控制,LCD显示以及上位机等四大主要部分。温度预警值一般设置在鸡的适宜范围之内,在即将越界之前进行控温处理,以保证养鸡场温度始终保持在适宜温度。
程序流程总图如图11所示。
图11程序流程总图
4.1温度采集
根据DS18B20数字传感器与单片机之间的通讯协议,单片机对DS18B20数字式传感器的数据处理过程大致的分为三个步骤:首先在处理信息之前,先对单总线进行复位的操作,进行初始化,初始化之后通过单总线发送ROM 指令,紧接着在发送一条RAM指令,这个过程我们已经完成了对DS18B20 数字式温度传感器的预定设置。当启动复位时,通过CPU 将DQ数据线接口主动下拉大致为500us的等待延时时间,等待时间过后,紧接着CPU将释放DQ总线,当DS18B20数字传感器DQ端收到数据后,延迟时间约为16-60us,然后发送60-240us低脉冲信号,该CPU接收低脉冲信号后复位成功。
表2 ROM的操作指令
| | |
Search ROM Read ROM Match ROM
Skip ROM Alarm ROM | | 检测总线上存在的DS18B20数字式传感器 读取系列代码、序列号及CRC校验码 允许总线控制器在多点总线上定位一只特定的DS18B20 跳过对ROM编码的搜索 搜索有报警的DS18B20 |
4.2LCD显示
LCD1602字符型显示器模块内部存在2种寄存器,它们分别是指令寄存器和数据寄存器。LCD1602在应用时,首先对LCD进行初始化操作(单片机向指令寄存器写入不同的指令数据),然后确定显示字符的地址,最后把需要显示的字符写入LCD的数据寄存器,来实现对数据的显示功能,流程图如图12所示。
图12 流程图
对LCD1602显示字符的控制,通过访问1602内部RAM地址实现,LCD1602内部RAM地址实现,LCD1602内部控制器具有80字节RAM,RAM地址与字符位置关系如表3所示。
表 3 DDRAM的地址与字符显示位置具体的对应联系
列行 | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | |
4.3上位机
该系统上位机界面如图13所示,养鸡场理想温度以及预警温度最大值、最小值可自由设置,可监控实时养鸡场内视频以及温度,同时可绘测出温度曲线。
5总结与体会
通过了两个星期的努力,也掌握了许多知识,例如温度传感器及LCD显示的工作原理等。同时提高了硬件电路的设计、调试,查阅资料、解决问题的能力也得到了一定的提高。在设计电路过程中,理论知识很重要。理论知识决定了设计电路的成败。需要足够的耐心、细心去研究问题,解决问题。还必须有实事求是地分析问题,了解理论与实际是有一些差别的。总之,通过本次综合设计巩固了以前所学的知识,同时也学到了新的知识点,提高了自己的分析问题和解决问题的能力。
该设计的成功完成离不开老师的帮助,从资料的准备、课题的研究,最后到论文的修改、答辩等各个环节,都得到了我们席老师的悉心指导。
感谢席老师的及时沟通,给予合理的建议,让我从中学到了很多,丰富了我单片机的知识,无论是硬件电路的设计还是软件部分的编写都得到了很大的提升,对电子产品的开发有了更深的理解。使我更加喜爱电子产品的研发。
参考文献[1] 曹天汉.单片机原理与接口技术.电子工业出版社.2007
[2] 关键.电子CAD 技术.电子工业出版社.2006
[3] 宋嘉玉.EDA 实用技术.人民邮电出版社.2007
[4] 张大明.单片机控制实训指导及综合应用实例.机械工业出版社.2008
[5] 陈晓文.电子线路课程设计.电子工业出版社2007
[6] 刘伟.传感器实训教程.东南大学出版设.2003
附录1
单片机源程序如下:
- #include < reg51.h >
- #include < intrins.h >
- #define uchar unsigned char
- #define uint unsigned int
- #define lcddata P2
- sbit LCDRS=P1^7; //液晶数据选择命令端
- sbit LCDRW=P1^6; //液晶读写命令端
- sbit LCDEN=P1^5; //液晶使能端
- //sbit LCDRS = P2^6 ; // 命令/数据选择端 0为写命令 1为写据
- //sbit LCDRW = P2^5 ; // lcd读写端
- //sbit LCDEN = P2^7 ; //lcd使能端
- void write_com(uchar com);
- void zdyzfxs();
- unsigned char code mytab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00} ;//lcd自定义字符
- //sbit DQ = P3^7 ; //定义DS18B20端口DQ
- sbit DQ = P1^0; //定义DS18B20端口DQ
- bit presence; //ds18b20 DQ被拉低 信号0允许,1禁止
- uint cc,cc2; //变量cc中保存读出的温度值
- float cc1;
- uchar flag; //flag为温度值正负标志位,“1”表示温度为复制,“0”表示为正值//flag为温度值正负标志位,“1”表示温度为复制,“0”表示为正值
- void write_com(uchar com);
- uchar code cdis0[ ] = "CHECKING...";
- uchar code cdis1[ ] = " DS18B20 OK " ;
- uchar code cdis5[ ] = "Temp: ";
- uchar cdis2[ ] = "+00.00";
- uchar code cdis3[ ] = " DS18B20 ERR0R " ;
- uchar code cdis4[ ] = " PLEASE CHECK " ;
- unsigned char data temp_data[2] = {0x00,0x00} ; //存储16位温度
- /*********************lcd1602******************************/
- void delaylcd(uint z)
- {uchar x,y;
- for(x=z;x>0;x--)
- {for(y=110;y>0;y--);
- }
- }
- /*lcd1602初始化 */
- void lcd_init(void)
- {
- LCDRW=0; //低电平为写
- LCDEN=0;
- write_com(0x38); //使用8位数据开关,显示两行,使用5*7字形
- write_com(0x0c); //显示器开,光标关,字符烁 0x0e 光标开
- write_com(0x06); //字符不动,光标自动右移动一位
- write_com(0x01); //清屏
- }
-
- /*设定显示位置 */
- /********************************/
- void lcd_pos(uchar pos)
- { //第一行第几列直接写pos为几,第二行pos从0x40开始
- write_com(pos | 0x80) ; //数据指针=80+地址变量
- }
- //------------------------------------
- /*温度显示 */
- void temperature_display()
- {
- uchar m;
- flag=0;
- while(1)
- {
- ddelay(2);
- EA=0; //DS18B20读写数据按照严格的时序,最好不要被打断,
- 故把所有中断关闭
- start_convert(); //启动温度转换
- ddelay(250);
- read_tempreture(); //读取温度
- EA=1;
- cc=temp_data[1]*256.0+temp_data[0];
- if(temp_data[1]>0xF8) {flag=1;cc=~cc+1;} else flag=0;
- cc1=cc*0.0625;
- cc2=cc1*100;
- cdis2[1]=cc2/1000+0x30;
- if(cdis2[1]==0x30)
- {cdis2[1]=0x20;}
- cdis2[2]=cc2/100%10+0x30;
- cdis2[4]=cc2%100/10+0x30;
- cdis2[5]=cc2%10+0x30;
- if(flag==1)
- cdis2[0]='-';
- else
- cdis2[0]='+';
- lcd_pos(6) ; //设置显示位置为第一行的第6个字符
- m=0;
- while(cdis2[m]!='\0')
- { //显示字符
- write_data(cdis2[m]) ;
- m++;
- }
- }
- }
-
-
-
-
- //---------------------------------
- /*主函数 */
- void main()
- {
- lcd_display();
- ddelay(1000);
- ow_reset();
- if(presence==0)
- {
- Ok_Menu ();
- ddelay(1000);
- temp_c();zdyzfxs();
- temperature_display();
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
完整的Word格式文档51黑下载地址:
养鸡场监控系统.doc
(1.7 MB, 下载次数: 59)