欢迎来到天天文库
浏览记录
ID:61444833
大小:2.68 MB
页数:11页
时间:2021-01-31
《单片机(课程设计).doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、洛阳理工学院课程设计报告课程名称_____单片机应用____________________设计题目_____基于DS18B20和1602的温度计____专业_____计算机应用技术_________________班级________Z____________________学号_______Z___________________姓名__________张玉红____________________完成日期_________2014.6.12__________________课程设计任务书设计题目:_____基于80C51单片机和DS18B20的数字温度计__设计内容与要求
2、:设计内容:采用STC89C51单片机,DS18B20数字温度采集器件,单总线驱动等电路设计制作一个点在温度计,能利用1602LCD液晶显示温度。设计要求:1)单片机系统扩展设计;、2)温度采集设计;3)显示功能设计;指导教师:_______________年月日课程设计评语成绩:指导教师:_______________年月日一、设计目的本次的设计主要是利用了单片机80C51和数字温度传感器DS18B20测量温度信号,计算后可以在LCD数码管1602上显示相应的温度值。二、设计指标温度测量范围为-55~125℃,精确度为0.1℃。三、总体框图设计初始化、设置常量调用DS18初始化
3、程序读温度转换值调用数据处理子程序生成显示码显示温度值主函数流程图四、功能模块及原理说明温度计采用80C51单片机作为微处理器,温度计系统的外围接口电路由晶振、LCD显示电路、复位电路、温度检测电路、LCD驱动电路。温度计系统的的硬件电路图如下图所示。温度计的工作过程是:初始化其接收需要检测的温度,并一直处于检测状态,并将检测到的温度值读取,并转化为十进制数值,通过LCD显示出来,再显示温度,方便用户来读数使用记录数据。具体实现方法是:单片机将从P3.3管脚读进来的数据进行处理,P0.1到P0.7为数码管的段选端口,通过RP1的驱动对LCD进行驱动。五、设计验证数字温度计程序代码
4、如下:#include#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^3;//ds18b20与单片机连接口sbitRS=P2^4;//数据/命令选择sbitRW=P2^5;//读写选择sbitEN=P2^6;//使能信号unsignedcharcodestr1[]={"temperature:"};unsignedcharcodestr2[]={""};uchardatadisdata[5];uinttvalue;//温度值uchartflag;//温度正负标志/******************
5、*******lcd1602程序**************************/voiddelay1ms(unsignedintms)//延时1毫秒(不够精确的){unsignedinti,j;for(i=0;i6、由高电平跳变成低电平时,液晶模块执行命令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);de7、lay1ms(5);wr_com(0x08);delay1ms(5);wr_com(0x01);delay1ms(5);wr_com(0x06);delay1ms(5);wr_com(0x0c);delay1ms(5);}voiddisplay(unsignedchar*p)//显示//{while(*p!=' '){wr_dat(*p);p++;delay1ms(1);}}init_play()//初始化显示{lcd_init();wr_com(0x80);display(s
6、由高电平跳变成低电平时,液晶模块执行命令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);de
7、lay1ms(5);wr_com(0x08);delay1ms(5);wr_com(0x01);delay1ms(5);wr_com(0x06);delay1ms(5);wr_com(0x0c);delay1ms(5);}voiddisplay(unsignedchar*p)//显示//{while(*p!=' '){wr_dat(*p);p++;delay1ms(1);}}init_play()//初始化显示{lcd_init();wr_com(0x80);display(s
此文档下载收益归作者所有