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

QQ登錄

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

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

數(shù)碼管顯示溫度(DS18B20)(小弟初來(lái)乍到還請(qǐng)大神們勿噴)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:63839 發(fā)表于 2014-8-28 13:18 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<stc12.h>  //單片機(jī)型號(hào)stc125a60s2
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x9c,0xc6};
uint shi,ge;
sbit DQ=P1^1; //DS18B20使能端
sbit D0=P2^7; //顯示溫度十位
sbit D1=P2^6;   // 個(gè)位
sbit D2=P2^5; // 攝氏度的符號(hào)顯示
sbit D3=P2^4; // 攝氏度的符號(hào)顯示
void delay_18B20(unsigned int i)
{
while(i--);
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void Init_DS18B20(void)   //初始化
{
unsigned char x=0;
DQ = 1;     //DQ復(fù)位
delay_18B20(80);   //稍做延時(shí)
DQ = 0;     //單片機(jī)將DQ拉低
delay_18B20(800);   //精確延時(shí) 大于 480us
DQ = 1;     //拉高總線(xiàn)
delay_18B20(140);
x=DQ; delay_18B20(200);
}
unsigned char ReadOneChar(void)  //寫(xiě)數(shù)據(jù)
{
uchar i=0;
uchar dat =0;
for (i=8;i>0;i--)
{
   DQ =0; // 給脈沖信號(hào)
      dat>>=1;
      DQ = 1; // 給脈沖信號(hào)
     if(DQ)
      dat|=0x80;
      delay_18B20(40); //40
}
   return(dat);
}
void WriteOneChar(uchar dat)  //讀數(shù)據(jù)
{
unsigned char i=0;
for (i=8;i>0; i--)
    {
      DQ = 0;
      DQ = dat&0x01;
      delay_18B20(50); //50
      DQ = 1;
      dat>>=1;
}
}
unsigned int ReadTemp(void)   //返回溫度數(shù)據(jù)用于數(shù)碼管顯示
{
unsigned char a=0;
unsigned char b=0;
unsigned int temp_value=0;
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0x44);
delay_18B20(1000);
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);
delay_18B20(1000);
a=ReadOneChar(); //讀取溫度值低位
b=ReadOneChar(); //讀取溫度值高位
temp_value = b<<8; //兩個(gè)字節(jié)合為一個(gè)字節(jié)
temp_value |= a;
temp_value=temp_value*0.0625;//溫度在寄存器中為12位,0.0625為分辨率
return temp_value;
}
void display()//用數(shù)碼管顯示
{ uint t;
t=ReadTemp();
shi=t/10;
ge=t%10;
  
  P0=table[shi];
  D0=0;
  delay(10);
  D0=1;
  P0=table[ge];
  D1=0;
  delay(10);
  D1=1;
  
  P0=table[10];
  D2=0;
  delay(10);
  D2=1;
  
  P0=table[11];
  D3=0;
  delay(10);
  D3=1;   
}
void main()
{
while(1)
display();
}

評(píng)分

參與人數(shù) 1威望 +5 黑幣 +5 收起 理由
a110 + 5 + 5 很給力!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:63839 發(fā)表于 2014-8-28 13:18 | 只看該作者
數(shù)碼管是四位共陽(yáng)的
回復(fù)

使用道具 舉報(bào)

板凳
ID:44262 發(fā)表于 2014-8-28 15:37 | 只看該作者

回帖獎(jiǎng)勵(lì) +1

樓主 能發(fā)個(gè)電路圖就好了 另外 stc12.h 這個(gè)頭文件 我這里也沒(méi)有 可以改為reg52.h嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:63839 發(fā)表于 2014-8-28 15:44 | 只看該作者
a110 發(fā)表于 2014-8-28 15:37
樓主 能發(fā)個(gè)電路圖就好了 另外 stc12.h 這個(gè)頭文件 我這里也沒(méi)有 可以改為reg52.h嗎?

可以改為reg52
圖片我不知道怎么傳
你看I/O應(yīng)該知道怎么連得 不難的
回復(fù)

使用道具 舉報(bào)

5#
ID:1 發(fā)表于 2014-8-28 17:00 | 只看該作者
按照這個(gè)步驟即可在回帖的時(shí)候上傳圖片


選擇圖片的時(shí)候可以多選,這樣就能一次性上傳很多圖片(上傳附件就在圖片的旁邊 方法一樣)
回復(fù)

使用道具 舉報(bào)

6#
ID:73449 發(fā)表于 2015-4-9 16:42 | 只看該作者
shi ge 表示啥呢?
回復(fù)

使用道具 舉報(bào)

7#
ID:443301 發(fā)表于 2019-6-25 00:25 | 只看該作者
你好 電路發(fā)一下唄?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表