打印

请问大虾们我的adc0816输入端变化了,为什么输出不跟着变化

[复制链接]
1880|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccjchen|  楼主 | 2007-5-12 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ADC, CD, LCD, ST, AI
一.我将adc0816采集进来的值在lcd中显示出来,但是我发现仿真时当我的ad输入端变化时,lcd中显示出来的值并不随着变化,只有当从新编译后lcd中的值才发生变化
二.如果我想每隔100ms采集一次,是要用定时中断呢,还是在采集的程序中延时呢?如果用后一种应该在什么地方延时呢?
void  ad0816(uchar idata *x)
{
   uchar i;
   uchar xdata *ad_adr;
   ad_adr=&IN0;
   for(i=0;i<16;i++)
   {
     *ad_adr=0;           //启动转换从0通道开始
      wait(2,26);         //延时114us
      x=*ad_adr;
      ad_adr++;
   }
}
void main(void)
{    static uchar idata ad[16];
     uchar k;
     initlcm();//初始化lcd
     for(;;)
     {
         delay(100);
         ad0816(ad);
          k=ad[0]*300/256;//转换第0通道
         if (k/100>0)
        {
            vol0[0]=(k/100)|0x30;vol0[1]=(k/10)%10+0x30;vol0[2]='.';vol0[3]=k%10+0x30;
        }
        else
         {
            vol0[0]=k/10+0x30;vol0[1]='.';vol0[2]=k%10+0x30;
         }
         putstr(0x90,0,vol0,2);//在lcd中将采集的第0通道的值显示出来
    
     }

相关帖子

沙发
ccjchen|  楼主 | 2007-5-12 21:32 | 只看该作者

我现在知道什么原因了,但不知道怎么解决啊,请大虾帮指

我的每次清屏操作都是在按键(4*4键盘)中进行的.所以也就只有每当从新按键后,采集的数据才会变化,请各位大虾能否告诉我怎样才能使采集的数据在输入端变化时,lcd上的显示也能随即变化成相应的值呢?(也就是怎样做好清屏工作呢)
  case 25://按键值
          SendCMD(0x00);//清屏
          delay(100);
          put_str(0x80,str4,14);//在lcd中显示
          putstr(0x90,0,vol0,2);
          put_str(0x88,str5,11);
          break;

使用特权

评论回复
板凳
ccjchen|  楼主 | 2007-5-13 16:05 | 只看该作者

为什么没有大虾回答呢?

当我在主函数中加入按键处理函数时,必须按其它键再按此键或则连续按下此键两次,才能使lcd中显示的采样数值发生变化;如果我把按键处理函数去掉而直接调用显示函数(原来显示函数在对应按键菜单中),lcd 显示的数值就可以随着输入采样的变化而变化了;但是按键处理的菜单程序又不能去掉啊

使用特权

评论回复
地板
high| | 2007-5-14 00:32 | 只看该作者

难道你是阻塞方式?

使用非阻塞的办法,或者说异步的办法.

使用特权

评论回复
5
ccjchen|  楼主 | 2007-5-14 12:21 | 只看该作者

不明白什么是阻塞和异步的方法,能不能说明白点呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