




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计说明书题 目: DS18B20的温度测量与显示系统 学 院: 航空自动化学院 系 别: 自动化系 专业名称: 自动化专业 班 级: 学 号: 姓 名: 指导教师: 中国民航大学航空自动化学院目录1课程设计要求1 2总体方案设计 42.1、单片机系统2.2、电源模块2.3、显示模块2.4、总体设计方案3系统方框图4 4系统各方框的电路图 9 4.1、温度传感器DS18B20电路4.2、显示电路 4.3、主控制器 4.4、系统总电路图5主程序流程图和各个子程序的流程图12 1、主程序流程图 2、温度读取子程序流程图 3、温度转换子程序流程图6源程序说明157心得体会附录一 DS18B
2、20简介 20基于数字温度计DS18B20的温度测量与显示系统一、任务与要求1.利用1个DS18B20测量室内温度(误差小于?)2.用数码管显示温度3.显示精度为0.1扩展要求1.多通道测量2.LCD显示3.生成印刷电路板3、 二、总体方案设计(基本功能)1、单片机系统我选用了AT89C52单片机,查过资料后我知道AT89C52单片机具有不但AT89C51单片机所有的优点,而且具有更大的程序存储空间,可在线仿真的功能,方便调试。所以选用AT89S52八位单片机作为温度采集的控部分。2、电源模块采用普通的直流电源实现电路简单,而且采用集成电源芯片设计的直流电源电压比较稳定,完全满足系统各模块的供
3、电要求。 3、显示模块为了显示出温度,采用数码管显示工具。4、总体设计方案为了不失通用性和智能性,本方案采用AT89S52单片机作为控制器,单总线温度传感器DS18B20进行温度采集。电源部分采用普通的直流电源,完全满足AT89S52和DS18B20等各模块的工作电压范围。温度显示采用数码管。4、 系统方框图程序控制模块数码管显示模块单片机系统温度传感器模块电源模块四、系统各方框的电路图1、温度传感器DS18B20电路 由于DS18B20 工作在单总线方式,其硬件接口非常简单,仅需利用系统的一条I/ O线与DS18B20的数据总线相连即可,如图1所示。图1 DS18B20电路2、显示电路显示电
4、路采用4位共阳极LED数码管,P0口由上拉电阻提高驱动能力,作为段码输出并作为数码管的驱动。P2口的低四位作为数码管的位选端。采用动态扫描的方式显示。 3、主控制器单片机AT89S5具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。4、系统总电路图总体设计电路图所下,控制器采用单片机AT89S52,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。五、主程序流程图和各个子程序的流程图1、主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每
5、1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图3.1所示。DS18B20初始化结束温度转换跳过ROM匹配延时DS18B20是否存在?跳过ROM匹配读暂存器转换为显示码是否2、温度读取子程序流程图Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY3、温度转换子程序流程图发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束六、程序及说明: #include<reg52.h>#include<intrins.h>#define uchar unsigned char#d
6、efine uint unsigned intsbit DQ=P23;sbit dula=P26;sbit wela=P27;sbit FM=P25;sbit LED1=P20;sbit LED2=P21;sbit LED3=P22;uint temp,tmp,temp1,temp2,temp3;uchar flag1=0;uchar qian,bai,shi,ge;uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x86,0xc7,0xc
7、0,;/数码管显示代码uchar code table1=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x86,0xc7,0xc0,; /数码管显示代码void delay(uchar i)while(-i);/延时函数void delays(uchar i)while(i-);/延时函数void delayms(uint timer)uchar x,y;for(x=timer;x>0;x-)for(y=110;y>0;y-);ms级别的延时函数void D
8、s18b20_Init(void)/*uint i;DQ=0;i=103;while(i>0)i-;DQ=1;i=4;while(i>0)i-; */uchar flag=0;/设置标志位DQ=1;/拉高数据总线delay(1);/延时一段时间,尽量短一点DQ=0;/拉低总线delays(100);/延时时间在480us到960us之间DQ=1;/拉高总线delay(15);/如果在15-60ms的时间内产生一个低电平,则初始化完成。flag=DQ;delay(100);/ds18b20初始化bit tempreadbit()/位读取子程序uint i;bit dat;DQ=0;i
9、+;/ i+起延时作用,1us后进入读时序DQ=1;i+;i+;/ i+起延时作用,在1us到15us内进行采样,这里延时大概8usdat=DQ;i=8;while(i>0)i-;/至少需要60us才能完成读周期return(dat);/返回位数据 uchar Read_One_Byte()uchar i,j,dat;dat=0;for(i=1;i<=8;i+)j=tempreadbit();dat=(j<<7)|(dat>>1);/循环8次读一个字节return(dat);void Write_One_Byte(uchar wdat)uint i;ucha
10、r j;bit testb;for(j=1;j<=8;j+)testb=wdat&0x01;wdat=wdat>>1;/右移位if(testb)/写1周期DQ=0;i+;i+;/延时一段时间,写周期开始DQ=1;i=8;while(i>0)i-;/完成一次写周期至少要需要60us,这里大概是100usDQ=1;i+;i+;Else/写0周期DQ=0;i=8;while(i>0)i-;DQ=1;i+;i+;/*uchar i=0;uchar time=0;for(i=8;i>0;i-)DQ=1;_nop_();DQ=0;_nop_();DQ=wdat&
11、amp;0x01;delay(40);DQ=1;for(time=0;time<1;time+);wdat>>=1;delay(10); */uint Get_temp()float tt;uchar low,high;Ds18b20_Init();/调用初始化函数delayms(1);Write_One_Byte(0xcc);/跳过读ROM指令Write_One_Byte(0x44); /温度转换指令/delayms(2);Ds18b20_Init();/调用初始化函数delayms(1);Write_One_Byte(0xcc); /跳过读ROM指令Write_One_B
12、yte(0xbe); /读温度指令/delayms(2);low=Read_One_Byte();/低字节存放在LOWhigh=Read_One_Byte();/高字节存放在hightemp=high;temp<<=8;temp=temp|low;/将温度合并if(temp<0x07ff)/判断温度正负 flag1=0; else temp=temp+1; flag1=1; /*if(temp>63488)temp=temp+1;tt=temp*(0.0625);if(tt>=100)flag1=1; */temp=tt*10+0.5;tt=temp*(0.062
13、5);temp=tt*10+0.5;/temp=temp+0.05;return(temp);void Display(uint value)/*uchar qian,bai,shi,ge;bai=value/100;shi=value%100/10;ge=value%10; */qian=temp/1000;/百位数 bai=temp%1000/100;/十位数 shi=temp%100/10;/个位数 ge=temp%10;/小数位if(qian=0)/百位若为零,则不显示dula=1;P0=0xff;dula=0;P0=0xff;wela=1;P0=2;wela=0;delayms(5)
14、;P0=0xff;elsedula=1;P0=tableqian;dula=0;P0=0xff;wela=1;P0=2;wela=0;delayms(5);P0=0xff; if(flag1=0)/若温度我正数,则最高位不显示dula=1;P0=0xff;dula=0;P0=0xff;wela=1;P0=1;wela=0;delayms(5);P0=0xff;Else/若温度为负数,则最高位为负号dula=1;P0=0xbf;dula=0;P0=0xff;wela=1;P0=1;wela=0;delayms(5);P0=0xff;/*dula=1;P0=tableqian;dula=0;P0=
15、0xff;wela=1;P0=2;wela=0;delayms(5);P0=0xff; */dula=1;/显示百位P0=tablebai;dula=0;P0=0xff;wela=1;P0=4;wela=0;delayms(5);P0=0xff;dula=1; /显示十位P0=tableshi;dula=0;P0=0xff;wela=1;P0=8;wela=0;delayms(5);P0=0xff;dula=1; /显示个位P0=tablege;dula=0;P0=0xff;wela=1;P0=0x10;wela=0;delayms(5);P0=0xff; void main()LED1=1;while(1)P1=0x39;tmp=Get_temp();Display(tmp);delayms(25);6、 DS18B20简介DS18B20 采用3 脚PR-35 封装或8 脚SOIC 封装,管脚排列如图3所示。图中GND 为地,DQ 为数据输入/输出端(即单线总线),该脚为漏极开路输出,常态下呈高电平,Vcc 是外部+5V 电源端,不用时应接地,NC 为空脚。图3 DS18B20的外
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考研翻译写作基础
- 四人合伙经营协议书
- 衢州社区标识施工方案
- 电子商务运营经理简介简历
- 预应力空心墩柱施工方案
- 2024-2025学年下学期高中英语选修四第四单元A卷
- 安徽高一下数学试卷
- 建筑工程供货合同
- 配电箱出线施工方案
- 2025年联合国考试试题及答案
- 单兵队列教学法
- DB14-T 2803-2023 药品委托储存配送管理规范
- 第13课-香港和澳门的回归
- 人教部编版三年级下册道德与法治 1、我是独特的 教案
- 合同法合同的效力教学课件
- 槟榔的危害教学课件
- 第三章生物信息数据库检索及其应用
- 数字孪生水利工程建设技术导则(试行)
- 2023年高考英语真题试题及答案精校版(湖北卷)
- 罗沙司他治疗肾性贫血中国专家共识
- 2015-2022年苏州信息职业技术学院高职单招语文/数学/英语笔试参考题库含答案解析
评论
0/150
提交评论