找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3043|回復(fù): 0
收起左側(cè)

51單片機的SHT11溫濕度LCD顯示(程序+仿真)

[復(fù)制鏈接]
ID:545457 發(fā)表于 2020-6-2 17:29 | 顯示全部樓層 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

仿真圖

仿真圖


單片機源程序如下:
  1. //*******************************
  2. //*********主函數(shù)*****************
  3. void main(void)
  4. {
  5.        uchar i,j;
  6.         unsigned int temp,humi;  
  7.      value humi_val,temp_val;        //定義兩個共同體,一個用于濕度,一個用于溫度  
  8.      unsigned char error;            //用于檢驗是否出現(xiàn)錯誤  
  9.      unsigned char checksum;         //CRC              
  10.       
  11.      s_connectionreset();               //啟動連接復(fù)位  
  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();                 ////如果發(fā)生錯誤,系統(tǒng)復(fù)位  
  21.          else
  22.          {   
  23.              humi_val.f=(float)humi_val.i;                   //轉(zhuǎn)換為浮點數(shù)  
  24.              temp_val.f=(float)temp_val.i;                   //轉(zhuǎn)換為浮點數(shù)  
  25.              calc_sth10(&humi_val.f,&temp_val.f);            //修正相對濕度及溫度  

  26.              temp=temp_val.f*10;  
  27.                //temp是溫度值,temp,小數(shù)點位,個位求出來,一個一個的顯示
  28.       
  29.      humi=humi_val.f*10-35;
  30.                //humi是濕度值,小數(shù)點位,個位求出來,一個一個的顯示
  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++)//小數(shù)點
  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++)//小數(shù)點
  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. }
復(fù)制代碼

全部資料51hei下載地址:
LCD1602顯示溫濕度-程序.zip (45.87 KB, 下載次數(shù): 56)
LCD1602顯示溫濕度.zip (29.87 KB, 下載次數(shù): 34)
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表