永发信息网

单片机通过8个独立按键改变PWM值的问题

答案:2  悬赏:40  手机版
解决时间 2021-03-02 09:25
单片机通过8个独立按键改变PWM值的问题,8个按键按照从左到右依次按下后,PWM从0渐渐变大,当8个按键依次从左到右重复按了五个周期(一个周期就是从按键1按到按键8)后,PWM才变为最大100,然后反过方向按下那8个按键五个周期后,PWM变回0.关于PWM的生成可以不用管,重要的是这个键盘的扫描判断不知道如何用C语言写的,大神帮帮忙,指教下

对了,还是只用6个按键吧,五个周期的,‘
按键按下的顺序就是K1、K2、K3、K4、K5、K6、K1、K2、K3、K4、K5、K6、K1、K2、K3、K4、K5、K6、K1、K2、K3、K4、K5、K6、K1、K2、K3、K4、K5、K6这样进行,
最佳答案

#include "reg51.h"
char PWM,PWMn;//占空比的值
char Key[4];//0-1按键稳定,2-3两次按键值
char KeyRead;//读键值
char T_10mS;//按键10mS去抖
#define KeyData P1;// 输出高
#define Out1 P3|=1;// 输出高
#define Out0 P3&=0xfe;// 输出低
//timer init
void initTimer(void)
{
TMOD=0x2;
TH0=0x0;
TL0=0x0;
}

//timer0/counter0 interrupt
void timer0(void) interrupt 1
{
//add your code here.
if(PWMn <= PWM)
{
Out1;
}
else
{
Out0;
}
PWMn++;
PWMn=PWMn%41;
if(!PWMn)//定时中断为256uS,10mS约为40个周期,现用41周期
{KeyRead=1;}
}
//the main fun
void main(void)
{
char i,j,k;
initTimer();
TR0=1;
ET0=1;
EA=1;
PWMn=0;
Key[2]=Key[3]=7;
while(1)
{
if(!KeyRead)//10ms
{
Key[0]=Key[1];//
Key[1]==KeyRead;//读键值
if((!Key[0])&&(Key[0]==Key[1]))//按键且稳定
{
k=~Key[1];
j=1;
Key[2]=Key[3];
for(i=0;i<8;i++)
{
if(k&j)
{
Key[3]=i;
}
else
{;}
}
i=Key[3]-Key[2];
if((i==1)||(i==-7))// 顺序按键
{
PWMn++;
}
else if((i==-1)||(i==7))//逆序按键
{
PWMn--;
}
else
{;}
if(PWMn<0)
{
PWMn=0;
}
else
{;}
PWMn%=41;
}
}
}
}
全部回答
给按键键值,把键值附到占空比去 再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我的笔记本电脑泡水了现在水弄干了 还是开不
匆匆反义词
求《苍松怪石图题诗》中描写苍松外形的诗句,
20÷0.02x=2/3解出x,x等于多少。
男朋友给我送了一个杯子,倒冷水没反应,倒开
用郭沫若《静夜》第一段的手法造句:小河----
g605次列车在北京西站哪里检票口上车
西古城子村地址有知道的么?有点事想过去
基于LBS 的街景购物网站与应用前景如何?
【motion是什么意思】nomotion是什么意思
请问谁能告诉我爽肤水、化妆水、润肌水的区别
宣工集团技工学校在哪里啊,我有事要去这个地
用无()无()组词
南京南站到夫子庙多远
关于养花大亨赚钱的问题
推荐资讯
石坡牛岭这个地址在什么地方,我要处理点事
一直蹲着有什么影响
怎么样用万用表测量一个24V电源的正负极
求通达信选股公式 大阳后连跌2-3天,阴阳都可
求个QQ号码
1183170是什么号码
求千本樱歌词,中文
高家岭村民委员会这个地址在什么地方,我要处
别人欺负我时,我恨之入骨,恨不得杀了他,但
背抽筋挂什么科
一般情况下厂里压几个月工资算违法呢?
风云百货商场(狮岭分店)怎么去啊,有知道地址
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?