單線掛載多個ds18b20源碼,一份讀取單個ds18b20 rom,一份掛載多個ds18b20的,程序里只掛載了兩個,修改一下可以掛載多個,lcd1602顯示讀取的溫度
0.jpg (9.82 KB, 下載次數: 58)
下載附件
2018-1-13 18:27 上傳
單片機源程序如下:
- #include"ds18b20.h"
- uchar rom[2][8]={
- {0x28,0x6e,0xe4,0x4d,0x06,0x00,0x00,0xa7},
- {0x28,0xff,0xa3,0xfd,0xa4,0x16,0x05,0xc8}};
- int temp[2];
- void dsinit()
- {
- uchar i;
- dsport=0;
- i=90;
- while(i--);
- dsport=1;
- i++;
- i++;
- while(dsport);
- while(!dsport);
- i++;
- i++;
- }
- void dssendbit(bit x)
- {
- uchar i;
- dsport=0;
- i++;
- i++;
- dsport=x;
- i=9;
- while(i--);
- dsport=1;
- i++;
- i++;
- }
- bit dsreadbit()
- {
- uchar i;
- bit x=0;
- dsport=0;
- i++;
- i++;
- dsport=1;
- i++;
- i++;
- if(dsport)
- {
- x=1;
- }
- i=9;
- while(i--);
- return x;
- }
- void dssendbyte(uchar byte)
- {
- uchar n;
- for(n=0;n<8;n++)
- {
- dssendbit(byte&0x01);
- byte>>=1;
- }
- }
- uchar dsreadbyte()
- {
- uchar n,dat;
- for(n=0;n<8;n++)
- {
- dat>>=1;
- if(dsreadbit())
- {
- dat|=0x80;
- }
- }
- return dat;
- }
- /*void dsconvert()
- {
- uchar i;
- dsinit();
- dssendbyte(0xcc);
- dssendbyte(0x44);
- i++;
- i++;
- while(!dsport);
- i++;
- i++;
- }
- void dsreadtempcom()
- {
- dsinit();
- dssendbyte(0xcc);
- dssendbyte(0xbe);
- }*/
- void dsreadtemp()
- {
- uchar tml,tmh,n,v,i;
- for(n=0;n<2;n++)
- {
- dsinit();
- dssendbyte(0x55);
- for(v=0;v<8;v++)
- {
- dssendbyte(rom[n][v]);
- }
- dssendbyte(0x44);
- i++;
- i++;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
單線掛載多路ds18b20.zip
(75.52 KB, 下載次數: 70)
2018-1-13 16:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|