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

標(biāo)題: 大佬看看這個(gè)程序 有哪些問題 為什么不顯示溫度啊 [打印本頁]

作者: 賊心    時(shí)間: 2019-4-21 18:49
標(biāo)題: 大佬看看這個(gè)程序 有哪些問題 為什么不顯示溫度啊
#include<reg51.h>
#include<intrins.h>
#include<absacc.h>
#define uchar unsigned char
#define uint  unsigned int
#define BUSY  0x80

void Delay(uint);
void init_LCD(void);
void LCD_Command(uchar,uchar);
void LCD_Data(uchar);
void ReadyLCD(void);
void Display_char(uchar,uchar,uchar);
void Display_str(uchar,uchar,uchar code *Data);
void Change(void);
void Display(void);
void init_18B20(void);
uchar Read_18B20(void);
void Write_18B20(uchar);
void Read_temp(void);
void Delay_us(uchar i);
void Key_scan(void);
void Key_set(void);
void Key_inc(void);
void Key_dec(void);
void Alarm(void);

sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1;
sbit LCD_EN=P2^2;
sbit DQ=P1^7;
sbit Normal=P2^4;
sbit Alarm_B=P2^5;
sbit Alarm_R=P2^6;
sbit Alarm_BEEP=P2^7;

uchar Set_flag=0;
uchar Temp_mea,Temp_set1,Temp_set2;
uchar Temp_C_1,Temp_C_2;
uchar Temp_D_1,Temp_D_2;
uchar Temp_true_1,Temp_true_2;

extern uchar code str0[]={"C   :    D  :   "};
extern uchar code str1[]={"Mode:    Deg:  C"};
extern uchar code str2[]={"    Hellow!!    "};
extern uchar code str3[]={"0123456789"};
extern uchar code mode[]={"NCD"};

/********主程序********/
void main(void)
{
        P1=0xff;
        P2|=0x70;
        P2&=0x7f;
        Temp_set1=40;          //設(shè)置溫度40
        Temp_set2=1;          //設(shè)置檔位1
        Delay(500);             //延時(shí)500ms啟動(dòng)
        init_LCD();              //LCD初始化
        init_18B20();            //DS18B20初始化
        Display_str(0,0,str2);     //開機(jī)界面
        Display_str(0,1,str2);     //開機(jī)界面
        Delay(2000);
        Display_str(0,0,str0);
        Display_str(0,1,str1);
        while(1)
        {
                Key_scan();       //掃描鍵盤
                Read_temp();     //讀取溫度
                Change();
                Display();        //顯示
                Alarm();         //指示燈與報(bào)警程序
                Delay(1000);
        }
}

/********延時(shí)kms********/
void Delay(uint k)
{
        uint i,j;
        for(i=0;i<k;i++)
        {
                for(j=0;j<60;j++)
                {
                        ;
                }
        }
}
/********顯示模塊********/
/********LCD初始化********/
void init_LCD(void)
{
        P0=0;
        Delay(15);
        LCD_Command(0x38,0);
        Delay(5);
        LCD_Command(0x38,0);
        Delay(5);
        LCD_Command(0x38,0);
        Delay(5);
        LCD_Command(0x38,1);  //8位數(shù)據(jù)傳送,2行顯示,5*7字形
        LCD_Command(0x08,1);  //關(guān)閉顯示
        LCD_Command(0x01,1);  //清屏
        LCD_Command(0x06,1);  //顯示光標(biāo)右移設(shè)置
        LCD_Command(0x0c,1);  //顯示屏打開,光標(biāo)不顯示不閃爍
}

/********寫指令數(shù)據(jù)到LCD********/
void LCD_Command(uchar LC,uchar BC)
{
        if(BC) ReadyLCD();
        P0=LC;
        LCD_RS=0;      //選中指令寄存器
        LCD_RW=0;      //寫模式
        LCD_EN=1;
        _nop_();
        _nop_();
        _nop_();
        LCD_EN=0;
}

/********寫顯示數(shù)據(jù)到LCD********/
void LCD_Data(uchar LD)
{
        ReadyLCD();
        P0=LD;
        LCD_RS=1;      //選中數(shù)據(jù)寄存器
        LCD_RW=0;      //寫模式
        LCD_EN=1;
        _nop_();
        _nop_();
        _nop_();
        LCD_EN=0;
}

/********檢測(cè)LCD忙狀態(tài)********/
void ReadyLCD(void)
{
        P0=0xff;
        LCD_EN=1;
        LCD_RS=0;
        LCD_RW=1;
        _nop_();
        while(P0&BUSY)
        {
                LCD_EN=0;
                _nop_();
          _nop_();
                LCD_EN=1;
                _nop_();
          _nop_();
        }
  LCD_EN=0;
}

/********顯示一個(gè)字符********/
void Display_char(uchar X,uchar Y,uchar Data)
{
        Y&=0x01;
        X&=0x0f;
        if(Y) X|=0x40;
        X|=0x80;
        LCD_Command(X,0);
        LCD_Data(Data);
}

/********顯示一串字符********/
void Display_str(uchar X,uchar Y,uchar code *Data)
{
        uchar List=0;
        Y&=0x01;
        X&=0x0f;
        while(X<16)
        {
                Display_char(X,Y,Data[List]);
                List++;
                X++;
        }               
}

/********顯示字型轉(zhuǎn)換********/
void Change(void)
{
        Temp_C_1=Temp_set1/10;
        Temp_C_2=Temp_set1%10;
        Temp_D_1=Temp_set2/10;
        Temp_D_2=Temp_set2%10;
        Temp_true_1=Temp_mea/10;
        Temp_true_2=Temp_mea%10;
}

