您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 51单片机(课程设计)
洛阳理工学院课程设计报告课程名称_____单片机应用____________________设计题目_____基于DS18B20和1602的温度计____专业_____计算机应用技术_________________班级________________________学号_________________________姓名____________________________完成日期_______________________课程设计任务书设计题目:_____基于80C51单片机和DS18B20的数字温度计__设计内容与要求:设计内容:采用STC89C51单片机,DS18B20数字温度采集器件,单总线驱动等电路设计制作一个点在温度计,能利用1602LCD液晶显示温度。设计要求:1)单片机系统扩展设计;、2)温度采集设计;3)显示功能设计;指导教师:_______________年月日课程设计评语成绩:指导教师:_______________年月日洛阳理工学院课程设计报告1一、设计目的本次的设计主要是利用了单片机80C51和数字温度传感器DS18B20测量温度信号,计算后可以在LCD数码管1602上显示相应的温度值。二、设计指标温度测量范围为-55~125℃,精确度为0.1℃。三、总体框图设计主函数流程图四、功能模块及原理说明温度计采用80C51单片机作为微处理器,温度计系统的外围接口电路由晶振、LCD显示电路、复位电路、温度检测电路、LCD驱动电路。温度计系统的的硬件初始化、设置常量调用DS18初始化程序读温度转换值调用数据处理子程序生成显示码显示温度值洛阳理工学院课程设计报告2电路图如下图所示。温度计的工作过程是:初始化其接收需要检测的温度,并一直处于检测状态,并将检测到的温度值读取,并转化为十进制数值,通过LCD显示出来,再显示温度,方便用户来读数使用记录数据。具体实现方法是:单片机将从P3.3管脚读进来的数据进行处理,P0.1到P0.7为数码管的段选端口,通过RP1的驱动对LCD进行驱动。五、设计验证数字温度计程序代码如下:#includereg51.h#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^3;//ds18b20与单片机连接口sbitRS=P2^4;//数据/命令选择sbitRW=P2^5;//读写选择sbitEN=P2^6;//使能信号unsignedcharcodestr1[]={temperature:};unsignedcharcodestr2[]={};uchardatadisdata[5];uinttvalue;//温度值uchartflag;//温度正负标志/*************************lcd1602程序**************************/voiddelay1ms(unsignedintms)//延时1毫秒(不够精确的){unsignedinti,j;洛阳理工学院课程设计报告3for(i=0;ims;i++)for(j=0;j100;j++);}voidwr_com(unsignedcharcom)//写指令//{delay1ms(1);RS=0;//RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器RW=0;//R/W为读写信号,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址。EN=0;//E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令P0=com;//写指令delay1ms(1);EN=1;delay1ms(1);EN=0;}voidwr_dat(unsignedchardat)//写数据//{delay1ms(1);RS=1;//RS为寄存器选择,高电平时选择数据寄存器RW=0;//R/W为读写信号线,低电平时进行写操作.当RS为高电平R/W为低电平时可以写入数据EN=0;P0=dat;//写数据delay1ms(1);EN=1;delay1ms(1);EN=0;}voidlcd_init()//初始化设置//{delay1ms(15);wr_com(0x38);delay1ms(5);wr_com(0x08);delay1ms(5);wr_com(0x01);delay1ms(5);wr_com(0x06);delay1ms(5);洛阳理工学院课程设计报告4wr_com(0x0c);delay1ms(5);}voiddisplay(unsignedchar*p)//显示//{while(*p!='\0'){wr_dat(*p);p++;delay1ms(1);}}init_play()//初始化显示{lcd_init();wr_com(0x80);display(str1);wr_com(0xc0);display(str2);}/*********************ds1820程序************************************/voiddelay_18B20(unsignedinti)//延时1微秒{while(i--);}voidds1820rst()/*ds1820复位*/{unsignedcharx=0;DQ=1;//DQ复位delay_18B20(4);//延时DQ=0;//DQ拉低delay_18B20(100);//精确延时大于480usDQ=1;//拉高delay_18B20(40);}uchards1820rd()/*读数据*/{unsignedchari=0;unsignedchardat=0;for(i=8;i0;i--){DQ=0;//给脉冲信号洛阳理工学院课程设计报告5dat=1;DQ=1;//给脉冲信号if(DQ)dat|=0x80;delay_18B20(10);}return(dat);}voidds1820wr(ucharwdata)/*写数据*/{unsignedchari=0;for(i=8;i0;i--){DQ=0;DQ=wdata&0x01;delay_18B20(10);DQ=1;wdata=1;}}read_temp()/*读取温度值并转换*/{uchara,b;ds1820rst();ds1820wr(0xcc);//*跳过读序列号*/ds1820wr(0x44);//*启动温度转换*/ds1820rst();ds1820wr(0xcc);//*跳过读序列号*/ds1820wr(0xbe);//*读取温度*/a=ds1820rd();b=ds1820rd();tvalue=b;tvalue=8;tvalue=tvalue|a;if(tvalue0x0fff)tflag=0;else{tvalue=~tvalue+1;洛阳理工学院课程设计报告6tflag=1;}tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数return(tvalue);}/*******************************************************************/voidds1820disp()//温度值显示{ucharflagdat;disdata[0]=tvalue/1000+0x30;//百位数disdata[1]=tvalue%1000/100+0x30;//十位数disdata[2]=tvalue%100/10+0x30;//个位数disdata[3]=tvalue%10+0x30;//小数位if(tflag==0)flagdat=0x20;//正温度不显示符号elseflagdat=0x2d;//负温度显示负号:-if(disdata[0]==0x30){disdata[0]=0x20;//如果百位为0,不显示if(disdata[1]==0x30){disdata[1]=0x20;//如果百位为0,十位为0也不显示}}wr_com(0xc0);wr_dat(flagdat);//显示符号位wr_com(0xc1);wr_dat(disdata[0]);//显示百位wr_com(0xc2);wr_dat(disdata[1]);//显示十位wr_com(0xc3);wr_dat(disdata[2]);//显示个位wr_com(0xc4);wr_dat(0x2e);//显示小数点wr_com(0xc5);wr_dat(disdata[3]);//显示小数位}洛阳理工学院课程设计报告7/********************主程序***********************************/voidmain(){init_play();//初始化显示while(1){read_temp();//读取温度ds1820disp();//显示}}程序运行结果如图:洛阳理工学院课程设计报告8六、总结通过本次课程设计我感觉自己收获很多,本次实验是我们在上次做的一个用1602显示时间程序的基础上改进而来的,我们上次实验中遇到了很多问题,运行结果一直显示不出来,最后在老师的帮助下解决了,这个过程中我学会了一些解决问题的方法。本次试验过程中我了解了DS18B20的相关知识和应用,并通过烧写程序用单片机显示温度,感觉不仅收获了知识而且整个过程比较有意思。当然我们还有一些不足,程序设计功能单一,使用范围有限,一些错误信息考虑不到位,有待于进一步改进,例如利用本次实验设计的整体思路还可以测量空气中的湿度,颗粒物含量等。能够顺利完成本次实验设计我还要感谢我的团队成员,在和我团队成员的相处中我们有过不一致的意见和看法,因为我的急躁,甚至还发生过一些小小的不愉快,但最后我们都以大局为重,整个过程相处比较和睦,这对我以后与人相处都有所帮助。洛阳理工学院课程设计报告9
本文标题:51单片机(课程设计)
链接地址:https://www.777doc.com/doc-2927793 .html