资源描述:
《基于单片机测量温度的电路图及相应程序new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include#include#defineucharunsignedchar#defineuintunsignedint;/******************************************************************//*定义端口*//******************************************************************/sbitseg1=P2^0;sbitseg2
2、=P2^1;sbitseg3=P2^2;sbitDQ=P1^3;//ds18b20端口sfrdataled=0x80;//显示数据端口/******************************************************************//*全局变量*//******************************************************************/uinttemp;ucharflag_get,count,num,minute,second;ucharcodetab[]={0x3f,0x06,0x5b,0x4f,0x66
3、,0x6d,0x7d,0x07,0x7f,0x6f};//7段数码管段码表共阳ucharstr[6];/******************************************************************//*函数声明*//******************************************************************/voiddelay1(ucharMS);unsignedintReadTemperature(void);voidInit_DS18B20(void);unsignedcharReadOneChar(voi
4、d);voidWriteOneChar(unsignedchardat);voiddelay(unsignedinti);/******************************************************************//*主函数*//******************************************************************/main(){unsignedcharTempH,TempL;TMOD
5、=0x01;//定时器设置TH0=0xef;TL0=0xf0;IE=0x82;TR0=1;P2=0x00;count
6、=0;while(1){str[5]=0x39;//显示C符号str[1]=tab[TempH/100];//十位温度str[2]=tab[(TempH%100)/10];//十位温度str[3]=tab[(TempH%100)%10]
7、0x80;//个位温度,带小数点str[4]=tab[TempL];if(flag_get==1)//定时读取当前温度{temp=ReadTemperature();if(temp&0x8000){str[0]=0x40;//负号标志temp=~temp;//取反加1temp+=1;}elsestr[0]=0;TempH=temp>>4;TempL=tem
8、p&0x0F;TempL=TempL*6/10;//小数近似处理flag_get=0;}}}/******************************************************************//*定时器中断*//******************************************************************/voidtim(void)interrupt1using1//中断,用于数码管扫描和温度检测间隔{TH0=0xef;//定时器重装值TL0=0xf0;num++;if(num==50){num=0;flag_get
9、=1;//标志位有效second++;if(second>=60){second=0;minute++;}}count++;if(count==1){P2=0;dataled=str[0];}//数码管扫描if(count==2){P2=1;dataled=str[1];}if(count==3){P2=2;dataled=str[2];}if(count==4){P2=3;dataled=str[3];}if(coun