久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

DHT11在12864顯示,單獨一個文件可以正常顯示,但是移植到我的工程里12864上面就空了

[復(fù)制鏈接]
ID:997450 發(fā)表于 2022-1-24 20:06 | 顯示全部樓層 |閱讀模式
DHT11在12864顯示,單獨一個文件可以正常顯示,但是移植到我的工程里12864上面就什么都沒了。在單獨文件里面12864顯示函數(shù)就是從工程里拿的,而且我的串口通信代碼莫名其妙就不起作用了。下面是我的單獨文件,工程在下面
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit Data=P1^1;   //定義數(shù)據(jù)線
uchar rec_dat[15];   //用于顯示的接收數(shù)據(jù)數(shù)組

sbit PSB=P2^4;
sbit SCLK=P2^5;
sbit SID=P2^6;

void Int_232()        //232初始化
{
  TMOD=0x20;
  SCON=0x50;
  TH1=0xFD;
  TL1=0xFD;
  TR1=1;
  TI=0;
}

void TX(uchar TX_char)//串口發(fā)送數(shù)據(jù)
{
  SBUF=TX_char;
  while(!TI);
  TI=0;
}

void TXT()//串口發(fā)送給數(shù)據(jù)
{
   uchar i;
   for(i=0;i<12;i++)
           TX(rec_dat[ i]);        
}


void delay(uint n)
{  uint x,y;
   for(x=n;x>0;x--)
       for(y=110;y>0;y--);
}



void Delayms(uint n)                //延時時間為 1ms * x 晶振是11.0592M
{
        unsigned int i,j;
        for(i=n;i>0;i--)
                for(j=110;j>0;j--);
        
}

//將8位二進制數(shù)逐位寫入
void LCD_sendbyte(uchar dat)
{
   unsigned char i;
   for(i=0;i<8;i++)
         {
                SCLK=0;
                if(dat&0x80)
                SID=1;
                else SID=0;
                SCLK=1;
                dat=dat<<1;         //左移一位         
         }
}



//寫入命令
void LCD_write_com(uchar com)
{        
           LCD_sendbyte(0xf8);          //送入5個連續(xù)的“1“,啟動一個周期,11111,RW(0),RS(0),0
           LCD_sendbyte(0xf0&com);      //取高四位,數(shù)據(jù)分兩次傳送,每個字節(jié)的內(nèi)容被送入兩個字節(jié),高四位放在第一個字節(jié)的高四位                                 
          LCD_sendbyte(0xf0&(com<<4));  //低四位放在第二個字節(jié)的高四位           
          Delayms(1);                   //串行不支持讀操作,不可檢測忙操作,這里用延時替代
}



//寫入數(shù)據(jù)
void LCD_write_dat(uchar dat)               
{      
           LCD_sendbyte(0xfa);        
           LCD_sendbyte(0xf0&dat);      
           LCD_sendbyte(0xf0&(dat<<4));            
           Delayms(1);  
}



//LCD初始化
void LCD_init()
{        
         LCD_write_com(0x30);    //選擇基本指令集            
        LCD_write_com(0x0c);    //開顯示,無游標,不反白   
         LCD_write_com(0x01);    //清除顯示屏幕,把DDRAM位址計數(shù)器調(diào)整為00H  
         Delayms(1);            //清屏操作時間較長1.6ms 因此加此延時
         LCD_write_com(0x02);    //清DDRAM位址歸位,此處貌似與清屏重復(fù)  
        LCD_write_com(0x06);    //設(shè)定光標右移,整體顯示不移動  
}


//LCD屏幕地址定位
void LCD_Setaddress(uchar x,uchar y) //地址從第1行第1列開始不從0開始(y)
{            
          unsigned char addr;
          switch(x)
          {
           case 1: addr=0x80+y-1;
                   break;
            case 2: addr=0x90+y-1;
                   break;
           case 3: addr=0x88+y-1;
                   break;
           case 4: addr=0x98+y-1;
                   break;
           default : break;
          }
           LCD_write_com(addr);   //字符顯示開始地址
}




//LCD顯示字符數(shù)組(文字)
void LCD_Putstring( uchar x, uchar y, uchar *pData )
{
         LCD_Setaddress(x,y);
         while(*pData)
         {
           LCD_write_dat( *pData++ );
         }
}




void DHT11_delay_us(uchar n)
{
    while(--n);
}

void DHT11_delay_ms(uint z)
{
   uint i,j;
   for(i=z;i>0;i--)
      for(j=110;j>0;j--);
}

