版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、main.c #include #includeinclude 18b20.h#include 16O2.h#define uchar unsigned char#define uint unsigned int extern bit flag;void main()(uchar a;init();/1602初始化函数do(tmpchangeO; /DS18B20 开始转化温度 for(a=10;a0;a-)display(tmpO);/display(134) ;/1602 显示) while(l);)18b20.h#ifndef_18B20_H_#define_18B20_H_#defin
2、e uchar unsigned char#define uint unsigned int void delay(unsigned int count); void dsreset(void);bit tmpreadbit(void);uchar tmpread(void);void tmpwritebyte(uchar dat);void tmpchange(void);uint tmp();#endif18b20.c/*_:去 2 H 木口 L */ / / / / /if(kl 二二 0)delayms(30); if(kl=0)/ / / / / / / / / / / / / /
3、/if(flag_H)(H-;if(H 二二 255)(H = l;flag_H=0;)else(H + + ; TOC o 1-5 h z /)/if(k2=0)/delayms(30);/if(k2=0)/if(flag_H)H+;/else/H;/if(H=255)/H = l;/flag_H = l;/)/ )/ / )/if(flag_H)/tablel2=1-;/- / TOC o 1-5 h z /else/tablel2=1+1;/+/)/tablel3 = H/10+0;/2/tablel4 = H%10+10;/3/*算法2 H和L无符号数结束* write_com(0 x
4、80+0 x40);for(x=0;x15;x+)(write_date(tablelx);/ delay(15);)/*8b20女台石马*#include #define uchar unsigned char#define uint unsigned intsbit DS=P3A2;uint temp; 18b20 测温返回 16 位实参,例:236 (23.6)bit flag;void delay(uint count)(uint i;while(count)i=200;while(i0) i-; count-;)void dsreset(void)uint i;DS=0;i=103;
5、while(i0)i-;DS=1;i=4;while(i0)i-;)bit tmpreadbit(void)(uint i;bit dat;DS=0;i+ + ;DS = l;i+ + ;i +;dat=DS;i=8;while(i0)i-;return (dat);)uchar tmpread(void)(uchar ij.dat;dat=0;for(i = l;i=8;i+)j=tmpreadbit();dat=(j7)|(datl);读出的数据最低位在最前面,这样刚好一个字节在DAT)return(dat);)void tmpwritebyte(uchar dat) /write a b
6、yte to dsl8b20(uint i;uchar j;bit testb;for(j=l;jl;if(testb)(DS=0;i +;i +;DS=1;i=8;while(i0)i-;)else(DS=0;i=8;while(i0)i-;DS=1;i +;i +;)void tmpchange(void)(dsreset();delay(l);tmpwritebyte(Oxcc);tmpwritebyte(0 x44);uint tmp()读取18B20的温度236显示23.6float tt;uchar a,b;dsreset();delay(l);tmpwritebyte(Oxcc)
7、;tmpwritebyte(Oxbe);a=tmpread();b=tmpread();temp=b;temp=8;temp=temp|a;判断正负温度值.temp如果为正flag为0,如果为负flag为1if(temp&0 xf800)=0 xf800)/1111 1000 0000 0000 为负温度值flag=l;temp 二temp+1; else flag=O;)tt=temp*0.0625;temp=tM0+0.5; /25,0625*10+0.5=250,625+0.5=251,125 约等于 251 (25.1)小数点后 一位四舍五入return temp; /0-65535
8、,-99.9+99.9 (0-999)返回 251)16O2,h#ifndef_1602_H_#define_1602_H_int delayms(unsigned char xms);int write_com(unsigned char com);写命令的函数体int write_date(unsigned char date);写数据的函数体int init();初始化函数体void display(uint x);/1602 显示程序#endif1602.C/*602 彳刃女台、娄攵*#include #define uchar unsigned char#define uint un
9、signed intuchar table二1,2,3,4,5,6,7,8,9;uchar tablel=/uchar tablel=2,;unsigned char x;char H,L; 算法 1/uchar H;算法 2extern bit flag;bit flag_H;sbit RS = P2A0;sbit RW = P2八 1;sbit EN = P2八2;sbit kl=PlAO;sbit k2=PlAl;sbit k3=PlA3;sbit k4=PlA4;sbit re=PlA7;sbit leng=PlA6;I*/int delayms(unsigned char xms)(
10、unsigned char x,y;for(x=xms;x0;x-)for(y=110;y0;y-);return 0;)int write_com(unsigned char com)写命令的函数体(RS = 0;RW = 0;PO = com;delayms(5);EN = 1;delayms(5);EN = 0;return 0;)int write_date(unsigned char date)写数据的函数体RS = 1;RW = 0;P0 = date; delayms(5);EN = 1; delayms(5); EN = 0;return 0;)int init()初始化函数体
11、(EN = 0;write_com(0X38);设置16*2显示,5*7点阵,8位数据接口 write_com(0X0C);设置开显示,不显示光标 write_com(0X06);写一个字符时,整屏右移 write_com(0X01);显示清零 return 0;)测试显示一个数值T : +23.6C。,9个元素,-23.6 (236)void display(uint x)/1602 显示程序 251uchar i;uchar Al,A2,A2t,A3;/25.1C0ucharchar t_temp; 算法 1Al=x/100;A2t=x%100;A2=A2t/10;A3=A2t%10;/百
12、位2十位5个位1table0=0 x54;/Ttablel=0 x3a;/:t_temp=Al*10+A2;为正显示+ ,为负显示-进行判断if(flag=O) table2=0 x2b; /+/ t_temp=Al*10+A2;)else(table2=-;/+/ t_temp=Al*10+A2;t_temp=-t_temp+l;)/ table2=0 x2b; /+ table3=Al+0;/2 table4=A2+0;/3 table5=0 x2e;/.table6=A3+101;/6 table7=0 xdf;table8=C;write_com(0 x80);for(i=0;i200)/H=256%H;/ )/夫a算法 1 H和L有符号数* if(kl=0)delayms(30);if(kl=O)(H + + ;if(k2 二二 0)(delayms(30); if(k2=0) (H-;)if(H0)t_h =H + l;tablel2=1-;/-)elset_h=H;tablel2=1+1; /+tablel3=t_h/104-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论