您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 基于51单片机的AM2301温湿度传感器在LCD1602上显示驱动程序带实物图
AM2301温湿度传感器模块AM2301数字温湿度传感器是一各包括有数字校准输出的温湿度传感器。它采用独特的数字采集模块和高新温湿度采集传感技术,可以确保产品可靠性高以及稳定性好。该款传感器具有响应快、抗干扰力强、性价比高、品质卓越等优点。以及超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用的最佳选则。[9]AM2301引脚图图3-10AM2301引脚图AM2301各引脚说明表3-7AM2301引脚引脚颜色名称注释1红色VDD供电3.3-5.5VDC2黄色SDA串行数据,单总线3黑色GND接地,电源负极4NC空脚,请悬空(不要接Vcc或Gnd)AM2301技术参数表3-8AM2301技术参数参数条件MinTypMax单位湿度分辨率0.1%RH16Bit重复性±1%RH精度25℃±3%RH0-50℃±5%RH互换性可完全互换采样周期12S响应时间1/e(63%)25℃,1m/s空气2S迟滞±0.3%RH长期稳定性典型值±1%RH/yr温度分辨率0.1℃16Bit重复性±0.5℃精度±1℃量程范围-4080℃响应时间1/e(63%)620SAM2301驱动电路图3-11AM2301驱动电路图温湿度传感器模块流程设计用户主机(MCU)发送一次开始信号后,AM2301自动从休眠模式转换到高速模式。等待主机开始,信号发送后,AM2301发送响应信号,送出40比特的数据,发送数据结束之后触发一次信号采集,对外部环境进行数据采集,采集结束传感器自动转入休眠模式,直到下一次通信信号的来临。此时AM2301的SDA数据线由上拉电阻拉高,一直保持高电平,且AM2301的SDA引脚处于输入状态,时刻检测外部信号。一旦接收到主机发送的信号,再次进入采集状态,对外部数据进行一次采集。整个过程流程图如下:开始传感器上电初始化读取设备发送起始信号是否收到传感器响应信号?读取设备并开始采集数据更新温湿度值等待下一次信号来临采集时间到?结束NYYN图4-10温湿度传感器流程图1602LCD显示屏测试根据第三章说明的LCD硬件连线要求,将屏幕的14个接口按要求分别连接至单片机的各端口,确认无误后,个单片机上电,并将编完的程序通过STC-ISP软件烧入到单片机中,连线图如下:图5-3LCD1602连线图给单片机上电之后,屏幕显示如下:图5-4LCD1602显示效果该LCD显示屏能正常显示预期设置字幕。AM2301温湿度传感器测试根据温湿度传感器驱动电路,实物连接图如下:图5-7AM2301连线图给单片机上电,则可在LCD屏幕上得到如下数据:图5-8AM2301采集数据LCD屏幕第一行显示当前室内湿度情况,第二行显示当前室内温度情况,若用吹风机对其吹风,则温湿度会相应变化。附录主要程序源代码:1.REG52.H/*--------------------------------------------------------------------------REG52.HHeaderfileforgeneric80C52and80C32microcontroller.Copyright(c)1988-2002KeilElektronikGmbHandKeilSoftware,Inc.Allrightsreserved.--------------------------------------------------------------------------*/#ifndef__REG52_H__#define__REG52_H__/*BYTERegisters*/sfrP0=0x80;sfrP1=0x90;sfrP2=0xA0;sfrP3=0xB0;sfrPSW=0xD0;sfrACC=0xE0;sfrB=0xF0;sfrSP=0x81;sfrDPL=0x82;sfrDPH=0x83;sfrPCON=0x87;sfrTCON=0x88;sfrTMOD=0x89;sfrTL0=0x8A;sfrTL1=0x8B;sfrTH0=0x8C;sfrTH1=0x8D;sfrIE=0xA8;sfrIP=0xB8;sfrSCON=0x98;sfrSBUF=0x99;/*8052Extensions*/sfrT2CON=0xC8;sfrRCAP2L=0xCA;sfrRCAP2H=0xCB;sfrTL2=0xCC;sfrTH2=0xCD;/*BITRegisters*//*PSW*/sbitCY=PSW^7;sbitAC=PSW^6;sbitF0=PSW^5;sbitRS1=PSW^4;sbitRS0=PSW^3;sbitOV=PSW^2;sbitP=PSW^0;//8052only/*TCON*/sbitTF1=TCON^7;sbitTR1=TCON^6;sbitTF0=TCON^5;sbitTR0=TCON^4;sbitIE1=TCON^3;sbitIT1=TCON^2;sbitIE0=TCON^1;sbitIT0=TCON^0;/*IE*/sbitEA=IE^7;sbitET2=IE^5;//8052onlysbitES=IE^4;sbitET1=IE^3;sbitEX1=IE^2;sbitET0=IE^1;sbitEX0=IE^0;/*IP*/sbitPT2=IP^5;sbitPS=IP^4;sbitPT1=IP^3;sbitPX1=IP^2;sbitPT0=IP^1;sbitPX0=IP^0;/*P3*/sbitRD=P3^7;sbitWR=P3^6;sbitT1=P3^5;sbitT0=P3^4;sbitINT1=P3^3;sbitINT0=P3^2;sbitTXD=P3^1;sbitRXD=P3^0;/*SCON*/sbitSM0=SCON^7;sbitSM1=SCON^6;sbitSM2=SCON^5;sbitREN=SCON^4;sbitTB8=SCON^3;sbitRB8=SCON^2;sbitTI=SCON^1;sbitRI=SCON^0;/*P1*/sbitT2EX=P1^1;//8052onlysbitT2=P1^0;//8052only/*T2CON*/sbitTF2=T2CON^7;sbitEXF2=T2CON^6;sbitRCLK=T2CON^5;sbitTCLK=T2CON^4;sbitEXEN2=T2CON^3;sbitTR2=T2CON^2;sbitC_T2=T2CON^1;sbitCP_RL2=T2CON^0;#endif2.INTRINS.H/*--------------------------------------------------------------------------INTRINS.HIntrinsicfunctionsforC51.Copyright(c)1988-2004KeilElektronikGmbHandKeilSoftware,Inc.Allrightsreserved.--------------------------------------------------------------------------*/#ifndef__INTRINS_H__#define__INTRINS_H__externvoid_nop_(void);externbit_testbit_(bit);externunsignedchar_cror_(unsignedchar,unsignedchar);externunsignedint_iror_(unsignedint,unsignedchar);externunsignedlong_lror_(unsignedlong,unsignedchar);externunsignedchar_crol_(unsignedchar,unsignedchar);externunsignedint_irol_(unsignedint,unsignedchar);externunsignedlong_lrol_(unsignedlong,unsignedchar);externunsignedchar_chkfloat_(float);externvoid_push_(unsignedchar_sfr);externvoid_pop_(unsignedchar_sfr);#endif3.STDIO.H/*--------------------------------------------------------------------------STDIO.HPrototypesforstandardI/Ofunctions.Copyright(c)1988-2002KeilElektronikGmbHandKeilSoftware,Inc.Allrightsreserved.--------------------------------------------------------------------------*/#ifndef__STDIO_H__#define__STDIO_H__#ifndefEOF#defineEOF-1#endif#ifndefNULL#defineNULL((void*)0)#endif#ifndef_SIZE_T#define_SIZE_Ttypedefunsignedintsize_t;#endif#pragmaSAVE#pragmaREGPARMSexternchar_getkey(void);externchargetchar(void);externcharungetchar(char);externcharputchar(char);externintprintf(constchar*,...);externintsprintf(char*,constchar*,...);externintvprintf(constchar*,char*);externintvsprintf(char*,constchar*,char*);externchar*gets(char*,intn);externintscanf(constchar*,...);externintsscanf(char*,constchar*,...);externintputs(constchar*);#pragmaRESTORE#endif4.LCD1602.H#includeintrins.h#ifndef_LCD1602_H_H#define_LCD1602_H_H#defineucharunsignedchar#defineuintunsignedint//----------------函数声明--------------------------voiddelayms(ucharz);voidwritecmd(ucharcom);voidwritedata(uchardat);voidinit_LCD();//----------------函数声明结束----------------------//1602端口定义sbitRS=P2^4;//数据命令选择端(H/L)sbitRW=P2^5;//读写选择端(H/L)sbitE=P2^6;/*//自定义的字符(5X8)ucharcodetab1[]={0x03,0x05,0x19,0x19,0x19,0x05,0x03,0x00};//小喇叭ucharcodetab2[]={0x08,0x0f,0x12,0x0f,0x0a,0x1F,0x02,0x02,};//年ucharcodetab3[]={0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00};//月ucharcodetab4[]={0x00,0x1F,0x11,0x1F,0x11,0x11,0x1F,0x00};//日ucharcodetab5[]={0x18,0x18
本文标题:基于51单片机的AM2301温湿度传感器在LCD1602上显示驱动程序带实物图
链接地址:https://www.777doc.com/doc-4650507 .html