stc单片机IO配置与PWM

发布者:幸福自在最新更新时间:2015-05-26 来源: 51hei关键字:stc单片机  IO配置  PWM 手机看文章 扫描二维码
随时随地手机看文章
I/O口配置

           STC2C5201AD系列单片机所有I/O口均可由软件配置成4种工作类型之一,如下表所示。4种类型分别为:准双向口/弱上拉(标准8051输出模式)、强推挽输出/强上拉、仅为输入(高阻)或开漏输出功能。每个口由2个控制寄存器中的相应位控制每个引脚工作类型。STC- 2C5201AD系列单片机上电复位后为准双向口/弱上拉(传统805 的I/O口)模式。2V以上时为高电平,0.8V以下时为低电平。每个I/O口驱动能力均可达到20mA,但整个芯片最大不得超过90mA。

 

P3口设定      (P3口地址:B0H)口地址:B0H))

 

P3M1 [7:0]

P3M0 [7 : 0]

I/O 口模式

0

0

准双向口(传统805  I/O 口模式)    ,

灌电流可达20mA , 拉电流为230μA ,

由于制造误差,    实际为250uA~ 50uA

0

1

强推挽输出( 强上拉输出, 可达20mA, 要加限流电阻)

1

0

仅为输入(    高阻)

1

1

开漏(Open Drain),      内部上拉电阻断开,    要外上拉

 

MOV P3M1,#10100000B

 

MOV P3M0 #10010000B

 

P3.7为开漏P3.5为高阻P3.4为强推挽输出,其他为准双向

 

PWM输出时I/O口的状态

 

当某个I/O口作为PWM输出用时,该口的状态:

 

PWM      之前口的状态

 

PWM时口的状态

 

弱上拉/准双向口

强推挽输出/强上拉输出,要加输出限流电阻10K ~1K

强推挽输出

强推挽输出/强上拉输出,要加输出限流电阻10K ~1K

仅为输入/高阻

PWM无

开漏

开漏

 

普通I/O口---〉限流电阻用(10K到1K)-----〉接负载

 

4.6.如何让I/O口上电复位时为低电平

 

普通8051单片机上电复位时普通I/O口为弱上拉高电平输出,而很多实际应用要求上电时某

 

些I/O口为低电平输出,否则所控制的系统(如马达)就会误动作,现STC12系列单片机由于既有弱上拉输出又有强推挽输出,就可以很轻松的解决此问题。现可在STC12系列单片机I/O口上加一个下拉电阻(1K/2K/3K),这样上电复位时,虽然单片机内部I/O口是弱上拉/高电平输出,但由于内部上拉能力有限,而外部下拉电阻又比较小,无法将其拉高,所以该I/O口上电复位时外部为低电平。如果要将此I/O口驱动为高电平,可将此I/O口设置为强推挽输出,而强推挽输出时,I/O口驱动电流可达20mA,故肯定可以将该口驱动为高电平输出。

 

 

 


 

 

 

 

 

 

10.3.4 脉宽调节模式(PWM)

 

   脉宽调制(PWM,Pulse Width Modulation)是一种使用程序来控制波形占空比、周期、相位波形的技术,在三相电机驱动、D/A转换等场合有广泛的应用。STC 2C520 AD系列单片机的PCA模块可以通过程序设定,使其工作于8位PWM模式。PWM模式的结构如下图所示。

 

 

 

[page]

 

所有PCA模块都可用作PWM输出(上图)。输出频率取决于决于PCA定时器的时钟源。

 

由于所有模块共用仅有的PCA定时器,所有它们的输出频率相同。各个模块的输出占空

 

是独立变化的,与使用的捕获寄存器[EPCnL,CCAPnL]有关。当寄存器寄存器CL的值小于[EPCnL,    CCAPnL]时,输出为低;当寄存器CL的值等于或大于[EPCnL,CCAPnL]时,输出为高。当CL的值由FF变为00溢出时,[EPCnH,CCAPnH]的内容装载到[EPCnL,CCAPnL]中。这样就可实现无干扰地更新PWM。要使能PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。由于PWM是8位的,所以: PWM的频率=:PCA时钟输入源频率/256   PCA时钟输入源可以从以下8种中选择一种:SYSclk,SYSclk/2,SYSclk/4,SYSclk/6,SYSclk/8,SYSclk/ 2,定时器0的溢出,ECI/P3.4输入。。

 

举例:要求PWM输出频率为38KHz,选SYSclk为PCA/PWM时钟输入源,求出SYSclk的值

 

由计算公式38000=SYSclk/256   ,得到外部时钟频率SYSclk=38000 x 256 x =9,728,000

 

如果要实现可调频率的PWM输出,可选择定时器0的溢出率或者ECI脚的输入作为PCA/PWM的时钟输入源

 

