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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2214|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

各位大聲快來幫我看一下,我這個(gè)程序是哪里出現(xiàn)問題了?謝謝啦

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:70508 發(fā)表于 2015-10-17 10:20 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
問題:就在程序最后那個(gè)if語句,如果  if(25<TN)  led0=0;
                                                                  else
                                                                      led0=1;單片就能正常顯示,
但是我想分(22<TN<25),(25<=TN<28),(TN>28),這幾個(gè)段,就不能正常顯示了,確定用的if嵌套沒錯(cuò)?
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int;
unsigned char code digit[11]={"0123456789-"};
unsigned char code shuoming[]={"Now temperature:"};
unsigned char code error[]={"DS18B20 Error"};
unsigned char code error0[]={"please check"};
unsigned char code temp[]={"wendu:"};
unsigned char code danwei[]={"cent"};
unsigned char flag,tltemp;
unsigned char b=0,s=0,g=0;
sbit jdq=P3^7;
sbit fmq=P3^6;
sbit led=P1;
sbit led0=P1^0;
sbit led1=P1^1;
sbit led2=P1^2;
/*顯示模塊程序*/
sbit RS=P2^0; //數(shù)據(jù)(RS=1),命令(RS=0)選擇端
sbit RW=P2^1; //讀(RW=1)寫(RW=0)選擇端
sbit E=P2^2;
sbit BF=P0^7;

void delay500us()
{
        unsigned int i;
        for(i=1;i<57;i++);
}
void delayms()//延時(shí)1ms
{
   unsigned char i,j;
   for(i=0;i<4;i++)
     for(j=0;j<33;j++);
}

void delay(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
    delayms();
}
bit panduan(void)  //判斷顯示器是否在忙碌中狀態(tài)
{
   bit result;
   RS=0;
   RW=1;
   E=1;
   _nop_();        //空操作
   _nop_();
   _nop_();
   _nop_();
   result=BF;
   E=0;
   return result;
}
void write0(unsigned char dictate)        //寫指令
{
while(panduan()==1);
RS=0;
RW=0;
E=0;
_nop_();
_nop_();
P0=dictate;
_nop_();
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
_nop_();
E=0;
}       
void address(unsigned char x)//顯示位置確定,方法:0x80+地址碼x
{
   write0(x|0x80);
}
void writedate(unsigned char y)//寫數(shù)據(jù)
{        while(panduan()==1);
     RS=1;
         RW=0;
         E=0;
         P0=y;
         _nop_();
         _nop_();
         _nop_();
         _nop_();
         E=1;
         _nop_();
         _nop_();
         _nop_();
         _nop_();
         E=0;
         }
void chushihua(void)
{
   delay(15);
   write0(0x38);//顯示模式設(shè)置,16*2,7*5點(diǎn)陣,8位數(shù)據(jù)接口
   delay(5);
   write0(0x38);
   delay(5);
   write0(0x38);
   delay(5);
      write0(0x0c);//顯示開,有光標(biāo),光標(biāo)閃爍
   delay(5);
      write0(0x06);        //光標(biāo)右移,字符不移
        delay(5);
           write0(0x01);//清屏
           delay(5);
}
/*void beer()

{        unsigned char t=2000;
        while(t--)
         {
                  fmq=0;
    delay500us();
                fmq=1;
        delay500us();
        }
}  */

