单片机应用-温度传感器的内部函数[易尔昌]
单片机应用-温度传感器的内部函数[易尔昌]
//Code的作用是告诉单片机,我定义的数据要放在ROM(程序存储区)里面,其实是相当与汇编里面的寻址MOVX(好像是),因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM的意思
//Ds18b20ReadTemp()这个函数 就是头文件里的 应该是省略了一些物理的计算
类似于 电流的大小 电压 在根据产品的材料 算出 温度的值 传给你
这个值还是要处理一下
逻辑不必去思考 毕竟这是人家算好给出来的值 既然它让我们去这么处理 我们就这么处理
//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就
//算加上0.5,还是在小数点后面。
这句话 其实有点重要 c语言会自动帮你做类型转化
所以四舍五入就没有用函数 我记得js还要MATH函数处理 下次我也这么写四舍五入
会不会出问题不太清楚
#include “reg52.h” //此文件中定义了单片机的一些特殊功能寄存器
#include"temp.h" //这里面有个温度的函数
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void DigDisplay()
{
u8 i;
for(i=0;i<6;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位
}
P0=DisplayData[5-i];//发送数据
delay(100); //间隔一段时间扫描
P0=0x00;//消隐
}
}
这个函数 就是一秒执行几百次
然后 你就能看到多个数组
像我这种动态视力优秀的人 看着 就是一堆闪烁的灯 花里胡哨的
人类的动态视力真弱 这就被欺骗了;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
这三个 只要用到了数码管
三个数字 就是2的三次方 就是 有八种情况 然后这八种情况对应一个数字
一个数字有八个二极管[老化试验箱]
所以就是
P0=DisplayData[5-i];就是 1111 1110 ,随便写的 控制八个灯的亮的方式
就是用三个开关控制8个灯的开关 ;
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
所以这里是设计好的10个亮灯的方式 ;
这个可以看出温度给出的是个四位数字 再把这个四位数字拆出来 放到led里面显示
P0=0x00;//消隐 这个我不太了解 他是加我就加吧