蓝桥杯单片机使用PCA进行超声波测距

您所在的位置:网站首页 wave软件是干什么的 蓝桥杯单片机使用PCA进行超声波测距

蓝桥杯单片机使用PCA进行超声波测距

2023-06-20 03:06| 来源: 网络整理| 查看: 265

文章目录 前言一、PCA是什么?二、使用步骤总结

前言

蓝桥杯单片机定时器的资源是非常紧张的,只有三个,定时器0,1,2;用来超声波测距的话要用到溢出标志位,而定时器2又没有溢出标志位,当比赛中一考察到频率加串口加超声波测距,那么三个定时器就不够用了,这时我们可以用PCA对超声波测距进行处理。

一、PCA是什么?

PCA是指16位定时器/计数器模块(Programmable Counter Array)。PCA可以在多种工作模式下工作,包括: 捕获模式:可以捕获外部输入的脉冲,并测量脉冲的频率或占空比。 比较模式:可以设置比较值,当计数器计数到设定的值时,可以产生中断或外部信号。 PWM模式:可以产生占空比可调的PWM波形信号,在驱动直流电机、灯光调节等应用中非常常用。 单边模式:可以用作单边计数器,在计算脉冲时非常有用。 双边模式:可以用作双向计数器,可以计算输入脉冲的上升沿和下降沿。 根据不同的应用需求,可以选择不同的工作模式,以实现目标功能。

可以看到,PCA实质上也就是一个定时器,也就具备超声波测距的一个能力。 注意:reg52头文件中未定义PCA,使用的话就需要使用stc15f2k60s2的头文件

二、使用步骤

首先,我们查看手册,寻找PCA工作所需的寄存器: 在这里插入图片描述 在这里插入图片描述 查看手册之后就可以对寄存器定义了,我们让其工作在系统频率的12分频之下,即CPS2=0,CPS1=0,CPS0=0;再让CIDL=0,让PCA在空闲模式下继续工作。所以我们让CMOD&=0x00就行了。 还有一个CCON寄存器(PCA控制寄存器),内部包含CF(溢出标志位);CR(PCA计数器控制位),也就是用来启动PCA计数的位;还有CCF(PCA模块中断标志),此处未用到。由于该寄存器是一个可位寻址寄存器,在实际使用的时候对其位寻址更方便去操作。

固定部分代码如下:

#include sbit TX=P1^0; //定义发送端 sbit RX=P1^1; //定义接收端 unsigned int dis; //距离数据 void Delay12us() //@12.000MHz { unsigned char i; _nop_(); _nop_(); i = 33; while (--i); } void Send_Wave() //产生一个40Khz方波 { unsigned char i; for(i=0;i unsigned int dis; CMOD&=0x00; //定义工作模式 CH=0; //计数高八位 CL=0; //计数低八位 Send_Wave(); //发送40Khz波 CR=1; //开始计时 while((RX==1)&&(CF==0));//等待接收端接收到返回信号或者溢出 CR=0; //关闭计时 if(CF==0) //如果未超出测量范围,进行数据处理 { dis=CH; dis=(dis


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3