请问各位大虾adc0816输入端变化了,为什么输出却不跟着变化

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

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

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

怎么没有大虾给指点一下呢?

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

本版积分规则

175

主题

446

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部