找回密码
 立即注册

QQ登录

只需一步,快速开始

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

ADC0804采集正弦信号,显示到LCD12864上,波形断断续续的,请问是什么问题?如何解决

[复制链接]
跳转到指定楼层
楼主
4黑币


11111111111111.png (73.92 KB, 下载次数: 30)

11111111111111.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:303383 发表于 2018-11-16 14:20 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

板凳
ID:364047 发表于 2018-11-16 17:08 | 只看该作者

  1. #include "Config.h"
  2. #include  "LCD12864.h"
  3. #include  "pic.h"
  4. #include "string.h"       
  5. #include "stdlib.h"
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. #define read  (0x1<<16)
  9. #define write  (0x1<<17)
  10. #define  cs (0x1<<18)
  11. #define INH (0x1<<19)
  12. #define KEY       1<<29  
  13. #define DATE 0x00300000
  14. uint32 K=1;
  15. void clear_lcd();
  16. int arr[128]={0};

  17. /********************************************************************
  18. * &Atilde;&ucirc;&sup3;&AElig; : delay()
  19. * &sup1;&brvbar;&Auml;&Uuml; : &Ntilde;&Oacute;&Ecirc;±,&Ntilde;&Oacute;&Ecirc;±&Ecirc;±&frac14;&auml;&Icirc;&ordf; 100us * t&iexcl;&pound;&Otilde;&acirc;&Ecirc;&Ccedil;&Iacute;¨&sup1;&yacute;&Egrave;í&frac14;&thorn;&Ntilde;&Oacute;&Ecirc;±&pound;&not;&Oacute;&ETH;&Ograve;&raquo;&para;¨&Icirc;ó&sup2;&icirc;&iexcl;&pound;
  20. * &Ecirc;&auml;&Egrave;&euml; : t
  21. * &Ecirc;&auml;&sup3;&ouml; : &Icirc;&THORN;
  22. ***********************************************************************/
  23. void delay(uint32 t)
  24. {
  25.         uint32 i,j;
  26.         for(i=0; i<t;  i++)
  27.     for(j=0; j<10; j++);
  28. }

  29. void delayms(uint xms)
  30.         {
  31.                                           uint i,j;
  32.                 for(i=xms;i>0;i--)
  33.                 for(j=110;j>0;j--);
  34.         }
  35.        
  36. void  DelayNS(uint32  dly)                 //16.7ms
  37. {   uint32  i;
  38.     for(; dly>0; dly--)
  39.     {
  40.         for(i=0; i<50000; i++);
  41.     }
  42. }

  43. uint16 read_adc0804() //ADC0804&Eacute;è&Ouml;&Atilde;
  44. {
  45.        
  46. uchar b;         
  47. IO0SET=IO0PIN|write;
  48. IO0CLR=(~IO0PIN)|write;
  49. delay(2);
  50. IO0SET=IO0PIN|write;
  51. IO0CLR =(~IO0PIN)|0xff;
  52. IO0SET=IO0PIN|read;
  53. IO0CLR=(~IO0PIN)|read;
  54. delay(2);
  55. b=IO0PIN&0xff;
  56. IO0SET=IO0PIN|read;
  57. return b;
  58. }


  59. /********************************************************************
  60. * &Atilde;&ucirc;&sup3;&AElig; : Main()
  61. * &sup1;&brvbar;&Auml;&Uuml; : &Ouml;÷&ordm;&macr;&Ecirc;&yacute;
  62. * &Ecirc;&auml;&Egrave;&euml; : &Icirc;&THORN;
  63. * &Ecirc;&auml;&sup3;&ouml; : &Icirc;&THORN;
  64. ***********************************************************************/
  65. int main()
  66. {
  67.   uint8 i,j;
  68.         uint32 m=10;
  69.         int16 adval,a;
  70.         PINSEL0 =0x00000000;
  71.         PINSEL1 =0x00000000;
  72.         IO0DIR  =0x303fff00;
  73.         PINSEL1=0x00000000;
  74.         IO0CLR=cs;
  75.         IO0CLR =INH;   
  76.        
  77.         lcdinit();      //12864&micro;&Auml;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;
  78.         write_com(0x01);
  79.   pic_init();   
  80.   GUI_FillSCR(0x0000);           //&raquo;&aelig;&Ouml;&AElig;&micro;&atilde;&Iuml;&szlig;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;&iquest;&Otilde;°×
  81. while(1)
  82. {
  83. //&iquest;&Oslash;&Ouml;&AElig;&ETH;&Aring;&ordm;&Aring;·&Aring;&acute;ó±&para;&Ecirc;&yacute;
  84.         if((IO1PIN&KEY)==0)
  85.               {
  86.                 while((IO1PIN&KEY)==0);                 //????????         
  87.                 K++;                                  
  88.                 if(K==5)
  89.                        {
  90.                                 K=1;
  91.                  //        flag=1;
  92.                        }                       
  93.                 switch(K)
  94.                  {
  95.                           case 1:IO0CLR =DATE;                  m=10; break;
  96.                           case 2:IO0CLR=DATE;IO0SET =0X00100000;m=20; break;
  97.                           case 3:IO0CLR=DATE;IO0SET =0X00200000;m=30; break;
  98.                     case 4:IO0CLR=DATE;IO0SET =0X00300000;m=50;break;
  99.                           default:IO0CLR |=DATE;break;
  100.                  }        
  101.        
  102.               }
  103. //&sup2;&Eacute;&frac14;&macr;128&cedil;&ouml;&Ecirc;&yacute;&frac34;&Yacute;
  104.   for(i=0;i<128;i++)  
  105.                 {
  106.                   adval=read_adc0804();
  107.                         arr[i]=adval;                                       
  108.                  delayms(3);
  109.         }
  110. //&Iuml;&Ocirc;&Ecirc;&frac34;&micro;&frac12;12864&Eacute;&Iuml;
  111.                 for(i=0;i<128;i++)  
  112.         {
  113.                 sinLCD(i,arr[i]);
  114.                 delayms(1000);
  115.                 if(i==127)
  116.                         {
  117.                                 for(j=0;j<128;j++)  //&Ccedil;&aring;&AElig;&Aacute;
  118.                                 {
  119.                                         arr[j]>>=2;
  120.                                 GUI_PointXY(j,arr[j],0);
  121.                                 }

  122.                         }
  123.         }
  124. }       
  125. }
复制代码
回复

使用道具 举报

地板
ID:364047 发表于 2018-11-16 17:10 | 只看该作者
本帖最后由 很恼火 于 2018-11-16 18:03 编辑

  1. 输入信号是没有问题的
复制代码
回复

使用道具 举报

5#
ID:354116 发表于 2018-11-16 18:52 | 只看该作者
两种可能,1是该段数据没有被AD采样到,2是采样到了没有正确显示。看波形是显示不正确。时间上每个时间点都有电压值,但是波形不连续,应该是在某几个临界电压值时,数据解析错误。
回复

使用道具 举报

6#
ID:354116 发表于 2018-11-16 18:52 | 只看该作者
你重点检查一下你的波形解码还原的程序段
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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