找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1947|回复: 5
收起左侧

STC8a8k64S4A12单片机怎么实现流水呼吸灯?只有呼吸灯的PWM代码

[复制链接]
ID:997537 发表于 2021-12-27 18:46 | 显示全部楼层 |阅读模式
STC8a8k64S4A12怎么实现流水呼吸灯?只有呼吸灯的PWM代码,现在想实现8个灯呈现波浪式的起伏,也算是流水呼吸灯了。目前只知道流水灯如何实现,但加上呼吸灯效果就有些蒙圈,希望大佬们指点。
求助大佬们,非常非常感谢!


单片机源程序如下:
  1. #include "STC8A.h"
  2. #include "intrins.h"

  3. //测试工作频率为11.0592MHz

  4. #define CYCLE  0x1000


  5. void PWM_Isr() interrupt 22
  6. {
  7.     static bit dir = 1;
  8.     static int val = 0;
  9.     char store;

  10.     if (PWMCFG & 0x80)
  11.     {
  12.         PWMCFG &= ~0x80;                        //清中断标志
  13.         if (dir)
  14.         {
  15.             val++;
  16.             if (val >= CYCLE) dir = 0;
  17.         }
  18.         else
  19.         {
  20.             val--;
  21.             if (val <= 1) dir = 1;
  22.         }
  23.    
  24.         store = P_SW2;
  25.         P_SW2 |= 0x80;
  26.         PWM0T2 = val;
  27.                                 PWM1T2 = val;
  28.                                 PWM2T2 = val;
  29.                                 PWM3T2 = val;
  30.                                 PWM4T2 = val;
  31.                                 PWM5T2 = val;
  32.                                 PWM6T2 = val;
  33.                                 PWM7T2 = val;
  34.         P_SW2 = store;
  35.     }
  36. }

  37. void main()
  38. {
  39.     P_SW2 = 0x80;
  40.     PWMCKS = 0x00;                              // PWM时钟为系统时钟
  41.     PWMC = CYCLE;                               //设置PWM周期为
  42.     PWM0T1= 0x0000;
  43.     PWM0T2= 0x0001;
  44.     PWM0CR= 0x80;                               //使能PWM0输出
  45.                 PWM1T1= 0x0000;
  46.     PWM1T2= 0x0001;
  47.     PWM1CR= 0x80;                               //使能PWM1输出
  48.                 PWM2T1= 0x0000;
  49.     PWM2T2= 0x0001;
  50.     PWM2CR= 0x80;
  51.           PWM3T1= 0x0000;
  52.     PWM3T2= 0x0001;
  53.     PWM3CR= 0x80;                               //使能PWM0输出
  54.                 PWM4T1= 0x0000;
  55.     PWM4T2= 0x0001;
  56.     PWM4CR= 0x80;                               //使能PWM1输出
  57.                 PWM5T1= 0x0000;
  58.     PWM5T2= 0x0001;
  59.     PWM5CR= 0x80;
  60.                 PWM6T1= 0x0000;
  61.     PWM6T2= 0x0001;
  62.     PWM6CR= 0x80;                               //使能PWM0输出
  63.                 PWM7T1= 0x0000;
  64.     PWM7T2= 0x0001;
  65.     PWM7CR= 0x80;                               //使能PWM1输出

  66.     P_SW2 = 0x00;

  67.     PWMCR = 0xc0;                               //启动PWM模块
  68.     EA = 1;

  69.     while (1);
  70. }

复制代码


回复

使用道具 举报

ID:997537 发表于 2021-12-27 18:46 | 显示全部楼层
注释后面没来得及改 但没有关系
回复

使用道具 举报

ID:33998 发表于 2021-12-27 20:28 | 显示全部楼层
轮流修改PWM0-PWM7的值
回复

使用道具 举报

ID:997537 发表于 2021-12-28 01:00 | 显示全部楼层
jxrjamu 发表于 2021-12-27 20:28
轮流修改PWM0-PWM7的值

已经修改过了,只能够同时亮暗呢,没有逐个移动的波浪式效果
回复

使用道具 举报

ID:213173 发表于 2021-12-28 05:50 | 显示全部楼层
duan030 发表于 2021-12-27 18:46
注释后面没来得及改 但没有关系

把这个程序看明白稍加修改就能达目的
水滴流水灯.rar (14.93 KB, 下载次数: 36)
回复

使用道具 举报

ID:997537 发表于 2021-12-28 08:46 | 显示全部楼层
wulin 发表于 2021-12-28 05:50
把这个程序看明白稍加修改就能达目的

感谢大佬!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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