主程序如下:
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。
想了好久沒想出來程序怎么實現,還請高手指點下。
|