找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 551|回复: 5
收起左侧

压力变化更新显示,没变化锁定显示,如何实现?如视频效果

[复制链接]
ID:686513 发表于 2024-6-19 13:12 | 显示全部楼层 |阅读模式
如视频显示的效果。在大神lkc8210老师的代码上改的,基本可以实现想要的功能,但与视频中的效果还是有差别,各位大神帮我指点一下!
https://www.bilibili.com/video/BV1gLgPe1EVs/     (视频效果)
void sleep()               // 放在while大循环中
{
   if(XmCnt==1)                                                            //XmCnt定时500mS检测一下是否休眠   
    {                                                     
        XM_90S_1 = press;                                            //Press 为ADC获取到的压力数据给到当前压力XM_90S_1
        if(XM_90S_1 < (XM_90S_2+5) && XM_90S_1 > (XM_90S_2-5))                                //当前压力与上次压力比较
         {
           xmflag = 0;
           parm1 = press;         //parm1把当前压力值送示                                                                                                        }                                       
      else                                               //压力不稳定时当前压力赋值给上次压力变量
        {                                
           XM_90S_2 = XM_90S_1;                                             
           xmflag=1;                                       
         }
   if(stable==1)
      {
          System_CPU_OFF();                                      //关机
      }
  }
}


void Timer0Init()         //定时10ms
{        
        TMOD &= 0xF0;                     //设置定时器模式
        TMOD |= 0x01;                     //设置定时器模式
        TL0 = 0x00;                       //设置定时初始值
        TH0 = 0xe0;                       //设置定时初始值               
        TF0 = 0;                         //清除TF0标志
        ET0=1;               //定时器0开关        
        TR0 = 1;                         //定时器0开始计时
}
void timer0_ISR() interrupt 1       //定时器中断0,中断号:1
{
        TR0=0;                                                 //定时器0计时关闭
        
        if(xmflag)
          {
                         gjcnt++;
                         if(gjcnt>=6000)
                          {
                                        gjcnt=0;
                                        stable = 1;
                          }         
                 }
   else
          {
                 gjcnt=0;
                 stable = 0;         
    }
               
        TL0 = 0x00;                                       //设置定时初始值
        TH0 = 0xe0;                                       //设置定时初始值
        TR0=1;                               //定时器0计时打开        
}









回复

使用道具 举报

ID:161164 发表于 2024-6-19 14:53 | 显示全部楼层
有啥差别?
回复

使用道具 举报

ID:686513 发表于 2024-6-20 10:07 | 显示全部楼层

测气时,有时压力值正确并能保持,有时拿掉时快了或慢了压力值保持不住,会回落!如下面视频所示https://www.bilibili.com/video/BV1JagVeRErM/
回复

使用道具 举报

ID:1034262 发表于 2024-6-20 11:21 | 显示全部楼层
只是一个判断逻辑,接入气压测量保持最大值,气压减小至0再加压则重新测量,就这么简单。
回复

使用道具 举报

ID:123289 发表于 2024-6-20 20:12 | 显示全部楼层
如果每次测量都是OK的,则实测实显当无问题。
回复

使用道具 举报

ID:686513 发表于 2024-7-16 16:31 | 显示全部楼层
coody_sz 发表于 2024-6-20 11:21
只是一个判断逻辑,接入气压测量保持最大值,气压减小至0再加压则重新测量,就这么简单。

是这个意思,大神能帮我把上面的程序按您这个逻辑修改一下吗?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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