找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2742|回复: 0
收起左侧

51单片机的SHT11温湿度LCD显示(程序+仿真)

[复制链接]
ID:545457 发表于 2020-6-2 17:29 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

仿真图

仿真图


单片机源程序如下:
  1. //*******************************
  2. //*********主函数*****************
  3. void main(void)
  4. {
  5.        uchar i,j;
  6.         unsigned int temp,humi;  
  7.      value humi_val,temp_val;        //定义两个共同体,一个用于湿度,一个用于温度  
  8.      unsigned char error;            //用于检验是否出现错误  
  9.      unsigned char checksum;         //CRC              
  10.       
  11.      s_connectionreset();               //启动连接复位  
  12.    LCD_init();
  13.    
  14.      while(1)  
  15.      {  

  16.      
  17.          error=0;                       //初始化error=0,即没有错误  
  18.          error+=s_measure((unsigned char*)&temp_val.i,&checksum,TEMP); //温度测量  
  19.          error+=s_measure((unsigned char*)&humi_val.i,&checksum,HUMI); //湿度测量  
  20.          if(error!=0) s_connectionreset();                 ////如果发生错误,系统复位  
  21.          else
  22.          {   
  23.              humi_val.f=(float)humi_val.i;                   //转换为浮点数  
  24.              temp_val.f=(float)temp_val.i;                   //转换为浮点数  
  25.              calc_sth10(&humi_val.f,&temp_val.f);            //修正相对湿度及温度  

  26.              temp=temp_val.f*10;  
  27.                //temp是温度值,temp,小数点位,个位求出来,一个一个的显示
  28.       
  29.      humi=humi_val.f*10-35;
  30.                //humi是湿度值,小数点位,个位求出来,一个一个的显示
  31.       
  32.         //添加程序
  33.          //第一行显示湿度
  34.    LCD_disp_char(0x00,1,1);
  35.    for(i=0;i<1;i++)
  36.    {
  37.       DisplayListChar(0x01,0,&table1[i],6);  
  38.     delay_n40us(10);
  39.    }
  40.    for(i=0;i<1;i++)//十位
  41.    {
  42.      i=humi/100;
  43.       DisplayListChar(0x07,0,&digit1[i],1);
  44.         delay_n40us(10);   
  45.    }
  46.    for(i=0;i<1;i++)//个位
  47.    {
  48.      i=humi%100/10;
  49.       DisplayListChar(0x08,0,&digit1[i],1);
  50.         delay_n40us(10);   
  51.    }
  52.    for(i=0;i<1;i++)//小数点
  53.    {
  54.       DisplayListChar(0x09,0,&dian[i],1);
  55.         delay_n40us(10);   
  56.    }
  57.    for(i=0;i<1;i++)
  58.    {
  59.     i=humi%10;
  60.       DisplayListChar(0x0A,0,&digit1[i],1);
  61.         delay_n40us(10);   
  62.    }
  63.         //在LCD第2行显示温度
  64.     LCD_disp_char(0x40,0,1);
  65.    for(i=0;i<1;i++)//wendu:
  66.    {
  67.       DisplayListChar(0x41,1,&table[i],6);
  68.         delay_n40us(10);   
  69.    }
  70.    for(i=0;i<1;i++)//十位
  71.    {
  72.      i=temp/100;
  73.       DisplayListChar(0x47,1,&digit[i],1);
  74.         delay_n40us(10);   
  75.    }
  76.    for(i=0;i<1;i++)//个位
  77.    {
  78.      i=temp%100/10;
  79.       DisplayListChar(0x48,1,&digit[i],1);
  80.         delay_n40us(10);   
  81.    }
  82.    for(i=0;i<1;i++)//小数点
  83.    {
  84.       DisplayListChar(0x49,1,&dian[i],1);
  85.         delay_n40us(10);   
  86.    }
  87.    for(i=0;i<1;i++)
  88.    {
  89.      i=temp%10;
  90.       DisplayListChar(0x4A,1,&digit[i],1);
  91.         delay_n40us(10);   
  92.    }
  93.       
  94.    }   
  95. }   
  96. }
复制代码

全部资料51hei下载地址:
LCD1602显示温湿度-程序.zip (45.87 KB, 下载次数: 56)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表