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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于DS18B20,STC15的驅動顯示00

[復制鏈接]
跳轉到指定樓層
樓主
ID:813514 發表于 2020-8-20 08:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
DS18B20我只想顯示兩位的數碼管,但啟動后一直顯示00,不顯示溫度不知道哪里出錯啦,求教!還有兩位數碼管的動態顯示我是在定時器里10MS的刷新頻率,DS18B20在進行時是關閉中斷的,這就造成刷新停止會出現一閃一閃的效果,如果能讓兩位數碼管在讀取DS18B20時候不閃,程序哪里需要改進跪求~

#include "ds18b20.h"

u8 Get_DS18B20_Ack(void)
{
        u8 ack=0;
        EA=0;
        DS18B20_Pin=0;
        Delay600us();
        DS18B20_Pin=1;
        Delay50us();
        ack=DS18B20_Pin;
        while(!DS18B20_Pin);
        EA=1;
       
        return(ack);
}

void DS18B20_WriteByte(u8 DS18B20_Byte)
{
        u8 mask;
        EA=0;

        for(mask=0x01;mask!=0;mask<<=1)
        {
                DS18B20_Pin=1;
          DS18B20_Pin=0;
          Delay2us();
                DS18B20_Pin=mask&DS18B20_Byte?1:0;
                Delay70us();
        }
        DS18B20_Pin=1;
        EA=1;
}

u8 DS18B20_ReadByte(void)
{
       
        unsigned char dat,mask;
        EA=0;
        for(mask=0x01;mask!=0;mask<<=1)
        {
                DS18B20_Pin=0;
                Delay2us();
                DS18B20_Pin=1;
                Delay2us();
                if(DS18B20_Pin)
                {
                        dat|=mask;
                }
                else
                {
                        dat&=~mask;
                }
                Delay70us();
        }
        DS18B20_Pin=1;
        EA=1;
       
        return(dat);
}

u8 DS18B20_Start(void)
{
        u8 ack=0;
        ack=Get_DS18B20_Ack();
        if(ack==0)
        {
                DS18B20_WriteByte(0xcc);
                DS18B20_WriteByte(0x44);
        }
       
        return(ack);
}

u16 Get_DS18B20_Temp(void)
{
        u16 temp;
        u8 LSB,MSB;
        u8 ack;
        ack=Get_DS18B20_Ack();
        if(ack==0)
        {
                DS18B20_WriteByte(0xcc);
                DS18B20_WriteByte(0xbe);
                LSB=DS18B20_ReadByte();
                MSB=DS18B20_ReadByte();
        }
        temp=MSB<<4;
        temp|=(LSB&0xf0)>>4;
        temp=temp*0.0625;
       
        return(temp);
}


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

使用道具 舉報

沙發
ID:813514 發表于 2020-8-20 08:46 | 只看該作者
#include "stc15.h"
#include "delay.h"
#include "ds18b20.h"

sbit Bit_0=P3^1;
sbit Bit_1=P3^0;
sbit DIO=P3^2;
sbit SCLK=P3^3;
sbit RCLK=P3^5;




unsigned char code numtab[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

u16 Temp;
void Timer2Init(void)       
{
        AUXR |= 0x04;               
        T2L = 0xA0;               
        T2H = 0x15;               
        AUXR |= 0x10;       
        IE|=0x80;
        IE2|=0x04;
}


void LED_ShowNum(u8 tab);
void LED_Display(u8 num);


void main(void)
{
        SCLK=0;                RCLK=0;
        Timer2Init();
        Delay800ms();
        while(1)
        {
                Delay800ms();
                DS18B20_Start();
                Temp=Get_DS18B20_Temp();
                Temp>>=4;
        }
       
}

void LED_ShowNum(u8 tab)
{
        u8 i;

        for(i=0x80;i!=0;i>>=1)
        {
                DIO=tab&i?1:0;
                SCLK=0; SCLK=1;
        }
        RCLK=0;        RCLK=1;
}
void LED_Display(u8 num)
{
                        static u8 i=0;
                        if(i==0)
                        {
                                            Bit_1=0;
                                                        Bit_0=1;
                                LED_ShowNum(numtab[num/10]);
                                                        i=1;
                        }
                        else
                        {               
                                                        Bit_1=1;
                                                        Bit_0=0;
                    LED_ShowNum(numtab[num%10]);
                                                        i=0;
                        }

}
void TIM2_IRQHandler(void) interrupt 12
{
        LED_Display(Temp);
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久av一区| 国产欧美一区二区久久性色99 | 免费久久精品视频 | 国产精品久久久久久久免费大片 | 国产草草视频 | 国产精品黄视频 | 亚洲精品一区二区三区蜜桃久 | 久热爱 | 成人一区av偷拍 | 欧美黄色片 | 国产精品国产a | 国产福利资源 | 成人免费视频观看视频 | 精品国产乱码久久久久久丨区2区 | 久久久久国产一级毛片 | 精品一区国产 | 精品欧美视频 | 欧美一区二区三区日韩 | 成人影院一区二区三区 | 久久久高清 | 黄a免费网络 | 一区视频在线 | 奇米av| 色又黄又爽网站www久久 | 国产一区二区影院 | 一区二区三区四区在线视频 | 久久久看 | 久久久久久久久久久久久久国产 | 日韩中文字幕一区二区 | 欧美一级网站 | 日本超碰在线 | 99精品视频在线观看免费播放 | 亚洲午夜精品视频 | 中文字幕在线播放不卡 | 免费在线观看av的网站 | 性做久久久久久免费观看欧美 | 人人性人人性碰国产 | 成人一区二区在线 | 91精品国产91久久综合桃花 | 精品国产欧美 | 国产精品高潮呻吟久久 |