单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:2394|回复:1
打印上一主题下一主题

使用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, 下载次数: 66)



评分

黑币 +50
收起理由
+ 50
共享资料的黑币奖励!

查看全部评分

楼主
ID:1118176发表于 2024-4-25 10:19|只看该作者
我想试试

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

Powered by 单片机教程网