找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2214|回复: 0
收起左侧

使用STC12C5A60S2单片机硬件PCA/PWM模块输出呼吸灯效果源程序

[复制链接]
ID:675767 发表于 2021-1-18 22:03 | 显示全部楼层 |阅读模式
硬件电路也是很简单,
通过连续改变CCAP0H改变PWM0输出的PWM信号的占空比,PWM信号在P1.3脚输出,PWM输出端口接入一颗LED用来显示呼吸灯的效果。
MCU:STC12C5A60S2   晶振:11.0592MHz

单片机源程序如下:
  1. /*********************************************************************************************************
  2. ** 工程功能 :PWM输出
  3. ** MCU:STC12C5A60S2   
  4. ** 晶振:11.0592MHz
  5. *  配置PCA模块为8位PWM输出模式,PCA计数脉冲设置为Timer0的溢出频率,配置步骤如下:
  6. * 1、PCA模块0在空闲模式下扔然计数,选择T0计数溢出频率为PCA模块0的计数脉冲,禁止PCA0的溢出中断,即CMOD=0X84;
  7. * 2、不使用PCA中断,将PCA各模块中断请示标志清除,即CCON=0X00;
  8. * 3、PCA计数器清0,即使CH=CL=0;
  9. * 4、T0设置为工作方式2,8位自动重装模式,即TMOD=0X02;
  10. * 5、将计数初值装入T0;
  11. * 6、开启T0计数器,开启PCA0计数器,即TR0=1; CR=1;
  12. * 7、PWM输出端口为P1.3,另一端接LED可以查看呼吸灯效果。
  13. *********************************************************************************************************/
  14. #include<STC12C5A60S2.h>
  15. #include<LCD1602.h>
  16. #include<PWM.h>
  17. #define uint unsigned int

  18. /*********************************************************************************************************
  19. ** 函数功能 :延时函数
  20. ** 函数说明 :利用软件延时,占用CPU,经调试最小单位大约为1ms
  21. ** 入口参数 :time:需要延时的时间,单位ms
  22. ** 出口参数 :无
  23. *********************************************************************************************************/
  24. void Delay_ms(uint time)
  25. {
  26.         uint i,j;
  27.         for(i = 0;i < time;i ++)
  28.                 for(j = 0;j < 930;j ++);
  29. }

  30. void main()
  31. {
  32.         unsigned char i=0;
  33.         LCD_1602_Init(); //液晶显示前进行初始化
  34.         PCA_init();
  35.         Timer0_init();
  36.         Write_1602_String("I LIKE MCU 2021",0X80);
  37.         Write_1602_Data(0x05);//自定义字符'年'
  38.         while(1)  //在while(1)循环中通过连续改变CCAP0H改变PWM0输出的PWM信号的占空比,PWM信号在P1.3脚输出
  39.         {                
  40.                 for(i=255;i>1;i--)
  41.                 {
  42.                   CCAP0H=i;  
  43.                   Delay_ms(8);
  44.                 }
  45.                 for(i=0;i<255;i++)
  46.                 {
  47.                 //PCA计数器工作在PWM模式时,CCAP0H和CCAPL用来控制输出PWM的占空比,对PWM0起主要影响作用的是CCAP0H,详细的介绍可参照文档中PCA/PWM的应用的章节
  48.                   CCAP0H=i;
  49.                   Delay_ms(8);
  50.                 }

  51.         }
  52. }
复制代码

所有程序51hei提供下载:
STC12C5A60S2_PWM输出做呼吸灯效果.rar (38.13 KB, 下载次数: 61)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表