我想用STC608芯片自带解码接收芯片的P3^7脚的PCA/PWM功能控制步进电机的转速快慢(占空比可调),总是写不对。。

您是不是在找:
买家还在看:
当前位置:
¥0 元/PCS
关注行业资讯
STC608AD-3V-SOP32
detail3e达人选购¥1520.00¥45.00¥¥¥
detail3e周边优质供应商上海松江区上海松江区浙江省宁波市河北省石家庄市
同参数产品
同参数产品
同参数产品
同参数产品
同参数产品
慧聪网厂家苏碧璇为您提供STC608AD-3V-SOP32
ST的详细产品价格、产品图片等产品介绍信息,您可以直接联系厂家获取STC608AD-3V-SOP32
ST的具体资料,联系时请说明是在慧聪网看到的。
detail3e相关商品推荐¥1520.00¥45.00¥¥¥¥28.00¥22800.00¥10000.00热门商品推荐 ¥1520.00 ¥45.00 ¥ ¥ ¥ ¥28.00 ¥22800.00 ¥10000.00
detail3e店内热门商品面议¥18.80面议面议
detail3e销相关资源销热门产品搜索更多&热门商机最新商机
提示:您在慧聪网上采购商品属于商业贸易行为。以上所展示的信息由卖家自行提供,内容的真实性、准确性和合法性由发布卖家负责,请意识到互联网交易中的风险是客观存在的。推荐使用,保障您的交易安全!
所在地:广东省&&
联系人:苏碧璇 & 女士
075 ******
139 ******
请供应商联系我
手机号不能为空
姓名不能为空
请供应商联系我
您对该公司的咨询信息已成功提交请注意接听供应商电话。
detail3e关于ST
detail3e您是不是在找
您采购的产品:
请输入采购产品
您的手机号码:
请输入手机号码
*采购产品:
请输入采购产品
*采购数量/单位:
请输入采购数量
请选择单位
*采购截止日期:
请输入正确的手机号码
请输入验证码
*短信验证码:
<input id="valid_Code1" maxlength="6" placeholder="请输入验证码" name="VALIDCODE" class="codeInput" onkeyup="this.value=this.value.replace(/\D/g,'')" onkeypress="if(event.keyCode
57) event.returnValue =" type="text">
免费获取验证码
为了安全,请输入验证码,我们将优先处理您的需求!
请输入验证码
发送成功!
慧聪已收到您的需求,我们会尽快通知卖家联系您,同时会派出采购专员1对1为您提供服务,请您耐心等待!
139 ******
联系人:苏碧璇&深圳市金港新科技有…
公司名称:苏碧璇
备注:点击关注按钮后才可自动收到卖家电话
请输入正确的手机号码
请输入验证码
*短信验证码:
免费获取验证码
为了安全,请输入验证码,我们将优先处理您的需求!
请输入验证码
按字母分类 :论文发表、论文指导
周一至周五
9:00&22:00
基于STC单片机实现多位软件PWM
  摘 要:本文针对当前带有硬件PWM的8位单片机普遍存在分辨率低,难以适应实际使用需要的问题,利用STC12 C5A60S2系列单片机的PCA模块实现多位(9~16位)软件PWM的基本方法,并给出实用控制程序。实验表明,该方法具有很强的实用性。 中国论文网 /9/view-5077274.htm  关键词:STC单片机 PCA模块 软件PWM   PWM全称为Pulse Width Modulation,即脉冲宽度调制,简称为脉宽调制。常见的PWM调制方式是定频调宽,在固定的调制周期内,通过改变有效电平的宽度,即改变占空比(0≤ρ≤1),实现对输出电压的控制。随着单片机技术的飞速发展,当前主流的单片机普遍在片上集成了硬件PWM等功能,使用起来非常方便。但对8位机而言,片内集成的硬件PWM大多为8位分辨率,虽然可以由硬件实现占空比的无缝刷新,但存在分辨率较低的现实问题。笔者利用深圳宏晶科技有限公司出品的51内核STC12C5A60S2系列单片机设计一种软件PWM,可实现从9~16位之间任意分辨率,从而满足控制精度等要求。   一、STC12C5A60S2系列单片机PCA模块介绍   STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换、双串口。它在工业电动机控制中,有不俗的表现。STC12C5A60S2系列单片机集成了两路可编程计数器阵列(PCA)模块,可用于软件定时器、外部脉冲捕捉、高速输出以及PWM输出四种工作模式。   1.PCA模块的结构   PCA含有一个特殊的16位定时器,有2个16位的捕获/比较模块与之相连,如图1所示。   图1 PCA模块结构   每个模块可编程工作在4种工作模式:上升/下降沿捕获、软件定时器、高速输出或PWM输出。16位PCA定时器/计数器是2个模块的公共时间基准,其结构如图2所示。   图2 PCA定时/计数器结构   寄存器CH和CL的内容是正在自由递增计数的16位PCA定时器的值,可通过对CMOD(CMOD寄存器的说明参考下面描述)特殊功能寄存器中CPS2、CPS1和CPS0三个位的编程实现对时钟源的选择,具体配置关系如表1所示。   表1   2.PCA模块相关寄存器   PCA模块相关寄存器及其功能受篇幅限制,在此仅介绍几个关键寄存器,其他部分从略。   (1)CCON-PCA控制寄存器。   CF:PCA计数器阵列溢出标志位。为1表示溢出;为0表示未溢出。可软硬件置位,只能软件复位。   CR:PCA计数器阵列运行控制位。置1,启动;置0,停止。   CCF1:PCA模块1中断标志。当出现匹配或捕获时硬件置位;必须软件清零。   CCF0:PCA模块0中断标志。当出现匹配或捕获时硬件置位;必须软件清零。   (2)CMOD—PCA模式寄存器。   CIDL:空闲模式下是否停止PCA计数的控制位。为1时,停止计数;为0时,继续工作。   CPS2、CPS1、CPS0:PCA计数脉冲源选择控制位。具体配置见上文。   ECF:PCA计数溢出中断使能位。为1时允许CF中断;为0时禁止CF中断。   (3)CCAPMn(n=0,1)——PCA模块工作模式寄存器,配置如表2所示。   表2 PCA模块工作模式设定(CCAPMn,n=0,1)   - ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn 模块功能   0 0 0 0 0 0 0 无此操作   0 0 0 0 0 1 0 8位PWM,无中断   1 1 0 0 0 1 1 8位PWM输出,由低变高可产生中断   1 0 1 0 0 1 1 8位PWM输出,由高变低可产生中断   1 1 1 0 0 1 1 8位PWM输出,由低变高或者由高变低增可产生中断   X 1 0 0 0 0 X 16位捕获模式,由CEXn/PCAn的上升沿触发   X 0 1 0 0 0 X 16位捕获模式,由CEXn/PCAn的下降沿触发   X 1 1 0 0 0 X 16位捕获模式,由CEXn/PCAn的跳变触发   1 0 0 1 0 0 X 16位软件定时器   1 0 0 1 1 0 X 16位高速输出   可见,通过配置,PCA能工作在多种工作模式,具有较强的灵活性。   二、软件实现PWM基本原理   本设计应用PCA模块的高速输出模式实现多位PWM功能。当PCA计数器的计数值与模块捕获寄存器的值相匹配时,PCA模块的CCPn引脚输出将发生翻转。PCA模块高速输出模式框图,如图4所示。   图4 PCA高速输出模式   由图4可见,当激活高速输出模式时,CCAPMn寄存器的TOGn,MATn和ECOMn位都必须置位。一旦出现匹配,在比较匹配中断里判断高速输出的电平,如果是高电平,则向捕获寄存器装入高电平的PCA时钟数;如果是低电平,则装入低电平的PCA时钟数。   设要求的PWM分辨率为n(0≤n≤1),则每个PWM周期为DUTY=2n个PCA时钟。设PWM_high为PWM高电平持续时间,PWM_low为PWM低电平持续时间,则有DUTY=PWM_high+PWM_low,占空比。明显的,分辨率n的值越大,则分辨率越高。   为实现设计功能,需要用到的资源有:PCA可编程计数器阵列、捕获寄存器、匹配中断向量。由于中断处理需要一点时间,输出的占空比不能到0%或100%,所以对占空比有最小和最大值限制,中断处理绝对时间大约为100个系统时钟。
  三、参考程序   /* --- STC单片机实现软件PWM功能,本程序以10位PWM为例-----------------*/   #include"STC12C5A60S2.h"/*包含STC12C5A60S2单片机头文件*/   #define PWM_DUTY 1024 ∥定义PWM的周期,数值为PCA所选择的时钟脉冲个数。   #define PWM_HIGH_MAX PWM_DUTY-32 ∥限制PWM输出的最大占空比。   #define PWM_HIGH_MIN 32 ∥限制PWM输出的最小占空比。   sbit CCP0 = P1^3; ∥CCAP0引脚声明   /* -------------- 全局变量定义---------------*/   unsigned int PWM_high; ∥ 定义PWM占空比寄存器,即PWM输出高电平的PCA时钟脉冲个数。   unsigned int PWM_low; ∥ 定义PWM输出低电平的PCA时钟脉冲个数。   unsigned int CCAP0_tmp;//定义CCAP0重装载影射寄存器。   ∥=============================================   ∥ 函数: void PWM_SetHigh(unsigned int high)   ∥ 描述: 写入占空比数据。   ∥ 参数: high: 占空比数据,即PWM输出高电平的PCA时钟脉冲个数。   ∥=================================================   void PWMn_SetHigh(unsigned int high)   {   if(high > PWM_MAX)   high = PWM_MAX; ∥如果写入大于最大占空比数据,强制为最大占空比。   if(high < PWM_MIN)   high = PWM_MIN; ∥如果写入小于最小占空比数据,强制为最小占空比。   CR = 0; ∥停止PCA。   PWM_high = high; ∥数据在正确范围,则装入占空比寄存器。   PWM_low = PWM_DUTY - high; ∥计算并保存PWM输出低电平的PCA时钟脉冲个数。   CR = 1; ∥启动PCA。   }   ∥============================================   ∥ 主函数: void main(void)   ∥=============================================   void main(void)   {   P1M1 &= ~0x08,   P1M0 |= 0x08; /*设置CCAP0(P1.3)使用PUSH-PULL推挽输出模式。*/   CCON = 0; /*清除CF、CR、CCF0、CCF1*/   IPH |= 0x80; /*PCA中断使用最高优先级*/   IP |= 0x80;   CMOD = 0; /*空闲模式下PCA计数器继续工作,计数器时钟源为系统时钟的12分频,禁止PCA计数溢出(CF)中断*/   CCAPM0 = 0x4d; /*高速输出模式,允许比较匹配中断(ECCF0=1)。*/   CL = 0; /*清空PCA基本计数器。*/   CH = 0;   CCAP0_tmp = 0; /*清空CCAP0重装载影射寄存器。*/   PWMn_SetHigh(512);/*设定占空比数据。*/   CR = 1; /*启动PCA。*/   EA = 1; /*允许总中断*/   while(1);   }   ∥=================================================   ∥ 函数: void PCA_interrupt (void) interrupt 7   ∥ 描述: PCA中断服务程序。   ∥ 参数: 无。   ∥ 返回: 无。   ∥=================================================   void PCA_ISR (void) interrupt 7   {   if(CCF0) /*PCA模块0中断(只开放CCF0中断)*/   {   CCF0 = 0; /*清PCA模块0中断标志*/   if(CCP0)   CCAP0_tmp += PWM_high; /*输出为高电平,则给影射寄存器装载高电平时间长度*/   else   CCAP0_tmp += PWM_low; /*输出为低电平,则给影射寄存器装载低电平时间长度*/   CCAP0L = (unsigned char)CCAP0_tmp;/*将影射寄存器写入捕获寄存器,先写CCAP0L*/   CCAP0H = (unsigned char)(CCAP0_tmp >> 8);/*注意:后写CCAP0H*/   }   }   四、实验验证   某设计项目使用10位软件PWM功能,实验结果如图5、图6、图7所示。   图5 15%占空比   图6 50%占空比   图7 80%占空比   五、结语   本设计在多个实际项目使用,均能很好地实现控制要求,同时大大降低硬件成本。在实际应用中,考虑到中断的消耗,特别是其他中断服务开销很长时间时,有可能会影响本程序的正常运行,因此强烈建议将PCA模块中断优先级设为最高级,以实现更佳控制效果;同时建议在正常运行时,尽量不要关闭。   (作者单位:广东省粤东高级技工学校)
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。扫描二维码,输入您要打赏的金额求助,关于 STC12C5A60S2自带PWM【单片机吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:149,796贴子:
求助,关于 STC12C5A60S2自带PWM收藏
如题,弄了好几天都不行,大家帮帮忙看一下头文件代码哪里有问题,编译没有提示错误。p1.3
p1.4脚就是没有输出pwm。急死我了。。。/*********************************************************************************************
两路PWM输出控制设置/*********************************************************************************************/#ifndef __SET_PWM_H__#define __SET_PWM_H__sfr AUXR
= 0x8E;//Declare SFR associated with the PCA
声明与PCA相关联的SFR
//PCA control register PCA控制寄存器 sbit
//PCA module-0 interrupt flag PCA模块0中断标志 sbit
//PCA module-1 interrupt flag PCA模块1中断标志 sbit
//PCA timer run control bit
PCA定时器运行控制位 sbit
//PCA timer overflow flag
PCA定时器溢出标志 sfr
//PCA mode register
PCA模式寄存器 sfr
//PCA base timer LOW
PCA基定时器低 sfr
//PCA base timer HIGH
PCA基定时器高 sfr
//PCA module-0 mode register PCA模块0模式寄存器 sfr
//PCA module-0 capture register LOW PCA模块0捕捉寄存器低 sfr
//PCA module-0 capture register HIGH PCA模块0捕捉寄存器高 sfr
//PCA module-1 mode register PCA模块1模式寄存器 sfr
//PCA module-1 capture register LOW PCA模块1捕捉寄存器低 sfr
//PCA module-1 capture register HIGH PCA模块1捕捉寄存器高 sfr
PCAPWM0 = 0xf2; sfr
PCAPWM1 = 0xf3;//***********************************************************************************/ //PWM模式设置 void Init_PWM() {
// set PWM mode 设定PWM工作模式
//初始PCA控制寄存器(PCA定时器停止,清除CF标志,清除所有模块中断标志) CL = 0;
//复位PCA基定时器
CH = 0;CMOD = 0x02; //设置PCA定时器的时钟源作为定时器0溢出,禁用PCA定时器溢出中断
CCAP0H = CCAP0L = 255;
//的PWM0端口输出X%占空比的方波
CCAPM0 = 0x42;
//PCA模块08位PWM模式工作,并没有PCA中断 CCAP1H = CCAP1L = 255; //PWM1端口输出X%占空比的方波 CCAPM1 = 0x42;
//PCA模块1,08位PWM模式工作,并没有PCA中断
//PCA定时器开始运行 }//***********************************************************************************/ //设置Timer0为8位自动重载模式,作为PWM时钟源 void Init_Timer0() {
// set timer0 mode AUXR = 0x00;
//定时器工作在12T模式
TMOD|= 0x02;
//设置定时器0计数器模式2(8位自动重装) TH0=TL0=155; //PWM 50Hz
TR0 = 1; //定时器0开始运行(如PWM CLK)
同步整流升压芯片,小封装升压芯片,大电流升压芯片,免费提供样品及DEM板测试,快充3V升12V/1.5A升压方案 免费提供样品板联系:
额,没用过这个单片机,只用过用定时器实现pwm波的输出
我也做过,我的头文件是在stc下的。
你有这个芯片的手册吗?那上面有pwm的例程吧,很详细,各种模式的配置都有
我说说吧:首先,既然用这款单片机,就去STC官网下载头文件:stc12c5a60s2.h
这样省去了自己声明,定义寄存器的过程。既方便,又减少代码量。不输出波形可能原因: CCAP0H = CCAP0L = 255;//赋值255时,占空比最小,1/256
CCAP1H = CCAP1L = 255;;//赋值255时,占空比最小,1/256 当赋值为0x00时占空比最大,这两个 极端 都 不会 看到方波的。赋值0x80时,占空比50%
那是什么…
请教一下在输出PWM波时,手册说是在P1^3或P4^2这是什么意思,是表示这两个引脚会同时输出相同的PWM波还是说需要一些设置才可以激活P4^2的PWM波波形?
弱弱的问一句这一款单片机内置AD转换芯片么?
在吗?问个单片机问题
是怎么解决的
你前面那个ks103测距可以发下程序给我么
占空比设置错了0和255是没有PWM的
你主函数没写while(1)
登录百度帐号豆丁微信公众号
君,已阅读到文档的结尾了呢~~
STC单片机AD采集液晶显示程序,stc单片机,stc单片机官网,stc单片机选型,stc15系列单片机,stc单片机烧录软件,stc单片机学习,stc单片机下载器,stc系列单片机,stc单片机下载软件
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
STC单片机AD采集液晶显示程序
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 芯片自带的crc 的文章

 

随机推荐