lcd显示Am2320温湿度传感器

1.ASAIR AM2320温湿度传感器连接51单片机,
2.已经编好了传感器的启动、测量程序,之后怎么把数据用lcd1602显示出来

  • 这篇博客: 51单片机驱动LCD1602显示原理及例程中的 4. 51单片机使用lcd1602A显示例程 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • lcd1602A.c文件▼

    #include "lcd1602A.h"
    #include "reg51.h"
    /*******************************************************************************
    * 函 数 名         : Lcd1602_Delay1ms
    * 函数功能		   : 延时函数,延时1ms
    * 输    入         : c
    * 输    出         : 无
    * 说    名         : 该函数是在12MHZ晶振下,12分频单片机的延时。
    *******************************************************************************/
    
    void Lcd1602_Delay1ms(uint c)   //误差 0us
    {
        uchar a,b;
    	for (; c>0; c--)
    	{
    		 for (b=199;b>0;b--)
    		 {
    		  	for(a=1;a>0;a--);
    		 }      
    	}
        	
    }
    
    /*******************************************************************************
    * 函 数 名         : LcdWriteCom
    * 函数功能		   : 向LCD写入一个字节的命令
    * 输    入         : com
    * 输    出         : 无
    *******************************************************************************/
    #ifndef 	LCD1602_4PINS	 //当没有定义这个LCD1602_4PINS时
    void LcdWriteCom(uchar com)	  //写入命令
    {
    	LCD1602_E = 0;     //使能
    	LCD1602_RS = 0;	   //选择发送命令
    	LCD1602_RW = 0;	   //选择写入
    	
    	LCD1602_DATAPINS = com;     //放入命令
    	Lcd1602_Delay1ms(1);		//等待数据稳定
    
    	LCD1602_E = 1;	          //写入时序
    	Lcd1602_Delay1ms(5);	  //保持时间
    	LCD1602_E = 0;
    }
    #else 
    void LcdWriteCom(uchar com)	  //写入命令
    {
    	LCD1602_E = 0;	 //使能清零
    	LCD1602_RS = 0;	 //选择写入命令
    	LCD1602_RW = 0;	 //选择写入
    
    	LCD1602_DATAPINS = com;	//由于4位的接线是接到P0口的高四位,所以传送高四位不用改
    	Lcd1602_Delay1ms(1);
    
    	LCD1602_E = 1;	 //写入时序
    	Lcd1602_Delay1ms(5);
    	LCD1602_E = 0;
    
    	LCD1602_DATAPINS = com << 4; //发送低四位
    	Lcd1602_Delay1ms(1);
    
    	LCD1602_E = 1;	 //写入时序
    	Lcd1602_Delay1ms(5);
    	LCD1602_E = 0;
    }
    #endif
    /*******************************************************************************
    * 函 数 名         : LcdWriteData
    * 函数功能		   : 向LCD写入一个字节的数据
    * 输    入         : dat
    * 输    出         : 无
    *******************************************************************************/		   
    #ifndef 	LCD1602_4PINS		   
    void LcdWriteData(uchar dat)			//写入数据
    {
    	LCD1602_E = 0;	//使能清零
    	LCD1602_RS = 1;	//选择输入数据
    	LCD1602_RW = 0;	//选择写入
    
    	LCD1602_DATAPINS = dat; //写入数据
    	Lcd1602_Delay1ms(1);
    
    	LCD1602_E = 1;   //写入时序
    	Lcd1602_Delay1ms(5);   //保持时间
    	LCD1602_E = 0;
    }
    #else
    void LcdWriteData(uchar dat)			//写入数据
    {
    	LCD1602_E = 0;	  //使能清零
    	LCD1602_RS = 1;	  //选择写入数据
    	LCD1602_RW = 0;	  //选择写入
    
    	LCD1602_DATAPINS = dat;	//由于4位的接线是接到P0口的高四位,所以传送高四位不用改
    	Lcd1602_Delay1ms(1);
    
    	LCD1602_E = 1;	  //写入时序
    	Lcd1602_Delay1ms(5);
    	LCD1602_E = 0;
    
    	LCD1602_DATAPINS = dat << 4; //写入低四位
    	Lcd1602_Delay1ms(1);
    
    	LCD1602_E = 1;	  //写入时序
    	Lcd1602_Delay1ms(5);
    	LCD1602_E = 0;
    }
    #endif
    /*******************************************************************************
    * 函 数 名       : LcdInit()
    * 函数功能		 : 初始化LCD屏
    * 输    入       : 无
    * 输    出       : 无
    *******************************************************************************/		   
    #ifndef		LCD1602_4PINS
    void LcdInit()						  //LCD初始化子程序
    {
     	LcdWriteCom(0x38);  //开显示
    	LcdWriteCom(0x0c);  //开显示不显示光标
    	LcdWriteCom(0x06);  //写一个指针加1
    	LcdWriteCom(0x01);  //清屏
    	LcdWriteCom(0x80);  //设置数据指针起点
    }
    #else
    void LcdInit()						  //LCD初始化子程序
    {
    	LcdWriteCom(0x32);	 //将8位总线转为4位总线
    	LcdWriteCom(0x28);	 //在四位线下的初始化
    	LcdWriteCom(0x0c);  //开显示不显示光标
    	LcdWriteCom(0x06);  //写一个指针加1
    	LcdWriteCom(0x01);  //清屏
    	LcdWriteCom(0x80);  //设置数据指针起点
    }
    #endif
    
    

    lcd1602A.h 文件▼

    22#ifndef __LCD1602A_H_
    #define __LCD1602A_H_
    #include<reg52.h>
    
    //---重定义关键词---//
    #ifndef uchar
    #define uchar unsigned char
    #endif
    
    #ifndef uint 
    #define uint unsigned int
    #endif
    //io口定义
    #define LCD1602_DATAPINS P0
    sbit LCD1602_E=P2^7;
    sbit LCD1602_RW=P2^5;
    sbit LCD1602_RS=P2^6;
    
    //函数声明
    void Lcd1602_Delay1ms(uint c);   //在51单片机12MHZ时钟下的延时函数 误差 0us
    void LcdWriteCom(uchar com);     //LCD1602写入8位命令子函数
    void LcdWriteData(uchar dat);	//LCD1602写入8位数据子函数
    void LcdInit();		//LCD1602初始化子程序				  
    #endif
    
    

    把上面两个文件放到项目更目录里面。在要显示的文件里面包含 lcd1602A.h 这个头文件,然后调用 lcd1602A.h 里面的函数就可以使用了。