求51单片机PWM程序:两按键K1、K2,两管脚输出频率为1KHZ,占空比在0%到100%的方波,K1、K2调节占空。

能把这个程序发给我吗?谢谢!

这是我以前写的用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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-01
建议自己先写段程序调试后遇到问题再提出来,不要动不动就提要求让别人代写程序,谁也没这闲功夫的
第2个回答  2011-11-01
晕 这么简单的程序你也问,哥们儿,全是还是看完书在编程把
第3个回答  2011-11-01
你不要钱帮我写一个这样的程序?你愿意写吗?