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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于18b20ROM編碼的讀取,求大神指導下

[復制鏈接]
跳轉到指定樓層
樓主
ID:81678 發表于 2015-6-4 19:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
先貼代碼:
#include <reg52.h>
#include <stdio.h>

#define uchar unsigned char
#define uint  unsigned int

sbit DQ=P2^3;
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;

uchar fcode[8];
uint tvalue;
uchar tflag;

uchar code str1[]={"              "};
uchar code str2[]={"              "};


void delay1ms(uint ms)
{
        uint i,j;
        for(i=0;i<ms;i++)
        {
                for(j=0;j<110;j++);
        }
}
void wr_com(uchar com)
{
        delay1ms(1);
        RS=0;
        RW=0;
        EN=0;
        P1=com;
        delay1ms(1);
        EN=1;
        delay1ms(1);
        EN=0;
}

void wr_dat(uchar dat)
{
        delay1ms(1);
        RS=1;
        RW=0;
        EN=0;
        P1=dat;
        delay1ms(1);
        EN=1;
        delay1ms(1);
        EN=0;       
}
void lcd_init()
{
        delay1ms(15);
        wr_com(0x38);
        delay1ms(5);
        wr_com(0x08);
        delay1ms(5);
        wr_com(0x01);
        delay1ms(5);
        wr_com(0x06);
        delay1ms(5);
        wr_com(0x0c);
        delay1ms(5);
}
void display(uchar *p)
{
                while(*p!='\0')
                {
                        wr_dat(*p);
                        p++;
                        delay1ms(1);
                }
}
void init_play()
{
        lcd_init();
        wr_com(0x80);
        display(str1);
        wr_com(0x80);
        display(str2);       
}
void uart_init()
{
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        REN=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;
}

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

void rst()
{
        uchar x=0;
        DQ=1;
        delay(4);
        DQ=0;
        delay(100);
        DQ=1;
        delay(40);       
}
uchar read()
{
        uchar i=0;
        uchar dat=0;
        for(i=8;i>0;i--)
        {
                DQ=0;
                dat>>=1;
                DQ=1;
                if(DQ)
                        dat|=0x80;
                delay(10);
        }       
        return dat;
}

void write(uchar wdata)
{
        uchar i=0;
        for(i=8;i>0;i--)
        {
                DQ=0;
                DQ=wdata&0x10;
                delay(10);
                DQ=1;
                wdata>>=1;
        }
}

uint read_temp()
{
        uchar a,b;
        rst();
        write(0xcc);
        write(0x44);
        rst();
        write(0xcc);
        write(0xbe);
        a=read();
        b=read();
        tvalue=b;
        tvalue<<=8;
        tvalue=tvalue|a;
        if(tvalue<0xfff)
                tflag=0;
        else
        {
                tvalue=~tvalue+1;
                tflag=1;
        }
        tvalue=tvalue*(0.0625);
        return tvalue;
}

void discode()
{
        uchar i,temp;
        rst();
        write(0x33);
        for(i=0;i<8;i++)
        {
                fcode[i]=read();
        }       
        wr_com(0x80+0x40);
        for(i=0;i<8;i++)
        {
                temp=fcode[i]>>4;
                if(temp<10)
                        wr_dat(temp+0x30);
                else
                        wr_dat(temp+0x37);
                temp=fcode[i]&0x0f;
                if(temp<10)
                        wr_dat(temp+0x30);
                else
                        wr_dat(temp+0x37);
        }
}
void main()
{
        init_play();
        discode();
        delay1ms(100);
        while(1);
}

程序運行,輸出的全部為FFFFFFFFFFFFF;之前用串口輸出,里面也是這種情況,換了個18B20,還是一樣,求指導下
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:81678 發表于 2015-6-4 19:14 | 只看該作者
簡明點就是
void discode()
{
        uchar i,temp;
        rst();
        write(0x33);
        for(i=0;i<8;i++)
        {
                fcode[i]=read();
        }        }
主函數里面
void main()
{
int i;
uart_init();//串口初始化
TI=1;
ES=0;
discode();
while(1)
{
for(i=0;i<8;i++)
{
printf("%x \r\n",fcode[i]);
}
}
}
回復

使用道具 舉報

板凳
ID:81118 發表于 2015-6-6 17:59 | 只看該作者
參考程序 希望可以幫到你!

DS18B20.rar

48.67 KB, 下載次數: 12

DS18B20+LCD1602

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产久| 伊人影院在线观看 | 久久另类视频 | 国产黄色av网站 | 日韩在线一区二区三区 | 三级成人在线观看 | 亚洲色视频 | 日日摸夜夜爽人人添av | 久久精品一级 | 亚洲一区二区久久 | 亚洲一区二区视频 | 亚洲免费观看视频 | 午夜免费在线电影 | 国产欧美久久一区二区三区 | 九九热这里只有精品在线观看 | 午夜视频网站 | 精品欧美一区二区三区久久久 | 亚洲精品一区二区在线观看 | 欧美日韩精品在线免费观看 | 国产精品毛片一区二区在线看 | 精品国产色| 亚洲一区二区中文字幕在线观看 | 日韩一区二区免费视频 | 日日操夜夜操视频 | 国产视频一二三区 | 大陆一级毛片免费视频观看 | av在线一区二区三区 | 精品视频网 | 久久69精品久久久久久久电影好 | 一区二区三区四区不卡视频 | 国产免费一区二区 | 国产一区二区三区免费 | 日本久久福利 | 久久精品亚洲一区 | 成人妇女免费播放久久久 | 少妇一区在线观看 | 中文字幕国产 | 91在线精品秘密一区二区 | 欧美精品99 | 精品乱码一区二区三四区视频 | 午夜极品|