標(biāo)題:
單片機(jī)在LCD屏上畫幅頻特性曲線的方法
[打印本頁]
作者:
xiaos
時間:
2015-4-1 22:43
標(biāo)題:
單片機(jī)在LCD屏上畫幅頻特性曲線的方法
單片機(jī)畫實(shí)時曲線的實(shí)現(xiàn)
如果我們要畫實(shí)時曲線也就是隨著時間的不同曲線的值就會有變化。
舉例我們將ADC采集的0-5V電壓值在320*240的屏幕上畫曲線。
我們使用打點(diǎn)計(jì)數(shù)法實(shí)現(xiàn)。
我們可以開啟一個定時器,如果要求500Ms畫一個點(diǎn),那么我們就將定時器設(shè)置為500ms中斷產(chǎn)生此時在相應(yīng)的位置畫點(diǎn)。
如果不考慮其他文字說明,坐標(biāo)系就是屏的橫豎長度,我們可以模擬彩屏的320就是X軸也就是時間軸,定時器中斷處理函數(shù)內(nèi)會有一個U16的計(jì)數(shù)量加到320清零,從頭開始畫。屏的240就是電壓值的轉(zhuǎn)換體現(xiàn),如果最大值239是5V,0是0V,如果我們采集到一個2V的電壓值,那么他對應(yīng)的位置是(240/5)*2=96,我們調(diào)用畫點(diǎn)函數(shù)Draw_line(t,96,Black)就可以畫出該點(diǎn)了,我們將96換成ADc_value的值,就可以簡單的實(shí)現(xiàn)畫曲線了。
復(fù)雜點(diǎn)我們可以建立坐標(biāo)系指示,還可以添加文子說明,但是相應(yīng)的320和240就會變小,就要重新里算了。
但是對于畫幅頻特性曲線,就要要求幅度是跟隨頻率的不同而增大的,頻率是時間的倒數(shù),時間增大,頻率反而減小。這種曲線的實(shí)現(xiàn)待研究。
作者:
xiaos
時間:
2015-4-1 22:43
上一文中研究,在LCD上畫實(shí)時曲線已經(jīng)實(shí)現(xiàn)了,現(xiàn)在想改成幅頻特性曲線,經(jīng)過查資料實(shí)現(xiàn)思路如下
幅頻特性曲線是以橫軸為頻率,縱軸為幅度,這里可認(rèn)為是電壓值。如果是實(shí)時曲線,1MS采集一個值將它顯示在屏幕上,實(shí)際上它的頻率已固定就是1000HZ,也就是1s中采集1000次,然后計(jì)算出1000次數(shù)據(jù)的平均值這是他在頻率為1000HZ時的幅度值。
如果我們通過更改變量實(shí)現(xiàn)在每1S內(nèi)采集的次數(shù)不相等,不就實(shí)現(xiàn)頻率值的變化了嗎。
首先,我們定義個變量u8 FRE_NUM;FRE_NUM=100,然后我們編寫一個函數(shù),GET_ADC_VALUE(u8 channel,u8 times,u8 delayalue);該函數(shù)中channel代表ADC采集的通道,times代表采集的次數(shù),delay代表1/times的延時單位為毫秒。舉個例子 1s中采集20次 調(diào)用GET_ADC_VALUE(u8 channel,20,50);及頻率為20HZ,
制作一個表格分別顯示10HZ,20HZ,50HZ,100HZ,500HZ下的幅度值。
value=GET_ADC_VALUE(0,10,100);
draw_point(100,value,color);
value=GET_ADC_VALUE(0,20,100);
draw_point(120,value,color);
value=GET_ADC_VALUE(0,50,100);
draw_point(140,value,color);
value=GET_ADC_VALUE(0,100,100);
draw_point(160,value,color);
value=GET_ADC_VALUE(0,500,100);
draw_point(180,value,color);
這樣便可以實(shí)現(xiàn)幅頻特性曲線的畫法了。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1