搜索
bottom↓
回复: 8

显示波形和清屏的问题

[复制链接]

出0入0汤圆

发表于 2010-4-14 16:10:39 | 显示全部楼层 |阅读模式
在坛子里面潜了很久了,现在想自己弄一个示波器玩玩,想请教大家,显示波形的时候波形是显示一个点清除一个点还是显示一屏以后再清除整屏的点?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2010-4-14 20:47:00 | 显示全部楼层
应该是一屏一屏的刷吧

出0入0汤圆

发表于 2010-4-14 20:58:29 | 显示全部楼层
整屏刷闪烁厉害,不要用,换别的方式

出0入0汤圆

发表于 2010-4-14 22:02:28 | 显示全部楼层
应该是清除一列显示一列

出0入0汤圆

发表于 2010-4-14 22:34:05 | 显示全部楼层
一个点一个点地刷新显示。也有一行一行地刷新的。

出0入0汤圆

 楼主| 发表于 2010-4-14 22:37:45 | 显示全部楼层
这是我的主要程序,也是仿照别人写的
while(1)
    {
                //DataValue=ADC_GetConversionValue(ADC1);     
        //DispNum24(0,216,DataValue*324/409600);           //3.3V*100除以2的12次
                         
                for(aa=0;aa<400;aa++)      
                  {
                           //K=compare(da,320);
                           da[aa]=180-(60*(ADC_GetConversionValue(ADC1))*324/409600+0.5);        // ADC_GetConversionValue(ADC1)/10;  //采集AD数据,放在da[]数组中。
                           for(bb=0;bb<100;bb++);                //??????????用于调节水平灵敏度               
                  }
                  cc=1;
                  aa=0;
                while(cc)
                {       
                        if(da[aa]<100&da[aa+1]>100)  //显示波形的起始点        ,使显示的波形稳定
                        {         
                                  /*****************************************************************
                                                                波形的显示程序,一共显示320个点
                                *******************************************************************/
                                dd=aa;          //从稳定的采样点开始采样,dd是为了获取采样点的数据,以便清屏的时候使用
                                  for(bb=0;bb<320;bb++)                  //显示程序
                                  {       
                                       
                                           SetPoint(bb,da[aa],0x07ff);                  //显示波形初级波形
                                          if(da[aa+1]-da[aa]>0)
                                          {
                                                   ee=da[aa+1]-da[aa];          //获取两次采样的差值
                                                   gg=ee>>1;
                                                   for(ff=1;ff<= gg;ff++)
                                            {
                                                     SetPoint(bb,da[aa]+ff,0x07ff);
                                                     SetPoint(bb+1,da[aa]+ee-ff,0x07ff);
                                            }

                                     }
                                    if(da[aa+1]-da[aa]<0)
                                           {
                                                   ee=da[aa]-da[aa+1];
                                                   gg=ee>>1;
                                        for(ff=1;ff<= gg;ff++)
                                                   {
                                                     SetPoint(bb,da[aa]-ff,0x07ff);
                                                     SetPoint(bb+1,da[aa]-(ee-ff),0x07ff);
                                            }
                                    }
                                          aa++;

                                          //for(ee=0;ee<100;ee++);
                                                   
                                  }       
                                Delay_nms(100);
                                  //for(ee=0;ee<1000;ee++);       
                         
                                 
                        /*****************************************************************
                                                                波形的显示程序,一共显示320个点
                        *******************************************************************/         
                                aa=dd;                  //擦除程序
                                  for(bb=0;bb<320;bb++)                  //显示程序
                                  {       
                                       
                                           SetPoint(bb,da[aa],0x0000);                  //显示波形初级波形
                                          if(da[aa+1]-da[aa]>0)
                                          {
                                                   ee=da[aa+1]-da[aa];          //获取两次采样的差值
                                                   gg=ee>>1;
                                                   for(ff=1;ff<= gg;ff++)
                                            {
                                                     SetPoint(bb,da[aa]+ff,0x0000);
                                                     SetPoint(bb+1,da[aa]+ee-ff,0x0000);
                                            }

                                     }
                                    if(da[aa+1]-da[aa]<0)
                                           {
                                                   ee=da[aa]-da[aa+1];
                                                   gg=ee>>1;
                                        for(ff=1;ff<= gg;ff++)
                                                   {
                                                     SetPoint(bb,da[aa]-ff,0x0000);
                                                     SetPoint(bb+1,da[aa]-(ee-ff),0x0000);
                                            }
                                    }
                                          aa++;
                                       
                                         
                                  }           
                       
                                  cc=1;
                                //清屏以后令CC=0,以便再跳出循环再进行一次采样
                                putline();        //显示完一屏和擦除完一屏以后,将CC赋0,然后重新画分格线
                          }
                        else
                        {
                                  aa++;
                                  if(aa>30) break; //进行50次数据的比较,如果没有满足条件da[aa]<100&da[aa+1]>100的采样点则重新开始采样
                                                 //可以保证波形的稳定性
                        }
                  

                }
                   
   }

出0入0汤圆

 楼主| 发表于 2010-4-14 22:41:05 | 显示全部楼层
我用的是整屏整屏的刷,但是闪烁的很厉害,看来要换别的方法了

出0入0汤圆

 楼主| 发表于 2010-4-14 22:43:19 | 显示全部楼层
我的QQ:389966526,DIY示波器刚刚起步,愿与大家一起学习

出0入0汤圆

发表于 2010-4-16 09:27:18 | 显示全部楼层
高手能否讲解一下显示波形的原理,谢谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-28 06:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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