|
主程序如下:
void main()
{
long date;
initialize();//液晶初始化
while(1)
{
date = Get_Voltage(); // 讀取 A/D 轉(zhuǎn)換結(jié)果
write_byte(date);//啟動DA,將讀取結(jié)果重新賦給DA輸出
date=date*450/255; // 將采樣結(jié)果轉(zhuǎn)換為電壓值
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');
}
}
實(shí)現(xiàn)以下功能:(已經(jīng)實(shí)現(xiàn),就是存在小問題)
1.用AD模式讀出電位器當(dāng)前電壓,顯示在LCD1206上.(沒有問題)
2.然后把讀到的這個電壓寫進(jìn)DA,用DA輸出控制LED亮度。(存在小問題)
當(dāng)前現(xiàn)象:
LED會一直微微閃爍,雖然閃的不明顯但是可以看出來。
分析原因:(純純根據(jù)自己理解分析,如果有錯誤,還望指出)
因?yàn)閷慏A函數(shù)在大循環(huán)里,也就是說會無限循環(huán)寫入數(shù)據(jù)的,當(dāng)在寫入數(shù)據(jù)這個過程時,DA輸出會不穩(wěn)定,數(shù)據(jù)寫完后,DA輸出變穩(wěn)定,一直循環(huán)這個過程,所以LED亮度會看見微微閃爍。但是寫DA函數(shù)還必須在while循環(huán)里面。
目前想到解決辦法:
當(dāng)檢測到電位器電壓不變的時候,停止寫DA,當(dāng)檢測到電位器電壓重新開始變化的時候啟動寫DA。
想了好久沒想出來程序怎么實(shí)現(xiàn),還請高手指點(diǎn)下。
|
|