您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 单片机课程设计报告-数字温度计
惠州学院课程设计报告课程名称:单片机课程设计系部:电子科学系专业班级:08电子信息工程(1)班学生姓名:XXX学生姓名:08XXXXXX指导老师:XXX完成时间:2011年6月16日报告成绩:惠州学院HUIZHOUUNIVERSITY摘要本设计以STC89C52RC单片机为核心,由温度采集、温度显示,温度报警等功能模块组成。基于题目基本要求,本系统对温度采集和温度显示系统行了重点设计。本系统大部分功能由软件来实现,吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。本系统不仅成功的实现了要求的基本功能,多数发挥部分也得到了实现。关键字:STC89C52RC单片机、数码管显示、温度采集目录一、任务设计..............................................1二、总体方案..............................................11、工作原理..........................................12、总体设计..........................................13、元件清单...........................................1三、系统硬件设计...........................................21、单片机最小系统....................................22、温度测量模块......................................23、数码管显示模块.....................................24、系统电源..........................................3四、系统软件设计..........................................31、主程序流程图......................................32、DS18B20初始化子程序流程图..........................53、DS18B20写子程序流程图..............................64、DS18B20读子程序流程图..............................65、系统片内RAM资源分配表..............................7五、源程序.................................................8六、测量及其结果分析.....................................13七、设计心得体会.........................................13参考文献..............................................14附录DS18B20部分资料...................................15致谢..............................................................171数字温度计设计一、任务设计:1、设计任务:利用数字温度传感器DS18B20与单片机结合来测量温度。2、设计要求:利用数字温度传感器DS18B20测量温度信号,计算后在LED数码管上显示相应的温度值。其温度测量范围为-55~125℃,精确到0.1℃。本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。数字温度计所测量的温度采用数字显示,控制器使用单片机89C51,测温传感器使用DS18B20,用2位共阴极LED数码管以串口传送数据,实现温度显示。二、总体方案:1.工作原理:本设计采用STC89C52RC单片机作为本系统的控制模块。单片机把由DS18B20发送过来的数据利用软件来进行处理,从而把数据传输到显示模块和报警模块,实现温度的显示和报警作用。2.总体设计:设计总体框架图如图1图1、系统框架图3、元件清单表1数字温度计电路元器件清单元器件名称参数数量元器件名称参数数量单片机89C521数码管1晶体振荡器12MHz1蜂鸣器1电容3温度传感器DS18B201电阻192三、系统硬件设计(单元电路设计及分析):1.STC89C52RC单片机最小系统:最小系统包括晶体振荡电路、复位开关和电源部分。图2为STC89C52RC单片机的最小系统。图2最小系统电路图2.温度测量模块:温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55℃~125℃,可编程为9位~12位A/D转换精度,测温分辨率达到0.0625℃,采用寄生电源工作方式,CPU只需一根口线便能与DS18B20通信,占用CPU口线少,可节省大量引线和逻辑电路。接口电路如图3所示。图3DS18B20测量电路3.数码管显示模块:3系统使用最右边的两个数码管,段选J12接单片机的P0口,位选J16接单片机的P2口。其接线如图4所示:图4数码管显示电路4.系统电源:系统采用USB供电,USB输出电压5V,电流200mA,能使系统正常工作。电路图如图5:图5电源电路四、系统软件设计流程:1.主程序流程如图6所示:4图6系统主程序流程52.DS18B20初始化子程序流程如图7所示:图7DS18B20初始化子程序流程63.DS18B20写子程序流程图如图8所示:图8DS18B20写子程序流程图4.DS18B20读子程序流程图如图9所示:7图9DS18B20读子程序流程图5、数字温度计系统片内RAM资源分配表表2数字温度计系统片内RAM资源分配表地址分配用途名称初始值32H设定最高温度的存储单元HIG_MK3233H设定最低温度的存储单元LOW_MK188续表地址分配用途名称初始值34H存放当前温度的低8位单元00H35H存放当前温度的高8位单元00H36H存放当前温度整数部分的单元00H37H存放当前温度小数部分的单元00HP0.0DS18B20与单片机接口DQ0P1.5蜂鸣器与单片机接口BZ0五、源程序:/******************************************************************************主程序名称:主程序功能:温度测控系统,两位数码管显示当前温度。温度超出范围蜂鸣器报警入口参数:无出口参数:无******************************************************************************/HIG_MKEQU32H;最高温度阈值变量声明LOW_MKEQU33H;最低温度阈值变量声明TEM_LEQU34H;当前温度的低字节变量声明TEM_HEQU35H;当前温度的高字节变量声明TEM_NUMEQU36H;当前温度整数部分变量声明FLAG1EQU00H;DS18B20存在标志位DQEQUP3.7;单片机与DS18B20连接口BZEQUP1.5;蜂鸣器与单片机的接口ORG0000HSTART:MOVSP,#60H;堆栈指针初始化SETBDQSTART1:CLRBZMOVHIG_MK,#32MOVLOW_MK,#18LCALLINIT_1820GON:LCALLGET_TEMPERLCALLTEM_COVACALLTEM_DISPACALLbaojingAJMPGON9/******************************************************************************子程序名称:GET_TEMPER子程序功能:操作DS18B20,通过调用DS18B20的读写子程序,实现采集温度数据的功能入口参数:无出口参数:存放原始温度数据到34H和35H******************************************************************************/GET_TEMPER:SETBDQGET_MK1:LCALLINIT_1820;调用初始化子程序JBFLAG1,GET_MK2;判断DS18B20是否初始化成功,;FLAG1=1说明初始化成功LJMPGET_MK1;初始化不成功则需继续重新初始化GET_MK2:LCALLYS50;调用延时50us子程序MOVA,#0CCHLCALLWRITE_1820MOVA,#44HLCALLWRITE_1820GET_MK5:NOPCLRDQNOPSETBDQ;发复位脉冲MOVR7,#4DJNZR7,$CLRCMOVC,DQJCGET_MK5;判断DS18B20是否复位成功GET_MK3:LCALLINIT_1820JBFLAG1,GET_MK4LJMPGET_MK3GET_MK4:LCALLYS50MOVA,#0CCHLCALLWRITE_1820MOVA,#0BEHLCALLWRITE_1820;发送读温度命令LCALLREAD_1820;调用子程序读取温度数据RET/******************************************************************************子程序名称:INIT_1820子程序功能:初始化DS18B20入口参数:无出口参数:无******************************************************************************/INIT_1820:10SETBDQNOPNOPCLRDQ;发复位脉冲ACALLYS500;调用延时500us子程序SETBDQORLP3,#0FFH;将P3口设为输入端口ACALLYS50;等待50usJNBDQ,TSR1;判断DS18B20是否复位成功AJMPINIT_1820;重发复位脉冲TSR1:MOVR7,#6BHTSR2:DJNZR7,TSR2SETBDQ;初始化结束,将DQ拉高SETBFLAG1;DS18B20初始化成功标志RET/******************************************************************************子程序名称:YS50子程序功能:延时50us入口参数:无出口参数:无******************************************************************************/YS50:MOVR7,#18HDJNZR7,$RET/******************************************************************************子程序名称:YS500子程序功能:延时500us入口参数:无出口参数:无******************************************************************************/YS500:MOVR7,#0F9HDJNZR7,$RET/******************************************************************************子程序名称:WRITE_1820子程序功能:DS18B20写程序入口参数:A出口参数:无******************************************************************************/WRITE_1820:MOVR2,#8;设置串行数据传送位数11CLRCWRITE1:CLRDQ;将DS18B20的
本文标题:单片机课程设计报告-数字温度计
链接地址:https://www.777doc.com/doc-4130040 .html