求51单片机PWM程序:两按键K1、K2,两管脚输出频率为1KHZ,占空比在0%到100%的方波,K1、K2调节占空。
答案:4 悬赏:0
解决时间 2021-11-08 11:11
- 提问者网友:夕夏残阳落幕
- 2021-11-07 17:05
能把这个程序发给我吗?谢谢!
最佳答案
- 二级知识专家网友:山鬼偶尔也合群
- 2021-11-07 17:44
这是我以前写的用51单片机控制舵机的程序,也是调PWM的,两按键,一个开始一个暂停,自己去琢磨吧,希望对你有帮助
int main(void)
{
P2=0xFF;
P0=0xFF;
// P3=0x00;
// P1=0x00;
lcd1602_init();
TMOD=0x01; //方式1,16位计数器方式
TH0=0xff;
TL0=0xab; //定时0.1ms
IE=0x82; //开定时器中断
ET0=1;
TR0=1;
EA=1;
while(1)
{
keyscan();
if(keyvalue&m_start)
{
lcd1602_nwd(0x00,1,disply1,13);
if(high_flag)
{
high_flag=0;
if(i_d_flag)
{
hight_votage--;
if(hight_votage<=5)
{
i_d_flag=0;
delays(m_05s);
// delayms(1000);
// hight_votage=5;
}
}
else
{
hight_votage++;
if(hight_votage>=25)
{
i_d_flag=1;
cont_flag=1;
delays(m_05s);
// delayms(1000);
// high_votage=25;
}
}
}
if(cont_flag)
{
cont_flag=0; //圈数计数标志位
date_inc(disply);
lcd1602_nwd(0x00,2,disply,5);
}
if(keyvalue&m_stop)
{
keyvalue=keyvalue&0xe7;
}
}
}
}
void timer0() interrupt 1
{
// TH0=0xfe;
// TL0=0x0b;
TH0=0xff;
TL0=0xa9;
// flag_01ms=1;
t_num++;
// engine_pwm=~engine_pwm;
if(t_num>=200)
{
time_20ms++;
f_keytime=1;
t_num=0;
engine_pwm=1;
flag_pwm=1;
}
if(flag_pwm)t_cont++;
if(flag_pwm&&(t_cont>hight_votage))
{
high_flag=1;
flag_pwm=0;
t_cont=0;
engine_pwm=0;
}
if(f_buzzle)buzzle=~buzzle;
}
int main(void)
{
P2=0xFF;
P0=0xFF;
// P3=0x00;
// P1=0x00;
lcd1602_init();
TMOD=0x01; //方式1,16位计数器方式
TH0=0xff;
TL0=0xab; //定时0.1ms
IE=0x82; //开定时器中断
ET0=1;
TR0=1;
EA=1;
while(1)
{
keyscan();
if(keyvalue&m_start)
{
lcd1602_nwd(0x00,1,disply1,13);
if(high_flag)
{
high_flag=0;
if(i_d_flag)
{
hight_votage--;
if(hight_votage<=5)
{
i_d_flag=0;
delays(m_05s);
// delayms(1000);
// hight_votage=5;
}
}
else
{
hight_votage++;
if(hight_votage>=25)
{
i_d_flag=1;
cont_flag=1;
delays(m_05s);
// delayms(1000);
// high_votage=25;
}
}
}
if(cont_flag)
{
cont_flag=0; //圈数计数标志位
date_inc(disply);
lcd1602_nwd(0x00,2,disply,5);
}
if(keyvalue&m_stop)
{
keyvalue=keyvalue&0xe7;
}
}
}
}
void timer0() interrupt 1
{
// TH0=0xfe;
// TL0=0x0b;
TH0=0xff;
TL0=0xa9;
// flag_01ms=1;
t_num++;
// engine_pwm=~engine_pwm;
if(t_num>=200)
{
time_20ms++;
f_keytime=1;
t_num=0;
engine_pwm=1;
flag_pwm=1;
}
if(flag_pwm)t_cont++;
if(flag_pwm&&(t_cont>hight_votage))
{
high_flag=1;
flag_pwm=0;
t_cont=0;
engine_pwm=0;
}
if(f_buzzle)buzzle=~buzzle;
}
全部回答
- 1楼网友:摧毁过往
- 2021-11-07 20:31
你不要钱帮我写一个这样的程序?你愿意写吗?
- 2楼网友:夢想黑洞
- 2021-11-07 19:42
你好!
建议自己先写段程序调试后遇到问题再提出来,不要动不动就提要求让别人代写程序,谁也没这闲功夫的
如有疑问,请追问。
- 3楼网友:情窦初殇
- 2021-11-07 19:04
晕 这么简单的程序你也问,哥们儿,全是还是看完书在编程把
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