当EPCnL = 0及CCAPnL=0x00H时,PWM固定输出高

 

当EPCnL = 1及CCAPnL=0xFFH时,PWM固定输出低

 

例:

 

#define           PCA_IDLE_DISABLE  0            //1:MCU在IDLE模式时禁止PCA工作。                                                  0:  MCU在IDLE模式时允许PCA工作。

 

#define           PCA_SOURCE_SELECT     1            //选择PCA的基准时钟源。

 

                                                                      //0:系统时钟Fosc/12。

 

                                                                      //1:系统时钟Fosc/2。

 

                                                                      //2:定时器0的溢出。

 

                                                              //3:ECI/P3.4脚的外部时钟输入(最大=Fosc/2)。

 

                                                                      //4:系统时钟Fosc。

 

                                                                      //5:系统时钟Fosc/4。

 

                                                                      //6:系统时钟Fosc/6。

 

                                                                      //7:系统时钟Fosc/8。

 

void en_PCA(void)

 

{

 

       CMOD= (PCA_IDLE_DISABLE << 7) | (PCA_SOURCE_SELECT << 1);    //初始化PCA模式寄存器。

 

       CL= 0x00;            //清除PCA计数机

 

       CH= 0x00;

 

       CR= 1;                 //启动PCA计数机 CL  00->FF

 

}

 

void initPWM()

 

{

 

 

 

 

 

      

 

       PWM=0x00;

 

       PCA_PWM0=0x02;    //初始化输出0

 

       CCAP0H= 0xFF;         //初始化输出0 

 

       CCAPM0= 0x42;         //设置PCA模块0工作在PWM模式               .......................

 

      PCA_PWM1=0x02;    //初始化输出0

 

       CCAP1H= 0xFF;         //初始化输出0

 

       CCAPM1= 0x42;         //设置PCA模块1工作在PWM模式

 

       en_PCA();                    //打开PMW

 

  }

 

 

 

 

 

DALE R01F采样电阻,阻值是  0.01欧

 

 

 

RXD 为接收数据的引脚,TXD 为发送数据的引脚

PMW0 输出全1 

 PCA_PWM0=0x00;
 CCAP0H = 0x00;


PMW0输出全0
 PCA_PWM0=0x00;
 CCAP0H = 0x00;  //set PWM wide

关键字:stc单片机  IO配置  PWM 引用地址:stc单片机IO配置与PWM

上一篇:单片机 C语言 编程风格
下一篇:谈谈学习单片机的几个误区

推荐阅读最新更新时间:2024-03-16 14:03

