嵌入式开发-温度采集程序.docxVIP

  • 5
  • 0
  • 约3.75千字
  • 约 6页
  • 2018-05-30 发布于广东
  • 举报
/********************主文件****************//***************************文件名称:基于林洋单片机的温度采集程序,LCD1602显示程序用器:林洋单片机STC89C52LCD1602液晶显示屏DS18B20温度传感器程序说明:由于林洋单片机集成了LCD1602模块,所以直接把LCD1602插进所在槽即可林洋单片机也集成了DS18B20模块,同样。若用于其他单片机,只有修改引脚端即可更新时间:2014-06-04 18:49:57邮箱:1271087623@********************************/#includereg51.h#include ds18b20.h#include LCD1602.hunsigned char code str1[]={temperature: };unsigned char code str2[]={ };/************初始化显示*************/voidinit_play(){lcd_init();wr_com(0x80);display(str1);wr_com(0xc0);display(str2);}/****************温度值显示**************/ void ds1820disp()//温度值显示{ ucharflagdat;disdata[0]=tvalue/1000+0x30;//百位数disdata[1]=tvalue%1000/100+0x30;//十位数disdata[2]=tvalue%100/10+0x30;//个位数disdata[3]=tvalue%10+0x30;//小数位if(tflag==0)flagdat=0x20;//正温度不显示负号elseflagdat=0x2d;//负温度显示负号:-if(disdata[0]==0x30) {disdata[0]=0x20;//如果百位为0,不显示if(disdata[1]==0x30) {disdata[1]=0x20;//如果百位为0,十位也为0,不显示 } }wr_com(0xc0);wr_dat(flagdat);//显示符号位wr_com(0xc1);wr_dat(disdata[0]);//显示百位wr_com(0xc2);wr_dat(disdata[1]);//显示十位wr_com(0xc3);wr_dat(disdata[2]);//显示个位wr_com(0xc4);wr_dat(0x2e);//显示小数点wr_com(0xc5);wr_dat(disdata[3]);//显示小数位 }/********************主程序***********************************/void main(){ init_play();//初始化显示while(1){read_temp();//读取温度 ds1820disp();//显示}}/******************ds18b20.h头文件**************************///*******ds18b20.h**********//#define uchar unsigned char#define uint unsigned intsbit DQ=P3^2;//ds18b20与单片机接口uinttvalue;//温度值uchartflag;//温度正负标志uchar data disdata[5];//缓存区/******************************ds1820程序***************************************/void delay_18B20(unsigned int i)//延时1ms{while(i--);}void ds1820rst()/*ds1820复位*/{ unsigned char x=0;DQ = 1; //DQ复位delay_18B20(4); //延时DQ = 0; //DQ拉低delay_18B20(100); //精确延时大于480usDQ = 1; //拉高delay_18B20(40); } uchar ds1820rd()/*读数据*/{ unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i--){ DQ = 0; //给脉冲信号dat=1; DQ = 1; //给脉冲信号if(DQ)dat|=0x80;

文档评论(0)

1亿VIP精品文档

相关文档