资源描述:
《测控单片机课程设计报告(基于温度传感器)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《单片机原理与接口技术》课程设计报告实验名称:基于DS18B20温度传感器设计系(院):控制工程学院专业班级:测控技术与仪器1301实验日期:2015年5月20日指导老师:李红波1.组员及任务安排:组长:姚冲学号:1304091019负责任务:程序设计与编写组员1:杨稀智学号:1304091018负责任务:硬件搭建与调试组员2:学号:负责任务:组员3:学号:负责任务:组员4:学号:负责任务:2.目的要求:利用STC51单片机,DS18B20温度传感器与数码管制作数字温度显示装置,可以以数字形式显示当前温度值。3.仪器设备、软件、元器件:单片机:STCIAP1
2、5L2K61S2数字温度计:DS18B206位七段式数码管:KYX-3662BSC51编程软件:keiluvision4电气仿真:proteus7.5程序烧录软件:STC-IAP面包板,导线,按键,排阻,STC下载器以及其他元器件若干4.Proteus电路原理图5.实物运行图6.C语言程序代码:#include#include#include#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^3;ucharcodesegcode[
3、]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x7F,0x8C,0xFF};//0123456789ABCDEF.p暗ucharcodebitcode[]={0x08,0x01,0x02,0x04,0x10,0x20};//个位,十位,百位,千位//1234uchardispbuff[]={0x00,0x00,0x00,0x00,0x00,0x00};typedefunion//定义联合体{uintT;uchartt[2];}myt;my
4、tTbuff;voidDelay10us()//@11.0592MHz{unsignedchari;_nop_();i=25;while(--i);}voidDelay54us()//@11.0592MHz{unsignedchari,j;_nop_();i=1;j=145;do{while(--j);}while(--i);}voidDelay90us()//@11.0592MHz{unsignedchari,j;_nop_();_nop_();_nop_();i=1;j=244;do{while(--j);}while(--i);}voidDelay50
5、0us()//@11.0592MHz{unsignedchari,j;_nop_();_nop_();i=6;j=93;do{while(--j);}while(--i);}voidDelay10ms()//@11.0592MHz{unsignedchari,j;i=108;j=145;do{while(--j);}while(--i);}voidDelay1000ms()//@11.0592MHz{unsignedchari,j,k;_nop_();_nop_();i=43;j=6;k=203;do{do{while(--k);}while(--j);}w
6、hile(--i);}voidDS18B20_Init(void){DQ=1;Delay90us();//DQ18B20初始化DQ=0;Delay500us();//单片机将DQ拉低//延时>480us540usDQ=1;Delay90us();//拉高总线15-60us//延时}ucharDS18B20_RByte(void){uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//单片机将DQ拉低dat>>=1;//将dat的各位数据位右移一位,因为先读出的是字节的最低位(dat=dat>>1)DQ=1;//给脉冲if(D
7、Q)//如果读出的数据是1dat
8、=0x80;//将1取出,写出dat的最高位Delay54us();//54us内读完一个数}return(dat);//将读出的数据返回}voidDS18B20_WByte(ucharwdat){uchari=0;for(i=8;i>0;i--)//连续读8个二进制数据{DQ=0;Delay10us();DQ=wdat&0x01;//写所给数据最低位Delay54us();DQ=1;//给脉冲wdat>>=1;//将dat的各位数据位右移一位,因为先读出的是字节的最低位(dat=dat>>1)}}uintDS18B20_R
9、_T(void){uchara=0;uintt=0;