主程序如下:
void main()
{
long date;
initialize();//液晶初始化
while(1)
{
date = Get_Voltage(); // 读取 A/D 转换结果
write_byte(date);//启动DA,将读取结果重新赋给DA输出
date=date*450/255; // 将采样结果转换为电压值
show(1,1,0x30+date/100);
show(1,2,'.');
show(1,3,0x30+date%100/10);
show(1,4,0x30+date%100%10);
show(1,5,'V');
}
}
实现以下功能:(已经实现,就是存在小问题)
1.用AD模式读出电位器当前电压,显示在LCD1206上.(没有问题)
2.然后把读到的这个电压写进DA,用DA输出控制LED亮度。(存在小问题)
当前现象:
LED会一直微微闪烁,虽然闪的不明显但是可以看出来。
分析原因:(纯纯根据自己理解分析,如果有错误,还望指出)
因为写DA函数在大循环里,也就是说会无限循环写入数据的,当在写入数据这个过程时,DA输出会不稳定,数据写完后,DA输出变稳定,一直循环这个过程,所以LED亮度会看见微微闪烁。但是写DA函数还必须在while循环里面。
目前想到解决办法:
当检测到电位器电压不变的时候,停止写DA,当检测到电位器电压重新开始变化的时候启动写DA。
想了好久没想出来程序怎么实现,还请高手指点下。
|