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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2004|回復: 4
打印 上一主題 下一主題
收起左側

沒連18B20顯示0.0怎么改30.0或以上/能幫改下嗎(從新發上傳全部文件

[復制鏈接]
跳轉到指定樓層
樓主
ID:108622 發表于 2018-7-21 10:24 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 mnbvcxzlkjhgfds 于 2018-7-21 16:25 編輯

論壇里下載無數個>都試過>只有這個設置完控制溫度(拔掉5v電源時)還有記憶功能>不錯
因為0.0時電源開關會打開>有時18B20會接觸不良引起意外
我只會下載和燒錄>不懂編寫>只求好心人改>有hex文件當然最好



#include<reg52.h>                                 //頭文件
#include<intrins.h>
#include "DS18b20.H"
#include "eeprom52.h"
#include "Nixie tube.h"
#define uchar unsigned char                 //宏定義
#define uint unsigned int
uchar code ss[]=
{
  0xc0,0xf9,0xa4,0xb0,0x99,
  0x92,0x82,0xf8,0x80,0x90
};                           //數碼管
uchar code ss1[]=
{
  0x40,0x79,0x24,0x30,0x19,
  0x12,0x02,0x78,0x00,0x10,
  0xc7,0x89,0xbf               //0xc7=L   0x89=H   0xbf=- 負號
};                            //0-9為帶小數點的
uchar ms;                           //定時器0計數
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^3;
sbit led_0=P1^0;                //上限溫度報警燈
sbit led_2=P1^2;                //下限溫度報警燈
char H,L;                       //用于設置上下限度  上下限度與要比較的數據類型最好相同
uchar flag;
sbit beep=P1^6;                 //蜂鳴器
bit s0,beep_1=1;                                         //s0用于閃爍標志  beep_1用于在中斷里改變蜂鳴器工作狀態
int temp,i;                      //存儲讀出來的溫度,與H,L上下限度數據類型相同
void delay(uint T)
{
  while(T--);
}

void display()
{           
  if(flag==0&&temp>=0)          //溫度為正數時執行
        {
     if(temp>999) Nixietube(ss[temp/1000%10],ss[temp/100%10],ss1[temp/10%10],ss[temp%10]);
         if(temp>99)  Nixietube(0xff,ss[temp/100%10],ss1[temp/10%10],ss[temp%10]);
         if(temp<99&&temp/100%10<=0)  Nixietube(0xff,0xff,ss1[temp/10%10],ss[temp%10]);

    }
  if(flag==0&&temp<0)          //溫度為負數時
        {
     if(temp*-1/100%10<=0) Nixietube(0xff,ss1[12],ss1[temp*-1/10%10],ss[temp*-1%10]);
         if(temp*-1/100%10>0)  Nixietube(ss1[12],ss[temp*-1/100%10],ss1[temp*-1/10%10],ss[temp*-1%10]);
        }
  if(flag==1)                 //flag==0顯示溫度  =1 顯示上限   =2 顯示下限
        {
     if(H>99)          Nixietube(ss1[11],ss[H/100],ss[H%100/10],ss[H%10]);   //溫度范圍是125~-55 ,當上限值大于99時執行  
         if(H>=10&&H<=99)  Nixietube(ss1[11],0xff,ss[H/10],ss[H%10]);            //當上限值大于12小于99時執行  不顯示最高位
         if(H<10&&H>=0)    Nixietube(ss1[11],0xff,0xff,ss[H%10]);                //不顯示百位 十位
         if(H<0&&H>=-9)    Nixietube(ss1[11],0xff,ss1[12],ss[H*-1%10]);          //設置的為負數且介于0~-9之間時執行  不顯示十位
     if(H<0&&H<-9)     Nixietube(ss1[11],ss1[12],ss[H*-1%100/10],ss[H*-1%10]);         //最低可以到55                  
    }               
if(flag==2)            //同上                                                
        {
     if(L>99)          Nixietube(ss1[10],ss[L/100],ss[L%100/10],ss[L%10]);
         if(L>=10&&L<=99)  Nixietube(ss1[10],0xff,ss[L/10],ss[L%10]);
         if(L<10&&L>=0)    Nixietube(ss1[10],0xff,0xff,ss[L%10]);
         if(L<0&&L>=-9)  Nixietube(ss1[10],0xff,ss1[12],ss[L*-1%10]);
     if(L<0&&L<-9)  Nixietube(ss1[10],ss1[12],ss[L*-1%100/10],ss[L*-1%10]);                          
    }
                                       
  }
void key()                              //按鍵處理
{
        
if(!key1)                               //設置上限
{
   delay(500);
   if(!key1)
        {
      while(!key1);
          if(flag==1)
                  {
         if(H<125)H++;
                 SectorErase(0x2000);          //每修改一次上下限數據就寫進EEROM
                 byte_write(0x2000,H);
        }
          else if        (flag==2)
                {
          if(L<H-1) L++;                //原則是下限不超過上限
                  SectorErase(0x2200);
                  byte_write(0x2200,L);
        }        
    }        
}

if(!key2)                            //設置下限
{
    delay(500);
        if(!key2)
         {
       while(!key2);
           if(flag==1)
                  {
                  if(H>L+1)  H--;             //原則上限不低于下限
                  SectorErase(0x2000);        //每修改一次上下限數據就寫進EEROM
                  byte_write(0x2000,H);
        }
           else if        (flag==2)
                {
                  if(L>-55)L--;
                  SectorErase(0x2200);
              byte_write(0x2200,L);
        }        
     }
}
if(!key3)                         //設置上限下限切換按鍵
        {
         delay(1000);
         if(!key3)
       {
                while(!key3);
        flag=(flag+1)%3;                        
       }
  }
}
void alarm()                          //報警
{
if(temp/10>=H||temp/10<=L)               //超過上下限蜂鳴器報警 ,正常的LED燈關閉
   {
    beep_1=0;
   }        
else
        {
          beep_1=1;
    }                             //正常情況下,蜂鳴器關閉  
if(temp/10>=H)                    //上限,當測得的值,大于等于設定值得時候,
        {
          led_0=0;     
        }
else
   {
    led_0=1;
   }
               
if(temp/10<=L)                        //下限 當實際值小于等于下限值時
   {
         led_2=0;     
   }
else
   {
     led_2=1;
   }        
}
void main()                        //主函數         
{  
    do
     {
          temp=Temper();
     }
    while(temp==850);                  //因為DS18B20上電之后會讀出來850,但不是溫度值,所以等待讀出溫度值   
        delay(1000);
        H=byte_read(0x2000);
        L=byte_read(0x2200);
        if((H>99)||(L>99)||(L>=H))     //讀EEROM里面的數據
      {
                H=35;
                L=16;                      //如果數據不對,賦予初始值
          }  
        TMOD=0x01;
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        EA=1;
        ET0=1;
    TR0=1;                         //設置定時器與中斷
         
while(1)   
        {  

          key();
          alarm();
                  
         
        }
}



void UART_1() interrupt 1
{
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;             //一次定時10MS   十進制65536-50000=15536   折合十六進制3cb0  高位3c低位b0   
        ms++;
        display();                                                    // 完全消影可以開啟這個,屏蔽主函數大循環里的顯示函數
if(ms>100)                            //數據一秒刷新一次
        {
          ms=0;
          temp=Temper();                   //讀溫度
        }         
if(ms%5==0)                  
        {
         if(beep_1==0)                      //蜂鳴器設置
          {
                beep=!beep;
          }
         else
      {
                beep=1;
          }
    }  
}





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

使用道具 舉報

沙發
ID:108622 發表于 2018-7-21 10:34 來自手機 | 只看該作者
好像圖片看不到從發

IMG20180721093956.jpg (44.09 KB, 下載次數: 65)

IMG20180721093956.jpg

IMG20180721093923.jpg (47.03 KB, 下載次數: 85)

IMG20180721093923.jpg

IMG20180721094015.jpg (41.11 KB, 下載次數: 68)

IMG20180721094015.jpg

IMG20180721094006.jpg (45.22 KB, 下載次數: 92)

IMG20180721094006.jpg
回復

使用道具 舉報

板凳
ID:108622 發表于 2018-7-21 10:39 來自手機 | 只看該作者
??????:……:……

IMG20180721093923.jpg (50.27 KB, 下載次數: 66)

IMG20180721093923.jpg

IMG20180721093956.jpg (49.07 KB, 下載次數: 73)

IMG20180721093956.jpg

IMG20180721094015.jpg (55.2 KB, 下載次數: 74)

IMG20180721094015.jpg

IMG20180721094006.jpg (55.34 KB, 下載次數: 72)

IMG20180721094006.jpg
回復

使用道具 舉報

地板
ID:96682 發表于 2018-7-21 13:09 | 只看該作者
要 hex 文件也得有完整源碼才行,這 H 符號顯示不全
回復

使用道具 舉報

5#
ID:108622 發表于 2018-7-21 15:28 | 只看該作者
本帖最后由 mnbvcxzlkjhgfds 于 2018-7-21 16:26 編輯
wc86110 發表于 2018-7-21 13:09
要 hex 文件也得有完整源碼才行,這 H 符號顯示不全

已打包上傳全部文件
回復

使用道具 舉報

6#
ID:96682 發表于 2018-7-23 04:49 | 只看該作者
文件沒問題,應該是你的電路或元器件有問題
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色www精品视频在线观看 | 一区二区不卡 | 午夜欧美一区二区三区在线播放 | 亚洲另类春色偷拍在线观看 | 狠狠干2020 | 婷婷综合| 国产精品久久久久久一区二区三区 | 国产一区二区在线播放 | 9久久| 一区视频在线免费观看 | 国产区在线免费观看 | 亚洲天堂中文字幕 | 成人在线播放网址 | 亚洲午夜视频 | 九九热这里 | 欧美日韩综合精品 | 99tv| 无码国模国产在线观看 | 国产精品久久久久久久久久久久久久 | 九九导航| av在线播放网站 | 精品久久久久久久久久久下田 | 日韩毛片在线观看 | 91一区二区三区在线观看 | 日韩成人精品一区二区三区 | 国产yw851.c免费观看网站 | 日本精品在线观看 | 久久网国产 | 日韩和的一区二区 | 亚洲精品久久久久久国产精华液 | 欧美日韩高清在线观看 | 亚洲精品乱码久久久久久黑人 | 狠狠躁躁夜夜躁波多野结依 | 谁有毛片 | 中文字幕二区 | 午夜免费精品视频 | 五月婷婷在线播放 | 老头搡老女人毛片视频在线看 | 欧美日韩精品一区 | 91精品国产综合久久国产大片 | 亚洲91|