13、ARM嵌入式系统:通过旋钮控制蜂鸣器声音大小
蜂鸣器之前的代码中已经初始化了,现在要从ADC中接收数据,然后作为蜂鸣器的配置参数,即通过板子上的旋钮来控制蜂鸣器的叫声大小。
// 选择ADC输入信号
ADC_channel_potentiometer();
// 从旋钮接收输入模拟数据,并转换成数字数据
ADC_Result=ADC0_TR_DATA();
// 用旋钮数据调整蜂鸣器叫声大小
Beep_setup(ADC_Result);
一、选择ADC接收信号

void ADC_channel_potentiometer()
{
// 01110When DIFF=0, AD14 is selected as input; when DIFF=1, it is reserved.
ADC0_SC1A=ADC_SC1_ADCH(14); //potentiometers sensor path acquire
}
ADC0_SE14为旋钮电位器的输入信号,选择ADC 14作为当前ADC输入。
二、ADC模拟信号转换成数字信号
unsigned int ADC0_TR_DATA()
{
//step1:
//check convert complete flag
// 1 Conversion is completed.
while((ADC0_SC1A&ADC_SC1_COCO_MASK)!=ADC_SC1_COCO_MASK);
//step2:
ADC_Result=ADC0_RA;
//step3:
//clear flag
ADC0_SC1A&=~ADC_SC1_COCO_MASK;
// step4:
return ADC_Result;
}
step1:等待ADC模拟信号转换成数字信号完毕
while((ADC0_SC1A&ADC_SC1_COCO_MASK)!=ADC_SC1_COCO_MASK);
死循环等待,直到COCO标记为1时进行下一步操作。

step2:接收ADC转换完成的数据
ADC_Result=ADC0_RA;

step3:清除转换完成标记位
ADC0_SC1A&=~ADC_SC1_COCO_MASK;
step4:返回转换完成数据
return ADC_Result;
三、调整蜂鸣器声音大小
void Beep_setup(unsigned int count)
{
TPM0_MOD = count*2; //T
TPM0_C4V = count; //initial
}
将旋钮值作为蜂鸣器的输入,用以控制蜂鸣器的声音大小。TPM0_CH4对应蜂鸣器。

更多推荐

所有评论(0)