找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3641|回复: 3
收起左侧

51单片机产生pwm 占空比10khz频率 Proteus仿真程序

[复制链接]
ID:406994 发表于 2019-12-7 12:08 | 显示全部楼层 |阅读模式

51占空比10khz频率

51占空比10khz频率


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

单片机源程序如下:
  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, 下载次数: 65)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:523100 发表于 2020-2-15 22:20 | 显示全部楼层
TH0=TL0=206这个是怎么算的呀?
回复

使用道具 举报

ID:895829 发表于 2021-3-24 09:22 | 显示全部楼层
烧仙草芋圆 发表于 2020-2-15 22:20
TH0=TL0=206这个是怎么算的呀?

装初值,256-50=206,每50微秒中断一次
回复

使用道具 举报

ID:578423 发表于 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开始计时
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表