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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2214|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

做51單片機(jī)18B20 數(shù)碼管一直閃爍 不知道該怎么弄 求大佬

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:811924 發(fā)表于 2020-9-7 16:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include "reg52.h"  
#include"18B20ZHONGJI.H"
typedef unsigned int u16;  
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

char num=0;
u8 DisplayData[8];
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*******************************************************************************
* ?? ?? ??         : delay
* ????????     : ?????????i=1?????????10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}

/*******************************************************************************
* ?? ?? ??         : datapros()
* ????????     : ????????????????
* ??    ??         : temp
* ??    ??         : ??
*******************************************************************************/
void datapros(int temp)   
{
    float tp;  
if(temp< 0)    //???????????
   {
  DisplayData[0] = 0x40;    //   -
  //????????????????????????????1?????????????
  temp=temp-1;
  temp=~temp;
  tp=temp;
  temp=tp*0.0625*100+0.5;
  //??????С?????*100??+0.5?????????????C??????????????????????С????
  //????????????????????????0.5????+0.5??????0.5??????1???С??0.5???
  //?????0.5????????С??????檔

   }
  else
   {   
  DisplayData[0] = 0x00;
  tp=temp;//????????????С???????????????????????????
  //?????????????????????????????????????????
  temp=tp*0.0625*100+0.5;
  //??????С?????*100??+0.5?????????????C??????????????????????С????
  //????????????????????????0.5????+0.5??????0.5??????1???С??0.5???
  //?????0.5????????С??????檔
}



void DigDisplay()
{
u8 i;
for(i=0;i<6;i++)
{
  switch(i)  //λ?????????????????
  {
   case(0):
    LSA=1;LSB=1;LSC=1; break;//?????0λ
   case(1):
    LSA=0;LSB=1;LSC=1; break;//?????1λ
   case(2):
    LSA=1;LSB=0;LSC=1; break;//?????2λ
   case(3):
    LSA=0;LSB=0;LSC=1; break;//?????3λ
   case(4):
    LSA=1;LSB=1;LSC=0; break;//?????4λ
   case(5):
    LSA=0;LSB=1;LSC=0; break;//?????5λ
    delay(100);
  }
  P0=DisplayData[i];//????????
  delay(1); //????????????
  P0=0xFF;//????
}  
}


void main()
{
while(1)
{
  datapros(Ds18b20ReadTemp());  //??????????
  DigDisplay();//????????????  
}  
}#include"18b20zhongji.h"


void Delay1ms(uint y)
{
uint x;
for( ; y>0; y--)
{
  for(x=110; x>0; x--);
}
}


uchar Ds18b20Init()
{
uchar i;
DSPORT = 0;    //??????????480us~960us
i = 70;
while(i--);//???642us
DSPORT = 1;   //???????????????DS18B20???????????15us~60us??????????
i = 0;
while(DSPORT) //???DS18B20????????
{
  Delay1ms(1);
  i++;
  if(i>5)//???>5MS
  {
   return 0;//????????
  }

}
return 1;//????????
}


void Ds18b20WriteByte(uchar dat)
{
uint i, j;
for(j=0; j<8; j++)
{
  DSPORT = 0;         //?д???λ?????????????????1us
  i++;
  DSPORT = dat & 0x01;  //???д???????????????λ???
  i=6;
  while(i--); //???68us?????????????60us
  DSPORT = 1; //???????????????1us?????????????????д?????????
  dat >>= 1;
}
}



uchar Ds18b20ReadByte()
{
uchar byte, bi;
uint i, j;
for(j=8; j>0; j--)
{
  DSPORT = 0;//???????????1us
  i++;
  DSPORT = 1;//??????????
  i++;
  i++;//???6us??????????
  bi = DSPORT;  //?????????????λ??????
  /*??byte?????λ?????????????7λ???bi????????????????λ??0??*/
  byte = (byte >> 1) | (bi << 7);        
  i = 4;  //??????????48us??????????????
  while(i--);
}   
return byte;
}


void  Ds18b20ChangTemp()
{
Ds18b20Init();
Delay1ms(1);
Ds18b20WriteByte(0xcc);  //????ROM????????   
Ds18b20WriteByte(0x44);     //??????????
//Delay1ms(100); //??????????????????????????????????????????
   
}


void  Ds18b20ReadTempCom()
{
Ds18b20Init();
Delay1ms(1);
Ds18b20WriteByte(0xcc);  //????ROM????????
Ds18b20WriteByte(0xbe);  //?????????????
}


int Ds18b20ReadTemp()
{
int temp = 0;
uchar tmh, tml;
Ds18b20ChangTemp();     //??д?????????
Ds18b20ReadTempCom();   //??????????????????????
tml = Ds18b20ReadByte();  //?????????16λ??????????
tmh = Ds18b20ReadByte();  //????????
temp = tmh;
temp <<= 8;
temp |= tml;
return temp;
}
#ifndef __18b20zhongji_H_
#define __18b20zhongji_H_
#include<reg52.h>
//---?????????---//
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
//--????????IO??--//
sbit DSPORT=P3^7;
//--??????????--//
void Delay1ms(uint );
uchar Ds18b20Init();
void Ds18b20WriteByte(uchar com);
uchar Ds18b20ReadByte();
void  Ds18b20ChangTemp();
void  Ds18b20ReadTempCom();
int Ds18b20ReadTemp();
#endif
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2020-9-7 19:42 | 只看該作者
參見(jiàn)類(lèi)似現(xiàn)象的回帖http://www.zg4o1577.cn/bbs/dpj-194698-1.html
回復(fù)

使用道具 舉報(bào)

板凳
ID:420836 發(fā)表于 2020-9-8 01:29 | 只看該作者
樓上的鏈接很有幫助。 該帖子為這個(gè)問(wèn)題提供了正確的原因。
回復(fù)

使用道具 舉報(bào)

地板
ID:691028 發(fā)表于 2020-9-10 13:09 | 只看該作者
你的Ds18b20ReadTemp()占用了太多時(shí)間導(dǎo)致LED刷新率太低。
你需要一個(gè)定時(shí)器做刷新。
回復(fù)

使用道具 舉報(bào)

5#
ID:806634 發(fā)表于 2020-10-9 17:35 | 只看該作者
先把數(shù)碼管是共陰極還是共陽(yáng)極搞清楚
回復(fù)

使用道具 舉報(bào)

6#
ID:708637 發(fā)表于 2020-10-9 18:00 | 只看該作者
1、消隱問(wèn)題注意
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美二区乱c黑人 | 日本一区二区三区视频在线 | 日本91av视频 | 国产精品99久久久久久www | 毛片网站在线观看 | 日韩精品一区二区三区免费观看 | 午夜看电影在线观看 | 日韩精品一区二区三区在线观看 | 日韩一二区 | 久久88| 欧美做暖暖视频 | 亚洲网站在线观看 | 成人免费网站www网站高清 | 一级视频黄色 | 在线一区观看 | 国产精品久久久久久婷婷天堂 | 国产在线视频一区 | 久久久久久国产免费视网址 | 国产美女福利在线观看 | 国产日产精品一区二区三区四区 | 玖玖综合在线 | 国产精品一区二区三区久久 | 国产高清一区二区 | 久久久精品 | 韩国av一区二区 | 国产精品美女www | 亚洲一区二区三区在线播放 | 日本五月婷婷 | 91精品国产综合久久精品图片 | 色婷婷综合网 | 欧美高清dvd | 嫩草最新网址 | 日韩爱爱网站 | 日韩精品欧美精品 | 欧美一区2区三区3区公司 | 久久久久久黄 | 91在线资源 | 欧美成人精品一区二区男人看 | 国产精品a久久久久 | 男人的天堂在线视频 | 欧美激情在线播放 |