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

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

QQ登錄

只需一步,快速開始

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

單片機(jī)溫控器程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:772908 發(fā)表于 2020-6-8 15:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <reg51.h>
#include<intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
uchar code table[]             =   {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
uchar code Temperature_Char[8] =   {0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00};
                                                                  
uchar code df_Table[]          =   {0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
uchar code wei[]               =   {0x01,0x02,0x04,0x08};
sbit DQ = P3^7;
sbit digt1=P2^0;
sbit digt2=P2^1;
sbit digt3=P2^2;
sbit digt4=P2^3;
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
uchar DS18B20_IS_OK;
uchar CurrentT = 0;
uchar Temp_Value[]={0x00,0x00};
uchar Display_Digit[]={0,0,0,0};
void delayus(uint us)
{
        while(--us);
}
void delay(uint ms)
{
        uchar i;
        while(ms--)
        {
                 for(i=0;i<120;i++);
        }
}
uchar Init_DS18B20()                        //18B20初始化
{
        uchar status;
        DQ = 1;                                         //總線拉高
        delayus(8);                         // 12MHz晶振,20us左右
        DQ = 0;                                         
        delayus(90);                        //720us左右
        DQ = 1;                                        //釋放總線
        delayus(8);
        status=DQ;
        delayus(20);                         //160us左右
        DQ=1;
        return status;
}
uchar ReadOneByte()
{
        uchar i,dat=0;
        DQ = 1;
        _nop_();
        for(i=0;i<8;i++)
        {
                 DQ = 0;
                _nop_();_nop_();
                dat >>= 1;
                DQ = 1;
                _nop_();
                _nop_();
                if(DQ)
                        dat |= 0X80;
                delayus(30);
                DQ = 1;
        }
        return dat;
}
void WriteOneByte(uchar dat)                  //18B20寫數(shù)據(jù)
{
        uchar i;
        for(i=0;i<8;i++)
        {
                 DQ = 0;
                DQ = dat& 0x01;
                delayus(3);
                DQ = 1;
                dat >>= 1;                //右移一位
        }
}
void Read_Temperature()                          //讀取溫度
{
        if(Init_DS18B20()==1)
                DS18B20_IS_OK=0;
        else
        {
                WriteOneByte(0xcc);                          //跳過序列號(hào)
                WriteOneByte(0x44);                           //啟動(dòng)溫度轉(zhuǎn)換
                Init_DS18B20();
                WriteOneByte(0xcc);
                WriteOneByte(0xbe);                                //讀取溫度
                Temp_Value[0] = ReadOneByte();           //低八位
                Temp_Value[1] = ReadOneByte();           //高八位
                DS18B20_IS_OK=1;        
        }        
}
void Display_Temperature()
{
        uchar t = 150, ng =0xff,  a ,  b;
        if((Temp_Value[1]&0xf8)==0xf8)                        //判斷高5位,如果都為1則是負(fù)數(shù)
        {
                 Temp_Value[1] = ~Temp_Value[1];                  //如果為負(fù)數(shù)。高八位需要取反,第八位需要取反后加1.
                Temp_Value[0] = ~Temp_Value[0]+1;
                if(Temp_Value[0]==0x00)
                        Temp_Value[1]++;
                ng = 10;
                        
        }
         a=Temp_Value[0]&0x0f;           //小數(shù)點(diǎn)后一位算法
         b=a*0.0625*10;
        /*----0度以上的數(shù)值顯示-----*/
         Display_Digit[0]=ng;
        CurrentT = ((Temp_Value[0]&0xf0)>>4) | ((Temp_Value[1]&0x07)<<4);         //整數(shù)值
        Display_Digit[1] = CurrentT/10; //百位          CurrentT%1000/100;
        Display_Digit[2] = CurrentT%10;          //十位          CurrentT%100/10;
        Display_Digit[3] =  b%10;                  //個(gè)位          CurrentT%10;
        
        }
void display(uchar ge,uchar shi,uchar bai,uchar fu)    //數(shù)碼管掃描
{
        P2=0X00;
        delayus(30);
        if(table[fu]==0x40)            ////////
        {
                digt1=~1;                //不加NPN三級(jí)管位驅(qū)動(dòng)需要取反
        }
        else
        {
           digt1=~0;                            //加NPN三級(jí)管位驅(qū)動(dòng)需要取反
        }
        P0=table[fu];
        delay(3);
        digt1=~0;                    //不加NPN三級(jí)管位驅(qū)動(dòng)需要取反
                                                         
                if(table[bai]==0x3f)
        {        
                digt2=~0;                //不加NPN三級(jí)管位驅(qū)動(dòng)需要取反
        }                          
        else
        {
                digt2=~1;                //不加NPN三級(jí)管位驅(qū)動(dòng)需要取反
        }
        P0=table[bai];         
        delay(3);               
        digt2=~0;         //不加NPN三級(jí)管位驅(qū)動(dòng)需要取反
        digt3=~1;         //不加NPN三級(jí)管位驅(qū)動(dòng)需要取反
        P0=table[shi]+0X80;
        delay(3);           
        digt3=~0;   //不加NPN三級(jí)管位驅(qū)動(dòng)需要取反
        digt4=~1;    //不加NPN三級(jí)管位驅(qū)動(dòng)需要取反
        P0=table[ge];
        delay(3);
        digt4=~0;    //不加NPN三級(jí)管位驅(qū)動(dòng)需要取反
   
}
void main()
{
    P0=0XFF;
    P2=0X00;
//        delayus(10);
        Read_Temperature();
        delay(500);
        delay(500);
        while(1)
        {        
                display(Display_Digit[3],Display_Digit[2],Display_Digit[1],Display_Digit[0]);
                 Read_Temperature();
                if(DS18B20_IS_OK)
                        Display_Temperature();
                delayus(3);        
        
        }
}

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区在线观看 | 天天操网 | 国产日韩一区二区三区 | 国产精品久久久久久久久久久久午夜片 | 亚洲国产视频一区二区 | 在线观看免费毛片 | 日韩精品一区二区三区在线播放 | 黄色成人亚洲 | 伊人青青久久 | 日日噜噜噜夜夜爽爽狠狠视频97 | 日韩手机在线视频 | 亚洲香蕉在线视频 | av黄色在线| 激情一区二区三区 | 亚洲精品一区中文字幕乱码 | 色射综合| 亚洲精品久久久久久一区二区 | 久久久久久国产 | 成年网站在线观看 | 亚州精品天堂中文字幕 | 国产精品一区二区不卡 | 日韩成人在线观看 | 综合久久色 | 九九热在线视频观看这里只有精品 | 日韩精品一区二区三区在线播放 | 91久久夜色 | 久久99精品久久久久久狂牛 | 五月综合久久 | 日韩免费福利视频 | 国产视频中文字幕 | 亚洲国产精品人人爽夜夜爽 | 国产一区二区观看 | a黄视频| 欧美九九 | 国产精品地址 | 国产激情一区二区三区 | 国产精品免费观看视频 | 免费观看av | 中文字幕 欧美 日韩 | 青娱乐自拍 | 国产精品一区一区三区 |