1 / 21
文档名称:

单片机实验报告.doc

格式:doc   大小:1,022KB   页数:21页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

单片机实验报告.doc

上传人:联系 2017/8/28 文件大小:1022 KB

下载得到文件列表

单片机实验报告.doc

相关文档

文档介绍

文档介绍:《51单片机》实验报告
学院计通学院
专业班级    物联1401     
姓    名    廖攀    
学    号   41458027      
 
 
 
2016年12月
一、实验要求:
以STC89开发板为硬件平台, 开发温度采集、动态数码管显示、按键响应、与PC串口通讯的综合程序,实现以下功能:
1) PC上的串口调试助手通过串口给STC89开发板发送“GetTemp”命令
2)  STC89开发板从串口接收到“GetTemp”命令后启动温度传感器DS18B20的测温程序获取当前温度,测试完成时将所测得温度数据显示在动态数码管上。(动态数码管在温度获取之前应该显示“NOTEMP”, 只有在获取温度后才显示温度值)
3)  动态数码管显示出温度数据后, 请通过按键触发STC89开发板通过串口回送步骤2所测的温度数据给PC上串口调试助手,同时恢复动态数码管显示为“NOTEMP”。为保证每个同学的实验都独立完成,要求回送的数据包含自己的学号,即如果你的学号是20150809,,那么在PC上的串口调试助手应该显示:ID:20150809, Temp:.
二、程序设计思路:该实验是一个综合实验,需要结合很多的知识来解决。具体来说可以分成这三个方面,第一个方面是用温度传感器DS18B20测量外界的温度,这个课本第十六章有十分详细的操作过程,第二个方面是如何运用串口助手来解决串口问题,第三个方面是实验中会出现一些中断,需要注意很多细节。具体实验过程先使用温度传感器DS18B20测量出外界的温度(可以参考教科书317-321,也可以参考实验课学到的实验16),然后在此基础上运用起串口(可以参考实验课所学到的实验15),最后整合起来,实现所有功能。
原理图:
CPU管脚电路晶振电路
(2)数码管部分
1、数码管显示
(1)数码管的显示原理
数码管的显示原理是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。数码管内部电路如下图所示,从右图可看出,一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚,其中第3和第8引脚是连接在一起的。而它们的公共端又可分为共阳极和共阴极,中间图为共阴极内部原理图,右图为共阳极内部原理图。
上图展出了常用的两种数码管的引脚排列和内部结构。总所周知,点亮发光二极管就是要给予它足够大的正向压降。所以点亮数码管其实也就是给它内部相应的发光二极管正向压降。如上图左(一共a、b、c、d、e、f、g、DP 八段),如果要显示“1”则要点亮b、c 两段LED;显示“A”则点亮a、b、c、e、f、g 这六段LED;我们还知道,既然LED 加载的是正向压降,它的两端电压必然会有高低之分:如果八段LED 电压高的一端为公共端,我们称之为共阳极数码管(如上图中);如果八段LED 电压低的一段为公共端,则称之为共阴极数码管(上图右)。所以,要点亮共阳极数码管,则要在公共端给予高于非公共端的电平;反之点亮共阴极数码管,则要在非公共端给予较高电平。
动态显示是多个数码管,交替显示,利用人的视觉暂停作用使人看到多个数码管同时显示的效果。
数码管
(3)DS18B20温度传感器部分
(1)工作原理
DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。
高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。
初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。
初始时,计数器1预置的是与-55℃相对应的一个预置值。以后计数器1每一个循环的预置数都由斜率累加器提供。为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1
℃计数器所需要的计数个数。
DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计数器2停止计数后,℃进行比较,℃,温度寄存器的最低位就置0;℃,最低位就置1;℃时,温度寄存器的最低位就进位然后置0。这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,℃,四舍五入最大量化误差为±1/2LSB,℃。
温度寄存器中的温度值以9位数