基于AVR单片机设计的加热控制系统
1 引言 温度是工业生产中主要的被控参数之一,与之相关的各种温度控制系统广泛应用于冶金、化工、机械、食品等领域。文中介绍的文化测量及加热控制系统以 ATmega8型AVR系列单片机为核心部件,通过对系统软件和硬件设计的合理规划,发挥单片机自身集成众多系统级功能单元的优势,在不减少功能的前提下有效降低了硬件成本,系统操控简便。实验证明该温控系统具有很高的可靠性和稳定性。 2 系统结构及控制算法 2.1系统总体结构 温度测量及加热系统控制的总体结构如图1所示。系统主要包括现场温度采集、实时温度显示、加热控制参数设置、加热电路控制输出、与上位机串行通信和系统核心ATmega8型单片机等。 温度采集电路以模拟电压形式将现场温度传至单片机。
[单片机]
基于AVR单片机设计的加热控制系统
S5PV210定时器
在S5PV210内部,一共有4类定时器件。这4类定时器件的功能、特征是不同的。 1、PWM定时器 (1)这种是最常用的,平时所说的定时器一般指的是这个。像简单单片机(譬如51单片机)中的定时器也是这类。 (2)为什么叫PWM定时器,因为一般SoC中产生PWM信号都是靠这个定时器模块的。 2、系统定时器 (1)系统(指的是操作系统)定时器,系统定时器也是用来产生固定时间间隔(TCNT×时钟周期)信号的,称为systick,这个systick用来给操作系统提供tick信号。 (2)产生systick作为操作系统的时间片(time slice)的,一般是用在操作系统的调度系统下,用来做调度系统的进程间切换。 (3)一般做操作系统移
[单片机]
Diodes 公司准谐振 PWM控制器优化电源适配器应用效率
Diodes公司推出AP3301准谐振(QR) PWM控制器产品,用于实现能够在所有负载水平满足DOE6/COC 第二级效率要求的高性能、高成本效益电源。这款控制器瞄准用于机顶盒和游戏主机应用的AC-DC适配器主要市场,还满足ATX/BTX计算机母板辅助电源需求,并且适用于开放式框架开关电源。 AP3301器件具有多种运作方式,可以在不同的负载水平达到最佳效率:在低负载或空负载情况下,这款IC使用猝发模式最大限度地减小待机功耗,同时在大约20kHz最低开关频率下运作,以减少可闻的噪声。在中等负载情况下,具有频率折返(frequency foldback)的谷锁QR模式提升了效率和EMI性能。对于重负载或低线输入情况下,控
[电源管理]
Diodes 公司准谐振 <font color='red'>PWM</font>控制器优化电源适配器应用效率
直流电机PWM闭环控制实验(完整的C51程序)
C源代码: #include reg52.h /*定义字型字位口*/ #define DIGPORT P2 #define WORDPORT P0 /*定义键盘口*/ #define KEYPORT P1 #define uint unsigned int #define uchar unsigned char #define uong unsigned long sbit P_7=P3^7; //PWM信号输出 bit OVER; uint k,dt; uong KEYNUM; uchar qu,NUM; void Delay(uint ms) { while(--ms); } void timer0(voi
[单片机]
利用STM32高精度定时器实现PWM输出的实现原理
很多STM32系列的MCU内置高精度定时器,比方STM32F334、STM32G4、STM32H7等系列。利用高精度定时器实现PWM输出应该说是最基本的功能了。不过,在实际应用中,常有人觉得无法实现duty=0或duty=100%的PWM输出情形。这里以STM32F334的HRTIM为例,简单介绍下利用它实现PWM输出的实现原理。 STM32F334的HRTIM的功能框图如下,由一个MASTER定时器和ABCDE五个定时器单元组成。其中ABCDE五个定时器单元各可以产生2路输出信号,并支持互补输出。 先看看跟HRTIM有关的时钟。别的系列有支持向上、向下计数模式的。 在利用HRTIM中的定时器单元实现PWM输出时,基于不同
[单片机]
利用STM32高精度定时器实现<font color='red'>PWM</font>输出的实现原理
有刷直流电机以BTL放大器输入形式的PWM驱动
在上一篇文章中以恒流驱动为例介绍了有刷直流电机的PWM驱动方法。本文将介绍有刷直流电机以BTL放大器输入形式的PWM驱动。 使用PWM输出方式驱动有刷直流电机: BTL放大器输入形式驱动 同样,首先请看电路示例。这是一个有刷直流电机以BTL放大器的输入形式进行PWM驱动的电路示例。BTL放大器输入电路的工作原理在这里也有介绍,请一并参考。 该驱动器在输入电路中使用与BTL放大器相同的差分放大器配置来控制H桥。它配有以Vref为基准偏置点的差分输入放大器,以及振幅为Vph-Vpl、且Vph和Vpl的中心值为Vref的三角波振荡器。通过由比较器将放大器的输出和三角波进行比较并转换为矩形波来生成PWM信号。两种矩形波输出中,
[嵌入式]
有刷直流电机以BTL放大器输入形式的<font color='red'>PWM</font>驱动
滤波器对PWM变频调速电动机端子上电压波形的影响
1引言 随着微电子技术和现代控制理论在交流变频调速系统中的应用,变频器(或逆变器)的性能也得到飞跃性的提高,并越来越广泛地应用于工业生产和日常工作的许多领域之中。但是,变频器输出的具有陡上升沿或下降沿的脉冲电压却在电动机接线端子及绕组上产生了过电压,造成电动机绕组绝缘的过早破坏。试验研究表明,很高的电压上升率(dv/dt)在电动机绕组上产生极不均匀的电压分布,且随着变频器与电动机之间电缆(线)长度的增加,在电动机接线端子上产生高频振荡的过电压,当电缆长度超过某一临界值后,电动机端子上过电压的幅值达到变频器输出电压的2倍,长时间重复性的电压应力的作用将导致电动机绕组匝间绝缘的过早破坏。 为了降低电动机端子上高频振荡的过电压,最适
[工业控制]
滤波器对<font color='red'>PWM</font>变频调速电动机端子上电压波形的影响
基于ARM的PWM模块的超声波检测系统的设计
  近年来以微电子学和计算机技术为基础的信息技术飞速发展,超声无损检测仪器也得到了前所未有的发展动力,为了提高检测的可靠性和提高检测效率,研制数字化、智能化、自动化、图像化的超声仪是当今无损检测领域发展的一个重要趋势。而传统的超声波检测仪存在准确性差、精度低、体积大、功耗大、人机界面不友好等问题。而超声波发射与控制电路正是在一种基于ARM的超声波检测系统的基础上,以ARM微控制器为核心,使用C语言编程,方便地实现了发射频率与激励电压脉冲幅度的调节。    1 超声波检测系统的总体设计结构   基于ARM超声波检测系统的总体结构框图,如图1所示。该系统主要由3部分组成:超声波前端发射接收电路、DSP和ARM处理器。   
[单片机]
基于ARM的<font color='red'>PWM</font>模块的超声波检测系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved