在1.8寸TFT上通过描点的方式实现温度曲线图

电子说

1.2w人已加入

描述

前言

本篇文章在1.8寸TFT上通过描点的方式实现温度曲线图,温度采集使用手上的HS3003,屏幕局部刷新已实现,后面会更新滚动显示。

HS3003数据读取

在RT-Thread Settings中添加hs300x软件包

TFT屏

使用模拟IIC,408 和407引脚

TFT屏

在RA Smart Configurator中配置408和407为输出模式

TFT屏

在sensor_renesas_hs300x.c中添加初始化代码

#define HS300X_I2C_BUS "i2c1"
int rt_hw_hs300x_port(void)
{
struct rt_sensor_config cfg;
cfg.intf.dev_name = HS300X_I2C_BUS;
cfg.intf.user_data = (void *)HS300X_I2C_ADDR;
rt_hw_hs300x_init("hs300x", &cfg);
return RT_EOK;
}
INIT_ENV_EXPORT(rt_hw_hs300x_port);

读取温度:

TFT屏

打开串口,查看输出

TFT屏

曲线显示

当前只能在屏幕显示完后,将显示部分全部刷新,不能滚动显示,后面有时间补上,代码如下

void Port_DrawCurve(uint16_t value)
{
static uint8_t last_x,last_y = 0,x=10;
static uint16_t temp_y = 10,mode=0;
temp_y = value;
//这里由于数值较大,屏幕放不下,所以整体缩小了10倍
//使用的时候由于屏幕是倒置使用的,所以需要用128-value的值
// temp_y = LCD_DRAW_CURVE_y_MAX - value;
if(temp_y >= 120)
{
temp_y = 120;
}
if(mode == 0)
{
x+=1;
last_x=x;
lcd_draw_pixel(temp_y,x,LCD_CURE_COLOR);
}
else if(mode ==1)
{
lcd_draw_pixel(temp_y,145,LCD_CURE_COLOR);
}
if(x>=145)
{
x=10;
lcd_fill(11,11,120,150,WHITE);
// value =1;
}
//从第0列开始画
}

总结

温度折线显示已经完成,如下所示:

TFT屏

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分