多级通信测温系统程序单片机

上传人:ji****72 文档编号:25976677 上传时间:2017-12-20 格式:DOC 页数:20 大小:155.50KB
返回 下载 相关 举报
多级通信测温系统程序单片机_第1页
第1页 / 共20页
多级通信测温系统程序单片机_第2页
第2页 / 共20页
多级通信测温系统程序单片机_第3页
第3页 / 共20页
多级通信测温系统程序单片机_第4页
第4页 / 共20页
多级通信测温系统程序单片机_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《多级通信测温系统程序单片机》由会员分享,可在线阅读,更多相关《多级通信测温系统程序单片机(20页珍藏版)》请在金锄头文库上搜索。

1、附 1:源程序代码一、主机#include#define uchar unsigned char#define uint unsigned intsbit beep=P35;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar RecData;uchar tmp;uint wei;sbit H1=P36;sbit L1=P05;sbit L2=P06;sbit L3=P07;void UART_int() TMOD=0X21;T

2、H1=0XFD;TL1=0XFD;SCON=0XD0;TH0=(65535-45872)/256;TL0=(65536-45872)%256;EA=1;TR1=1;TR0=1;ET0=1;ES=1;EA=1;TI=0; void delay(uint num) while(num-);void key() H1=0;if(L1=0)delay(10);if(L1=0)RecData=b;wei=11;while(!L1);if(L2=0)delay(10);if(L2=0)RecData=c;wei=12;while(!L2); void display(uint temp) /显示程序uch

3、ar A1,A2,A2t,A3;A1=temp/100;A2t=temp%100;A2=A2t/10;A3=A2t%10; P1=tablewei;P0=0XFE;delay(50);P1=tableA1; /显示十位P0=0XFD;delay(50);P1=tableA2|0x80; /显示个位P0=0XFB;delay(50);P1=tableA3; /显示分位P0=0XF7;delay(50);void warn(uint s) uchar i;i=s;beep=0;P2=0x00;while(i-) display(tmp);beep=1;P2=0xff;i=s;while(i-) d

4、isplay(tmp);void deal(uint t) if(t50&t300) warn(10);void putc_to(uchar c) SBUF=c;while(TI=0)TI=0;void main() P1M0=0xff;P1M1=0x00;UART_int();while(1) key();display(tmp);TB8=1;putc_to(RecData);deal(tmp);com_int(void) interrupt 4 if(RI) tmp=SBUF;RI=0;void intt0() interrupt 1 uchar miao,a,num;TH0=(65535

5、-45872)/256;TL0=(65536-45872)%256;num+;if(num=20) num=0;miao+;if(miao=5) miao=0;a+;if(a=1) RecData=b;wei=11;if(a=2) RecData=c;wei=12;a=0;2、B 从机#include #define uchar unsigned char#define uint unsigned intsbit DQ=P22;sbit beep=P23;sbit led=P20;uchar RecData; unsigned char code table=0x3f,0x06,0x5b,0x

6、4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay(uint num) while(num-);/*函数名称:void Init_DS18B20(void)返回值:无参数:无作用:初始化 18B20*/ void Init_DS18B20(void)char x=0;DQ=1;delay(10);/稍作延时 DQ=0;delay(800);/延时480us 540usDQ=1; /拉高总线 15-60usdelay(50);x=DQ;/读总线状态 为 0复位成功,为 1则不成功 delay(30);

7、DQ=1;/释放总线/*函数名称:uchar ReadOneChar(void)返回值:uchar dat参数: 无作用:读 1820一个字节*/uchar ReadOneChar(void)uchar i;uchar dat=0;for(i=0;i=1;DQ=1;/给脉冲if(DQ) dat|=0x80;/读 1 / 读 0右移处理 delay(20);/15us内读完一个数return(dat);/*函数名称:void WriteOneChar(uchar dat)返回值:无参数: uchar dat作用:写 1820一个字节*/*写 DS18B20*/写 0 60us读完,写 1 30u

8、s 内读完void WriteOneChar(uchar dat) uint i;uchar j;bit testb;for(j=1;j1;if(testb) /write 1DQ=0;i+;i+;i+;DQ=1;i=15;while(i0)i-;elseDQ=0; /write 0i=15;while(i0)i-;DQ=1;i+;i+;i+; /*函数名称:int ReadOneTemperature(void)返回值:int t参数: 无作用:读温度值*/void tmpchange(void) /DS18B20 begin changeInit_DS18B20();delay(1);Wr

9、iteOneChar(0xcc); / address all drivers on busWriteOneChar(0x44); / initiates a single temperature conversionint ReadOneTemperature(void) /*读取温度值*/ 每次读写均要先复位 uint a,b,t;float tep;Init_DS18B20();WriteOneChar(0xcc);/发跳过 ROM命令WriteOneChar(0xbe);/读寄存器,共九字节,前两字节为转换值a=ReadOneChar(); /a存低字节b=ReadOneChar();

10、 /b存高字节t=b;t50&t300) warn(10);void init_com(void) TMOD=0X20;PCON=0X00;SCON=0XF0; TH1=0XFD;TL1=0XFD;TR1=1;ES=1;EA=1;PS=1;void comm(uint a) SBUF=a;while(!TI);TI=0;void main() P1M1=0x00;P1M0=0xff;init_com();while(1) tmpchange();display(ReadOneTemperature();deal(ReadOneTemperature();com_int(void) interr

11、upt 4 if(RI)RecData=SBUF;RI=0; if(RB8=1)if(RecData=b) SM2=0;tmpchange();comm(ReadOneTemperature();display(ReadOneTemperature();deal(ReadOneTemperature();SM2=1;elseSM2=1; 3、C 从机#include #define uchar unsigned char#define uint unsigned intsbit DQ=P22;sbit beep=P23;sbit led=P20;uchar RecData; unsigned

12、char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay(uint num) while(num-);/*函数名称:void Init_DS18B20(void)返回值:无参数:无作用:初始化 18B20*/ void Init_DS18B20(void)char x=0;DQ=1;delay(10);/稍作延时DQ=0;delay(800);/延时480us 540usDQ=1; /拉高总线 15-60usdelay(50);x=DQ;/

13、读总线状态 为 0复位成功,为 1则不成功 delay(30);DQ=1;/释放总线/*函数名称:uchar ReadOneChar(void)返回值:uchar dat参数: 无作用:读 1820一个字节*/uchar ReadOneChar(void)uchar i;uchar dat=0; for(i=0;i=1;DQ=1;/给脉冲if(DQ) dat|=0x80;/读 1 / 读 0右移处理 delay(20);/15us内读完一个数return(dat);/*函数名称:void WriteOneChar(uchar dat)返回值:无参数: uchar dat作用:写 1820一个字节*/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号