您好,欢迎访问三七文档
1信息与电气工程学院课程设计说明书(2014/2015学年第二学期)课程名称:《单片机原理及应用》课程设计题目:简易温度计设计专业班级:学生姓名:学号:指导教师:设计周数:2周设计成绩:年月日21、实验目的设计并制作出一个以单片机为核心的简易温度计系统2、主要任务1、确定整体设计方案;2、设计键盘输入电路;3、设计显示电路;4、合理分配地址,编写系统程序;5、采用Proteus进行仿真,软硬件联机调试。3、技术要求(1)以MCS-51单片机为核心,18b20为敏感元件,设计出一简易温度计;(2)使用三位数码管显示温度,并能进行温度设置;4、以MCS-51单片机为核心设计简易温度计的简介传统的温度检测以热敏电阻为温度敏感元件,需要后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定误差。以MCS-51为核心,18b20为测温传感器,通过3位共阳极LED数码管传送数据,实现温度显示。具有读数方便,测温范围广,测温精确,数字显示,可靠性高等特点。5、程序流程图初始化开始36、系统硬件电路原理图获取当前温度否是显示当前温度获取设定温度比较当前温度与设定温度并处理设定当前温度是否设定当前温度46.1时钟电路晶振电路由一个晶振与两个电容连接组成,与单片机的18、19管脚相连,另一端接地,电路图为:电容大小没有固定值,一般5到30pf,晶振是给单片机提供工作信号脉冲的。这个脉冲就是单5片机的工作速度。一般用内部振荡方式,这种方式比较稳定。晶振频率为12MHZ,单片机工作速度就是每秒12M。单片机的工作频率是有范围的,不能太大,一般24M就不上去了,不然不稳定。6.2复位电路复位电路由一个有极性电容、一个电阻与一个按键连接而成,一端连单片机的RST端,另一端接电源,电源另一端接单片机的EA。其中电容是通过充放电来实现维持一段时间的高电平,电容充电时间与RC的值成正比,当按下按键时,由于电容充电,RST维持一段时间高电平以达到复位的目的。一般情况下,选择大小为10到30uF的电容,而电阻一般选用1到10KΩ的。电路图为:6.3DS18b20温度传感电路此部分电路负责温度信号的采集、将温度信号转换成数字代码储存在温度控制寄存器中,向单片机发送温度数据等重要功能,主要由DS18b20芯片来完成,该电路的电路图为:其中DQ为DS18b20的数据输入/输出端引脚,与单片机的P3.5口相连,单片机通过P3.5口向DS18b20发出各种命令,并读取其转换后的温度数据。由于DS18B20单线通信功能是分时完成的,所以有严格的时隙概念,读写时序很重要。系统6对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。6.4显示电路7、源程序代码#includereg52.h7#defineucharunsignedchar#defineuintunsignedintucharwei;//18b20接口sbitDS=P3^5;//defineinterface//sbitdula=P2;//定义数码管位选sbitwei1=P1^5;//定义数码管位选sbitwei2=P1^6;//定义数码管位选sbitwei3=P1^7;//定义按键sbitk1=P1^0;//定义按键sbitk2=P1^1;//定义按键sbitk3=P1^2;//定义led指示灯sbitled1=P1^3;//定义led指示灯sbitled2=P1^4;//共阳极数码管编码unsignedcharcodetb[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};0x87,0xff,0xef};//延时函数voiddelay(uintcount)//delay8{uinti;while(count){i=200;while(i0)i--;count--;}}//18b20复位初始化函数voiddsreset(void)//sendresetandinitializationcommand{uinti;DS=0;i=103;while(i0)i--;DS=1;i=4;while(i0)i--;}//18b20底层函数,读一位bittmpreadbit(void)//readabit{uinti;bitdat;DS=0;i++;//i++fordelayDS=1;i++;i++;dat=DS;i=8;while(i0)i--;9return(dat);}//18b20底层函数,读一个字节uchartmpread(void)//readabytedate{uchari,j,dat;dat=0;for(i=1;i=8;i++){j=tmpreadbit();dat=(j7)|(dat1);//读出的数据最低位在最前面,这样刚好一个字节在DAT里}return(dat);}//18b20底层函数,写一个字节voidtmpwritebyte(uchardat)//writeabytetods18b20{uinti;ucharj;bittestb;for(j=1;j=8;j++){testb=dat&0x01;dat=dat1;if(testb)//write1{DS=0;i++;i++;DS=1;i=8;while(i0)i--;10}else{DS=0;//write0i=8;while(i0)i--;DS=1;i++;i++;}}}//18b20底层函数,开始转换温度voidtmpchange(void)//DS18B20beginchange{dsreset();delay(1);tmpwritebyte(0xcc);//addressalldriversonbustmpwritebyte(0x44);//initiatesasingletemperatureconversion}//18b20底层函数,获取当前温度uinttmp()//getthetemperature{floattt;uchara,b;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;11temp=8;//twobytecomposeaintvariabletemp=temp|a;tt=temp*0.0625;temp=tt*10+0.5;returntemp;}//数码管显示子程序voiddisplay(uinttemp)//显示程序{//dula=0;P2=tb[temp/100];//显示百位wei1=0;wei2=1;wei3=1;delay(10);wei1=1;wei2=1;wei3=1;P2=0x7f&tb[temp%100/10];//显示十位wei1=1;wei2=0;wei3=1;delay(10);wei1=1;wei2=1;wei3=1;P2=tb[temp%10];//显示个位wei1=1;12wei2=1;wei3=0;delay(10);wei1=1;wei2=1;wei3=1;}//主函数voidmain(){//定义变量存储当前温度inttp=0;//定义变量存储设定温度intset=300;//定义变量存储显示模式,显示当前温度还是显示设定温度intmode;do{//开始转化温度tmpchange();//获取当前温度tp=tmp();//根据mode变量显示设定温度或者当前温度if(mode==0)display(set);elsedisplay(tp);13//设定温度增加if(k1==0&&mode==0){delay(50);if(k1==0)set++;}//设定温度降低if(k2==0&&mode==0){delay(50);if(k2==0)set--;}//改变显示的内容(当前温度还是设定温度)if(k3==0){delay(50);if(k3==0)mode++;if(mode2)mode=0;}//如果当前温度大于设定温度提示报警if(tpset){led1=1;led2=0;}elseif(tpset)//如果当前温度小于设定温度提示加热{led1=0;led2=1;}else//如果当前温度等于设定温度不执行动作14{led1=1;led2=1;}}while(1);}8、心得体会本次的简易温度计课程设计不仅使我们进一步巩固了书本上的知识,做到了学以致用,还学到了许多课本上学不到的知识。我还学到了做事必须严谨的的精神,尤其是我们学工科的同学,不严谨结果就要有很大的偏差,就得不到想要的结果。通过自己动手设计的电路和系统仿真软件protues和keil软件,使我们进一步了解了单片机的设计制作过程,其中软件部分,即编程部分,我们上网找了好多资料,虽然经过自己的修改,但还是有很多功能不能实现。由于protues并不是很熟练,在使用的过程中有很多原件的名称不知道,从而花费了大量的时间在网上查找,今后应该在这方面多多努力。总结经验的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。在课设中学会了又问题请教别人与一起讨论,因为以后很多东西的工程量都是很大的,单靠个人力量要实现是很困难的,而且时间有限,这就要求我们必须学会具有团队精神,相互学习,因为很多困扰你的问题在讨论中便会迎刃而解。在专业知识与研究方法方面为日后的毕业设计乃至毕业后的工作奠定良好的基础。9、参考文献1、张毅刚主编,单片机原理及应用,高等教育出版社2、何立民主编,单片机中级教程,北京航空航天大学出版社3、丁元杰主编,单片机原理与应用,机械工业出版社。4、孙育才主编,MCS-51系列单片微型计算机及其应用,东南大学出版社5、[51单片机学习网课程设计评语课程设计成绩指导教师(签字)年月日注:此表必须在同一页面。
本文标题:简易温度计设计
链接地址:https://www.777doc.com/doc-4501595 .html