標(biāo)題: 51單片機(jī)產(chǎn)生pwm 占空比10khz頻率 Proteus仿真程序 [打印本頁(yè)]

作者: 繁星落葉    時(shí)間: 2019-12-7 12:08
標(biāo)題: 51單片機(jī)產(chǎn)生pwm 占空比10khz頻率 Proteus仿真程序


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


單片機(jī)源程序如下:
  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. }
復(fù)制代碼

Keil代碼與Proteus仿真下載:
占空比.rar (54.57 KB, 下載次數(shù): 66)





作者: 燒仙草芋圓    時(shí)間: 2020-2-15 22:20
TH0=TL0=206這個(gè)是怎么算的呀?
作者: 荷影如風(fēng)    時(shí)間: 2021-3-24 09:22
燒仙草芋圓 發(fā)表于 2020-2-15 22:20
TH0=TL0=206這個(gè)是怎么算的呀?

裝初值,256-50=206,每50微秒中斷一次
作者: 1AJ1987402    時(shí)間: 2021-5-3 15:29
荷影如風(fēng) 發(fā)表于 2021-3-24 09:22
裝初值,256-50=206,每50微秒中斷一次

1/2K就是每50uS,就是void Timer0Init(void)                //500微秒@12.000MHz
{
        AUXR |= 0x80;                //定時(shí)器時(shí)鐘1T模式
        TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
        TL0 = 0x90;                //設(shè)置定時(shí)初值
        TH0 = 0xE8;                //設(shè)置定時(shí)初值
        TF0 = 0;                //清除TF0標(biāo)志
        TR0 = 1;                //定時(shí)器0開始計(jì)時(shí)
}




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1