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

標(biāo)題: 溫度傳感器,改了一天了,求大神幫助 [打印本頁(yè)]

作者: 糾結(jié)123    時(shí)間: 2017-8-16 09:59
標(biāo)題: 溫度傳感器,改了一天了,求大神幫助
#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();
        }
}


作者: 怪怪愛(ài)玩    時(shí)間: 2017-8-16 10:52
延時(shí)函數(shù)好像不對(duì)吧?
作者: cjjcjj1    時(shí)間: 2017-8-16 10:54
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: 糾結(jié)123    時(shí)間: 2017-8-16 11:48
怪怪愛(ài)玩 發(fā)表于 2017-8-16 10:52
延時(shí)函數(shù)好像不對(duì)吧?

應(yīng)該是對(duì)的

作者: 糾結(jié)123    時(shí)間: 2017-8-16 12:14
cjjcjj1 發(fā)表于 2017-8-16 10:54
你好!具體是什么現(xiàn)象?你要實(shí)現(xiàn)的總體功能是什么?可以加我

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


作者: hange_v    時(shí)間: 2017-8-16 12:50
在DigDisplay()函數(shù)中,P0=data[5-i];這句是錯(cuò)的。應(yīng)該是P0=smgduan[data[i]];
作者: hange_v    時(shí)間: 2017-8-16 12:56
你的datadeal(int data2)和DigDisplay()函數(shù)根本不對(duì),在好好看看怎么寫(xiě)顯示函數(shù);應(yīng)該是把數(shù)據(jù)放到數(shù)組data,之后通過(guò)數(shù)碼管smgduan顯示數(shù)字。好好縷一縷吧。
作者: 糾結(jié)123    時(shí)間: 2017-8-16 16:06
hange_v 發(fā)表于 2017-8-16 12:56
你的datadeal(int data2)和DigDisplay()函數(shù)根本不對(duì),在好好看看怎么寫(xiě)顯示函數(shù);應(yīng)該是把數(shù)據(jù)放到數(shù)組dat ...

這個(gè)是對(duì)的,例程就是這么寫(xiě)的,
作者: hange_v    時(shí)間: 2017-8-16 16:45
糾結(jié)123 發(fā)表于 2017-8-16 16:06
這個(gè)是對(duì)的,例程就是這么寫(xiě)的,

這是我以前的代碼,你看看,另外看看你的跳線帽插上了沒(méi)有。。。
#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);
    }
}
作者: yzwzfyz    時(shí)間: 2017-8-16 20:53
多看傳感器手冊(cè),理解了就好寫(xiě)了。
作者: 糾結(jié)123    時(shí)間: 2017-8-16 21:45
還是不對(duì)呀,我拔掉DS18B20后,數(shù)碼管沒(méi)有變化
作者: chinagkdj    時(shí)間: 2017-8-17 08:35
網(wǎng)上有實(shí)例,下個(gè)實(shí)例試試。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品欧美一区二区 | 国产在线精品一区二区三区 | 一级做a爰片性色毛片16 | 久久久久久久久久影视 | 精品欧美一区二区三区久久久小说 | 久久夜视频 | 狠狠热视频 | 国产精品九九 | 国产区在线免费观看 | 97久久久| 免费看黄色国产 | 最新中文字幕在线 | 中文字幕日韩专区 | 国产精品精品视频 | 男女网站免费 | 美女国产一区 | 久久精彩视频 | 五月天婷婷激情 | 天天摸天天看 | 亚洲精品中文在线 | 日韩在线视频一区 | 99精品一区二区三区 | www.9191.com| 久久99国产精一区二区三区 | 亚洲精品一区二区三区蜜桃久 | 欧美日韩免费在线 | 国产精品中文字幕在线 | 亚洲欧美成人影院 | 中文精品视频 | 欧美黄色片 | 亚洲 精品 综合 精品 自拍 | 日韩欧美一区在线 | 91av亚洲| 久久国产区 | 久久国产精品首页 | 国产激情偷乱视频一区二区三区 | 欧美毛片免费观看 | 日韩在线观看一区二区三区 | 欧美一区免费 | 色约约视频| 一级黄色av电影 |