| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 568 人关注过本帖
标题:关于简单信号分析仪中电压峰值的显示问题,拜托指导一下
只看楼主 加入收藏
CWCHENG
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-5-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
关于简单信号分析仪中电压峰值的显示问题,拜托指导一下
如下为用c语言编的测量电压信号的峰值,但是LCD的显示出现问题,有时候会显示正确的电压值,但有时候会错误,而且经常出现0值或者显示错误的电压值。
测量的电压范围为5V,下面附上c语言还有附件上有ISIS 7 Professional的元件连接图,麻烦各位高手帮忙指导一下,谢谢
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint a;                     //定义a为浮点型数据
uchar code table2[]="M=    V  ";
单片机电压信号峰值分析仪.rar (19.67 KB)

sbit lcden=P2^1;            //液晶使能端
sbit lcdrs=P2^0;            //液晶数据命令选择端
sbit EOC=P3^5;
sbit OE=P3^7;
sbit ST=P3^6;
sbit wei0=P3^0;
sbit wei1=P3^1;
sbit wei2=P3^2;
uchar num;
    uchar b;
    uchar ge,sf,bf;

void delay1(uchar time)      //延时程序
{
   uchar i,j;
   for(i=0;i<time;i++)
      {
         for(j=0;j<110;j++)
          ;                  
      }
}

void delay2(uchar time1)      //延时程序
{                       
   uchar i;
   for(i=0;i<time1;i++)
   ;
}

void init1()      //AD转化的初始化
{  
   ST=0;
   ST=1;
   ST=0;          //启动信号输入,下降沿启动AD转化
   EOC=1;
   delay1(1);
   while(EOC==0);
   OE=1;           // 允许从A/D转换器的输出锁存器中读取数字量
   P1=0xFF;
   b=P1;
   OE=0;
   a=(uint)(2.0*b);
   
}
void fenli()       //得出电压值各个位上的数字
{
    ge=a/100;
    sf=a/10%10;
    bf=a%10;   
}

void delay(uint z)        //延时程序
{
  uint x,y;
  for(x=z;x>0;x--)
     for(y=110;y>0;y--);
}

void write_com(uchar com)
{
   lcdrs=0;
   P0=com;
   delay(5);
   lcden=1;
   delay(5);
   lcden=0;
}

void write_data(uchar date)
{
   lcdrs=1;
   P0=date;
   delay(5);
   lcden=1;
   delay(5);
   lcden=0;
}

void init()           // LCD选位程序
{
  
   lcden=0;
   write_com(0x38);     //设置16x2显示,5x7点阵,8位数据接口
   write_com(0x0c);     //设置开显示,不显示光标
   write_com(0x06);     //写一个字符后地址指针加1
   write_com(0x01);     //显示清0,数据指针清0
}

void main()                //主程序
{
   wei0=0;
   wei1=0;
   wei2=0;                //选输入口
   init();
    write_com(0x80+0x49);
   for(num=0;num<7;num++)
      {
         write_data(table2[num]);
         delay(5);

while(1){
   init1();
   fenli();
   write_com(0x80+0x4b);
   write_data(ge+0x30);
   write_data(46);
   write_data(sf+0x30);
   write_data(bf+0x30);
   }
  }


[ 本帖最后由 CWCHENG 于 2013-5-16 12:57 编辑 ]
搜索更多相关主题的帖子: 电压 include 而且 
2013-05-15 23:32
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:10 
你可以把电压原始值a打印到串口,这样就能区分是液晶显示函数不对,还是你的ad转换结果不对

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-05-16 07:06
CWCHENG
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-5-15
收藏
得分:0 
回复 2楼 pauljames
有时候能显示正确的电压峰值,但有时显示的却是错误的值,改了很多次都找不出来程序哪里错误了。
2013-05-16 12:59
cuijunchao
Rank: 5Rank: 5
来 自:湖南桂东
等 级:职业侠客
威 望:3
帖 子:132
专家分:386
注 册:2012-4-4
收藏
得分:10 
你那个分离函数是不是要根据分离数的大小进行,如果不是3位数的数,结果是不是有影响。
2013-05-16 13:20
CWCHENG
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-5-15
收藏
得分:0 
回复 4楼 cuijunchao
当我调节输入的电压大小从0V→5V时,有时会显示对应的正确值,但经常突然显示其他相差十分离谱的值。
例如我的输入电压是2.5V,这时LCD会显示2.5V,当我把输入电压值调到4V时,LCD却显示0V或者1.45等毫无关系的电压值
2013-05-16 13:30
快速回复:关于简单信号分析仪中电压峰值的显示问题,拜托指导一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022546 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved