永发信息网

按下按键1灯变亮,按下按键2灯变暗,用PWM调光,C程序怎么写

答案:2  悬赏:50  手机版
解决时间 2021-03-09 14:12
按下按键1灯变亮,按下按键2灯变暗,用PWM调光,C程序怎么写
最佳答案
#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;
}
}
大概就这个思路,如果不行你自己改改吧!
全部回答
你好! 用TC脚本制作工具吧,方便快速,我也已经用了好几个月了,百度搜索TC论坛,你就知道 我的回答你还满意吗~~
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
16 世纪初,意大利的威尼斯商人到东地中海组织
这个女模特叫什么,
蕾奇尔洗衣尧山街店怎么去啊,有知道地址的么
顺德宾馆在什么地方啊,我要过去处理事情
红尘一醉,愿得一人心……这首词是什么意思?
给新学校的祝福语
被马克思认为“在经济学理论上,提出了在资产
我爱我家哪年播出的
钢锯能锯断合金钢吗
城乡世纪广场停车场这个地址在什么地方,我要
【44444】44444*44444=?
怎么区分牛津布是多少D的
Java中用for循环打印1到10然后再到1依次无限
【头的繁体字】繁体字的丫头各位帮帮忙啦~!问
石桥铺哪里有宠物医院 详细地址 小狗可以带出
推荐资讯
阅读理解Peopletodayexpecttobeexamined
我的无线路由器怎么没有登路密码保护了,直接
2016英雄联盟有多少人玩
北京西客站怎么走大客车能停1号停车场吗
厦门北大青鸟在哪
怎样联系 央视生活315
用水笔写字总是印到手上
机关作风建设包括哪些内容?
i3处理器好还是A6的好?
人类在预防与诊疗传染性疾病过程中,经常使用
韩国首尔发EMS国际快递到山西太原,要不要经
要使溶液的凝固点降低1。00℃,必须向200克水
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?