- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
XXXX学院
实验报告
Experimentation Report of Taiyuan Normal University
想 告 内
一、实验目的
二、实验原理
三、实验仪器及材料
察
四、实验方法
五、实验记录及数据处理
六、误差分析及讨论
系部计算机
姓名
学号
年级大三 课程单片机原理与接口技术
同组者 日期
数码管显示温度
一、 实验目的
1、了解单片机顺序执行的特点;
2、掌握C语言的编写和keilc51的使用;
3、熟悉DS18B20温度传感器的使用。
二、实验仪器
硬件资源:单片机开发板笔记本电脑;
软件资源:软件Keil uVision5;
三、实验原理
1、
1、
流程图
2、 连接图
四、实验结果
数码管显示当前温度,用手握住温度传感器,数码管显示的温度值变 大。
四、实验代码及分析
〃主函数
void main()
{
while (1)
{
LcdDisplay(Dsl8b20ReadTemp()); 〃显示读取到的温度值
)
}
void LcdDisplay (int temp) 〃lcd 显示
(
float tp;
if(temp 0) 〃当温度值为负数
{
DisplayData[0] = 0x40; 〃因为读取的温度是实际温度的补码, 所以减1,再取反求出原码
temp=temp-l;
temp=?temp;
tp=temp;
temp=tp*0. 0625*100+0.5; 〃留两个小数点就*100, +0.5 是四
舍五入,因为C语言浮点数转换为整型的时候把小数点后面的数自动去掉,
〃不管是否大于0. 5,而+0. 5之后大于0. 5的就是进1 了,小于0. 5
〃的就算加上0.5,还是在小数点后面。
else
{
DisplayData[0] = 0x00;
tp=temp; 〃因为数据处理有小数点所以将温度赋给一个浮点型变量
〃如果温度是正的那么,那么正数的原码就是补码它本身
temp=tp*O. 0625*100+0. 5;
〃留两个小数点就*100, +0.5是四舍五入,因为C语言浮点数转换 〃为整型的时候把小数点后面的数自动去掉,不管是否大于0.5,而+0.5之 〃后大于0.5的就是进1 了,小于0.5的就算加上0.5,还是在小数点后面。
10000];DisplayData[l] =
10000];
DisplayData[2]=DIG_CODE[temp
DisplayData[2]
=DIG_CODE[temp %
10000 / 1000];
DisplayData[3]= DIG_CODE[temp % 1000 / 100] | 0x80;
DisplayData[4]= DIG_CODE[temp % 100 / 10];
DisplayData[4]
DisplayData[5]= DIG CODE[temp % 10];
〃扫描显示DigDisplay ();
〃扫描显示
〃使用数码管显示
void DigDisplay()
unsigned char i;
unsigned int j;
for (i=0;i8;i++)
(
switch(i) 〃位选,选择点亮的数码管,
{
case (0):
LSA=0; LSB=0; LSC=0; break; //显示第 0 位
case (1):
LSA=1; LSB=0; LSC=0; break; //显示第 1 位
case (2):
LSA=0;LSB=1;LSC=0; break;〃显示第 2 位
case (3):
LSA=1;LSB=1;LSC=0; break;〃显示第 3 位
case (4):
LSA=0; LSB=0; LSC=1; break; 〃显示第 4 位
case (5):
LSA=1;LSB=0;LSC=1; break;〃显示第 5 位
case (6):
LSA=0;LSB=1;LSC=1; break;〃显示第 6 位
case (7):
LSA=1;LSB=1;LSC=1; break;〃显示第 7 位
GPIO_DIG=DisplayData[i]; 〃发送段码
j=50; 〃扫描间隔时间设定
while(j一);
GPIO_DIG=OxOO;〃消隐
}
}
六、心得体会
通过此次实验我学会了单片机上温度传感器的使用,以及将温度值显示在数 码管上的方法。亲自动手的实验过程使我对单片机的理论知识有了更好的掌握, 明白了理论与实践相结合的重要性。在不断的调试程序的过程中,我深刻意识到 动手操作的好处,在日后的学习中一定要提高自己的动手能力,注重实践,在一 次次的实验操作中提高自身的综合能力。
文档评论(0)