void DHT11_start()
{
   Data=1;
   DHT11_delay_us(2);
   Data=0;
   DHT11_delay_ms(30);   //延時18ms以上
   Data=1;
   DHT11_delay_us(30);
}

uchar DHT11_rec_byte()      //接收一個字節(jié)
{
   uchar i,dat=0;
  for(i=0;i<8;i++)    //從高到低依次接收8位數(shù)據(jù)
   {         
      while(!Data);   ////等待50us低電平過去
      DHT11_delay_us(8);     //延時60us,如果還為高則數(shù)據(jù)為1,否則為0
      dat<<=1;           //移位使正確接收8位數(shù)據(jù),數(shù)據(jù)為0時直接移位
      if(Data==1)    //數(shù)據(jù)為1時,使dat加1來接收數(shù)據(jù)1
         dat+=1;
      while(Data);  //等待數(shù)據(jù)線拉低   
    }  
    return dat;
}

void DHT11_receive()      //接收40位的數(shù)據(jù)
{
    uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
    DHT11_start();
    if(Data==0)
    {
        while(Data==0);   //等待拉高     
        DHT11_delay_us(40);  //拉高后延時80us
        R_H=DHT11_rec_byte();    //接收濕度高八位  
        R_L=DHT11_rec_byte();    //接收濕度低八位  
        T_H=DHT11_rec_byte();    //接收溫度高八位  
        T_L=DHT11_rec_byte();    //接收溫度低八位
        revise=DHT11_rec_byte(); //接收校正位

        DHT11_delay_us(25);    //結(jié)束

        if((R_H+R_L+T_H+T_L)==revise)      //校正
        {
            RH=R_H;
            RL=R_L;
            TH=T_H;
            TL=T_L;
        }
        /*數(shù)據(jù)處理,方便顯示*/
        rec_dat[0]=0x30+(RH/10);
        rec_dat[1]=0x30+(RH%10);
            rec_dat[2]=0x2e;//"."
          rec_dat[3]=0x30+(RL/10);
          rec_dat[4]=0x30+(RL%10);
        rec_dat[5]=0x52;//"R"
        rec_dat[6]=0x48;//"H"
        rec_dat[7]=0x20;
        rec_dat[8]=0x30+(TH/10);
        rec_dat[9]=0x30+(TH%10);
           rec_dat[10]=0x2e;
           rec_dat[11]=0x30+(TL/10);
           rec_dat[12]=0x30+(TL%10);
        rec_dat[13]=0x43;//"C"
    }
}



void main()
{
   uchar i;   
   LCD_init();
   Int_232()        //232初始化
   while(1)
   {                           
       DHT11_delay_ms(100);    //DHT11上電后要等待1S以越過不穩(wěn)定狀態(tài)在此期間不能發(fā)送任何指令
       DHT11_receive();
          LCD_write_com(0x88);//12864顯示定位
       for(i=0;i<14;i++)
           LCD_write_dat(rec_dat[ i]);         //顯示數(shù)據(jù)         
        LCD_write_com(0x80+0x40);
        LCD_write_dat(0x2d);
     LCD_write_dat(0x42);
     LCD_write_dat(0x3a);
     TXT();//串口發(fā)送給數(shù)據(jù)
  }
}

text (4).zip

72.94 KB, 下載次數(shù): 9

回復(fù)

使用道具 舉報

ID:1003529 發(fā)表于 2022-1-26 15:02 | 顯示全部樓層
關(guān)閉中斷試試,串口中斷程序檢查一下
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人a| 一级片片| 欧美成人第一页 | 99影视 | 中文字幕日韩三级 | 国产电影一区二区三区爱妃记 | 亚洲视频在线看 | 求个av网址 | 日韩成人免费av | 欧美aaaaa | 欧美综合一区二区三区 | 天堂成人国产精品一区 | 久久久久久久久久久久亚洲 | 国产在线精品一区二区三区 | av一级久久 | 91免费在线视频 | 99精品一区二区三区 | 亚洲国产成人av好男人在线观看 | 免费一级欧美在线观看视频 | 2018天天干天天操 | 精品国产91乱码一区二区三区 | 999久久久| 欧美国产日韩一区二区三区 | 99久久精品国产一区二区三区 | 日韩不卡一区二区 | 日本成人一区二区 | www.久久| 午夜成人在线视频 | 免费a大片 | 久久青| 老司机午夜性大片 | 欧美操操操 | 91极品欧美视频 | 精品欧美一区二区三区久久久 | 日韩一区二区三区精品 | 成人欧美一区二区三区在线播放 | 天天操欧美 | 日韩三级电影在线看 | 国产精品久久久久久久久图文区 | a级黄色片在线观看 | 亚洲在线|