按下按键1灯变亮,按下按键2灯变暗,用PWM调光,C程序怎么写
答案:2 悬赏:50 手机版
解决时间 2021-03-09 14:12
- 提问者网友:暮烟疏雨之际
- 2021-03-09 02:07
按下按键1灯变亮,按下按键2灯变暗,用PWM调光,C程序怎么写
最佳答案
- 五星知识达人网友:猎心人
- 2021-03-09 03:30
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define LED P1 //8个发光二级管
sbit key1=P3^5;
sbit key2=P3^6;
#define LED_ON() LED=0x00 //所有灯亮
#define LED_OFF() LED=0xff //灭
#define LED_PWM_MAX 99
#define LED_PWM_MIN 0
uchar LED_Direction=0; //LED方向控制 0:变亮 1:变暗
uchar LED_PWM_Counter=0; //LED占空比
uchar count=0; //中断计数
bit flag=0;//按键扫描标志位
void main()
{
P3=0xff; //做输入口先写1
TMOD=0x01;
TH0=0xff;
TL0=0x47;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(flag)
{
if(key1==0)
{
if((LED_PWM_Count<=LED_PWM_MAX)&&(LED_Direction==0))
{
LED_PWM_Count++;
if(LED_PWM_Count>LED_PWM_MAX)
{
LED_PWM_Count=LED_PWM_MAX;
LED_Direction=1;
}
}
}
if(key2==0)
{
if((LED_PWM_Count>=LED_PWM_MIN)&&(LED_Direction==1))
{
LED_PWM_Count--;
if(LED_PWM_count
{
LED_PWM_Count=LED_PWM_MIN;
LED_Direction=0;
}
}
}
if(LED_PWM_Count>0)
{
LED_ON();
LED_PWM_Count--;
}
else
{
LED_OFF();
}
}
}
}
void timer0() interrupt 1
{
TH0=0xff;
TL0=0x47;
if(++count>=10)//2ms扫描一次按键(不行可以把时间改小)
{
count=0;
flag=1;
}
}
大概就这个思路,如果不行你自己改改吧!
#include
#define uchar unsigned char
#define uint unsigned int
#define LED P1 //8个发光二级管
sbit key1=P3^5;
sbit key2=P3^6;
#define LED_ON() LED=0x00 //所有灯亮
#define LED_OFF() LED=0xff //灭
#define LED_PWM_MAX 99
#define LED_PWM_MIN 0
uchar LED_Direction=0; //LED方向控制 0:变亮 1:变暗
uchar LED_PWM_Counter=0; //LED占空比
uchar count=0; //中断计数
bit flag=0;//按键扫描标志位
void main()
{
P3=0xff; //做输入口先写1
TMOD=0x01;
TH0=0xff;
TL0=0x47;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(flag)
{
if(key1==0)
{
if((LED_PWM_Count<=LED_PWM_MAX)&&(LED_Direction==0))
{
LED_PWM_Count++;
if(LED_PWM_Count>LED_PWM_MAX)
{
LED_PWM_Count=LED_PWM_MAX;
LED_Direction=1;
}
}
}
if(key2==0)
{
if((LED_PWM_Count>=LED_PWM_MIN)&&(LED_Direction==1))
{
LED_PWM_Count--;
if(LED_PWM_count
LED_PWM_Count=LED_PWM_MIN;
LED_Direction=0;
}
}
}
if(LED_PWM_Count>0)
{
LED_ON();
LED_PWM_Count--;
}
else
{
LED_OFF();
}
}
}
}
void timer0() interrupt 1
{
TH0=0xff;
TL0=0x47;
if(++count>=10)//2ms扫描一次按键(不行可以把时间改小)
{
count=0;
flag=1;
}
}
大概就这个思路,如果不行你自己改改吧!
全部回答
- 1楼网友:想偏头吻你
- 2021-03-09 04:45
你好!
用TC脚本制作工具吧,方便快速,我也已经用了好几个月了,百度搜索TC论坛,你就知道
我的回答你还满意吗~~
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