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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1773|回復: 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);
}


回復

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级免费毛片 | 久久久精 | 久在线| 午夜精品久久久久久 | 欧美亚洲日本 | 免费日本视频 | 1区2区3区视频 | 人操人人干人 | 亚洲精品一区二区在线 | 久久久精| 国产精品国产三级国产aⅴ中文 | 精品三级| 精品久久av | 欧美一区二区在线观看 | 99精品视频一区二区三区 | 午夜电影网站 | 亚洲精品日韩精品 | 羞羞的视频免费看 | 中文字幕在线视频免费视频 | 人人人人干| 精品视频999 | 欧美在线视频a | 亚洲精品一区在线观看 | 欧美成年黄网站色视频 | 日本精品久久久久久久 | 成人免费看 | 国产精品久久久久久久久久东京 | 国产永久免费 | 天天爽天天操 | 韩三级在线观看 | 亚洲性人人天天夜夜摸 | 久久91av | 日韩成人在线一区 | a黄视频| 色一情一乱一伦一区二区三区 | 亚洲成人精品国产 | 男女又爽又黄视频 | 青青久草| 成人三区四区 | 国产一区亚洲二区三区 | 国产成人久久av免费高清密臂 |