51单片机温度采集与显示设计(2)

2019-01-27 11:37

测温范围 -55℃~+125℃,固有测温分辨率0.5℃。

工作电源: 3~5V/DC

1.5 在使用中不需要任何外围元件

1.6 测量结果以9~12位数字量方式串行传送

温度的读取

DS18B20在出厂时以配置为12位,读取温度时共读取16位,所以把后11位的2进制转化为10进制后在乘以0.0625便为所测的温度,还需要判断正负。前5个数字为符号位,当前5位为1时,读取的温度为负数;当前5位为0时,读取的温度为正数。16位数字摆放是从低位到高位。

温度读取流程图

三.数码管

此系统共有四个数码管,每个数码管需要八个I/O口,而单片机的I/O口是有限的,故此系统采用动态数码管显示方式。单片机通过软件设置 ,每次选择控制其中的一个数码管,由于时间的间隔短,四个数码管看起来是一起显示的。

四.主程序 #include #include #include #include #include\//#include\#include\

unsigned char table[]= {

0xC0,0xF9,0xA4,0xB0, 0x99,0x92,0x82,0xF8,

0x80,0x90,}; //不带小数点的编码 extern unsigned int temp; extern float f_temp; unsigned int i;

//unsigned int displayBuffer[6]={1,2,3,4,5,6}; void LCD_init(void) { }

/* double Shi(unsigned char Dis[]) { WORD i; } } */ return sum; double sum; int k; sum=0;

for(i=0,k=-4;i<11;i++,k++) {

sum+=Dis[i]*pow(2,k) P2=0x0f; P0=0x00;

void led(signed int m,signed int n,signed int p,signed int q) {

P2=0xef;

}

P0=table[q]; delay(5); P2=0xdf; P0=table[p]; delay(5); P2=0xbf; P0=table[n]+0x80; delay(5); P2=0x7f; P0=table[m]; delay(5);

unsigned int display(unsigned int y,signed int f,signed int g) { SWORD a,b,c,d;

a=y/1000 + f ;

b=(y00)/100+g ; c=(y0)/10; d=(y)/1;

if(b<=9&&b>=0)

for(i=16;i>0;i--)

led(a,b,c,d);

else if(b>9)

{a+=b/10;b=b; for(i=16;i>0;i--)

led(a,b,c,d);}

else

{ b=0-b;

if(b==1)f-=1;b=10-(b); if(b==10)b=0; for(i=16;i>0;i--)

led(a,b,c,d);}

return f; }

void main(void) {

unsigned int e,Sum1,k; signed int h,j; LCD_init(); h=0;j=0;


51单片机温度采集与显示设计(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:云梦县佳兴生猪养殖专业合作社章程

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: