资源描述:
《毕业设计(论文):基于单片机的简易温度测量装置》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、重庆邮电大学电子制作大赛设计报告题目:基于单片机的简易温度测量装置一、设计任务及实现要求1、设计并制作一个简易温度测试装置,可测量当前环境温度并实时显示当前测量的温度值,同时要求具有门限报警功能。具体要求如下:基础部分:(1)温度检测部分不得使用现有的集成数字温度测量芯片(如DS18B20),温度测量值用数码管或液晶1602显示。(2)测量误差不超过正负一度。(3)具有门限报警功能。(可选用蜂鸣器,门限值设定为20度和30度)扩展部分:(1)温度可测量范围:0~40°C。(2)测量误差不超过正负0.5度。(3)报警门限可手动设置(包括上、下门限)。(4)其他。二、设计原理(设计原
2、理图,原理分析):1、程序流程图2、总原理图3、原理分析本次设计的作品由热敏电阻和AD转换电路、单片机最小系统、LED显示、电源接口、复位电路和报警电路、外部晶振电路这六部分组成。随着外界温度的变化,热敏电阻的阻值也成正比的变化,由RT热敏电阻对外界温度进行采样,采样的数据是热敏电阻两端的电压值,电压值再经过AD转换电路里由模拟量变为数字量,然后传到51单片机的P3端口。在单片机中由公式t=(1.0/((1.0/3950.0)*ln(rt/10.0)+1.0/273.15)-273.15)将电压的变化量转换成温度的变化值。最后再经过LED灯显示出测量的数值。三、各部分电路的功能1
3、、热敏电阻和AD转换电路这部分电路有热敏电阻和AD转换电路组成。其中热敏电阻负责采样数据,外界温度的变化会引起电阻阻值的变化,且两者的变化成正比。采样的数据经过R11传入AD转换电路里,在这里会把采样的模拟量转换为相应的数字量。AD转换电路的精度为5/256.2、单片机最小系统这部分电路为单片机最小系统。经AD转换得到的数字量由P3口传入单片机,在单片机中进行电压和温度的对应转化。转化过后再由P2端口输出。3、LED显示这是LED显示电路。单片机P2口输出的数字量传入74573锁存器中,再由锁存器传入LED显示灯中,这样就可以在LED上显示出对应的温度的数值。4、电源接口此为电源
4、接口电路图,电路采用+5V的电源供电。其中的LED为电源指示灯,提示电源接通或断开,在LED灯线路上同时接入了一个1K的保护电阻。5、复位电路和报警器这两部分电路直接接在单片机上的。复位电路用来重置传入单片机中的数据,可以直接使温度计从新测量。报警器则在测量数值超过单片机预设数值时就会发出蜂鸣声报警。6、晶振电路提供单片机工作的CP时钟。四、单片机程序#include#defineuintunsignedint#defineucharunsignedcharsbitLE=P0^0;sbita=P1^0;sbitb=P1^1;sbitc=P1^2;sbitd=P1
5、^3;sbitbeep=P1^4;sbitcs=P1^5;sbitrd=P1^6;sbitwr=P1^7;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uintad,ad1,wendu;voiddelay(uintz)//延时函数{intx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voiddisplay(uintwendu)//显示函数{ucharbai,shi,ge;bai=wendu/100
6、;shi=wendu/10%10;ge=wendu%10;a=1;b=0;c=1;d=1;P2=table[12];delay(1);a=1;b=0;c=1;d=1;P2=table[bai];delay(1);a=1;b=1;c=0;d=1;P2=table[shi];delay(1);a=1;b=1;c=1;d=0;P2=table[ge];delay(1);}uintadc0832()//AD转换函数{uchari;uintd1,d2;d1=0;d2=0;CS=1;//初始化CLK=0;DI=1;delay(1);CLK=1;//控制AD双通道单极性CH0输出DI=1;CL
7、K=0;delay(1);CLK=1;DI=1;CLK=0;delay(1);CLK=1;DI=0;CLK=0;//控制命令结束for(i=0;i<8;i++)//第一次取值正向{CLK=1;delay(1);CLK=0;delay(1);d1
8、=DO;//按位与赋值d1<<=1;}for(i=0;i<8;i++)//第二次取值反向{d2
9、=DO;d2>>=1;CLK=1;delay(1);CLK=0;delay(1);}CS=1;DI=1;CLK=1;//释放总线if(d1==