#include<reg51.h>     //程序是基于KEIL-C51编写,引入8051头文件
sbit P10=P1^0;
sbit P11=P1^1;
unsigned int scale; //占空比控制变量 void main(void) { unsigned int n; //延时循环变量 TMOD=0x02; //定时器0,工作模式2(0000 0010),8位定时 TH0=0x06; //定时250us(12M晶振) TL0=0x06; //预置值 TR0=1; //启动定时器0 ET0=1; //启动定时器0中断 EA=1; //开启总中断 while(1) { for(n=0;n<50000;n++); //延时一段时间 scale++; //占空比控制变量加一 if(scale==10) scale=0; //达到循环的效果 } } timer0() interrupt 1 //定时器0中断程序 { static unsigned int tt ; //tt用来保存当前时间在一个时钟周期的位置 tt++; //每中断一次,即每经过250us,tt的值自加1 if(tt==10) //中断10次定时2.5ms, { tt=0; //使tt=0,开始新的周期,达到循环的效果 P10=0; //点亮LED } if(scale>=tt) //如果占空比与中断次数相同时,此时输出高电平 P10=1; //熄灭LED灯 /* 前面的程序是将占空比设置成了10个等级,scale=1时维持高电平的时间 是1/10个PWM周期(这里是2.5ms),因为scale<=tt的时间段是低电平点亮LED灯的, scale>=tt的时间是熄灭LED灯的,通过改变一个周期内高低电平维持的时间长短 就可以控制LED灯的亮度或者是电机的转速了,这就是PWM的工作原理 */ } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

PWM原理:

参考文章:单片机中PWM的原理与控制程序

对程序稍作修改变为对电机的转速控制,在proteus8.4仿真如下:

转载于:https://www.cnblogs.com/lifan3a/articles/7069943.html

51单片机PWM程序详解相关推荐

  1. 51单片机步进电机角度控制详解(免费提供代码+仿真)

    51单片机步进电机控制详解 目录 51单片机步进电机控制详解 一.步进电机基本介绍 1. 步进电机结构 2. 步进电机驱动 二.硬件&仿真设计 0.设计要求 1. 硬件设计 显示模块 输入模块 ...

  2. 学习笔记之-51单片机IO口详解

    前言 对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,或接受外部的何种控制,都是通过I/O口进行的.51单片机每个IO端口结构都有差异,都各有各的特点.在平时的应用中,特别是设 ...

  3. 51单片机串口通讯详解

    串口,作为单片机程序开发中最常用.最方便,也是应用最广泛的程序调试方法:无论是作为调试工具,打印出调试信息,还是对功能模块进行通信,串口是每个单片机开发人员最常用的单片机外设. 由于大部分51单片机不 ...

  4. 51单片机auxr寄存器_MCS-51单片机特殊功能寄存器详解

    1.      定时器/计数器的方式寄存器TMOD TMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址. A      主要完成三个功能: *确定选择定时器还是计数器: *选择何种工作 ...

  5. 51单片机矩阵按键详解,两位数码管显示(普中HC6800ESV2.0)

    一.简述 本人是一名在校生,这个学期刚好在学单片机,自己也挺有兴趣,前面在写数码管.时钟啥的程序时都没什么大问题,但是做到矩阵按键时碰到了一些问题,不过已经解决,下面我会把碰到的问题和解决方法都写出来 ...

  6. 51单片机DS18B20温度传感器详解

    DS18B20是一种单总线数字温度传感器,测试温度范围-55℃-125℃,具有体积小,硬件开销低,抗干扰能力强,精度高的特点.单总线,意味着没有时钟线,只有一根通信线.单总线读写数据是靠控制起始时间和 ...

  7. 51单片机模拟音乐详解

    想用蜂鸣器模拟出音乐,就需要先把乐谱转换为十六进制数,简单看来音乐就是高低不一,长短不一声的音间隔不同时间的排列组合,所以乐谱改编成十六进制就是三个要素:音符即DO,RE,MI,FA,SO,LA,SI ...

  8. 51单片机数码管详解

    一.数码管基础知识 LED数码管是由多个发光二极管封装在一起组成"8"字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极.LED数码管常用的段数一般为7段,有的另加 ...

  9. 51单片机“密码锁”代码详解

    注:此代码一经过验证,读者不必怀疑其正确性,如果烧录进去没有反应,请自行检查引脚端口配置,以及仔细分析代码实现原理.倘若能静下心来分析代码,一定能受益匪浅. 废话不多说,,直接上代码.如有问题,请下方 ...

最新文章

  1. fetchtype 动态控制_RouterOS利用aliyun的API接口实现DDNS动态解析
  2. 研究发现大部分企业没有在云端采用Office 365
  3. 010_logback中的SocketAppender
  4. WCF与 Web Service的区别
  5. 数据库连接池之_DButils
  6. Hadoop Yarn配置参数整理(非常全面)
  7. android 不同型号的终端的UI适配--一种解决方法
  8. 【转】Dynamics CRM 365零基础入门学习(七)Dynamics 365 DataMigrationUtility tool使用
  9. 哔哩哔哩n倍速播放视频
  10. linux用户登录失败,锁定用户
  11. 算法设计和数据结构学习_2(常见排序算法思想)
  12. Excel与对齐的文本文件互转
  13. GOF-23种设计模式UML图
  14. 【Linux】Linux的字符终端
  15. Written English-书面-现在进行时
  16. b站pink老师JavaScript的DOM案例代码——模拟京东快递单号查询
  17. java创建临时文件
  18. 使用SSH服务管理远程主机(RHEL8)
  19. 泰科 | 高压连接革命!CSJ高压连接器与您共赢电动汽车新时代
  20. MacBook Pro电池维修记

热门文章

  1. VS 2019 for Mac 第 3 个预览版发布,新编辑器、Xamarin 开发改进
  2. 在.NET中实现观察者模式(3种技术)
  3. 有效的数据处理:使用Tango库进行压缩和加密
  4. linux hadoop namenode_HADOOP_HDFS伪分布式安装步骤
  5. mediarecorder 录制的文件无法拖动进度条_录制课程不用愁,小V手把手教学
  6. 服务器迁移虚拟化实施方案,虚拟化实施方案
  7. nginx 伪静态php去掉后缀_Nginx与PHP是如何进行交互的?
  8. python函数的内涵_python内涵段子文章爬取
  9. 小程序组件的使用(二) packer多选组件
  10. linux查看宽带ip是否动态,linux CentOS系统查看实时宽带的办法