频率和占空比可调的简易方波信号发生器

   之前有一同学让我帮忙编一个程序,结果这几天实在太忙,所以硬是在两天后才突然想起“哇!我还有个程序没有编呢~~”。好吧,让我们来看看要求:

 

   利用单片机P1口的任一线作输出,通过定时器的周期性中断输出一个占空比可调,频率可调的简易方波信号发生器,具体要求如下:

   完成频率范围为0.1HZ~5KHZ的方波发生器,占空比1~5可调;可键盘输入发生频率

 

 

   于是乎,我怕麻烦,就把输入部分给省略了~~那么接下来,关于频率和占空比的实现,我想的是用两个计时器中断的时间,这样既可产生位于高电平时高电平持续多久产生下降沿和位于低电平时低电平持续多久产生上升沿。这样就解决了频率和占空比。

protues仿真图:

keil程序(话说protues8里就可以直接写程序了,但我试了下,普通程序可以,但一写到中断函数就报错,报的错误翻译过来貌似是与地址冲突,但怎么找也没找到,而用keil编就能通过。好吧,还是坐等更新吧~~):

/* Main.c file generated by New Project wizard

*

* Created:   ?? ?? 10 2014

* Processor: 80C52

* Compiler:  Keil for 8051

*/

 

#include

#include

 

#define uchar unsigned char

 

sbit OUT_PIN=P2^0;

 

uchar hhT0=0xEC;    //位于高电平时产生下降中断

uchar hlT0=0x78;

uchar lhT0=0xdf;    //位于低电平时产生上升中断

uchar llT0=0xff;

 

void timer0(void) interrupt 1

{

  OUT_PIN=~OUT_PIN;

if(OUT_PIN==1) {TH0=hhT0;TL0=hlT0;}

else {TH0=lhT0;TL0=llT0;}

  

}

 

void main(void)

{

  // Write your code here

   P2=0xff;

   

   TH0=hhT0;TL0=hlT0;

   TMOD=1;

   ET0=1;

   EA=1;

   TR0=1;

  while (1)

     ;

}

频率和占空比可调的简易方波信号发生器》上有1条评论

  1. Pingback引用通告: BZ编程小组 作品 | BZ编程小组

发表评论

电子邮件地址不会被公开。 必填项已用*标注