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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3325|回復: 11
打印 上一主題 下一主題
收起左側(cè)

溫度傳感器,改了一天了,求大神幫助

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:227857 發(fā)表于 2017-8-16 09:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit datacon=P3^7;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar data1[8];

void Delay1ms(uint y)
{
        uint x;
        for( ; y>0; y--)
        {
                for(x=110; x>0; x--);
        }
}
uchar Initial1()
{
    uint a,i;
        datacon=0;
        a=70;
        while(a--);
        datacon=1;
        i=0;
        while(datacon)        //等待DS18B20拉低總線
        {
                Delay1ms(1);
                i++;
                if(i>5)//等待>5MS
                {
                        return 0;//初始化失敗
                }
       
        }
        return 1;//初始化成功
}

void Writing1(uchar data_)
{
        uint i,j;
        for(i=0;i<8;i++)
        {
                datacon=0;
                j++;
                j++;
                datacon=data_&0x01;
                data_>>=1;
                j=6;
                while(j--)                  ;
                datacon=1;
                data_>>=1;
        }
}
uchar reading1(void)
{
        uint i,j;
        uchar data_,bit_;
        {
                for(i=7;i>=0;i--)
                {
                datacon=0;
                j++;
                datacon=1;
                j++;
                j++;
        bit_=datacon;
                data_=(data_ >> 1) | (bit_ << 7);  
                j=4;
                while(j--);
                }
        }
        return data_;
}
void DS18B20initial1()
{
        Initial1() ;
        Delay1ms(1);
        Writing1(0xcc);                                 
        Writing1(0x44);
        Delay1ms(100);
}
void DS18B20reading1()
{
        Initial1() ;
        Delay1ms(1);
        Writing1(0xcc);                                 
        Writing1(0xbe);       
}
int Ds18b20ReadTemp1()
{
        int temp = 0;
        uchar tmh, tml;
        DS18B20initial1();                                
        DS18B20reading1();                       
        tml = reading1();               
        tmh = reading1();               
        temp = tmh;
        temp <<= 8;
        temp |= tml;
        return temp;
}

void delay(uint i)
{
        while(i--);       
}


void datadeal(int data2)
{
        float a;
        if(data2<0)
        {
        data1[0]=0x40;
        data2=data2-1;
        data2=~data2;         //data2*=(-1);
        a=data2;
        data2=a*0.0625*100;
        }
        else
        {
        data1[0]=0x00;
        a=data2;
        data2=a*0.0625*100;
        }
        data1[1]=smgduan[data2/10000];
        data1[2]=smgduan[data2%10000/1000];
        data1[3]=smgduan[data2%1000/100]|0x80;
        data1[4]=smgduan[data2%100/10];
        data1[5]=smgduan[data2%10];
}
void DigDisplay()
{
        uchar i;
        for(i=0;i<6;i++)
        {
                switch(i)       
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;
                        case(1):
                                LSA=1;LSB=0;LSC=0; break ;
                        case(2):
                                LSA=0;LSB=1;LSC=0; break;
                        case(3):
                                LSA=1;LSB=1;LSC=0; break;
                        case(4):
                                LSA=0;LSB=0;LSC=1; break;
                        case(5):
                                LSA=1;LSB=0;LSC=1; break;       
                }
                P0=data1[5-i];
                delay(100);
                P0=0x00;
        }               
}
void main()
{        while(1)
        {
                datadeal(Ds18b20ReadTemp1())        ;
                DigDisplay();
        }
}

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

使用道具 舉報

沙發(fā)
ID:227864 發(fā)表于 2017-8-16 10:52 | 只看該作者
延時函數(shù)好像不對吧?
回復

使用道具 舉報

板凳
ID:82765 發(fā)表于 2017-8-16 10:54 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復

使用道具 舉報

地板
ID:227857 發(fā)表于 2017-8-16 11:48 | 只看該作者
怪怪愛玩 發(fā)表于 2017-8-16 10:52
延時函數(shù)好像不對吧?

應該是對的
回復

使用道具 舉報

5#
ID:227857 發(fā)表于 2017-8-16 12:14 | 只看該作者
cjjcjj1 發(fā)表于 2017-8-16 10:54
你好!具體是什么現(xiàn)象?你要實現(xiàn)的總體功能是什么?可以加我

就是讓數(shù)碼管顯示溫度,但是數(shù)碼管就是不顯示

回復

使用道具 舉報

6#
ID:190832 發(fā)表于 2017-8-16 12:50 | 只看該作者
在DigDisplay()函數(shù)中,P0=data[5-i];這句是錯的。應該是P0=smgduan[data[i]];
回復

使用道具 舉報

7#
ID:190832 發(fā)表于 2017-8-16 12:56 | 只看該作者
你的datadeal(int data2)和DigDisplay()函數(shù)根本不對,在好好看看怎么寫顯示函數(shù);應該是把數(shù)據(jù)放到數(shù)組data,之后通過數(shù)碼管smgduan顯示數(shù)字。好好縷一縷吧。
回復

使用道具 舉報

8#
ID:227857 發(fā)表于 2017-8-16 16:06 | 只看該作者
hange_v 發(fā)表于 2017-8-16 12:56
你的datadeal(int data2)和DigDisplay()函數(shù)根本不對,在好好看看怎么寫顯示函數(shù);應該是把數(shù)據(jù)放到數(shù)組dat ...

這個是對的,例程就是這么寫的,
回復

使用道具 舉報

9#
ID:190832 發(fā)表于 2017-8-16 16:45 | 只看該作者
糾結(jié)123 發(fā)表于 2017-8-16 16:06
這個是對的,例程就是這么寫的,

