《环境监测系统实验报告》由会员分享,可在线阅读,更多相关《环境监测系统实验报告(28页珍藏版)》请在金锄头文库上搜索。
1、WORD.信息与通信工程学院单片机系统课程设计报告完成日期:2012年11月 16日 / 目 录目录1一、设计任务和要求11.1 设计任务11.2 性能指标1二、设计方案22.1.方案设计22.1.1 单片机控制模块的选择论证22.1.2 温度湿度检测模块的选择与论证22.1.3 显示模块的选择与论证22.2 本设计采用方案与原理3三、系统硬件设计43.1 单片机最小系统设计43.2 温湿度采集电路53.3 电源电路63.4 光敏电阻接入电路63.5 键盘电路83.6 LCD显示电路83.7 报警电路93.8串行接口电路9四.系统软件设计104.1 主程序设计104.2 LCD12864模块程
2、序114.3 DHT11模块程序124.4 光敏电阻模块程序14五.调试与性能分析155.1调试过程中出现的问题155.2 性能分析15六.心得体会16参考文献17附录1 程序清单18附录2 电路原理图24附录3 PCB图25附录4 硬件电路板图26一、设计任务和要求1.1设计任务基本要求:(1) 利用单片机控制传感器采集环境温湿度,光照强度等参数,并在液晶屏上显示环境参数值。(2)系统设有键盘,可实现系统参数的设置。提高部分:(1) 将上述环境数据记录在SD或TF卡上;(2)采集并显示三轴加速度值;(3)无线传输所测环境参数。1.2性能指标(1)温度湿度光照强度显示:用LCD12864进行显
3、示。(2)环境温度:单位/。(3)环境湿度:单位/%RH。(4)环境光强:单位/lux(5)键盘(6)报警二、设计方案2.1.方案设计2.1.1单片机控制模块的选择论证方案一:单片机选用STC12C5A60S2,这款单片机有第二串口,有A/D转换,有PWM/PCA功能,有部EEPROM可部实现A/D转换。方案二:采用XC9000系列的FPGA。该类器件具有并行处理能力,能快速的响应外部的各种数字信号。综上所述,单片机数学运算功能较强。在程序相互调用方面,处理方便灵活,性能稳定,适合实际应用。且单片机技术发展较为成熟,价格便宜,而FPGA芯片价格较昂贵。则选择方案一。2.1.2 温度湿度检测模块
4、的选择与论证方案一:温度湿度的采集模块采用DHT11。DHT11是一款数字输出的复合传感器,包含一个电阻式感湿元件和NTC式温度检测元件,可测2090%RH湿度,误差5%RH,050摄氏度,误差2摄氏度。方案二:选用DS18B20温度传感器和HS1101湿度传感器。DS18B20是一线式数字温度传感器,具有独特的单线式接口方式,测量围在55125,误差为0.5。最高精度可达0.0625。HS1101是电容式湿度传感器,可测相对湿度围在0%100%RH,误差为2%RH综上所述,虽然方案二的测试围和精度都比较好,但DHT11综合性比较强,则选择方案一。2.1.3 显示模块的选择与论证方案一:采用1
5、2864液晶模块显示测得的数据,可显示较多组的数据,字体较大,可清晰读数,12864为四行八列中文显示器,可以很清晰的显示温度湿度光照强度等的指标。方案二:采用1602液晶模块显示所测数据,1602液晶接线简单方便,但所显示的不清楚,没有条理性。综上所述选择方案一。2.2 本设计采用方案与原理按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、电源模块、显示模块、DHT11环境温湿度检测模块、光敏电阻模块、报警、按键等模块组成。原理框图:温度传感器DS18B20光敏电阻LM324放大电路CPU处理器STC89C51键盘输入控制电路系统电源12864液晶显示电路蜂鸣器报警电路三、系统硬件
6、设计3.1 单片机最小系统设计图3-1-1图3-1-2图3-1-3采用STC12C5A60S2单片机,P0口接上拉电阻,10K*8排阻,晶振电路采用11.0592M,33pF电容,单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。3.2温湿度采集电路图3-2-1单总线数字温湿度传感器DHT11。这款传感器由奥松电子科技研发,与单片机的通信十分简洁方便,无需外接时钟信号,通信如图发除此之外,它还有很多突出的优点: (1)温湿度传感器的一体化结构能同时对相对湿度和温度进行测量,并以数字
7、信号输出,从而减少用户对信号的预处理负担(2)独特的单总线数据传输线协议使得读取传感器更加便捷,而且还有全部校准数据字节,编码方式为8位二进制数。(3)40位二进制数据输出,高位先出,格式为:湿度整数部分8位,小数部分8位;温度整数部分8位,小数部分8位,最后8位为校验字节,为前32位数据的和。(4)宽工作电压,几乎与AT89S52的电压一样,为35.5V,而且功耗较低,通信最大电流为2.5mA。其简要的性能参数如下表所示:从表中可以看出,它的测量围较小,但对实验或民用已经足够了,如果要工业使用的话,可选用该公司的同类工业级产品AM323,测量围为-55.0+125.0度,测量围为0.0100
8、.0%RH,并且可以和DHT11完全互换。按照说明书的要求,DHT11与单片机的连接距离小于20米时,需要在VCC和DATA引脚之间接一个5K左右的电阻,则电路如图所示。3.3电源电路图3-3-1用J1 USB供电,D1为上电指示灯,J2为六脚按键,用来控制板子上电。3.4光敏电阻接入电路图3-4-1光敏电阻的主要特性与参数 :(1)光电流、亮电阻。光敏电阻器在一定的外加电压下当有光照射时,流过的电流称为光电流,外加电压与光电流之比称为亮电阻,常用“100LX”表示。 (2)暗电流、暗电阻。光敏电阻在一定的外加电压下,当没有光照射的时候,流过的电流称为暗电流。外加电压与暗电流之比称为暗电阻,常
9、用“0LX”表示。 (3)灵敏度。灵敏度是指光敏电阻不受光照射时的电阻值(暗电阻)受光照射时的电阻值(亮电阻)的相对变化值。(4)在一定外加电压下,光敏电阻的光电流和光通量之间的关系。不同类型光敏电阻光照特性不同,但光照特性曲线均呈非线性。因此它不宜作定量检测元件,这是光敏电阻的不足之处。一般在自动控制系统中用作光电开关。(5)光敏电阻的光谱特性光谱特性与光敏电阻的材料有关。硫化铅光敏电阻在较宽的光谱围均有较高的灵敏度,峰值在红外区域,化镉、硒化镉的峰值在可见光区域。因此,在选用光敏电阻时,应把光敏电阻的材料和光源的种类结合起来考虑,才能获得满意的效果。(6)光敏电阻的伏安特性:在一定照度下,
10、加在光敏电阻两端的电压与电流之间的关系称为伏安特性。在给定偏压下,光照度较大,光电流也越大。在一定的光照度下,所加的电压越大,光电流越大,而且无饱和现象。但是电压不能无限地增大,因为任何光敏电阻都受额定功率、最高工作电和额定电流的限制。超过最高工作电压和最大额定电流,可能导致光敏电阻永久性损坏。 (7)当光敏电阻受到脉冲光照射时,光电流要经过一段时间才能达到稳定值,而在停止光照后,光电流也不立刻为零,这就是光敏电阻的时延特性。由于不同材料的光敏,电阻时延特性不同,所以它们的频率特性也不同,硫化铅的使用频率比硫化镉高得多,但多数光敏电阻的时延都比较大,所以,它不能用在要求快速响应的场合。3.5
11、键盘电路图3-5-1本设计的控制输入部分为简单的四个按键:由于单片机默认状态下端口引脚为高电平,可以接上按键与地相连。单片机检测按键端口的电平情况来决定是否有按键按下和哪个按键被按下,抖动问题采用软件延时方式,减少硬件电路设计,电路如图所示。3.6 LCD显示电路由引脚的应用考虑,LCD接为串行显示,当模块的PSB脚接低电平时,模块即进入串行接口模式。串行模式使用串行数据线SID与串行时钟线SCLK来传送数据,即构成2线串行模式。图3-6-13.7 报警电路图3-7-1根据蜂鸣器的参数,电压1.31.5V,电流2080mA,电阻68 知,可用选用集成放大芯片LM386 驱动,但更经济的是用一个
12、三极管9012 或8550 驱动即可,电路如图所示。3.8 串行接口电路图3-8-1四.系统软件设计4.1 主程序设计void main()uchar k,j;LCD_init();LCD_dis_code(0,1,lcd);LCD_dis_code(1,0,lcd1);LCD_dis_code(2,0,lcd2);LCD_dis_code(3,0,lcd3);while(1)read_io();/读取温湿度数据/clear_gcrom();/湿度for(k=0; k2; k+)lcd_pos(3,k+3);write_data(str1k);/clear_gcrom();/温度for(j=0
13、; j0) write_data(*s); /写数据 s+; /*初始化LCD*/void Lcd_init(void) delay(50); write_cmd(0x30); /选择基本指令集delay(1); write_cmd(0x30); /选择8bit数据流delay(1); write_cmd(0x0c); /开显示(无游标、不反白)delay(1); write_cmd(0x01); /清除显示,并且设定地址指针为00Hdelay(30);/*串行发送一个字节*/void send_byte(uchar byte) uchar i; for(i=0;i8;i+) SCLK = 0; byte=byte1; /左移一位先发送高位的数据 SID = CY; /移出的位给SID SCLK = 1;/上升沿触发发送 SCLK = 0; /*写指令*/void write_cmd(uchar cmd) delay(1);SID = 0;SCLK = 0;delay(5);P0 = cmd;d