导航:首页 > 操作系统 > stc12c5a60s2单片机的pca

stc12c5a60s2单片机的pca

发布时间:2023-11-18 11:16:06

❶ stc12c5a60s2单片机 输出自带pwm频率怎么改变,比如说我现在需要50hz的频率

1,stc12c5a60s2一般pwm频率=PCA时钟源/256
2,PCA时钟源设置有4种方式,一般都有T0的溢出率,来设置PCA时钟源,
一般在COMD这个寄存器的B2,B1两位来确定是那种方式,10方式就是T0溢出方式(1T更快),可以做可变PCA时钟源时钟源,从而得到可变频率的pwm输出。

3,理论可生成(1-65535)个频率级别,如12MHz主频,(1T)方式最小可以做到12MHz,但实际是到了的最快也就是1/2SYsclk,即6MHz,然后除以256,理想可以输出23Khz~0.5Hz左右的频率范围

❷ 求助:对于STC12C5A60S2单片机,如何用pca实现定时中断

程序说明:
y = pca(mixedsig),程序中mixedsig为 n*T 阶混合数据矩阵,n为信号个数,T为采样点数, y为 m*T 阶主分量矩阵。

程序设计步骤:
1、去均值
2、计算协方差矩阵及其特征值和特征向量
3、计算协方差矩阵的特征值大于阈值的个数
4、降序排列特征值
5、去掉较小的特征值
6、去掉较大的特征值(一般没有这一步)
7、合并选择的特征值
8、选择相应的特征值和特征向量
9、计算白化矩阵
10、提取主分量

程序代码

%程序说明:y = pca(mixedsig),程序中mixedsig为 n*T 阶混合数据矩阵,n为信号个数,T为采样点数
% y为 m*T 阶主分量矩阵。

function y = pca(mixedsig)
if nargin == 0
error('You must supply the mixed data as input argument.');
end
if length(size(mixedsig))>2
error('Input data can not have more than two dimensions. ');
end
if any(any(isnan(mixedsig)))
error('Input data contains NaN''s.');
end

