资源描述:
《数码管显示实时温度》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、模块化数码管显示实时温度DS18B20单片机AT89C51温度芯片DS18B20数码管共阳7407驱动采用模块化编程/*delay.h*/#ifndef_DELAY_H#define_DELAY_H_#defineuintunsignedint#defineucharunsignedcharvoiddelay(uintxms);//秒级延时voiddelayms(uintxms);//毫秒级延时,不可以更改,若更改,DS18B20将显示异常#endif/*delay.c*/#include"delay.h"voiddelay(uintxms){uinti;ucharj
2、;for(i=xms;i>0;i--)for(j=110;j>0;j--);}voiddelayms(uintxms){while(xms--);}/*ds18b20.h*/#ifndef_DS18B20_H#define_DS18B20_H#include#include"delay.h"#include#defineNOP(){_nop_(),_nop_(),_nop_(),_nop_()}sbitDQ=P3^2;//DS18B20控制线,单线模式。externbitng;//正负数标志位,ng=0,为正数,反之为负数,正数
3、负数的处理方法不同,externbitDS18B20_IS_OK;//为1时表示当前读取温度正常,否则读取失败。externucharDisplay_Digit[4];//读取的温度值转换后存在这个数组中externvoidRead_Temperature();//读取当前温度值externvoidProcess_Temperature();//处理当前获得的温度值,正数,负数等。#endif/*ds18b20.c*/#include"ds18b20.h"//温度字符ucharcodeTemperature_Char[8]={0x0c,0x12,0x12,0x0c,0
4、x00,0x00,0x00,0x00};//温度小数对照表ucharcodedf_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};ucharCurrentT=0;//当前读取的温度整数部分ucharTemp_Value[]={0x00,0x00};//从DS18B20读取的温度值bitng=0;bitDS18B20_IS_OK=1;ucharDisplay_Digit[4]={0,0,0,0};//-------------------------------------------------------//初始化DS18B20/
5、/-------------------------------------------------------ucharInit_DS18B20(){ucharstatus;DQ=1;delayms(8);DQ=0;delayms(90);DQ=1;delayms(8);status=DQ;delayms(100);DQ=1;returnstatus;}//-------------------------------------------------------//读一字节//-------------------------------------------
6、------------ucharReadOneByte(){uchari,dat=0;DQ=1;_nop_();for(i=0;i<8;i++){DQ=0;dat>>=1;DQ=1;_nop_();_nop_();if(DQ)dat
7、=0x80;delayms(30);DQ=1;}returndat;}//-------------------------------------------------------//写一字节//-------------------------------------------------------voidWriteOneBy
8、te(uchardat){uchari;for(i=0;i<8;i++){DQ=0;DQ=dat&0x01;delayms(5);DQ=1;dat>>=1;}}//----------------------------------------------------------------//读取温度值//----------------------------------------------------------------voidRead_Temperature(){if(Init_DS18B20()==1)//DS18B20故障DS18