写一个ny8tmc52d芯片的代码条件3是触碰按键一下可切换档位 1档为呼吸频率由暗--亮--暗.一个循环 6 秒的一个呼吸灯, 2 档为触摸常按0.5秒常亮 ,3 档为触摸常按2秒关闭灯显的代码
时间: 2024-02-01 09:16:23 浏览: 86
以下是一个基本的ny8tmc52d芯片的代码,实现了3个档位的功能:
```
#include <ny8.h>
#define uchar unsigned char
#define uint unsigned int
uchar keyCount = 0; // 按键计数器
uchar lightMode = 0; // 灯的档位
void delay(uint t) // 延时函数
{
while (t--)
_nop_();
}
void main(void)
{
PORTA = 0x00; // 初始化端口A
PORTB = 0x00; // 初始化端口B
PA = 0xff;
PB = 0xff;
while (1)
{
if (!PA7) // 判断按键是否按下
{
keyCount++; // 计数器加1
delay(10000); // 延时消抖
if (!PA7) // 再次判断按键是否按下
{
if (keyCount == 1) // 第一次按下
{
lightMode = 1; // 切换到1档
}
else if (keyCount == 2) // 第二次按下
{
lightMode = 2; // 切换到2档
}
else if (keyCount == 3) // 第三次按下
{
lightMode = 3; // 切换到3档
keyCount = 0; // 计数器清零
}
}
}
if (lightMode == 1) // 1档呼吸灯
{
for (uchar i = 0; i < 255; i++) // 亮度从暗到亮
{
PWM0DUTY = i;
delay(20);
}
for (uchar i = 255; i > 0; i--) // 亮度从亮到暗
{
PWM0DUTY = i;
delay(20);
}
}
else if (lightMode == 2) // 2档常亮
{
PWM0DUTY = 255; // 占空比为100%
}
else if (lightMode == 3) // 3档关闭灯
{
PWM0DUTY = 0; // 占空比为0%
}
}
}
```
这个代码实现了一个循环6秒的呼吸灯,1档为呼吸频率由暗--亮--暗,2档为常亮,3档为关闭灯。按键触碰一下可切换档位,按键常按0.5秒可切换到2档,常按2秒可切换到3档。需要注意的是,这个代码只是一个基本的框架,需要根据具体情况进行修改和调试。
阅读全文