找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1659|回复: 6
打印 上一主题 下一主题
收起左侧

不知道这个单片机代码的含义,烦大佬解答

[复制链接]
跳转到指定楼层
楼主
ID:770813 发表于 2020-6-14 10:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void main(void)
{
  unsigned int OverCounter = 0;
  unsigned char ptemp;
  bit OverFlg = 0;
  unsigned int temp,ppress = 0;
  float  press;        
  while(1)
  {         
                     
  getdata=Adc0832(0);
if(14<getdata<243)                                       //当压力值介于15kpa到115kpa之间时,遵循线性变换
{                           
int vary=getdata;                                                //y=(115-15)/(243-13)*X+15kpa                        
press=((10.0/23.0)*vary)+9.3;        //测试时补偿值为9.3                                                                                                         
temp=(int)(press*10);                  //放大10倍,便于后面的计算
      if(temp != ppress)
      {
        ppress = temp;
        OverFlg = 1;
      }                                                                                            
dispbuf[3]=temp/1000;        //取压力值百位
dispbuf[2]=(temp%1000)/100;        //取压力值十位
dispbuf[1]=((temp%1000)%100)/10;          //取压力值个位
dispbuf[0]=((temp%1000)%100)%10;        //取压力值十分位
display();
      if (temp > 100)
      {
          if(OverFlg == 1)    //如果是新的一辆车通过
          {
            OverCounter++;
            WIICByte(W24C04ADD,0x01,(OverCounter/0xff));    //低位
            WIICByte(W24C04ADD,0x02,(OverCounter%0xff));    //高位
//            ptemp = printf("%f\n",OverCounter);
            OverFlg = 0;    //清除标志
          }
      }
  }            
  }
}
是个小白,不能再白了,请大佬帮看看,讲解下代码含义,谢谢啦
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:673128 发表于 2020-6-14 17:36 | 只看该作者
用了模数转换模块,建议你从基础学,不要贪快,早晚你都会的。
回复

使用道具 举报

板凳
ID:663230 发表于 2020-6-14 22:13 | 只看该作者
你用了ADC0832 D/A转换芯片,
回复

使用道具 举报

地板
ID:511890 发表于 2020-6-15 00:09 | 只看该作者
void main(void)
{
  unsigned int OverCounter = 0;
  unsigned char ptemp;
  bit OverFlg = 0;
  unsigned int temp,ppress = 0;
  float  press;        
  while(1)
  {         
                     
  getdata=Adc0832(0);//这个是一个函数。这个是写内存函数。应该能在主函数外或者include包含的文件里找到实现。应该是从A/D转换器得到数据,然后赋值给getdata
if(14<getdata<243)                                       //当压力值介于15kpa到115kpa之间时,遵循线性变换
{

//下面三行是根据y=(115-15)/(243-13)*X+15kpa 这个公式处理数据。本来补偿值是15,后来应该是实测的时候为9.3 。得到的值应该是车的重量                 
int vary=getdata;                                                //y=(115-15)/(243-13)*X+15kpa                        
press=((10.0/23.0)*vary)+9.3;        //测试时补偿值为9.3                                                                                                         
temp=(int)(press*10);                  //放大10倍,便于后面的计算


      if(temp != ppress)//如果本次测到的数值和上一个数值不一致(这里的车应该都是不同重量的),则OverFlg置1,表示有一辆新车开到测量仪器上(可能是地磅之类的)
      {
        ppress = temp;
        OverFlg = 1;
      }   

//下面5行是进行数值处理,然后显示。显示值为三位数+以为小数          
dispbuf[3]=temp/1000;        //取压力值百位
dispbuf[2]=(temp%1000)/100;        //取压力值十位
dispbuf[1]=((temp%1000)%100)/10;          //取压力值个位
dispbuf[0]=((temp%1000)%100)%10;        //取压力值十分位
display();//显示函数。这个是写内存函数。应该能在主函数外或者include包含的文件里找到实现。


//以下为判断是否为车通过。(上面的实际重量press乘以10)也就是如果重量大于10(单位就要以实际为准了),并且本次称重和上一次称重有变化(就是上面的OverFlg=1),
//那么就判断通过的是车,然后累计总共过去了几辆车OverCounter,并将累计数写入到存储器W24C04ADD里面。
      if (temp > 100)
      {
          if(OverFlg == 1)    //如果是新的一辆车通过
          {
            OverCounter++;
            WIICByte(W24C04ADD,0x01,(OverCounter/0xff));    //低位  //写入内存低位(一个位应该是8bit的)  这个是写内存函数。应该能在主函数外或者include包含的文件里找到实现。
            WIICByte(W24C04ADD,0x02,(OverCounter%0xff));    //高位  //写入内存高位(一个位应该是8bit的)
//            ptemp = printf("%f\n",OverCounter);
            OverFlg = 0;    //清除标志 //累计后OverFlg重置。
          }
      }
  }            
  }
}

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:774633 发表于 2020-6-15 08:53 | 只看该作者
数模转换,学一下模电的基础部分。
回复

使用道具 举报

6#
ID:282850 发表于 2020-6-15 09:01 | 只看该作者
Adc0832测压力,显示,IIC写24C04eeprom
回复

使用道具 举报

7#
ID:782419 发表于 2020-6-17 22:15 | 只看该作者
怎么说呢,你飞的有点快,我学到AD用了大概半年的时间,中间还有好多不明白,重来了好多回,现在也只是知道有这么个概念,具体程序也写不出来,还是得慢慢来。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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