|
51單片機做的 單總線掛接4路ds18B20的動態(tài)溫度監(jiān)測系統(tǒng)
以上全部資料下載:
單總線掛接4路ds18B20溫度監(jiān)測系統(tǒng).zip
(273.05 KB, 下載次數(shù): 46)
2016-4-27 20:30 上傳
點擊文件名下載附件
文件
實物圖:
4路ds18B20溫度監(jiān)測系統(tǒng)proteus仿真圖電路圖:
部分程序預(yù)覽(完整代碼請下載附件):
- #include "lcd1602.h"
- #include "ds18b20.h"
- unsigned char temp[5];
- extern char xiaoshu_temp[5],zhen_temp[4];
- extern bit flag;
- extern bit dot_dis;
- sbit beep=P2^3;
- uchar ds18b20_num1[8]={0x8e,0x00,0x00,0x00,0xb8,0xc5,0x30,0x28};
- uchar ds18b20_num2[8]={0xfd,0x00,0x00,0x00,0xb8,0xc5,0x45,0x28};
- uchar ds18b20_num3[8]={0xb9,0x00,0x00,0x00,0xb8,0xc5,0x31,0x28};
- uchar ds18b20_num4[8]={0xe0,0x00,0x00,0x00,0xb8,0xc5,0x32,0x28};
- void delay(unsigned int time)
- {
- unsigned int i,j;
- for(i=0;i<time;i++)
- for(j=0;j<200;j++);
- }
-
- void main(void)
- {
- uchar i;
- char *str1="1:";
- char *str2="2:";
- char *str3="3:";
- char *str4="4:";
- serial_set();
- Lcd_Init();
- ClrScreen();
- GotoXY(0,0);
- dot_dis=1;
- while(1)
- {
- ds18b20_init();
- ds18b20_writecommand(0xcc);
- ds18b20_writecommand(0x44); //轉(zhuǎn)換
- delay(500);
- match_rom(ds18b20_num1); //匹配第一路
- ds18b20_writecommand(0xbe); //讀
- for(i=0;i<2;i++)
- {
- temp[i]=ds18b20_readdata();
- }
- temperature_process(temp[0],temp[1]);
- Screen_home();
- Print(str1);
- if(!flag) //正
- {
- Print(zhen_temp);
- if(dot_dis)
- Print(".");
- Print(xiaoshu_temp);
- }
- else //負
- {
- Print("-");
- Print(zhen_temp);
- if(dot_dis)
- Print(".");
- Print(xiaoshu_temp);
- }
- Print(" ");
- ds18b20_init();
- ds18b20_writecommand(0xcc);
- ds18b20_writecommand(0x44); //轉(zhuǎn)換
- delay(500);
- match_rom(ds18b20_num2); //匹配第二路
- ds18b20_writecommand(0xbe); //讀
- for(i=0;i<2;i++)
- {
-
- temp[i]=ds18b20_readdata();
-
- }
- temperature_process(temp[0],temp[1]);
- GotoXY(9,0);
- Print(str2);
-
- if(!flag) //正
- {
- Print(zhen_temp);
- if(dot_dis)
- Print(".");
- Print(xiaoshu_temp);
- }
- else //負
- {
- Print("-");
- Print(zhen_temp);
- if(dot_dis)
- Print(".");
- Print(xiaoshu_temp);
- }
- Print(" ");
- ds18b20_init();
- ds18b20_writecommand(0xcc);
- ds18b20_writecommand(0x44); //轉(zhuǎn)換
- delay(500);
- match_rom(ds18b20_num3); //匹配第三路
- ds18b20_writecommand(0xbe); //讀
- for(i=0;i<2;i++)
- {
-
- temp[i]=ds18b20_readdata();
-
- }
- temperature_process(temp[0],temp[1]);
- GotoXY(0,1);
- Print(str3);
-
- if(!flag) //正
- {
- Print(zhen_temp);
- if(dot_dis)
- Print(".");
- Print(xiaoshu_temp);
- }
- else //負
- {
- Print("-");
- Print(zhen_temp);
- if(dot_dis)
- Print(".");
- Print(xiaoshu_temp);
- }
- Print(" ");
- ds18b20_init();
- ds18b20_writecommand(0xcc);
- ds18b20_writecommand(0x44); //轉(zhuǎn)換
- delay(500);
- match_rom(ds18b20_num4); //匹配第二路
- ds18b20_writecommand(0xbe); //讀
- for(i=0;i<2;i++)
- {
-
- temp[i]=ds18b20_readdata();
-
- }
- temperature_process(temp[0],temp[1]);
- GotoXY(9,1);
- Print(str4);
- if(!flag) //正
- {
- Print(zhen_temp);
- if(dot_dis)
- Print(".");
- Print(xiaoshu_temp);
- }
- else //負
- {
- Print("-");
- Print(zhen_temp);
- if(dot_dis)
- Print(".");
- Print(xiaoshu_temp);
- }
- Print(" ");
- //delay(100);
- }
- while(1);
-
- }
復(fù)制代碼
|
評分
-
查看全部評分
|