《单片机实验报告—— 数码管显示温度.docx》由会员分享,可在线阅读,更多相关《单片机实验报告—— 数码管显示温度.docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、XXXX学院实验报告Experimentation Report of Taiyuan Normal University想 告 内一、实验目的二、实验原理三、实验仪器及材料察四、实验方法五、实验记录及数据处理六、误差分析及讨论系部计算机姓名学号年级大三 课程单片机原理与接口技术同组者 日期数码管显示温度一、 实验目的1、了解单片机顺序执行的特点;2、掌握C语言的编写和keilc51的使用;3、熟悉DS18B20温度传感器的使用。二、实验仪器硬件资源:单片机开发板笔记本电脑;软件资源:软件Keil uVision5;三、实验原理1、流程图2、 连接图四、实验结果数码管显示当前温度,用手握住温度
2、传感器,数码管显示的温度值变 大。四、实验代码及分析主函数void main()while (1)LcdDisplay(Dsl8b20ReadTemp();显示读取到的温度值)void LcdDisplay (int temp) lcd 显示(float tp;if(temp 0)当温度值为负数DisplayData0 = 0x40; 因为读取的温度是实际温度的补码, 所以减1,再取反求出原码temp=temp-l;temp=temp;tp=temp;temp=tp*0. 0625*100+0.5;留两个小数点就*100, +0.5 是四舍五入,因为C语言浮点数转换为整型的时候把小数点后面的数
3、自动去掉,不管是否大于0. 5,而+0. 5之后大于0. 5的就是进1 了,小于0. 5的就算加上0.5,还是在小数点后面。elseDisplayData0 = 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;DisplayDatal = DIG_
4、CODEtempDisplayData2=DIG_CODEtemp %10000 / 1000;DisplayData3= DIG_CODEtemp % 1000 / 100 | 0x80;DisplayData4= DIG_CODEtemp % 100 / 10;DisplayData5= DIG CODEtemp % 10;扫描显示DigDisplay ();使用数码管显示void DigDisplay()unsigned char i;unsigned int j;for (i=0;i8;i+)(switch(i)位选,选择点亮的数码管,case (0):LSA=0; LSB=0; LS
5、C=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=DisplayDatai; 发送段码j=50;扫描间隔时间设定while(j一);GPIO_DIG=OxOO;消隐六、心得体会通过此次实验我学会了单片机上温度传感器的使用,以及将温度值显示在数 码管上的方法。亲自动手的实验过程使我对单片机的理论知识有了更好的掌握, 明白了理论与实践相结合的重要性。在不断的调试程序的过程中,我深刻意识到 动手操作的好处,在日后的学习中一定要提高自己的动手能力,注重实践,在一 次次的实验操作中提高自身的综合能力。
限制150内