這是我以前的代碼,你看看,另外看看你的跳線帽插上了沒有。。。
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define nop() _nop_()
bit flag;
sbit SDA=P3^7;
sbit DA=P2^2;sbit DB=P2^3;sbit DC=P2^4;
void delay(ms)
{
        uchar i,j;
        for(i=0;i<ms;i++)
          for(j=0;j<110;j++);
}
uchar code table[]={
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71,0x80,0x40};
uchar initDS13B20()
{
        uchar i;
        SDA=0;i=70;
        while(i--);
        SDA=1;i=0;
        while(SDA)
        {
                i++;
                delay(1);
                if(i>50)
                        return 0;
    }
        return 1;
}
void DS13B20write(uchar com)
{
        uchar i,j;
        for(i=0;i<8;i++)
        {
                SDA=0;j++;
                SDA=(com&0x01);
                j=6;while(j--);
                SDA=1;
                com=(com>>1);
        }
}
uchar DS13B20read()
{
        uchar i,j,di=0,dat=0;
        for(i=0;i<8;i++)
        {
                SDA=0;j++;
                SDA=1;j++;j++;
                di=SDA;
                dat=((dat>>1)|(di<<7));
                j=4;
                while(j--);
    }
        return dat;
}
void change()
{
        initDS13B20();
        delay(1);
        DS13B20write(0xcc);
        DS13B20write(0x44);
}
void getvalue()
{
        initDS13B20();
        delay(1);
        DS13B20write(0xcc);
        DS13B20write(0xbe);
}
int read()
{
        uchar dal=0,dah=0;
        int dat=0;
        change();
        getvalue();
        dal=DS13B20read();
        dah=DS13B20read();
        dat=((dah<<8)|dal);
        return dat;
}
float changeC()
{
        int a;
        float value;
        a=read();
        if(a>=0)
        {
            flag=1;
                value=a*0.0625;
        }
        else
        {
                flag=0;
                value=(~(a-1))*0.625;
        }
        return value;
}
void disp1(float num)
{
        uchar a,i,j;
        for(i=0;i<6;i++)
        {
                switch(i)
                {
            case 0:DA=0;DB=0;DC=0;a=(int)num/10;    break;               
            case 1:DA=1;DB=0;DC=0;a=(int)num%10;    break;
            case 2:DA=0;DB=1;DC=0;a=16;             break;
                        case 3:DA=1;DB=1;DC=0;a=(int)(num*10)%10; break;
                        case 4:DA=0;DB=0;DC=1;a=(int)(num*100)%10;  break;       
                        case 5:DA=1;DB=0;DC=1;a=(int)(num*1000)%10;   break;
                        case 6:DA=0;DB=1;DC=1;a=(int)(num*10000)%10;      break;               
        }
                P0=table[a];
                j=50;
                while(j--);
                P0=0x00;
    }
}
void disp0(float num1)
{
        uchar a,i,j;
        float num;
        num=0-num1;
        for(i=0;i<7;i++)
        {
                switch(i)
                {
            case 0:DA=0;DB=0;DC=0;a=17;      break;
                        case 1:DA=1;DB=0;DC=0;a=(int)num/10;  break;               
            case 2:DA=0;DB=1;DC=0;a=(int)num%10;break;
            case 3:DA=1;DB=1;DC=0;a=16;          break;
                        case 4:DA=0;DB=0;DC=1;a=(int)(num*10)%10; break;
                        case 5:DA=1;DB=0;DC=1;a=(int)(num*100)%10;  break;       
                        case 6:DA=0;DB=1;DC=1;a=(int)(num*1000)%10;   break;
                        case 7:DA=1;DB=1;DC=1;a=(int)(num*10000)%10;      break;               
        }
                P0=table[a];
                j=50;
                while(j--);
                P0=0x00;
    }
}
void main()
{
        float value;
        while(1)
        {
                value=changeC();
                if(flag==1)
                  disp1(value);
                else disp0(value);
    }
}
回復

使用道具 舉報

10#
ID:123289 發(fā)表于 2017-8-16 20:53 | 只看該作者
多看傳感器手冊,理解了就好寫了。
回復

使用道具 舉報

11#
ID:227857 發(fā)表于 2017-8-16 21:45 | 只看該作者
還是不對呀,我拔掉DS18B20后,數(shù)碼管沒有變化
回復

使用道具 舉報

12#
ID:95277 發(fā)表于 2017-8-17 08:35 | 只看該作者
網(wǎng)上有實例,下個實例試試。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级片免费视频 | 蜜臀网 | 岛国av一区二区 | 国产二区在线播放 | 亚洲精品一区中文字幕乱码 | 成人免费视频 | 特级毛片www | 一区二区三区在线免费 | 国产在线视频一区 | 成人a视频在线观看 | 精品一区二区三区在线观看 | 午夜激情小视频 | 国产乱码精品一品二品 | 国产人久久人人人人爽 | 懂色中文一区二区三区在线视频 | 亚洲国产一区二区三区在线观看 | 亚洲精品乱码8久久久久久日本 | 欧美日韩高清在线一区 | 91在线精品视频 | 成人精品国产免费网站 | 一本大道久久a久久精二百 国产成人免费在线 | 操操日 | 成人网av| 狠狠的操 | 91久久综合亚洲鲁鲁五月天 | 免费看黄视频网站 | 久久精品国产一区二区电影 | 欧美精品1区2区3区 精品国产欧美一区二区 | 成人羞羞国产免费视频 | 欧美日韩电影一区二区 | 欧美一级在线 | 一级女毛片 | 国产免费视频在线 | 97久久精品午夜一区二区 | 涩涩视频在线观看免费 | 久久精品成人一区 | 国产精品69毛片高清亚洲 | 日韩毛片在线免费观看 | 欧美日韩一卡二卡 | 成人免费网站www网站高清 | 国产免费人成xvideos视频 |