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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2270|回復: 0
收起左側

單片機ds18b20數碼管顯示問題

[復制鏈接]
ID:516588 發表于 2019-5-23 21:00 | 顯示全部樓層 |閱讀模式
我在用中斷讀取溫度值的時候,送到數碼管中顯示的時候會閃爍,源程序如下
#include<reg52.h>
#include<intrins.h>
typedef unsigned int ui;
typedef unsigned char uc;
sbit dq=P3^7;
sbit a1=P1^7;
sbit a2=P1^6;
sbit a3=P1^5;
bit flag;
uc num;
ui m,c=0;
uc code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uc code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,
0xed,0xfd,0x87,0xff,0xef};
void delay(uc x)
{
        uc a,b;
        for(a=x;a>0;a--)
                for(b=10;b>0;b--);
}
void delay1(uc x)
{
        while(--x);
}
void delay2(ui x)
{
        ui a,b;
        for(a=x;a>0;a--)
                for(b=500;b>0;b--);
}
void inti()                 //初始化
{
        uc i;
        dq=1;
        _nop_();
        _nop_();
        dq=0;
    delay(20);  //大概延時640us
        dq=1;
        while((dq)&&(i<200))
        i++;
        delay1(50);          //延時114us讓ds18b20保持低電平
        dq=1;
}
void write_time(uc dat)          //寫操作
{
        uc i,a;
        for(i=0;i<8;i++)
        {
            a=dat&0x01;
                dat>>=1;
                if(a==0)   //判斷是否寫0;
                {
                        dq=0;
                        delay1(27);         //延時64us,至少60us
                        dq=1;
                }
                else                   //否則寫1
                {
                        dq=0;
                        _nop_();
                        _nop_();
                        dq=1;
                        delay1(27);//延時了64us,從拉低總線開始到這兒至少60us
                }                                
        }
        dq=1;
}
uc read_time()          //讀操作
{
        uc i,date=0,a=0;
        for(i=0;i<8;i++)
        {
                dq=0;
                _nop_();
                dq=1;
                _nop_();
                _nop_();
                a=dq;
                date=(date>>1) | (a<<7);
                delay1(27);        //延時64us
        }
        return date;
}  
ui duwendu()
{               
        uc a=0,b=0;
        float k=0;
        inti();
        delay(35);
        write_time(0xcc);
        write_time(0x44);
        delay2(300);
        inti();
        delay(35);
        write_time(0xcc);
        write_time(0xbe);
        a=read_time();
        b=read_time();
        c=b;                  //C為整形數據,一般占用2個字節
        c<<=8;
        c=c|a;
        k=c*0.0625;
        c=k*10+0.5;
        return c;
}

         
void display(uc bai,uc shi,uc ge)
{
        a1=1;
        a2=1;
        a3=0;
        P0=table[bai];
        delay(5);

        a1=0;
        a2=0;
        a3=1;
        P0=table1[shi];
        delay(5);

        a1=1;
        a2=0;
        a3=1;
        P0=table[ge];
        delay(5);
}

void main()
{        
        EA=1;
        ET1=1;
        TMOD=0X10;
        TH1=0X4C;
        TL1=0X00;
        TR1=1;        
        while(1)
        {
//                duwendu();
                display(c/100,c%100/10,c%10);        
        }               
}        
void zd1() interrupt 3         //中斷
{         
        TH1=0x4c;
        TL1=0x00;
        num++;
        if(num==10)
        {
                num=0;
                duwendu();
        }
}  

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 五月天激情电影 | 激情av网站 | 欧美一级片在线观看 | 999国产精品视频 | 亚洲视频三区 | 91香蕉视频在线观看 | 亚洲精品乱码 | 久久国内精品 | 日韩高清三区 | 成人高清在线 | 影视先锋av资源噜噜 | 日本一区高清 | 91在线网| 在线观看的av | 日韩一区二区在线观看视频 | 在线观看成人小视频 | 亚洲精品欧美一区二区三区 | 日本手机在线 | 日韩精品久久久久久 | 国产清纯白嫩初高生视频在线观看 | 精品国产免费一区二区三区演员表 | 国产成人免费在线 | 欧美福利 | 99亚洲精品视频 | 欧美日韩国产精品一区 | 国产精品成人一区二区三区 | 国产精品成人av | 国产在线精品一区二区三区 | 成人自拍视频 | 夜久久 | 国产精品久久在线 | 欧美日韩一区二区在线 | 国产精品亚洲欧美日韩一区在线 | 久久国品片 | 国产一区| 精品一区二区在线观看 | 日韩在线视频一区 | 亚洲精品久久久久久久不卡四虎 | 日韩欧美专区 | 亚洲精品电影网在线观看 | 人人人干 |