标题:
ADC0804采集正弦信号,显示到LCD12864上,波形断断续续的,请问是什么问题?如何解决
[打印本页]
作者:
很恼火
时间:
2018-11-16 10:56
标题:
ADC0804采集正弦信号,显示到LCD12864上,波形断断续续的,请问是什么问题?如何解决
11111111111111.png
(73.92 KB, 下载次数: 30)
下载附件
2018-11-16 10:55 上传
作者:
小猫猫爱吃鱼
时间:
2018-11-16 14:20
没有程序
没有原理图
没有任何资料
就发一张截图
大家看看怎么解决
作者:
很恼火
时间:
2018-11-16 17:08
#include "Config.h"
#include "LCD12864.h"
#include "pic.h"
#include "string.h"
#include "stdlib.h"
#define uchar unsigned char
#define uint unsigned int
#define read (0x1<<16)
#define write (0x1<<17)
#define cs (0x1<<18)
#define INH (0x1<<19)
#define KEY 1<<29
#define DATE 0x00300000
uint32 K=1;
void clear_lcd();
int arr[128]={0};
/********************************************************************
* Ãû³Æ : delay()
* ¹¦ÄÜ : ÑÓʱ,ÑÓʱʱ¼äΪ 100us * t¡£ÕâÊÇͨ¹ýÈí¼þÑÓʱ£¬ÓÐÒ»¶¨Îó²î¡£
* ÊäÈë : t
* Êä³ö : ÎÞ
***********************************************************************/
void delay(uint32 t)
{
uint32 i,j;
for(i=0; i<t; i++)
for(j=0; j<10; j++);
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void DelayNS(uint32 dly) //16.7ms
{ uint32 i;
for(; dly>0; dly--)
{
for(i=0; i<50000; i++);
}
}
uint16 read_adc0804() //ADC0804ÉèÖÃ
{
uchar b;
IO0SET=IO0PIN|write;
IO0CLR=(~IO0PIN)|write;
delay(2);
IO0SET=IO0PIN|write;
IO0CLR =(~IO0PIN)|0xff;
IO0SET=IO0PIN|read;
IO0CLR=(~IO0PIN)|read;
delay(2);
b=IO0PIN&0xff;
IO0SET=IO0PIN|read;
return b;
}
/********************************************************************
* Ãû³Æ : Main()
* ¹¦ÄÜ : Ö÷º¯Êý
* ÊäÈë : ÎÞ
* Êä³ö : ÎÞ
***********************************************************************/
int main()
{
uint8 i,j;
uint32 m=10;
int16 adval,a;
PINSEL0 =0x00000000;
PINSEL1 =0x00000000;
IO0DIR =0x303fff00;
PINSEL1=0x00000000;
IO0CLR=cs;
IO0CLR =INH;
lcdinit(); //12864µÄ³õʼ»¯
write_com(0x01);
pic_init();
GUI_FillSCR(0x0000); //»æÖƵãÏß³õʼ»¯¿Õ°×
while(1)
{
//¿ØÖÆÐźŷŴó±¶Êý
if((IO1PIN&KEY)==0)
{
while((IO1PIN&KEY)==0); //????????
K++;
if(K==5)
{
K=1;
// flag=1;
}
switch(K)
{
case 1:IO0CLR =DATE; m=10; break;
case 2:IO0CLR=DATE;IO0SET =0X00100000;m=20; break;
case 3:IO0CLR=DATE;IO0SET =0X00200000;m=30; break;
case 4:IO0CLR=DATE;IO0SET =0X00300000;m=50;break;
default:IO0CLR |=DATE;break;
}
}
//²É¼¯128¸öÊý¾Ý
for(i=0;i<128;i++)
{
adval=read_adc0804();
arr[i]=adval;
delayms(3);
}
//ÏÔʾµ½12864ÉÏ
for(i=0;i<128;i++)
{
sinLCD(i,arr[i]);
delayms(1000);
if(i==127)
{
for(j=0;j<128;j++) //ÇåÆÁ
{
arr[j]>>=2;
GUI_PointXY(j,arr[j],0);
}
}
}
}
}
复制代码
作者:
很恼火
时间:
2018-11-16 17:10
本帖最后由 很恼火 于 2018-11-16 18:03 编辑
输入信号是没有问题的
复制代码
作者:
63号
时间:
2018-11-16 18:52
两种可能,1是该段数据没有被AD采样到,2是采样到了没有正确显示。看波形是显示不正确。时间上每个时间点都有电压值,但是波形不连续,应该是在某几个临界电压值时,数据解析错误。
作者:
63号
时间:
2018-11-16 18:52
你重点检查一下你的波形解码还原的程序段
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1