单片机原理与接口技术-基于单片机的温度采集器设计实验.

上传人:最**** 文档编号:116667597 上传时间:2019-11-17 格式:DOC 页数:17 大小:154.50KB
返回 下载 相关 举报
单片机原理与接口技术-基于单片机的温度采集器设计实验._第1页
第1页 / 共17页
单片机原理与接口技术-基于单片机的温度采集器设计实验._第2页
第2页 / 共17页
单片机原理与接口技术-基于单片机的温度采集器设计实验._第3页
第3页 / 共17页
单片机原理与接口技术-基于单片机的温度采集器设计实验._第4页
第4页 / 共17页
单片机原理与接口技术-基于单片机的温度采集器设计实验._第5页
第5页 / 共17页
点击查看更多>>
资源描述

《单片机原理与接口技术-基于单片机的温度采集器设计实验.》由会员分享,可在线阅读,更多相关《单片机原理与接口技术-基于单片机的温度采集器设计实验.(17页珍藏版)》请在金锄头文库上搜索。

1、单片机原理与接口技术课程实验报告 实验十二 温度采集器的设计院 系: 班 级: 同组人员: 指导老师; 设计时间:2012年1月6日一:实验目的和设备1.1实验目的本设计要使用新的开发箱,要求开始的时候LCD12864能够显示开机欢迎的图形画面。设置一个按键,按下就开始采集温度值。使用DS18B20温度传感器获取温度数据,使用LCD12864显示出来。1.2实验设备 直流电源.一台计算机.一个12864液晶.一个集成51单片机芯片 各种数据线等二: 系统总体设计方案本系统是一个基于单片机AT89C51的数字温度计的设计,用来测量环境温度。整个设计系统分为4部分:单片机控制、温度传感器、lcd显

2、示以及按键控制电路。整个设计是以AT89C52为核心,通过数字温度传感器DS18B20来实现环境温度的采集和A/D转换。单片机把采集到的温度进行相应的转换后,使之能够方便地在LCD上输出。采用12864液晶屏显示温度。三:系统硬件分析与设计 1.总体结构 PC机51集成芯片(内含18b20)USB连接12864液晶显示屏2.各部件原理图: 12864与单片机接口的连接图。1.模块主要引脚说明1 RS 数据选择信号/并行的指令2 R/W 并行的读写选择信号3 E 并行的使能信号4 DB0DB7 数据口 (对应单片机的P0口)2.接口时序8位并行连接时序图MCU写资料到模块MCU从模块读出资料汉字

3、显示坐标起始位置:18b20原理图1. DS18B20引脚定义: (1)DQ(p13口)为数字信号输入/输出端; (2)GND为电源地; (3)VCC为外接供电电源输入端(在寄生电源接线方式时接地)。2. 测温工作:温度传感器DS18B20连接时I/O口上要接一个上拉10K左右的电阻,这样可以保证温传感器工作时候的精度,还有抗干扰的作用。温度传感器检测外界的温度,得到的数据,将进行数据的转换,转换完成的温度数字将会保留,然后在液晶上显示。3. 重要特性: 1.独特地单线接口只要一个端口引脚进行通信。必须先建立ROM通信协议,才能进行存储器和控制操作。因此,控制器必须首先提供下面5个ROM操作命

4、令之一:1.读ROM 2.写ROM 3. 搜索ROM 4. 跳过ROM 5. 报警搜索。 2.简单的多点分布应用。 3.无需外部器件 4.可通过数据线供电 5.零待机功耗 6.测温范围-55+125度 ,以0.5度递增。 7.温度以九位数字量读出。 三:软件设计1. 程序流程图 开始初始化显示及DS18B20按键检测显示欢迎界面无键按下或状态为0有键按下状态为1读出温度在LCD上显示温度2. 程序代码:#include #define uchar unsigned char#define uint unsigned intsbit key = P32; sbit lcden=P26; /定义l

5、cd使能端sbit lcdrs=P24; /定义lcd数据命令选择端sbit lcdwr=P25; /定义lcd读写选择端sbit lcdrd=P21; /定义并串选择端sbit DQ=P13; /定义DS18B20数据线引脚端uchar high,low;char a,d2,d1,d0; float f_temp;uint i,j,temp;uchar code line1=欢迎进入:;uchar code line2=当前室温:;uchar code line3=00.0度;void delay_ms(uint z) /延时z毫秒 uint x,y;for(x=z;x0;x-) for(y

6、=115;y0;y-);LCD驱动/-用户界面文字显示函数void face_dis() wr_cmd(0x30); /选择功能:8位数据基本指令操作wr_cmd(0x0c); /整体显示开,不显示光标wr_cmd(0x01); /lcd清屏wr_cmd(0x02); /游标归原点wr_cmd(0x80); /设置第零行起始位for(a=0;a10;a+) /写入第零行数据 wr_dat(line1a);wr_cmd(0x90); /设置第一行起始位for(a=0;a10;a+) /写入第一行数据 wr_dat(line2a); /-用户界面数据显示函数-void dat_dis()wr_cm

7、d(0x8c); /显示温度wr_dat(0x30+d2);wr_dat(0x30+d1);wr_dat(0x2e); /写入“.”号wr_dat(0x30+d0); /-初始化函数void init()delay_ms(20); /等待液晶输入电源稳定lcdrd=1; /选定lcd与单片机并行连接lcdwr=0; /因为我们不需要从lcd模块读数据,所以可直接将此端口清零,便于之后利用矩阵键盘face_dis(); /显示用户界面18b20驱动/-温度获取函数-void get_temp() init_temp(); /初始化,复位并获取应答信号wr_temp(0xcc); /跳过ROMwr

8、_temp(0x44); /开始温度转换delay_ms(100); /等待温度转换完成init_temp(); /将DS18B20复位wr_temp(0xcc); /跳过ROMwr_temp(0xbe); /读暂存器low=rd_temp(); /读取低8位high=rd_temp(); /读取高8位temp=high;temp=8;temp=temp|low; /将读取的低8位和高8位合并f_temp=temp*0.0625; /温度在寄存器中为12位 分辨率位0.0625temp=f_temp*10+0.5; /精确到十分位,四舍五入d2=temp/100; /显示数据:十位d1=tem

9、p%100/10; /显示数据:个位d0=temp%10; /显示数据:十分位/-主函数-void main() bit flag; flag=0;init(); /lcd初始化 while(!flag) if(key = 0)flag=1; while(1) get_temp(); /获取温度 dat_dis(); /显示温度 四:设计中优缺点优点:结构简单易懂、并没有进行很多的修饰,温度采集是个实时采集的数据,并不是只取测试时的温度。缺点:功能少,没有分屏,温度采集不是很精确。五:总结: 经过将两天的单片机课程设计,终于完成了我们的温度采集器的设计,虽然没有完全达到设计要求,但从心底里说,

10、还是高兴的,毕竟这次设计最终还是做出结果来了。 在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,尤其是本次设计着实让我头大,改了很多,参考了很多,也请教了N个人,通过这次的设计我明白了时序才真正是数字芯片的灵魂,所有的程序我们都可以通过对其时序的理解来实现对其操作,同时体会到了单总线结构的魅力。 从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中才是王道,学习单机片机更是如

11、此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。 最重要的是本次设计是三个人一组,让我们有种组队做单片机开发项目的感觉,毕竟一个项目只靠一个人是很难完成的,今后我们做的项目肯定要多人协作。在这次设计过程中培养了我们的团队协作精神,便于我们走到工作岗位后能很快适应工作环境。六:评价 本次题目着实选的比较难,一开始觉得弄个12864的驱动18b20的驱动在通过自己的一点编程把温度通过液晶显示出来就可以了,可是实际做起来可不是这样的,液晶是各种不显示啊,花了很多时间都在搞液晶的显示,到最后其实是开发板的接口有问题。我们又用的自己的51集成板子,经过我们的努力终究还是做

12、出结果来了,但是并没有很好的完成题目所给的要求。七:意见希望1.课程设计时间能多一些。2.最好实验室能够上网,方便大家查阅资料。附录程序代码:#include #define uchar unsigned char#define uint unsigned intsbit key = P32;sbit lcden=P26; /定义lcd使能端sbit lcdrs=P24; /定义lcd数据命令选择端sbit lcdwr=P25; /定义lcd读写选择端sbit lcdrd=P21; /定义并串选择端sbit DQ=P13; /定义DS18B20数据线引脚端uchar high,low;char a,d2,d1,d0; float f_temp;uint i,j,temp;uchar code line1=欢迎进入:;uchar code line2=当前室温:;uchar code line3=00.0度;/-毫秒级延时函数-void delay_ms(uint z) /延时z毫秒 uint x,y;for(x=z;x0;x-) for(y=115;y0;y-);/-lcd写指令函数-void wr_cmd(uchar cmd)lcden=0;lcdrs=0;P0=cmd;delay_ms(1);lc

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号