久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
關于多個ds18b20測溫數碼管顯示的問題
[打印本頁]
作者:
apin123
時間:
2015-12-12 10:00
標題:
關于多個ds18b20測溫數碼管顯示的問題
為什么使用單個ds18b20測溫用數碼管顯示很正常。
當多個ds18b20測溫時,數碼管顯示其中一個ds18b20的溫度時數碼管一個很亮,其他數碼管很暗還會一直閃??
源碼:
#include"delay.h"
void delay(uint z) //毫秒級延時函數
{
uint x,y;
for(x=z;x>0;x--)
for(y=240;y>0;y--);
}
void delay_18B20(uint t) //ds18b20延時函數
{
while(t--);
}
數碼管程序:
#include<stc12c5a60s2.h>
#include"smg.h"
#include"delay.h"
#define DataPort P1 //定義數據端口 程序中遇到DataPort 則用P0 替換
sbit LATCH2=P2^3; //位選
sbit LATCH1=P2^2; //段選
uchar code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code smg_we[]={0xbf,0x7f};
void display(uchar i,uchar dat)
{
DataPort=0; //清空數據,防止有交替重影
LATCH1=1; //段鎖存
LATCH1=0;
DataPort=smg_we[i]; //取位碼
LATCH2=1; //位鎖存
LATCH2=0;
DataPort=smg_du[dat]; //取顯示數據,段碼
LATCH1=1; //段鎖存
LATCH1=0;
// delay_18B20(200); // 掃描間隙延時,時間太長會閃爍,太短會造成重影
// DataPort=0; //清空數據,防止有交替重影
}
ds18b20程序:
#include<stc12c5a60s2.h>
#include"ds18b20.h"
#include"smg.h"
#include"delay.h" //注:stc12c5a60s2單片機執行一條語句的時間是普通51單片機的1/12,在寫時序時一定要注意到
sbit DQ=P2^0;
uchar code str1[]={0x28,0xC2,0x99,0x41,0x07,0x00,0x00,0xBE}; //ROM 1
uchar code str2[]={0x28,0xAE,0x79,0xFA,0x05,0x00,0x00,0x90}; //ROM 2
uchar data disdata[2];
uint tvalue; //溫度值
void init_ds18b20()//ds1820復位
{
DQ=1; //DQ復位
delay_18B20(40); //延時
DQ=0; //DQ拉低
delay_18B20(1000); //精確延時大于480us
DQ=1; //拉高
delay_18B20(400);
}
void write_byte(uchar dat) //寫一個字節
{
uchar i=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay_18B20(100);
DQ=1;
dat>>=1;
}
}
uchar read_byte() //讀一個字節
{
uchar i=0;
uchar dat=0;
for(i=8;i>0;i--)
{
DQ=0; //給脈沖信號
dat>>=1;
DQ=1; //給脈沖信號
if(DQ)
dat|=0x80;
delay_18B20(100);
}
return(dat);
}
void ds18b20_Matchrom(uchar a) //匹配ROM
{
char j;
write_byte(0x55); //發送匹配ROM命令
if(a==1)
{
for(j=0;j<8;j++)
write_byte(str1[j]); //發送18B20的序列號,先發送低字節
}
if(a==2)
{
for(j=0;j<8;j++)
write_byte(str2[j]); //發送18B20的序列號,先發送低字節
}
}
uchar read_temp(uchar z) //讀取溫度值并轉換
{
uchar a,b;
init_ds18b20();
write_byte(0xcc); //跳過讀序列號
init_ds18b20();
if(z==1)
{
ds18b20_Matchrom(1); //匹配ROM 1
}
if(z==2)
{
ds18b20_Matchrom(2); //匹配ROM 2
}
write_byte(0x44);//*啟動溫度轉換*/
delay(5);
init_ds18b20();
write_byte(0xcc); //跳過讀序列號
init_ds18b20();
if(z==1)
{
ds18b20_Matchrom(1); //匹配ROM 1
}
if(z==2)
{
ds18b20_Matchrom(2); //匹配ROM 2
}
write_byte(0xbe);//*讀取溫度*/
a=read_byte();
b=read_byte();
tvalue=b<<4;
tvalue|=(a&0xf0)>>4;
return(tvalue);
}
void ds1820display()//溫度值顯示
{
if(z==1)
{
read_temp();
disdata[0]=tvalue%100/10;//十位數
display(0,disdata[0]);
delay_18B20(2000);
disdata[1]=tvalue%10;//個位數
display(1,disdata[1]);
// delay(5);
}
}
主程序;
#include"ds18b20.h"
void main()
{
init_ds18b20();
while(1)
{
ds1820display(); //溫度值顯示
}
}
作者:
木木de
時間:
2015-12-12 11:34
多個DS18B20的時候電流較比單個DS18B20需求的電流大,對于這種情況建議 你的數碼管單獨使用供電電源 不要直接用單片機上的電源供電
作者:
1114013515
時間:
2015-12-12 12:37
我也不懂,只是想回答拿個積分下載
作者:
李志博32
時間:
2015-12-20 07:43
使用多個傳感器要用到單總線,你可以看看。
作者:
917106794
時間:
2016-1-20 15:05
這個應該和硬件有關,和軟件沒關系
作者:
13996140473
時間:
2016-1-21 10:20
多個DS18B20的時候電流較比單個DS18B20需求的電流大
作者:
王琪1
時間:
2016-1-21 13:24
看不到C只會用匯編
作者:
月阿拉山口飛機
時間:
2016-4-20 19:25
寫的很好
作者:
帽子屋
時間:
2016-4-20 20:36
這是基于無線的嗎?
作者:
lvwenqiang1988
時間:
2016-4-26 16:26
檢查一下你的硬件電路,看電壓是否有跳動
作者:
lvwenqiang1988
時間:
2016-4-26 16:28
如果電壓很穩定,則可以看看是否存在虛焊的地方;數碼管與單片機之間可以去掉限流電阻
作者:
shenjinliang
時間:
2016-4-26 22:56
首先你需要看看電壓是否穩定,數碼管不亮可能是焊接的問題,或驅動的地方的焊接。既然一個能很亮,很可能在焊接的地方。
作者:
luoluoluo136
時間:
2016-4-27 09:41
和軟件也是有關系的。。。你的延時太久了,導致數碼管刷新很慢,所以會出現這個問題
作者:
jiajuntao
時間:
2016-4-27 09:57
18b20直接讀出的數據在數碼管上來不斷刷,造成數碼管無法顯示。
作者:
月阿拉山口飛機
時間:
2016-5-19 20:39
有什么問題嗎?
作者:
月阿拉山口飛機
時間:
2016-5-19 20:39
怎么只有8幣
作者:
feifeilaobinge
時間:
2016-5-19 23:03
如果寫ROM的時候選擇了跳過序列碼模式,可能導致只有一個溫度傳感器響應
作者:
lx843040583
時間:
2017-5-5 19:36
和軟件也是有關系的吧。延時太久會導致數碼管刷新很慢的
作者:
依然是你
時間:
2017-5-6 13:26
程序的問題 數碼管刷新在2MS左右正常 把顯示程序放在2MS的定時中斷里面就OK了
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美成人a∨高清免费观看 色999日韩
|
国产高清精品一区二区三区
|
亚洲黄色一区二区三区
|
成人免费在线播放
|
日本精品久久久久久久
|
亚洲国产精品一区二区www
|
亚洲三级视频
|
91精品国产91久久久久久
|
欧美啊v在线观看
|
亚洲电影中文字幕
|
欧美精品网
|
男女又爽又黄视频
|
一区二区三区四区av
|
日韩欧美高清dvd碟片
|
99reav
|
美女久久
|
久久精品免费一区二区
|
精品国产一区二区三区性色av
|
欧美成人免费在线视频
|
欧美精品一区二区三区在线
|
97天天干
|
丝袜 亚洲 另类 欧美 综合
|
欧美综合国产精品久久丁香
|
久久成
|
国产免费又黄又爽又刺激蜜月al
|
欧美一区二区三区精品免费
|
亚洲免费网址
|
久久99精品久久久久
|
91视频久久
|
麻豆久久久
|
精品久久久久久
|
久久精品视频网站
|
日韩精品人成在线播放
|
久久精品亚洲精品
|
美女视频h
|
成人av网站在线观看
|
日本免费一区二区三区
|
久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新
|
成人国产精品久久
|
97国产爽爽爽久久久
|
西西裸体做爰视频
|