51单片机输出方波,占空比可调(占空比在0.5左右),频率可调(频率在10KHZ左右),完整的C语言程序,急求,求大神快点吧。
不用带显示,要求占空比根据AD采样结果随时可调,这个做不到的话先用按键调应急一下也行啊。
能给一下C程序吗?还有那个占空比根据AD采样结果随时可调怎么办呢?
能不能把调节部分也写上?调占空比。还有要求占空比根据AD采样结果随时可调怎么办呢?
追答嫌烦就找了个按键调占空比的给你了
这是键盘中断程序
void keyscan() interrupt 0 //外部中断0
{ float TF0,TZ1;
EX0=0; //关中断
delay(10); //延时消抖
if(P1 !=0x0f) //判断是否有键按下
{ if(KEY1==0) freq+=100; //按键为1号,频率加100
if(KEY2==0) freq+=10; //按键为2号,频率加10
if(freq>500) freq=50; //频率大于500Hz,重新赋值为50Hz
if( KEY3==0) zkb+=10; //按键为3号,占空比加10
if( KEY4==0) zkb++ ; //按键为4号,占空比加1
if(zkb>99) zkb=1; //占空比大于99,重新赋值为1
TF0=(65536-fosc/(12.0*freq)); //频率定时初值
TZ1=(65536-(fosc*zkb)/(12.0*100*freq)); //占空比定时初值
TIMER0_H=(uint)TF0/256; //计算定时器0和定时器1的初值
TIMER0_L=(uint)TF0%256;
TIMER1_H=(uint)TZ1/256;
TIMER1_L=(uint)TZ1%256;
}
P1=0x0f; //给键盘扫描口赋初值
EX0=1; //开中断
}
能不能解释一下第一次那个程序的原理啊?什么意思
追答原理就是按晶振频率来。他就像脉搏一样。。这么讲要追溯好多东西了。你就知道8位单片机是65535溢出,高八位和第八位赋值,
TH0=(65536-50)/256;
TL0=(65536-50)%256;
我们选择的是工作方式一,TMOD寄存器在工作方式一的时候为65535.当然其他工作方式又不一样。知道这个就好设置频率了。PWM就基于这个上下翻转就可以了。
最后一个问题:你写的第一个程序改哪里是改频率,改哪里是改占空比?我怎么改仿真的结果都是一样,都是一个占空比0.5的方波。另外,多问一个程序:http://zhidao.baidu.com/question/588908658.html?quesup2&oldq=1
追答恩 我写的第一个是不可调的。要调的话 要设变量。你发的那个就不错啊。可以调节
本回答被提问者和网友采纳