标题:
DS18B20温度显示仿真 程序 中文资料
[打印本页]
作者:
WHO
时间:
2016-5-11 14:26
标题:
DS18B20温度显示仿真 程序 中文资料
DS18B20温度显示仿真
0.png
(75.64 KB, 下载次数: 126)
下载附件
2016-5-11 16:38 上传
下载所有资料包含中文资料:
温度显示.rar
(156.57 KB, 下载次数: 16)
2016-5-11 14:24 上传
点击文件名下载附件
新手发帖
下载积分: 黑币 -5
DS18B20温度显示仿真图:
0.png
(27.53 KB, 下载次数: 141)
下载附件
2016-5-11 16:38 上传
#include <reg52.h>
#include "typedef.h"
#include "device_init.h"
#include "ds18b20.h"
code u8 float_tab[16] = {0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};//小数表
code u8 DisCode[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xff, 0xbf};
u8 DisNum[4] = {0x0a, 0x0a, 0x00, 0x00};
u8 DisPosition = 0;
/************************************************
* 函数名称:dynamic_display
* 输 入:
* 输 出:
* 功能描述:
*************************************************/
void dynamic_display(void)
{
static u8 DisPinOn = 0x01;
DisPinOn <<= 1;
if(DisPinOn == 0x10)
{
DisPosition = 0;
DisPinOn = 0x01;
}
DIS_DAT = 0xff;
DIS_POS = DisPinOn;
DIS_DAT = DisCode[DisNum[DisPosition++]];
if(DisPinOn == 0x04)
DIS_DAT &= 0x7f;
}
/************************************************
* 函数名称:set_temp_data
* 输 入:
* 输 出:
* 功能描述:
*************************************************/
void set_temp_data(void)
{
u16 TempData;
float Temp;
u8 Negative;
s8 i;
TempData = ds18b20_get_temp(); //度温度数据
/* 小于零 */
if(TempData & 0xf000)
{
TempData = ~TempData + 1;
TempData &= 0x0fff;
Negative = 1;
}
/* 大于零 */
else
{
Negative = 0;
}
Temp = (TempData >> 4) * 10; //温度读数乘以精度(0.0625),显示小数点一位,所以乘以10
Temp = Temp + float_tab[(TempData & 0x000f)] + 0.5; //加上小数部分,四舍五入所以加0.5
TempData = Temp;
for(i=3; i>=0; i--)
{
DisNum[i] = TempData % 10;
TempData /= 10;
}
for(i=0; i<2; i++)
{
if(DisNum[i] != 0)
{
break;
}
else
{
DisNum[i] = 0x0a; //前面为0不显示
}
}
/* 显示负号 */
if(Negative == 1)
{
for(i=2; i>=0; i--)
{
if(DisNum[i] == 0x0a)
{
DisNum[i] = 0x0b; //'-'
break;
}
}
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1