久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51單片機-ds18b20多點溫度采集proteus仿真-lcd1602顯示 源碼都有還可以讀序列號
[打印本頁]
作者:
51黑ff
時間:
2016-9-9 22:53
標題:
51單片機-ds18b20多點溫度采集proteus仿真-lcd1602顯示 源碼都有還可以讀序列號
51單片機做的多點溫度采集系統(tǒng)的仿真,帶源碼
0.png
(18.64 KB, 下載次數(shù): 93)
下載附件
2016-9-9 22:50 上傳
0.png
(76.29 KB, 下載次數(shù): 72)
下載附件
2016-9-9 22:50 上傳
全部資料下載:
51單片機-ds18b20多點采集-lcd1602顯示.zip
(56.56 KB, 下載次數(shù): 290)
2016-9-9 22:53 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
lcd1602顯示ds18b20讀溫度程序:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit lcdrs=P3^0;
sbit lcdrw=P3^1;
sbit lcden=P3^2;
sbit DQ=P1^7;
uint value;
uchar code table1[]={0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e};//rom1 測得的序列號
uchar code table2[]={0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9};//rom2
uchar code table3[]="Temple";
bit fg=0;
void delay(uint n)
{ uint x,y;
for(x=n;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0; //rs=0時輸入指令
P2=com;
delay(5);
lcden=1; //en=1時讀取信息
delay(5);
lcden=0; //1 -> 0 執(zhí)行指令
}
void write_dat(uchar dat)
{
lcdrs=1; //rs=1時輸入數(shù)據(jù)
P2=dat;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init_lcd()
{
lcden=0;
lcdrw=0;
write_com(0x38); //8位數(shù)據(jù),雙列,5*7字形
write_com(0x0c); //開啟顯示屏,關光標,光標不閃爍
write_com(0x06); //顯示地址遞增,即寫一個數(shù)據(jù)后,顯示位置右移一位
write_com(0x01);
}
void delay_us(uchar t)//微妙延時
{
while(t--);
}
void init_ds18b20() //數(shù)據(jù)初始化
{
DQ=1;
delay_us(4);
DQ=0;
delay_us(80);
DQ=1;
delay_us(200);
}
void write_ds18b20(uchar dat) //寫數(shù)據(jù)
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
DQ=dat&0x01;
delay_us(15);
DQ=1;
dat=dat>>1;
}
delay_us(10);
}
uchar read_ds18b20() //讀數(shù)據(jù)
{
uchar i=0,readat=0;
for(i=0;i<8;i++)
{
DQ=0;
readat=readat>>1; //八位全部都是0,向右移一位后,仍然全是0
DQ=1;
if(DQ) //如果DQ為1,readat進行或運算,如果為0,則子語句不執(zhí)行,直接for循環(huán)此時采集的數(shù)據(jù)是0
readat=readat|0x80;//此時最高位為1 ,然后再進行for循環(huán) 最高位成為第七位,依次往復
delay_us(10);
}
return readat;
}
void check_rom(uchar a) //匹配序列號
{
uchar j;
write_ds18b20(0x55);
if(a==1)
{
for(j=0;j<8;j++)
{
write_ds18b20(table1[j]);
}
}
if(a==2)
{
for(j=0;j<8;j++)
{
write_ds18b20(table2[j]);
}
}
}
uchar change_ds18b20(uchar z)
{
uchar tl,th;
init_ds18b20(); //初始化
write_ds18b20(0xcc); //跳過
init_ds18b20();
if(z==1)
{
check_rom(1); // 匹配rom1
}
if(z==2)
{
check_rom(2); // 匹配rom2
}
write_ds18b20(0x44);
init_ds18b20();
write_ds18b20(0xcc);
init_ds18b20();
if(z==1)
{
check_rom(1); //
}
if(z==2)
{
check_rom(2); //
}
write_ds18b20(0xbe); //啟動讀暫存器。讀內(nèi)部ram中9字節(jié)溫度數(shù)據(jù)
tl=read_ds18b20();
th=read_ds18b20();
value=th;
value=value<<8;
value=value|tl;
if(th < 0x80)
{ fg=0; }
if(th>= 0x80)
{ fg=1;
value=~value+1;
}
value=value*(0.0625*10);
return value;
}
void display_lcd1602(uchar z)
{
uchar i;
if(z==1)
{
write_com(0x80);
for(i=0;i<6;i++)
{
write_dat(table3[i]);
delay(3);
}
write_dat(0x2d);
write_dat(0x41);
write_dat(0x3a);
if(fg==1)
{
write_dat(0xb0);
}
if(fg==0)
{
write_dat(0x20);
}
write_dat(value/100+0x30);
write_dat(value%100/10+0x30);
write_dat(0x2e);
write_dat(value%10+0x30);
write_dat(0xdf);
write_dat(0x43);
}
if(z==2)
{
write_com(0x80+0x40);
for(i=0;i<6;i++)
{
write_dat(table3[i]);
delay(3);
}
write_dat(0x2d);
write_dat(0x42);
write_dat(0x3a);
if(fg==1)
{
write_dat(0xb0);
}
if(fg==0)
{
write_dat(0x20);
}
write_dat(value/100+0x30);
write_dat(value%100/10+0x30);
write_dat(0x2e);
write_dat(value%10+0x30);
write_dat(0xdf);
write_dat(0x43);
}
}
void main()
{
init_lcd();
while(1)
{
change_ds18b20(1);
display_lcd1602(1);
change_ds18b20(2);
display_lcd1602(2);
}
}
復制代碼
lcd1602顯示ds18b20溫度采集讀序列號程序
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit lcdrs=P3^0;
sbit lcdrw=P3^1;
sbit lcden=P3^2;
sbit DQ=P1^7;
uint value;
uchar save_number[8];
void delay(uint n)
{ uint x,y;
for(x=n;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0; //rs=0時輸入指令
P2=com;
delay(5);
lcden=1; //en=1時讀取信息
delay(5);
lcden=0; //1 -> 0 執(zhí)行指令
}
void write_dat(uchar dat)
{
lcdrs=1; //rs=1時輸入數(shù)據(jù)
P2=dat;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init_lcd()
{
lcden=0;
lcdrw=0;
write_com(0x38); //8位數(shù)據(jù),雙列,5*7字形
write_com(0x0c); //開啟顯示屏,關光標,光標不閃爍
write_com(0x06); //顯示地址遞增,即寫一個數(shù)據(jù)后,顯示位置右移一位
write_com(0x01);
}
void delay_us(uchar t)//微秒延時
{
while(t--);
}
void init_ds18b20() //數(shù)據(jù)初始化
{
DQ=1;
delay_us(4);
DQ=0;
delay_us(80);
DQ=1;
delay_us(200);
}
void write_ds18b20(uchar dat) //寫數(shù)據(jù)
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
DQ=dat&0x01;
delay_us(15);
DQ=1;
dat=dat>>1;
}
delay_us(10);
}
uchar read_ds18b20() //讀數(shù)據(jù)
{
uchar i=0,readat=0;
for(i=0;i<8;i++)
{
DQ=0;
readat=readat>>1; //八位全部都是0,向右移一位后,仍然全是0
DQ=1;
if(DQ) //如果DQ為1,readat進行或運算,如果為0,則子語句不執(zhí)行,直接for循環(huán)此時采集的數(shù)據(jù)是0
readat=readat|0x80;//此時最高位為1 ,然后再進行for循環(huán) 最高位成為第七位,依次往復
delay_us(10);
}
return readat;
}
uchar change_ds18b20()
{
uchar tl,th;
init_ds18b20(); //初始化
write_ds18b20(0xcc); //跳過rom
write_ds18b20(0x44); //啟動ds18b20進行溫度轉換,結果存入9字節(jié)ram中
init_ds18b20(); //? 缺少不可執(zhí)行
write_ds18b20(0xcc);
write_ds18b20(0xbe); //啟動讀暫存器。讀內(nèi)部ram中9字節(jié)溫度數(shù)據(jù)
tl=read_ds18b20();
th=read_ds18b20();
value=th;
value=value<<8;
value=value|tl;
value=value*(0.0625*10)+0.5;
return value;
}
void dis_readnumber()
{
uchar i,temp;
init_ds18b20();
write_ds18b20(0x33); //讀rom 即rom中的編碼
for(i=0;i<8;i++)
{
save_number[i]=read_ds18b20(); //保存序列號
}
write_com(0x80);
for(i=0;i<8;i++)
{
temp=save_number[i]>>4;
if(temp<10)
{
write_dat(0x30+temp);
}
else
{
write_dat(0x37+temp);
}
temp=save_number[i]&0x0f;
if(temp<10)
{
write_dat(0x30+temp);
}
else
{
write_dat(0x37+temp);
}
}
}
void main()
{
init_lcd();
while(1)
{
dis_readnumber(); //顯示序列號
}
}
復制代碼
作者:
437653720
時間:
2017-6-26 19:16
看起來不錯啊 比我的 高大上
作者:
茶涼尐
時間:
2018-3-5 22:45
proteus中的傳感器的序列號只有6個數(shù)字,lz這個長的是要設置過嗎
作者:
年邁的司機
時間:
2018-4-18 20:57
很棒啊
作者:
超級無敵磊果果
時間:
2019-4-28 14:57
想請問protues中ds18b20的ROm怎么設置 實際檢測出來的ROM有16位 而仿真里面只能填寫6位
作者:
1780392324
時間:
2020-3-16 11:49
為什么我拿過來后顯示不了溫度呢?
作者:
zlj20181110
時間:
2021-9-28 19:48
正在找這個資料,感謝
作者:
liuyiyi
時間:
2022-1-6 08:51
感謝你,正在學習中,多路檢測正發(fā)愁那
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
www.奇米
|
日日干日日
|
av成年人网站
|
99精品视频免费观看
|
综合国产
|
精品久久久久久久久久
|
九九热在线视频观看这里只有精品
|
国产精品久久久久久久久久妇女
|
韩国欧洲一级毛片
|
国产精品国产成人国产三级
|
精品国产第一区二区三区
|
亚洲高清在线视频
|
欧美视频xxx
|
狠狠操天天操
|
国产欧美精品一区二区
|
亚洲黄色av
|
国产综合视频
|
日日夜夜狠狠操
|
亚洲一区二区在线视频
|
仙人掌旅馆在线观看
|
亚洲不卡在线观看
|
国产高清视频在线观看
|
狠狠ri
|
狠狠干五月天
|
色婷婷综合久久久中字幕精品久久
|
特黄特黄a级毛片免费专区 av网站免费在线观看
|
日一区二区三区
|
91精品国产一区二区三区
|
久久久亚洲一区
|
婷婷丁香激情
|
欧美综合一区
|
亚洲人成一区二区三区性色
|
久久69精品久久久久久久电影好
|
免费观看黄色一级片
|
国产片侵犯亲女视频播放
|
亚洲福利片
|
狠狠狠色丁香婷婷综合久久五月
|
久久狠狠
|
天天操夜夜操
|
日韩电影中文字幕在线观看
|
日韩av一区二区在线观看
|