/********顯示子程序********/
void Display(void)
{
        Display_char(5,0,str3[Temp_C_1]);
        Display_char(6,0,str3[Temp_C_2]);
        Display_char(13,0,str3[Temp_D_1]);
        Display_char(14,0,str3[Temp_D_2]);
        Display_char(5,1,mode[Set_flag]);
        Display_char(13,1,str3[Temp_true_1]);
        Display_char(14,1,str3[Temp_true_2]);
}

/********溫度測(cè)量模塊********/
/********DS18B20初始化********/
void init_18B20(void)
{
        uchar x=0;
        DQ=1;            //DQ復(fù)位
        Delay_us(4);       //延時(shí)
        DQ=0;            //將DQ拉低
        Delay_us(250);     //精確延時(shí)大于480us
        DQ=1;            //拉高總線
        Delay_us(40);
        x=DQ;
        Delay_us(20);
}

/********從DS18B20讀取一個(gè)字節(jié)數(shù)據(jù)********/
uchar Read_18B20(void)
{
        uchar i=0;
        uchar dat=0;
        for(i=8;i>0;i--)
        {
                DQ=0;
                _nop_();
                dat>>=1;
                DQ=1;
                Delay_us(1);
                if(DQ) dat|=0x80;
                Delay_us(10);
        }
return(dat);
}


/********向DS18B20寫入一個(gè)字節(jié)數(shù)據(jù)********/
void Write_18B20(uchar dat)
{
        uchar i=0;
        for(i=8;i>0;i--)
        {
                DQ=0;
                _nop_();
                DQ=dat&0x01;
                Delay_us(10);
                DQ=1;
                dat>>=1;
                Delay_us(10);
        }
}

/********從DS18B20讀取溫度********/
void Read_temp(void)
{
        uchar a=0;
        uchar b=0;
        uchar t=0;
        init_18B20();
        Write_18B20(0xcc);
        Write_18B20(0x44);
        init_18B20();
        Write_18B20(0xcc);
        Write_18B20(0xbe);
        a=Read_18B20();
        b=Read_18B20();
        t=b;
        t<<=8;
        t=t|a;
  Temp_mea=t*(0.0625);
}

/********精確延時(shí)********/
void Delay_us(uchar i)
{
  while(--i);
}

/********鍵盤掃描程序********/
void Key_scan(void)
{
        uchar temp;
        P1=0xff;
        if(P1!=0xff)
        {
                Delay(20);  //延時(shí)消抖
                if(P1!=0xff)
                {
                        temp=P1;
                        switch(temp)
                        {
                                case 0xfe:Key_set();break; //P1.0按下,功能選擇
                                case 0xfd:Key_inc();break; //P1.1按下,數(shù)字加一
                                case 0xfb:Key_dec();break; //P1.2按下,數(shù)字減一
                                default:break;
                        }
                }
        }
}

/********工作模式子程序********/
void Key_set(void)
{
        Set_flag++;
        if(Set_flag>=3)  //Set_flag=1,設(shè)定上限值
                Set_flag=0;    //Set_flag=2,設(shè)定下限值
}

/********按鍵加一子程序********/
void Key_inc(void)
{
        switch(Set_flag)
        {
                case 1:Temp_set1++;
                       if(Temp_set1>=99) Temp_set1=99;break;
                case 2:Temp_set2++;
                       if(Temp_set2>=Temp_set1) Temp_set2=Temp_set1;break;
                default:break;
        }
}

/********按鍵減一子程序********/
void Key_dec(void)
{
        //Delay(150);
        switch(Set_flag)
        {
                case 1:Temp_set1--;
                       if(Temp_set1<=Temp_set2) Temp_set1=Temp_set2;break;
                case 2:Temp_set2--;
                       if(Temp_set2<=1) Temp_set2=1;break;
                default:break;
        }
}

/********報(bào)警和指示程序********/
void Alarm(void)
{
        uchar C;

        C=Temp_set1+5;
       
        if(Temp_mea>C)
        {
                Normal=1;
                Alarm_B=0;
                Alarm_R=1;
                Alarm_BEEP=1;
  }
         else
         {
            Normal=1;
                Alarm_B=1;
                Alarm_R=0;
                Alarm_BEEP=0;
         }
}  






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 一级免费看 | 中文字幕国产精品 | 国产精品99久久久久久人 | 免费在线精品视频 | 国产精品美女www爽爽爽 | 久久久久久久久久久久久9999 | 国产精品久久久久久久久久免费看 | 美女一区| 久久久久无码国产精品一区 | 国产精品久久久久久久久久久免费看 | 欧美三区 | 日日久| 久久91 | 日本午夜一区二区三区 | 国产日韩欧美激情 | 国产欧美日韩综合精品一区二区 | 国产成人精品一区二区三区在线观看 | 国产成人精品免费视频大全最热 | 精品国产乱码久久久久久丨区2区 | 欧美精品91 | 亚洲综合色站 | 国产一级片在线观看视频 | 人人精品| 日韩精品久久久久久 | 91视频88av| 午夜色婷婷 | 日韩欧美二区 | 一级大片| 91美女视频 | 欧美三级久久久 | 日本不卡免费新一二三区 | 欧美成人aaa级毛片在线视频 | 欧美日韩电影一区二区 | 国产亚洲精品久久午夜玫瑰园 | 中文字幕在线观看www | 97久久精品午夜一区二区 | 国产剧情一区 | 亚洲国产成人精品女人 | 精品日韩一区二区 | 91激情电影 | 国产精品免费一区二区三区 |