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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)ds18b20溫度檢測程序控制控制問題請教

[復(fù)制鏈接]
ID:428428 發(fā)表于 2019-6-8 21:08 | 顯示全部樓層 |閱讀模式
我寫了一個ds18b20的程序,溫度部分已經(jīng)寫好了,其中有一個檢測溫度大于設(shè)定值時led點亮小于則不亮,可是當(dāng)我寫好時,利用按鍵控制設(shè)定溫度
,大于時led點亮,小于時led卻不熄滅是怎么回事?求大神解答!!!

if(temp>b)
{
led1=1;
}
else
{
led1=0;



回復(fù)

使用道具 舉報

ID:93224 發(fā)表于 2019-6-9 17:29 | 顯示全部樓層
這個要結(jié)合你寫的按鍵程序和控制程序兩者一起,只看這個說明不了什么問題
回復(fù)

使用道具 舉報

ID:207421 發(fā)表于 2019-6-9 20:37 | 顯示全部樓層
你說你的溫度和其它部分都正常,
又舍不得發(fā)源碼,
那么你直接這樣測試下:
char i=100,j=99; //改這數(shù)字,看看LED狀況
if(i>j)
{
    led1=0;
}
else
{
    led1=1;
}
測試下
回復(fù)

使用道具 舉報

ID:428428 發(fā)表于 2019-6-10 10:25 | 顯示全部樓層
lwh999995 發(fā)表于 2019-6-9 20:37
你說你的溫度和其它部分都正常,
又舍不得發(fā)源碼,
那么你直接這樣測試下:

啊,沒有舍不得啊,只是沒想那么多
回復(fù)

使用道具 舉報

ID:428428 發(fā)表于 2019-6-10 10:30 | 顯示全部樓層
本帖最后由 74521 于 2019-6-10 12:51 編輯
lele5211314 發(fā)表于 2019-6-9 17:29
這個要結(jié)合你寫的按鍵程序和控制程序兩者一起,只看這個說明不了什么問題

sbit key1=P0^0;
sbit key2=P0^1;
sbit led1=P0^6;
sbit led2=P0^7;
u8 num[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
/*
        此函數(shù)功能是將所有I/O口配置為準(zhǔn)雙向I/O口
*/

int b=20;
int        temp;
int i;
int j;


unsigned char code CharCode1[]="  大學(xué)";
unsigned char code CharCode2[]="設(shè)定溫度:    ";
unsigned char code CharCode3[]="環(huán)境溫度:     度";
unsigned char code CharCode4[]="  制作 :";
char num1;
unsigned int aa=0,bb=0,cc=0,dd=0,ee=0;
void LcdDisplay(int);
void init12864xian();  //初始化LCD12864顯示實驗名稱
/*

        此函數(shù)功能是將所有I/O口配置為準(zhǔn)雙向I/O口

*/

void init_GPIO()
{
        P0M0=P0M1=0x00;
        P1M0=P1M1=0x00;
        P2M0=P2M1=0x00;
        P3M0=P3M1=0x00;
        P4M0=P4M1=0x00;
        P5M0=P5M1=0x00;
}
/*

     主函數(shù)

*/

u8 key()
{
        u8 num=0;
        P0=0xff;
        if(key1==0)
        {
                delay(10);
                if(key1==0)
                {
       b=b+1;
                        while(key1==0);
                }
        }
        if(key2==0)
        {
                delay(10);
                if(key2==0)
                {
                 b=b-1;
                        while(key2==0);
                }
        }
        
}

void main()
{
        u8 key_num=0;
        init_GPIO();
        LCD12864_Init();                         //初始化LCD12864
        init12864xian();                         //初始化LCD12864顯示實驗名稱
        while(1)
        {
        LcdDisplay(Ds18b20ReadTemp());           //實時讀取溫度
                key();
                if(key_num!=0)
                   P2=~num[key_num-1];
                      LCD12864_SetWindow(1, 5);
                            LCD12864_WriteData(b/10%10+0x30);
                            LCD12864_WriteData(b%10+0x30);   //顯示設(shè)定值
                char i=temp,j=b;
if(i>j)
{
led1=1;
}
else
{
led1=0;
}
        }
}
/*

     溫度額讀取及計算顯示函數(shù)

*/
void LcdDisplay(int temp)          //lcd顯示
{
           float tp;  
        if(temp< 0)                                //當(dāng)溫度值為負(fù)數(shù)
          {
                temp=temp-1;           //因為讀取的溫度是實際溫度的補(bǔ)碼,所以減1,再取反求出原碼
                temp=~temp;
                tp=temp;
                temp=tp*0.0625*100+0.5;        
                                     //留兩個小數(shù)點就*100,+0.5是四舍五入,因為C語言浮點數(shù)轉(zhuǎn)換為整型的時候把小數(shù)點
                                    //后面的數(shù)自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就
                                   //算由?.5,還是在小數(shù)點后面。
          }
         else
          {                        
               
                tp=temp;                           temp=tp*0.0625*100+0.5;        
                                       }
//        aa= temp / 10000;
        bb = temp % 10000 / 1000;
        cc = temp % 1000 / 100 ;
        dd = temp % 100 / 10;
        ee = temp % 10;
        LCD12864_SetWindow(2,5);
//        LCD12864_WriteData(aa+0x30);
        LCD12864_WriteData(bb+0x30);
        LCD12864_WriteData(cc+0x30);
        LCD12864_WriteData('.');
        LCD12864_WriteData(dd+0x30);
//        LCD12864_WriteData(ee+0x30);
}
/*

     初始化LCD12864顯示實驗名稱

*/
void init12864xian()
{
        unsigned char i;
        LCD12864_SetWindow(0, 0);
                while(CharCode1!='\0')
                {
                        LCD12864_WriteData(CharCode1);
                    i++;
                }
                i=0;
                LCD12864_SetWindow(1,0);
                while(CharCode2!='\0')
                {
                        LCD12864_WriteData(CharCode2);
                    i++;
               
                }
//                 LCD12864_SetWindow(1,7);
               
                i=0;
                                  LCD12864_SetWindow(2, 0);
                while(CharCode3!='\0')
                {
                        LCD12864_WriteData(CharCode3);
                    i++;
                }
               
               
                        i=0;
                  LCD12864_SetWindow(3, 0);
                while(CharCode4!='\0')
                {
                        LCD12864_WriteData(CharCode4);
                    i++;
                }
//             LCD12864_WriteData('度');
               
回復(fù)

使用道具 舉報

ID:155507 發(fā)表于 2019-6-10 18:54 | 顯示全部樓層
你的變量定義不清不楚的,

首先你先看下 int        temp;

再看你的 void LcdDisplay(int temp)  

這兩個  temp 變量 是不一樣的
回復(fù)

使用道具 舉報

ID:308437 發(fā)表于 2019-6-11 00:36 | 顯示全部樓層
這程序應(yīng)該是沒有問題的,應(yīng)該是你硬件有問題。線沒接好之類的。
回復(fù)

使用道具 舉報

ID:428428 發(fā)表于 2019-6-12 21:07 | 顯示全部樓層
yousunny 發(fā)表于 2019-6-11 00:36
這程序應(yīng)該是沒有問題的,應(yīng)該是你硬件有問題。線沒接好之類的。

好的,謝謝,我在檢查一下
回復(fù)

使用道具 舉報

ID:428428 發(fā)表于 2019-6-12 21:09 | 顯示全部樓層
angmall 發(fā)表于 2019-6-10 18:54
你的變量定義不清不楚的,

首先你先看下 int        temp;

新手正在學(xué)習(xí),那要怎么定義呢
回復(fù)

使用道具 舉報

10#
無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩和的一区二区 | 91久久精 | 久久久久国产一区二区三区四区 | 国产亚洲一区二区精品 | 国产精品日本一区二区在线播放 | 欧美日韩国产一区二区三区 | 欧美在线观看一区 | 麻豆亚洲 | 国产精品a久久久久 | 午夜精品一区二区三区在线视 | 国产1区2区3区 | 91麻豆产精品久久久久久 | 久久69精品久久久久久久电影好 | 在线播放国产一区二区三区 | 日日操操操 | 久久久久久久成人 | 国产精品国产精品国产专区不片 | 亚洲一区二区三区高清 | 成人精品鲁一区一区二区 | 欧美一区精品 | 尤物视频在线免费观看 | 99久久精品一区二区成人 | 亚洲大片 | 黑人精品 | 欧美一级在线观看 | 亚洲国产精品激情在线观看 | 精品久久久久久久久久久院品网 | 国产精品永久免费视频 | 91美女在线观看 | 一区二区视频在线 | 国产欧美日韩综合精品一 | 7799精品视频天天看 | 久草在线在线精品观看 | 久久成人一区 | 精品国产乱码久久久久久88av | 亚洲欧美国产精品久久 | 一区二区不卡高清 | 精品欧美一区二区三区精品久久 | 懂色av一区二区三区在线播放 | 日韩一级二级片 | 在线中文视频 |