/*DS18B20模塊*/
sbit D=P3^3;
unsigned char T;
bit chushihua0(void)//初始化DS18b20
{
  bit flag;
  D=1;
  for(T=0;T<2;T++);
  D=0;
  for(T=0;T<200;T++);
  D=1;
  for(T=0;T<10;T++);
  flag=D;
  for(T=0;T<200;T++);
  return(flag);
}
unsigned char readchar(void)//讀數(shù)據(jù)
{
unsigned char i=0;
unsigned char dat;//儲(chǔ)存讀出的數(shù)據(jù)
  for(i=0;i<8;i++)
   {
         D=1;
         _nop_();
         D=0;
         _nop_();
         D=1;
         for(T=0;T<2;T++);//延時(shí)6秒
         dat>>=1;
         if(D==1)
         dat|=0x80;
         else
         dat|=0x00;
         for(T=0;T<8;T++);

   }
   return(dat);
   }
   writechar(unsigned char dat)//寫數(shù)據(jù);
   {
     unsigned char i=0;
         for(i=0;i<8;i++)
         {
           D=1;
           _nop_();
           D=0;
           D=dat&0x01;
                for(T=0;T<10;T++);
                D=1;
                for(T=0;T<1;T++);
                dat>>=1;
                         }
                         for(T=0;T<4;T++);
                         

         return 0;
}
void readtemp(void)//讀溫度;
{
   chushihua0();
   writechar(0xCC);
   writechar(0x44);
   delay(200);
   chushihua0();
   writechar(0xCC);
   writechar(0xBE);
}
/*以下是與溫度的顯示有關(guān)的程序*/
void display_xerror(void) //沒有檢測(cè)到溫度時(shí)的顯示
{
   unsigned char i;
      address(0x00);
         
          i=0;
                  while(error[i]!='\0')//"\0"數(shù)組結(jié)束標(biāo)志
                   {  writedate(error[i]);
                          i++;//顯示完每一個(gè)字母(DS18B20 Error)
                          delay(100);
                   }
                   address(0x40);
                   i=0;
                   while(error0[i]!='\0')//"\0"數(shù)組結(jié)束標(biāo)志
                   {  
                      writedate(error0[i]);
                          i++;//顯示完每一個(gè)字母(please check)
                          delay(100);
                   }
                   while(1);
}
void display_symbol(void) //顯示“wendu”
{
    unsigned char i;
        address(0x40);
        i=0;
        while(temp[i]!='\0')//只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫;
        {
          writedate(temp[i]);
          i++;
          delay(50);

        }
}
void display_explain(void)//顯示說明;
{
  unsigned char i;
  address(0x00);
  i=0;
  while(shuoming[i]!='\0')
  {
  writedate(shuoming[i]);
  i++;
  delay(100);
  }
}
void display_dot(void)//顯示小數(shù)點(diǎn)
{
  address(0x49);
  writedate('.');
  delay(50);
}
void display_cent(void)        //顯示單位;
{
   unsigned char i;
   address(0x4c);
   i=0;
   while(danwei[i]!='\0')
   {
     writedate(danwei[i]);
         i++;
         delay(50);

   }
}

void display_zheng(unsigned char x)//顯示整數(shù)部分
{

  b=x/100;
  s=(x%100)/10;
  g=x%10;
  address(0x46);


     if(flag==1)
  {
    writedate(digit[10]);
        }
        else
        {
        writedate(digit[b]);
        }
        writedate(digit[s]);
       
        writedate(digit[g]);
        delay(50);
         

}
void display_xiao(unsigned char x)//顯示小數(shù)部分
{
  address(0x4a);
  writedate(digit[x]);
  delay(50);
}
    unsigned char TL;//儲(chǔ)存暫存器的低位
        unsigned char TH;//儲(chǔ)存暫存器的高位
        unsigned char TN;//儲(chǔ)存暫存器的整數(shù)部分
    unsigned char TD;//儲(chǔ)存暫存器的小數(shù)部分

void main(void)
{
           //led=1;
    chushihua();
        delay(5);
        if(chushihua0()==1)
        display_xerror();
        display_explain();
        display_symbol();
        display_dot();
        display_cent();


        while(1)
        {
       flag=0;
           readtemp();
           TL=readchar();
           TH=readchar();
          
           if((TH&0xf8)!=0x00)
           {
            flag=1;
                TL=~TL;
                TH=~TH;
                tltemp=TL+1;
                TL=tltemp;
                if(tltemp>255)
                     TH++;
                TN=TH*16+TL/16;
                TD=(TL%16)*10/16;
                          
           }
           TN=TH*16+TL/16;
           TD=(TL%16)*10/16;
           display_zheng(TN);
           display_xiao(TD);
           delay(10);
           if(25<TN)
            led0=0;
                    else
                  led0=1;

                     
                 
        }
}




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一级欧美一级在线播放 | 欧美一级久久 | 韩国精品在线 | 国产欧美在线观看 | 欧美一区二区三区一在线观看 | 国产一区二区三区 | 国产成人福利 | 亚洲 欧美 另类 综合 偷拍 | 免费看a | 在线观看国产视频 | 天天干夜夜拍 | 午夜久久久久久久久久一区二区 | 国产精品久久久久aaaa | 91视频在线网站 | 91免费观看国产 | 欧美日韩一区在线观看 | 久久黄视频 | 91国语清晰打电话对白 | 免费一区二区 | 成人av在线播放 | 日韩欧美综合 | 精品国产91乱码一区二区三区 | 手机av网| 资源首页二三区 | 羞羞视频网站免费观看 | 久久久久久91香蕉国产 | 婷婷亚洲综合 | 久久一区二区三区四区五区 | 国产乱码精品一区二区三区忘忧草 | 亚洲国产视频一区二区 | 日韩中文字幕网 | 成人免费观看视频 | 日本免费黄色一级片 | 怡红院免费的全部视频 | 色资源在线 | 日韩精品在线观看一区二区三区 | 国产91丝袜在线播放 | 午夜看电影在线观看 | 日日射影院 | 亚洲激情av | 欧美日韩三级 |