为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 发送端

发送端

2018-03-09 7页 doc 19KB 12阅读

用户头像

is_196623

暂无简介

举报
发送端发送端 #include #define disp_data P0 #define comm P2 #define uchar unsigned char #define uint unsigned int uchar disp[6]; /*******************************************/ /***************DS18B20程序*****************/ /*******************************************/ #inc...
发送端
发送端 #include #define disp_data P0 #define comm P2 #define uchar unsigned char #define uint unsigned int uchar disp[6]; /*******************************************/ /***************DS18B20程序*****************/ /*******************************************/ #include sbit DQ= P3^7; bit F; /*--------------精确延时5us子程序---------*/ void delay5(uchar n) { do { _nop_(); _nop_(); _nop_(); n--; } while(n); } /*--------------初始化函数--------------------*/ void init_ds18b20(void) { // uchar x=0; DQ =1; delay5(10); DQ =0; delay5(120); DQ =1; delay5(16); delay5(80); } /*--------------读取一字节函数----------------*/ uchar readbyte(void) { uchar i=0; uchar date=0; for (i=8;i>0;i--) { DQ =0; delay5(1); DQ =1; //15微秒内拉释放总线 date>>=1; if(DQ) date|=0x80; delay5(11); } return(date); } /*--------------写一字节函数------------------*/ void writebyte(uchar dat) { uchar i=0; for(i=8;i>0;i--) { DQ =0; DQ =dat&0x01;//写"1" 在15微秒内拉低 delay5(12); //写"0" 拉低60微秒 DQ = 1; dat>>=1; delay5(5); } } /*--------------读取温度函数------------------*/ uint readtemp(void) { uchar a,b; uint temp; float tt; init_ds18b20(); writebyte(0xCC); //跳过读序号列号的操作 writebyte(0x44); //启动温度转换 init_ds18b20(); writebyte(0xCC); writebyte(0xBE); //读取温度寄存器 a=readbyte(); b=readbyte(); if(b&0xf8) { temp=b; temp<<=8; temp|=a; temp=~temp; temp+=1; F=1; //温度为负值 } else { temp=b; temp<<=8; temp=temp|a; F=0; //温度为正值 } tt=temp*0.0625*10+0.5; return(tt); } /*******************************************/ /***************DS18B20程序end**************/ /*******************************************/ //共阳极数码管0-9显示 uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x63,0x40,0x00}; //delay :1ms //o, - , 灭 //crystal:12MHz void delay_1ms(uchar m) { uchar a,b,c; for(a=m;a!=0;a--) for(b=2;b!=0;b--) for(c=248;c!=0;c--); } void convert(void) { uint temp; temp=readtemp(); if(F) { disp[0]=12; //温度为负值 disp[1]=11; disp[2]=temp/100; disp[3]=temp/10%10; } else { disp[0]=12; //温度为正值 disp[1]=temp/1000; disp[2]=temp/100%10; disp[3]=temp/10%10; } disp[4]=10; //显示"C" } void display(void) { uchar i,temp; temp=0x24; for(i=0;i<5;i++) { disp_data=table[disp[i]]; //0x24 comm=temp; delay_1ms(2); comm=0x0; temp>>=1; } } void main() { SCON=0X50; TMOD=0X20; PCON=0X80; TH1=0xf3; //根据规定给定时器T1赋初值 TL1=0xf3; //根据规定给定时器T1赋初值 TR1=1; //启动定时器T1 delay_1ms(200); while(1) { convert(); display(); SBUF=disp_data; while(TI==0) ; TI=0; delay_1ms(20); } }
/
本文档为【发送端】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索