- 首页
-
- 问答
-
匿名用户
这个电路很简单,我说一下就可以了。数字式温度传感器用最常用的DS18B20,它只有3个管脚,一个接电源,一个接地,另一个接8051单片机就可以了。温度值用数码管显示。这样整个电路就接好了。如果楼主觉得我回答的可以别忘了给我加分哦,为了你的问题我花费了半天的时间啊。程序如下:
#include
#include
#define uchar unsigned char #define uint unsigned int #define Self_Define_ISP_Download_Command 0x3D sfr IAP_CONTR=0xE7; sbit DQ = P3^5; //DS18B20接入口 uchar code table[]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90} ; char bai,shi,ge; //定义变量 void Init_Com(void) { TMOD = 0x20; SM0=0; SM1=1; REN=1; TH1 = 0xFd; TL1 = 0xFd; TR1 = 1; EA=1; ES=1; } /*延时子函数*/ void delay(uint num) { while(num--) ; } /*************DS18b20温度传感器函数*********************/ Init_DS18B20(void) //传感器初始化 { uchar x=0; DQ = 1; //DQ复位 delay(10); //稍做延时 DQ = 0; //单片机将DQ拉低 delay(80); //精确延时 大于 480us //450 DQ= 1; //拉高总线 delay(20); x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(30); } //读一个字节 ReadOneChar(void) { uchar i=0; uchar dat = 0; for (i=8;i>0;i--) { DQ = 0; // 给脉冲信号 dat>>=1; DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80; delay(8); } return(dat); } //写一个字节 WriteOneChar(unsigned char dat) { uchar i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; delay(10); DQ = 1; dat>>=1; } delay(8); } //读取温度 int ReadTemperature(void) { uchar a,b; uint t; float tt; Init_DS18B20(); WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar();//低位 b=ReadOneChar();//高位 tt=(b*256+a)*0.0625*100;//2个8位合成16位 t=(int)tt; /*t=b; t<<=8; t=t|a; tt=t*0.0625; t= tt*10+0.5; */ return(t); } /*显示子函数*/ void display(int bai,int shi,int ge) { int temp; temp=ReadTemperature();//读温度 bai=temp/1000;//显示百位 shi=temp%1000/100;//显示十位 ge=temp%100/10;//显示个位 //xiao=temp%10; P2=0xfd; //位选 P0=0X7f; //显示小数点 delay(500); P2=0xfe; P0=table[bai];//显示千位 delay(500);//一小段延时动态显示 P2=0xfd; P0=table[shi];//显示百位 delay(500); P2=0xfb; P0=table[ge];//显示十位 delay(500); P2=0xf7;// 显示° P0=0x9c; // delay(50); } void main() { Init_Com(); while(1) { display(bai,shi,ge);//显示函数 } } void UART_Interrupt_Receive(void) interrupt 4 { unsigned char k=0; unsigned int a,b; if(RI==1) { RI=0; k=SBUF; if(k==Self_Define_ISP_Download_Command) { for(a=1000;a>0;a--) for(b=100;b>0;b--); //延时约1S IAP_CONTR = 0x60; } } else { TI=0; } }
-
-
沉默是金
采用体硅微机械加工技术和扩散技术,制作压阻式高量程微加速度计,设计量程为50000gn.芯片材料为单晶硅,采用双列扁平陶瓷封装.为了测量其动态灵敏度,使用Hopkinson杆在约40000gn的加速度水平下进行了冲击校准.在电桥电压为6.33V的情况下,被测微加速度计的灵敏度为1.26μV/gn.
动态特性对无陀螺微惯性测量组合的影响.首先,建立了9个加速度计的无陀螺微惯性测量组合模型,并推导了该模型的导航方程,然后根据加速度计的动态特性改进了其导航方程,最后进行了仿真验证.从仿真结果可以看出,对于相同的加速度计,输入信号的动态特性越强,惯性组合的误差越大.因而选用动态特性好的加速度计有助于提高无陀螺微惯性测量组合的性能.本文为无陀螺微惯性测量组合走向实用化,提供了理论依据.
-
-
-
-
-
-
-
求购