多点式单总线数字温度监测系统(完整程序)(6)

2018-11-22 18:40

extern void serial_set(void); extern uchar * read_rom(void); extern bit match_rom(uchar *rom); #endif

4.4.3主函数程序:

#include \#include \#include #include #include #include unsigned char temp[5];

extern char xiaoshu_temp[5],zhen_temp[4]; extern bit flag; extern bit dot_dis;

uchar ds18b20_num1[8]={0xfd,0x00,0x00,0x00,0xb8,0xc5,0x45,0x28}; uchar ds18b20_num2[8]={0x8e,0x00,0x00,0x00,0xb8,0xc5,0x30,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}; #define uchar unsigned char #define uint unsigned int void serial_set(void);

void process(unsigned char,unsigned char); char volatile xiaoshu_temp[5],zhen_temp[4]; bit flag; bit dot_dis=1; sbit DQ=P1^0; //sbit DQ=P2^3;

extern unsigned char temp[5];

void delay(unsigned int time) {

unsigned int i,j;

6

//

}

for(i=0;i

for(j=0;j<200;j++);

void main(void) {

uchar i;

uchar *ds18b20_rom; char *str2=\char *str3=\char *str4=\serial_set(); char *str1=\

Lcd_Init(); ClrScreen();

GotoXY(0,0); dot_dis=1;

/*ds18b20_rom=read_rom(); for(i=0;i<8;i++) { }

GotoXY(0,1); for(i=0;i<8;i++) { }

while(1);*/

print_char(ds18b20_num2[i]/16); print_char(ds18b20_num2[i]);

//显示序列号

ds18b20_num2[i]=*ds18b20_rom; ds18b20_rom++;

//读序列号

while(1) {

ds18b20_init();

ds18b20_writecommand(0xcc);

ds18b20_writecommand(0x44); //转换

7

delay(500);

match_rom(ds18b20_num1); //匹配第一路 ds18b20_writecommand(0xbe); //读 for(i=0;i<2;i++) { }

temperature_process(temp[0],temp[1]); Screen_home(); Print(str1); if(!flag) //正 { }

else //负 {

Print(\Print(zhen_temp); if(dot_dis) Print(\

Print(xiaoshu_temp);

Print(zhen_temp); if(dot_dis) Print(\

Print(xiaoshu_temp);

temp[i]=ds18b20_readdata();

}

Print(\ds18b20_init();

ds18b20_writecommand(0xcc);

ds18b20_writecommand(0x44); //转换 delay(500);

match_rom(ds18b20_num2); //匹配第二路 ds18b20_writecommand(0xbe); //读 {

for(i=0;i<2;i++)

8

}

temp[i]=ds18b20_readdata();

temperature_process(temp[0],temp[1]); GotoXY(9,0); Print(str2); { }

else //负 {

Print(\Print(zhen_temp); if(dot_dis) Print(\

Print(xiaoshu_temp);

Print(zhen_temp); if(dot_dis) Print(\

Print(xiaoshu_temp);

if(!flag) //正

}

Print(\ds18b20_init();

ds18b20_writecommand(0xcc);

ds18b20_writecommand(0x44); //转换 delay(500);

match_rom(ds18b20_num3); //匹配第三路 ds18b20_writecommand(0xbe); //读 {

temp[i]=ds18b20_readdata(); }

temperature_process(temp[0],temp[1]); GotoXY(0,1); Print(str3);

for(i=0;i<2;i++)

9

if(!flag) //正

{ }

else //负 {

Print(\Print(zhen_temp); if(dot_dis) Print(\

Print(xiaoshu_temp);

Print(zhen_temp); if(dot_dis) Print(\

Print(xiaoshu_temp);

}

Print(\ds18b20_init();

ds18b20_writecommand(0xcc);

ds18b20_writecommand(0x44); //转换 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); {

Print(zhen_temp); if(dot_dis) Print(\

if(!flag) //正

10


多点式单总线数字温度监测系统(完整程序)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:案例分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: