找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機土壤溫濕度檢測什么地方錯了

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:280494 發(fā)表于 2018-1-28 20:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>    //包含單片機寄存器的頭文件
#define uchar unsigned char
#define uint unsigned int
sbit P10=P1^0;
sbit ADD=P1^1;
sbit SUB=P1^2;
sbit P13=P1^3;
uint ya,temp,num=0,aa,th=180,tl=90;
//uchar aa,th=200,tl=100;
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,
                     0x92,0x82,0xf8,0x80,0x90};
sbit CS=P2^3;       //將CS位定義為P3.4引腳
sbit CLK=P2^4;      //將CLK位定義為P1.0引腳
sbit DIO=P2^5;       //將DIO位定義為P1.1引腳
void delay(uint z);
void display(uint a);
void displayth(uint b);
void displaytl(uint c);
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void key()
{
    if(P10==0)
    {
        delay(5);
        if(P10==0)
        {
            num++;
          if(num==3)
{
num=0;
        }
        }
        while(!P10)
display(temp);
        delay(5);
        while(!P10)
display(temp);
    }
    if(num!=0)
    {
        if(ADD==0)
        {
            delay(5);
            if(ADD==0)
            {
                if(num==1)
                {
                    th++;
                    if(th==250)
                        th=tl+10;
                }
                if(num==2)
                {
            if(tl<(th-10))
                        tl++;
Else
tl=90;
                }
            }
            while(!ADD)
display(th);
        }
        if(SUB==0)
        {
            delay(5);
            if(SUB==0)
            {
                if(num==1)
                {
                    th--;
                  if(th==(tl+10))
                        th=250;
                    
                }
                if(num==2)
                {
                    tl--;
                    if(tl==90)
                        tl=th-10;
                }
            }
            while(!SUB)
display(tl);
        }
    }
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(uint a)
{
       
P2=0xfe;
P0=table[a/100];
delay(5);
P2=0xfd;
P0=table[a%100/10];
delay(5);
P2=0xfb;
P0=table[a%100%10];
delay(5);
}
void displayth(uint b)
{
       
P2=0xfe;
P0=table[b/100];
delay(5);
P2=0xfd;
P0=table[b%100/10];
delay(5);
P2=0xfb;
P0=table[b%100%10];
delay(5);
}
void displaytl(uint c)
{
       
P2=0xfe;
P0=table[c/100];
delay(5);
P2=0xfd;
P0=table[c%100/10];
delay(5);
P2=0xfb;
P0=table[c%100%10];
delay(5);
}
unsigned char  A_D()
{
  unsigned char i,dat;
   CS=1;   //一個轉(zhuǎn)換周期開始
   CLK=0;  //為第一個脈沖作準(zhǔn)備
   CS=0;  //CS置0,片選有效
   DIO=1;    //DIO置1,規(guī)定的起始信號  
   CLK=1;   //第一個脈沖
   CLK=0;   //第一個脈沖的下降沿,此前DIO必須是高電平
   DIO=1;   //DIO置1, 通道選擇信號  
   CLK=1;   //第二個脈沖,第2、3個脈沖下沉之前,DI必須跟別輸入兩位數(shù)據(jù)用于選擇通道,這里選通道CH0
   CLK=0;   //第二個脈沖下降沿
   DIO=0;   //DI置0,選擇通道0
   CLK=1;    //第三個脈沖
   CLK=0;    //第三個脈沖下降沿
  DIO=1;    //第三個脈沖下沉之后,輸入端DIO失去作用,應(yīng)置1
   CLK=1;    //第四個脈沖
   for(i=0;i<8;i++)  //高位在前
    {
      CLK=1;         //第四個脈沖
      CLK=0;
      dat<<=1;       //將下面儲存的低位數(shù)據(jù)向右移
dat|=(unsigned char)DIO;  //將輸出數(shù)據(jù)DIO通過或運算儲存在dat最低位
    }                                  
CS=1;          //片選無效
return dat;      //將讀書的數(shù)據(jù)返回     
  }       
/*****************************************************
函數(shù)功能:主函數(shù)
***************************************************/
main(void)
{
init();
while(1)
{       
key();
if((temp<tl)||(temp>th))
P13=0;
else
P13=1;       
if(num==0)
        {
             display(temp);
        }
        if(num==1)
        {
            displayth(th);
        }
        if(num==2)
        {
            displaytl(tl);
        }               
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==20)
{
ya=A_D();
temp=(ya*100/51);//((ya*5)*100/255);
aa=0;
}       
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:222948 發(fā)表于 2018-1-29 00:51 | 只看該作者
Else tl=90;                 }             }             while(!ADD) display(th);把Else改成else
回復(fù)

使用道具 舉報

板凳
ID:280547 發(fā)表于 2018-1-29 05:37 | 只看該作者
Else tl=90;                 }             }             while(!ADD) display(th);把Else改成else
回復(fù)

使用道具 舉報

地板
ID:639069 發(fā)表于 2020-12-27 16:15 | 只看該作者
有設(shè)計圖嗎
回復(fù)

使用道具 舉報

5#
ID:420836 發(fā)表于 2020-12-28 09:08 | 只看該作者
您的代碼有什么錯誤,例如編譯器錯誤?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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