欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于51单片机的AM2301温湿度传感器在LCD1602上显示驱动程序带实物图概要.docx

    • 资源ID:15187803       资源大小:1.69MB        全文页数:25页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于51单片机的AM2301温湿度传感器在LCD1602上显示驱动程序带实物图概要.docx

    1、基于51单片机的AM2301温湿度传感器在LCD1602上显示驱动程序带实物图概要AM2301温湿度传感器模块AM2301数字温湿度传感器是一各包括有数字校准输出的温湿度传感器。它采用独特的数字采集模块和高新温湿度采集传感技术,可以确保产品可靠性高以及稳定性好。该款传感器具有响应快、抗干扰力强、性价比高、品质卓越等优点。以及超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用的最佳选则。9AM2301 引脚图图3-10 AM2301引脚图AM2301各引脚说明表3-7 AM2301引脚引脚颜色名称注释1红色VDD供电 3.3-5.5VDC2黄色SDA串行数据,单总线3黑色GND

    2、接地,电源负极4NC空脚,请悬空(不要接Vcc或Gnd)AM2301 技术参数表3-8 AM2301技术参数参数条件MinTypMax单位湿度分辨率0.1%RH16Bit重复性1%RH精度253%RH0505%RH互换性可完全互换采样周期12S响应时间1/e(63%)25,1m/s 空气2S迟滞0.3%RH长期稳定性典型值1%RH/yr温度分辨率0.116Bit重复性0.5精度1量程范围-4080响应时间1/e(63%)620SAM2301 驱动电路图3-11 AM2301驱动电路图温湿度传感器模块流程设计用户主机(MCU)发送一次开始信号后,AM2301自动从休眠模式转换到高速模式。等待主机

    3、开始,信号发送后,AM2301发送响应信号,送出40比特的数据,发送数据结束之后触发一次信号采集,对外部环境进行数据采集,采集结束传感器自动转入休眠模式,直到下一次通信信号的来临。此时AM2301的SDA数据线由上拉电阻拉高,一直保持高电平,且AM2301的SDA引脚处于输入状态,时刻检测外部信号。一旦接收到主机发送的信号,再次进入采集状态,对外部数据进行一次采集。整个过程流程图如下:图4-10温湿度传感器流程图1602 LCD显示屏测试根据第三章说明的LCD硬件连线要求,将屏幕的14个接口按要求分别连接至单片机的各端口,确认无误后,个单片机上电,并将编完的程序通过STC-ISP软件烧入到单片

    4、机中,连线图如下:图5-3 LCD1602连线图 给单片机上电之后,屏幕显示如下:图5-4 LCD1602显示效果 该LCD显示屏能正常显示预期设置字幕。AM2301温湿度传感器测试根据温湿度传感器驱动电路,实物连接图如下:图5-7 AM2301连线图给单片机上电,则可在LCD屏幕上得到如下数据:图5-8 AM2301采集数据LCD屏幕第一行显示当前室内湿度情况,第二行显示当前室内温度情况,若用吹风机对其吹风,则温湿度会相应变化。附录主要程序源代码:1.REG52.H/*-REG52.HHeader file for generic 80C52 and 80C32 microcontrolle

    5、r.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.-*/#ifndef _REG52_H_#define _REG52_H_/* BYTE Registers */sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON =

    6、 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;sfr SCON = 0x98;sfr SBUF = 0x99;/* 8052 Extensions */sfr T2CON = 0xC8;sfr RCAP2L = 0xCA;sfr RCAP2H = 0xCB;sfr TL2 = 0xCC;sfr TH2 = 0xCD;/* BIT Registers */* PSW */sbit CY = P

    7、SW7;sbit AC = PSW6;sbit F0 = PSW5;sbit RS1 = PSW4;sbit RS0 = PSW3;sbit OV = PSW2;sbit P = PSW0; /8052 only/* TCON */sbit TF1 = TCON7;sbit TR1 = TCON6;sbit TF0 = TCON5;sbit TR0 = TCON4;sbit IE1 = TCON3;sbit IT1 = TCON2;sbit IE0 = TCON1;sbit IT0 = TCON0;/* IE */sbit EA = IE7;sbit ET2 = IE5; /8052 only

    8、sbit ES = IE4;sbit ET1 = IE3;sbit EX1 = IE2;sbit ET0 = IE1;sbit EX0 = IE0;/* IP */sbit PT2 = IP5;sbit PS = IP4;sbit PT1 = IP3;sbit PX1 = IP2;sbit PT0 = IP1;sbit PX0 = IP0;/* P3 */sbit RD = P37;sbit WR = P36;sbit T1 = P35;sbit T0 = P34;sbit INT1 = P33;sbit INT0 = P32;sbit TXD = P31;sbit RXD = P30;/*

    9、SCON */sbit SM0 = SCON7;sbit SM1 = SCON6;sbit SM2 = SCON5;sbit REN = SCON4;sbit TB8 = SCON3;sbit RB8 = SCON2;sbit TI = SCON1;sbit RI = SCON0;/* P1 */sbit T2EX = P11; / 8052 onlysbit T2 = P10; / 8052 only /* T2CON */sbit TF2 = T2CON7;sbit EXF2 = T2CON6;sbit RCLK = T2CON5;sbit TCLK = T2CON4;sbit EXEN2

    10、 = T2CON3;sbit TR2 = T2CON2;sbit C_T2 = T2CON1;sbit CP_RL2 = T2CON0;#endif2.INTRINS.H/*-INTRINS.HIntrinsic functions for C51.Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.-*/#ifndef _INTRINS_H_#define _INTRINS_H_extern void _nop_ (void);extern bit _testbit_

    11、(bit);extern unsigned char _cror_ (unsigned char, unsigned char);extern unsigned int _iror_ (unsigned int, unsigned char);extern unsigned long _lror_ (unsigned long, unsigned char);extern unsigned char _crol_ (unsigned char, unsigned char);extern unsigned int _irol_ (unsigned int, unsigned char);ext

    12、ern unsigned long _lrol_ (unsigned long, unsigned char);extern unsigned char _chkfloat_(float);extern void _push_ (unsigned char _sfr);extern void _pop_ (unsigned char _sfr);#endif3.STDIO.H/*-STDIO.HPrototypes for standard I/O functions.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software,

    13、 Inc.All rights reserved.-*/#ifndef _STDIO_H_#define _STDIO_H_#ifndef EOF #define EOF -1#endif#ifndef NULL #define NULL (void *) 0)#endif#ifndef _SIZE_T #define _SIZE_T typedef unsigned int size_t;#endif#pragma SAVE#pragma REGPARMSextern char _getkey (void);extern char getchar (void);extern char ung

    14、etchar (char);extern char putchar (char);extern int printf (const char *, .);extern int sprintf (char *, const char *, .);extern int vprintf (const char *, char *);extern int vsprintf (char *, const char *, char *);extern char *gets (char *, int n);extern int scanf (const char *, .);extern int sscan

    15、f (char *, const char *, .);extern int puts (const char *);#pragma RESTORE#endif4.LCD1602.H#include #ifndef _LCD1602_H_H#define _LCD1602_H_H#define uchar unsigned char#define uint unsigned int/-函数声明-void delayms(uchar z);void writecmd(uchar com);void writedata(uchar dat);void init_LCD();/-函数声明结束-/16

    16、02端口定义sbit RS = P24 ; /数据命令选择端(H/L)sbit RW = P25 ;/读写选择端(H/L)sbit E=P26;/* /自定义的字符(5X8) uchar code tab1=0x03,0x05,0x19,0x19,0x19,0x05,0x03,0x00;/小喇叭uchar code tab2=0x08,0x0f,0x12,0x0f,0x0a,0x1F,0x02,0x02,;/年uchar code tab3=0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00;/月uchar code tab4=0x00,0x1F,0x11,0x1F

    17、,0x11,0x11,0x1F,0x00;/日uchar code tab5=0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00;/C(温度符号)*/*void lcd_pos(uchar pos)/设定显示位置 lcd_wcmd(pos | 0x80) ;*/void delayms(uchar z) /延时函数 uint i,j; for(i=z;i0;i-) for(j=100;j0;j-); void writecmd(uchar com) /写指令 RS=0; RW=0; E=0; delayms(1); P0=com; delayms(1); E=1;

    18、delayms(1); E=0;void writedata(uchar dat) /写数据 RS=1; RW=0; E=0; delayms(1); P0=dat; delayms(1); E=1; delayms(1); E=0; /* 写汉字编码到CGRAM函数 *void writetab() unsigned char i ; lcd_wcmd(0x40) ; /写CGRAM for (i = 0 ; i 8 ; i+) lcd_wdat(mytab1 i ) ; */void init_LCD() /初始化1602 delayms(15); writecmd(0x38); /不检测

    19、忙信号 delayms(5); writecmd(0x38); /不检测忙信号 delayms(5); writecmd(0x38); /不检测忙信号 delayms(5); writecmd(0x38); /显示模式设置 delayms(5); writecmd(0x01); /显示清屏 delayms(5); writecmd(0x06); /显示光标移动设置 delayms(5); writecmd(0x0c); /显示开及光标设置 delayms(5);/* writetab() ; /自定义字符写入CGRAM delay(5) ; lcd_pos(0x4d) ; lcd_wdat(0

    20、x00) ; /显示自定义字符*/#endif5.主程序#include #include #include #include lcd1602.htypedef unsigned char U8; /* 无符号8位整型变量 */typedef signed char S8; /* 有符号8位整型变量 */typedef unsigned int U16; /* 无符号16位整型变量 */typedef signed int S16; /* 有符号16位整型变量 */typedef unsigned long U32; /* 无符号32位整型变量 */typedef signed long S3

    21、2; /* 有符号32位整型变量 */typedef float F32; /* 单精度浮点数(32位长度) */typedef double F64; /* 双精度浮点数(64位长度) */#define uchar unsigned char#define uint unsigned int/-IO口定义-/sbit DHT = P20 ; /AM2301端口定义/-全局变量-/bit flagtemp;/温度正负标志位,k U8count, bit flagsendtemp;/发送温度的标志位U8 U8FLAG;U8 U8temp;U8 U8T_data_H,U8T_data_L,U8R

    22、H_data_H,U8RH_data_L,U8checkdata;U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;U16 DHTData1,DHTData2;U8 outdata5; /定义发送的字节数 U8 indata5;U8 count, count_r=0;U8 str5;U8 data tab6=0x00,0x00,0x00,0x00,0x00,0x00;/存储温湿度数据U8 code dis1=Humdity: % ;U8 code

    23、dis2=Temper: c ;/*函数名称 : 延时子程序*/void Delay(U16 j) U8 i; for(;j0;j-) for(i=0;i27;i+); void Delay_10us(void)/延时10uS U8 i; i-; i-; i-; i-; i-; i-; /*函数名称 : 读温湿度字节函数 功 能 : 读取温湿度每个字节说 明 : 无*/ void COM(void)/读字节 U8 i; for(i=0;i8;i+) U8FLAG=2; while(!DHT)&U8FLAG+); Delay_10us(); Delay_10us(); Delay_10us();

    24、 U8temp=0; if(DHT)U8temp=1; U8FLAG=2; while(DHT)&U8FLAG+); /超时则跳出for循环 if(U8FLAG=1)break; /判断数据位是0还是1 / 如果高电平高过预定0高电平值则数据位为 1 U8comdata=1; U8comdata|=U8temp; /0 /end i /- /- /-湿度读取子程序 - /- /-以下变量均为全局变量- /-温度高8位= U8T_data_H- /-温度低8位= U8T_data_L- /-湿度高8位= U8RH_data_H- /-湿度低8位= U8RH_data_L- /-校验 8位 = U8checkdata- /-调用相关子程序如下- /- Delay();, Delay_10us();,COM(); /-/*函数名称 : 温湿度读取函数功 能 : 读取温湿度数据说 明 : 无*/ void RH(void)


    注意事项

    本文(基于51单片机的AM2301温湿度传感器在LCD1602上显示驱动程序带实物图概要.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开