单片机/MCU论坛
直播中

浪迹天涯AS

7年用户 36经验值
擅长:处理器/DSP
私信 关注
[问答]

求助帖子 基于单片机的数字电压表 基本全部完成 求大神指教一些问题 ADC0808 LCD1602

本帖最后由 浪迹天涯AS 于 2017-4-18 23:13 编辑

这个AT89C51电压表是交直流的1-25V电路已经完成  C语言程序  有点问题不会  现在正常运行 程序是测试1-5V电压的  我想把显示的电压变成1-25V 但是怎么该都是有问题   麻烦大神帮忙看一下怎么改  想加一个求后5秒求平均值的程序  这是网上的程序  但是我不会加进去void read_key()//键盘扫描函数
{
static uchar key_state=0;

switch(key_state)
{
  case key_state0:
   if(key==0)
    key_state=key_state1;
   break;
     case key_state1:
   if(key==0)
     {
    TR0=1;
    display_zifu(1,0,tab3);
    key_state=key_state2;
        }  
    else
    key_state=key_state0;
   break;
  case key_state2:
      if(key)
    key_state=key_state0;
   break;

}

}
void main()
{
    long float dat;
long float dat_aver,dat1,dat2,dat3,dat4,dat5;//定义5个随机电压值变量
uchar flag;//后五秒取随机电压的标志
init_timer0();
init_1602();
delay(10);
   while(1)
{

  dat=read_value();
  if(dat>=100)//当电压值大于1V时,用V显示,否则用mV显示
  {
   display_zifu(0,1,tab2);
   display(0,7,dat);
   display_zifu(0,13,tab0);  
   }
  else
  {
   display_zifu(0,1,tab2);
   display(0,7,dat*1000);
   display_zifu(0,13,tab1);
  }

  read_key();   //当键盘按下时,计算后五秒的平均电压值
  if(t==20)
  {
   t=0;
   flag++;
  }

  if(flag==1)
   dat1=dat;
  if(flag==2)
   dat2=dat;
  if(flag==3)
   dat3=dat;
  if(flag==4)
   dat4=dat;
  if(flag==5)
  {
   dat5=dat;
   dat_aver=(dat1+dat2+dat3+dat4+dat5)/5;
      display(1,7,dat_aver);
   display_zifu(1,13,tab0);  
    dat_aver=0;
  }

    if(flag==8)  
  {
   flag=0;
   write_com(0x01);
   TR0=0;
  }  

}

}
玛法大神么都过来看看   求助小弟一臂之力  

玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  玛法大神么都过来看看   求助小弟一臂之力  

回帖(10)

浪迹天涯AS

2017-4-18 23:10:45
玛法大神么都过来看看   求助小弟一臂之力  

玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  玛法大神么都过来看看   求助小弟一臂之力
举报

浪迹天涯AS

2017-4-18 23:10:50
玛法大神么都过来看看   求助小弟一臂之力  

玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  玛法大神么都过来看看   求助小弟一臂之力
举报

浪迹天涯AS

2017-4-18 23:10:53
玛法大神么都过来看看   求助小弟一臂之力  

玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  玛法大神么都过来看看   求助小弟一臂之力
举报

浪迹天涯AS

2017-4-18 23:10:58
玛法大神么都过来看看   求助小弟一臂之力  

玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  玛法大神么都过来看看   求助小弟一臂之力
举报

浪迹天涯AS

2017-4-18 23:11:02
玛法大神么都过来看看   求助小弟一臂之力  

玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  玛法大神么都过来看看   求助小弟一臂之力
举报

浪迹天涯AS

2017-4-18 23:11:05
玛法大神么都过来看看   求助小弟一臂之力  

玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  
玛法大神么都过来看看   求助小弟一臂之力  玛法大神么都过来看看   求助小弟一臂之力
举报

李杰

2017-4-19 08:57:20
谢谢分享,大家一起来学习啊!
举报

人中狼

2017-4-19 09:20:51
测量1-25伏应该不是改程序的问题,如果你的AD输入范围是1-5伏,那应该是把1-25伏变为1-5伏来测量,不过这样有个问题就是因为等于把1-25伏压缩了五分之一,精度,特别是较低电压时的精度和准确度会受到影响。至于求平均,没明白你打算怎么做。
举报

浪迹天涯AS

2017-4-19 10:08:41
引用: 人中狼 发表于 2017-4-19 09:20
测量1-25伏应该不是改程序的问题,如果你的AD输入范围是1-5伏,那应该是把1-25伏变为1-5伏来测量,不过这样有个问题就是因为等于把1-25伏压缩了五分之一,精度,特别是较低电压时的精度和准确度会受到影响。至于求平均,没明白你打算怎么做。 ...

电路的衰减 已经完成  基本上没问题  现在时程序不会改写   求平均是 我按键之后 的5秒钟 5个随机测量的电压 求一个平均值  显示出来
举报

人中狼

2017-4-19 10:13:45
平均值好做,求和再除五就行了,只是你的随机是什么,如果是按键后5秒内随机5个时间采样5次的话,那要做随机数,还要限定5个随机数总和不超过5秒,有些难度,不如5秒内做5个固定延时,采样五次还简单些
举报

更多回帖

发帖
×
20
完善资料,
赚取积分