%——————————————去均值————————————
meanValue = mean(mixedsig')';
mixedsig = mixedsig - meanValue * ones(1,size(meanValue,2));
[Dim,NumofSampl] = size(mixedsig);
oldDimension = Dim;
fprintf('Number of signals: %d\n',Dim);
fprintf('Number of samples: %d\n',NumofSampl);
fprintf('Calculate PCA...');
firstEig = 1;
lastEig = Dim;
covarianceMatrix = cov(mixedsig',1); %计算协方差矩阵
[E,D] = eig(covarianceMatrix); %计算协方差矩阵的特征值和特征向量

%———计算协方差矩阵的特征值大于阈值的个数lastEig———
rankTolerance = 1e-5;
maxLastEig = sum(diag(D)) >rankTolerance;
lastEig = maxLastEig;

%——————————降序排列特征值——————————
eigenvalues = flipud(sort(diag(D)));

%—————————去掉较小的特征值——————————
if lastEig <oldDimension
lowerLimitValue = (eigenvalues(lastEig) + eigenvalues(lastEig + 1))/2;
else
lowerLimitValue = eigenvalues(oldDimension) - 1;
end
lowerColumns = diag(D) > lowerLimitValue;

%—————去掉较大的特征值(一般没有这一步)——————
if firstEig > 1
higherLimitValue = (eigenvalues(firstEig - 1) + eigenvalues(firstEig))/2;
else
higherLimitValue = eigenvalues(1) + 1;
end
higherColumns = diag(D) < higherLimitValue;

%—————————合并选择的特征值——————————
selectedColumns =lowerColumns & higherColumns;

%—————————输出处理的结果信息—————————
fprintf('Selected[ %d ] dimensions.\n',sum(selectedColumns));
fprintf('Smallest remaining (non-zero) eigenvalue[ %g ]\n',eigenvalues(lastEig));
fprintf('Largest remaining (non-zero) eigenvalue[ %g ]\n',eigenvalues(firstEig));
fprintf('Sum of removed eigenvalue[ %g ]\n',sum(diag(D) .* (~selectedColumns)));

%———————选择相应的特征值和特征向量———————
E = selcol(E,selectedColumns);
D = selcol(selcol(D,selectedColumns)',selectedColumns);

%——————————计算白化矩阵———————————
whiteningMatrix = inv(sqrt(D)) * E';
dewhiteningMatrix = E * sqrt(D);

%——————————提取主分量————————————
y = whiteningMatrix * mixedsig;

%——————————行选择子程序———————————
function newMatrix = selcol(oldMatrix,maskVector)
if size(maskVector,1)~ = size(oldMatrix,2)
error('The mask vector and matrix are of uncompatible size.');
end
numTaken = 0;
for i = 1:size(maskVector,1)
if maskVector(i,1) == 1
takingMask(1,numTaken + 1) == i;
numTaken = numTaken + 1;
end
end
newMatrix = oldMatrix(:,takingMask);

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lillllllll/archive/2010/02/21/5315382.aspx

❸ 我想用stc12c5a60s2单片机PCA输出pwm 周期20ms 脉宽1ms,怎么计算周期 怎么

stc12C5A60s2的官方文档

有介绍


PCA的时钟源可以选择:sysclk,sysclk/2,sysclk/4,sysclk/6,sysclk/8,sysclk/12,(其中 sysclk就是你的晶振频率),定时器0的溢出,P3.4口的输入时钟.


另外CCAPnL是重装值,也需要配置好.


周期20ms,也就是说频率是50Hz.

那你只能选择使用定时器0的溢出作为PCA的时钟了.

CL=0;//清零PCA计数器
CMOD=0x04;//定时器0溢出做PCA模块的时钟源
CCAPnH=CCAPnL=0xF3;//n=0or1//1ms
CCAPMn=0x42;//n=0or1//脉宽调节模式

CR=1;//都配置好了之后,打开PCA计数器

当然其它的寄存器配置你需要自己写,比如说定时器0.

详见官方文档


我写是对照文档现写的,比较匆忙,代码可能有问题,但是思路是对的.

❹ STC12C5A60S2单片机的PCA作为捕捉使用时,捕捉的是两个边沿信号之间的脉宽还是一段时间内的脉冲数量

没仔细研究,这一节的说明特别长,看起来费劲但我学习STM32时对捕获有所理解,应该是两个捕获寄存器1和2联合使用,第一个上升沿到来,两个捕获寄存器同时复位,下降沿时,捕获寄存器2产生捕获更新事件,即可得到脉冲宽度第二个上升沿到来捕获寄存器1产生捕获更新事件,即可得到脉冲周期同时占空比也知道了两个寄存器的捕获值是内部时钟个数,根据晶振频率和分频系数即可得到时间
而不是一段时间内外部的脉冲数量

❺ stc12c5a60s2单片机的串行中断对pca有没有影响

串口中断对PCA可能造成的影响是:
1、如果是优先级一样,那么一个中断在执行过程中,其他中断只能排队等候,所以有中断响应延迟的情况出现。
2、如果是优先级不一样,那么低级中断就可能被高级中断打断的可能。
3、如果没有使用using n(n~3)那么如果多个中断都使用了同一个名称的工作寄存器的话,可能会干涉。

❻ STC12系列单片机的PCA是指什么,跟PWM有什么区别

PCA——可编程计数器阵列

STC手册中把概念模块化了,他的PCA包含两个 捕获/比较匹配 模块,可以实现上升沿/下降沿捕获,及捕获中断,或者比较匹配中断,或者PWM,或者最普通的定时/计数器。

其实就是个功能稍微强大点的定时器 - -!

比如STC12C2052AD,它的PCA是16位的计数器,计数脉冲可选(时钟分频后做为计数信号,或者外部信号),包含两个比较单元,这两个比较单元可以用来产生比较匹配或者PWM,也就是上面所说的 两个模块。

当PCA本身的计数数值与比较匹配相等时,可以触发中断,或者PWM波形翻转。

当PCA工作于捕获时,首先设定一个捕获条件 上升沿或下降沿 。当这个条件发生时,PCA本身的计数值就被自动的复制到一个固定的寄存器上,等待读取,并可以触发中断。

实际上PCA就是一个平平常常的计数器,比AT89S52的强点,现在的定时器基本上都有这些功能。

实在不明白就看看手册吧。。

❼ 关于STC12C5A60S2单片机的PCA/PWM应用

1、CL/CH就是个一直在累加的计数器,功能同TL/TH;2、CCAPnL/CCAPnH里面放所谓的捕获值,也就是说:CL/CH中计数的值等于CCAPnL/CCAPnH时发生捕获事件,将申请中断;PWM时计数达到CCAPnL时输出电平翻转,达到CCAPnH时翻转回去,重新计数;3、CL/CH是计数器;CCAPnL/CCAPnH是寄存器,单片机实时对比其与CL/CH的值是否相等;4、实现16位软件定时可以用CL/CH的溢出中断(同T0、T1。。),也可以使用捕获模式,CCAPnL/CCAPnH中存放定时所要计数的值,CL/CH初值赋0,在捕获中断中清零CL/CH的值;5、在2中已说明。

阅读全文

与stc12c5a60s2单片机的pca相关的资料

热点内容
程序员职业有哪些好处 浏览:706
大都会软件app如何扫码 浏览:428
单片机0x38 浏览:751
程序员浪漫工作 浏览:323
php几分钟前 浏览:303
项目编译及运行 浏览:891
程序员的基本功 浏览:519
遗传算法排班 浏览:286
如何加密金融安全网 浏览:27
家里的wifi太卡了怎么样自己加密 浏览:230
华为链路聚合命令 浏览:423
apache自动运行php 浏览:516
485和单片机 浏览:974
xp修复系统命令 浏览:519
微你app怎么加好友 浏览:795
程序员转正 浏览:208
应用隐私加密忘记密码怎么办 浏览:683
2g视频怎么压缩 浏览:610
康佳电视服务器异常怎么解决 浏览:840
怎么用c语言编译简单的小游戏 浏览:814