迪文科技论坛

 找回密码
 立即注册
搜索
查看: 297|回复: 1

【开源】基于COF屏的手持式燃气检测仪

[复制链接]

12

主题

164

回帖

1007

积分

金牌会员

Rank: 6Rank: 6

积分
1007
QQ
发表于 2026-6-28 09:28:07 | 显示全部楼层 |阅读模式
本帖最后由 lihui163 于 2026-6-29 10:37 编辑


一、产品概述
本产品是一款基于 STM32G030 主控 +迪文2.8寸COF屏 的便携式可燃气体检测仪,专用于城镇燃气管网巡检、居民入户安检、有限空间及工业场所的可燃气体泄漏检测。仪器采用催化燃烧式传感器,支持甲烷(CH₄)/液化石油气(LPG)检测,整机通过 Ex ib IIC T4 Gb 本安防爆认证,轻巧便携、响应迅速、界面直观。本安防爆设计(Ex ib IIC T4 Gb):本质安全型电路设计,适用于 Zone 1/Zone 2 危险区域。高精度催化燃烧传感器:测量范围 0~100% LEL,分辨率 1% LEL,带温度补偿与零点漂移校正。三重报警提示:≥90dB 蜂鸣器 + 高亮 LED 确保嘈杂或黑暗环境及时警示。
智能人机交互:DGUS 图形界面,菜单引导操作。大容量锂电:3.7V 可充锂电池,单次充满连续工作 ≥8h,支持 Type-C 充电与欠压提示。数据存储:本地存储报警记录与检测数据,支持串口/USB 导出。人体工学外壳:ABS+PC 双色注塑,防滑、防尘、防水(IP65),配有腰夹与伸缩探杆接口。
二、整体框架介绍


上面是整体的原理,这个屏幕没有触摸,只能用用物理按键来操作屏幕这块,论坛里边没有这个例程,正好借这次开源把整个按键模拟的工程分享出来
有模拟滑动的,触摸的,上下切换的,改变数值的等等
1.页面切换


  1. /**
  2. * @brief 页面切换: 5A A5 07 82 00 84 5A 01 00 XX
  3. * @param page_id 目标页面ID (0~7)
  4. */
  5. void dwin_switch_page(uint8_t page_id)
  6. {
  7.     uint8_t buf[10];
  8.     buf[0] = 0x5A;  buf[1] = 0xA5;     /* 帧头 */
  9.     buf[2] = 0x07;                      /* 数据长度: 7字节 */
  10.     buf[3] = 0x82;                      /* 写寄存器指令 */
  11.     buf[4] = 0x00;  buf[5] = 0x84;     /* 系统寄存器 0x0084 (页面切换) */
  12.     buf[6] = 0x5A;  buf[7] = 0x01;     /* 切换模式: 5A01 */
  13.     buf[8] = 0x00;  buf[9] = page_id;  /* 页面ID (高字节=0, 低字节=ID) */
  14.     HAL_UART_Transmit(&huart2, buf, 10, 100);
  15.     current_page = page_id;             /* 追踪当前页面 */
  16. }
复制代码
2.VP变量写数据

  1. /**
  2. * @brief 写VP变量: 5A A5 05 82 VPH VPL DH DL
  3. * @param vp_addr DGUS变量地址 (16位)
  4. * @param value 写入的16位数据
  5. */
  6. void dwin_write_vp(uint16_t vp_addr, uint16_t value)
  7. {
  8. uint8_t buf[8];
  9. buf[0] = 0x5A; buf[1] = 0xA5;
  10. buf[2] = 0x05; /* 数据长度: 5字节 */
  11. buf[3] = 0x82;  /* 写数据存储区 */
  12. buf[4] = (uint8_t)(vp_addr >> 8); /* VP地址高字节 */
  13. buf[5] = (uint8_t)(vp_addr & 0xFF); /* VP地址低字节 */
  14. buf[6] = (uint8_t)(value >> 8); /* 数据高字节 */
  15. buf[7] = (uint8_t)(value & 0xFF);  /* 数据低字节 */
  16. HAL_UART_Transmit(&huart2, buf, 8, 100);
  17. }
复制代码


3.显示开机进度条
  1. /**
  2. * @brief 显示开机进度条 (写进度条VP 0x1200)
  3. * @param percent 0~100
  4. */
  5. void dwin_show_boot_progress(uint8_t percent)
  6. {
  7. if (percent > 100) percent = 100;
  8. dwin_write_vp(DWIN_VP_PROGRESS, (uint16_t)percent);
  9. }
复制代码

4.模拟触控事件
  1. /**
  2. * @brief 模拟触控事件: 5A A5 0B 82 00D4 5AA5 0004 FF01 0001
  3. * @param vp_addr 触控VP地址 (当前未使用, 保留)
  4. * @param value   0x0001=按下, 0x0000=释放
  5. */
  6. void dwin_send_touch(uint16_t vp_addr, uint16_t value)
  7. {
  8.     uint8_t buf[14];
  9.     buf[0]  = 0x5A;  buf[1]  = 0xA5;
  10.     buf[2]  = 0x0B;  buf[3]  = 0x82;
  11.     buf[4]  = 0x00;  buf[5]  = 0xD4;     /* 触控接口地址 0x00D4 */
  12.     buf[6]  = 0x5A;  buf[7]  = 0xA5;     /* 子帧头 */
  13.     buf[8]  = 0x00;  buf[9]  = 0x04;     /* 子数据长度: 4字节 */
  14.     buf[10] = 0xFF;  buf[11] = 0x01;     /* VP地址: 0xFF01 (触控坐标) */
  15.     buf[12] = 0x00;  buf[13] = 0x01;     /* 触控值: 0x0001=按下 */
  16.     HAL_UART_Transmit(&huart2, buf, 14, 100);
  17. }


复制代码

5,简单界面展示


这是硬件


视频简单操作
https://www.bilibili.com/video/BV1d7Tu6TE8x/?vd_source=7233f1e1cc9ba168a135d10325298f13



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

发表于 2026-7-29 19:33:22 | 显示全部楼层
好的,已参考


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-8-13 22:57 , Processed in 0.036563 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表