标题: 51单片机产生pwm 占空比10khz频率 Proteus仿真程序 [打印本页]

作者: 繁星落叶    时间: 2019-12-7 12:08
标题: 51单片机产生pwm 占空比10khz频率 Proteus仿真程序


仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit pwm=P1^1;
  5. uchar num=0;
  6. main()
  7. {
  8.    TMOD=0x02;
  9.          TH0=TL0=206;
  10.          ET0=1;
  11.          TR0=1;
  12.    EA=1;
  13.          while(1);
  14. }

  15. void init() interrupt 1
  16. {
  17.         num++;
  18.         if(num<=6)
  19.         pwm=1;
  20.         else pwm=0;
  21.         if(num==10)
  22.         num=0;
  23. }
复制代码

Keil代码与Proteus仿真下载:
占空比.rar (54.57 KB, 下载次数: 66)





作者: 烧仙草芋圆    时间: 2020-2-15 22:20
TH0=TL0=206这个是怎么算的呀?
作者: 荷影如风    时间: 2021-3-24 09:22
烧仙草芋圆 发表于 2020-2-15 22:20
TH0=TL0=206这个是怎么算的呀?

装初值,256-50=206,每50微秒中断一次
作者: 1AJ1987402    时间: 2021-5-3 15:29
荷影如风 发表于 2021-3-24 09:22
装初值,256-50=206,每50微秒中断一次

1/2K就是每50uS,就是void Timer0Init(void)                //500微秒@12.000MHz
{
        AUXR |= 0x80;                //定时器时钟1T模式
        TMOD &= 0xF0;                //设置定时器模式
        TL0 = 0x90;                //设置定时初值
        TH0 = 0xE8;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1