1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標(biāo)題:
基于Atmega328p 單片機(jī)的方波三角波識(shí)別
[打印本頁(yè)]
作者:
宿骨·大雞排
時(shí)間:
2020-6-27 07:07
標(biāo)題:
基于Atmega328p 單片機(jī)的方波三角波識(shí)別
之前寫了一篇關(guān)于波形識(shí)別的文章(2019年5月24日),原文章被吞,F(xiàn)在改進(jìn)后重新發(fā)文。主要修改了一些拼寫錯(cuò)誤
ATMEGA328P-AU,一種集成電路 (IC),核心處理器是AVR,閃存容量為32KB。本問(wèn)題提出一種用Atmega 328實(shí)現(xiàn) 方波三角波波形識(shí)別的代碼。代碼主要通過(guò)AVR單片機(jī)內(nèi)部中斷實(shí)現(xiàn)。開發(fā)板為ardino。主要參考資料
www點(diǎn)xjishu點(diǎn)com/zhuanli/54/201711478206_2.html
注意開頭需要加入加入頭文件math,因?yàn)樯婕癿ath運(yùn)算
static int min = 0x0F;
static int max = 0;
static int prev_data;
int low = 768;//5V 以內(nèi)
int up = 1024;
static up_count;
int peak_count;
char disp;//用字符串格式顯示
ISR(ADC_vect) {//設(shè)置ADC比較中斷
int adc_data = ADCW;//ADCW是讀取所有數(shù)據(jù)
if (adc_data > max) max = adc_data;//更新最大最小值
if (adc_data < min) min = adc_data;
if (adc_data > up) peak_count =peak_count +1;
if (adc_data > low)up_count =upcount+1;
else if (prev_data > thresh_low && up_count > 65) {
//計(jì)算方波三角波的占空比值來(lái)區(qū)分方波三角波。三角波約為0.4,正弦波約為0.57,方波大于0.8
ratio =peak_count/up_count;
up_count = 0;
peak_count = 0;
//按照比例計(jì)算電壓幅值
amplitude = (5/(double)1024)*(max - min);
amplitude =round(amplitude*10);
frequency = (1/(up_count * 0.001))*7.8;//注意頻率的計(jì)算方法
frequency = round(frequency);
thresh_low = round((max-min)/2 + min);
thresh_up = round((max-min)*0.67 + min);
max = 0;
min = 1023;
}
prev_data = adc_data;
}
ISR(TIMER0_COMPA_vect){//注意這里使用即使器比較模式
ADCSRA |= 1<<ADSC; //這里是用了計(jì)時(shí)器的比較模式
}
注意,本程序只包含中斷程序,在主程序中需要對(duì)ADC和timer0的寄存器進(jìn)行定義。這里將寄存器定義為ADC 32分頻,timer0 256分頻。當(dāng)timer0 置為4時(shí),觸發(fā)ADC中斷。判斷波形后,可以用ratio這種方法驅(qū)動(dòng)LED燈,來(lái)指示波形。頻率可以用LCD1602顯示.這里可以參考
www點(diǎn)elecfans點(diǎn)com/xianshi/20171018566270.html
作者:
51hei團(tuán)團(tuán)
時(shí)間:
2020-6-28 18:45
好資料,51黑有你更精彩!!!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1