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