51单片机PWM程序详解
#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程序详解相关推荐
- 51单片机步进电机角度控制详解(免费提供代码+仿真)
51单片机步进电机控制详解 目录 51单片机步进电机控制详解 一.步进电机基本介绍 1. 步进电机结构 2. 步进电机驱动 二.硬件&仿真设计 0.设计要求 1. 硬件设计 显示模块 输入模块 ...
- 学习笔记之-51单片机IO口详解
前言 对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,或接受外部的何种控制,都是通过I/O口进行的.51单片机每个IO端口结构都有差异,都各有各的特点.在平时的应用中,特别是设 ...
- 51单片机串口通讯详解
串口,作为单片机程序开发中最常用.最方便,也是应用最广泛的程序调试方法:无论是作为调试工具,打印出调试信息,还是对功能模块进行通信,串口是每个单片机开发人员最常用的单片机外设. 由于大部分51单片机不 ...
- 51单片机auxr寄存器_MCS-51单片机特殊功能寄存器详解
1. 定时器/计数器的方式寄存器TMOD TMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址. A 主要完成三个功能: *确定选择定时器还是计数器: *选择何种工作 ...
- 51单片机矩阵按键详解,两位数码管显示(普中HC6800ESV2.0)
一.简述 本人是一名在校生,这个学期刚好在学单片机,自己也挺有兴趣,前面在写数码管.时钟啥的程序时都没什么大问题,但是做到矩阵按键时碰到了一些问题,不过已经解决,下面我会把碰到的问题和解决方法都写出来 ...
- 51单片机DS18B20温度传感器详解
DS18B20是一种单总线数字温度传感器,测试温度范围-55℃-125℃,具有体积小,硬件开销低,抗干扰能力强,精度高的特点.单总线,意味着没有时钟线,只有一根通信线.单总线读写数据是靠控制起始时间和 ...
- 51单片机模拟音乐详解
想用蜂鸣器模拟出音乐,就需要先把乐谱转换为十六进制数,简单看来音乐就是高低不一,长短不一声的音间隔不同时间的排列组合,所以乐谱改编成十六进制就是三个要素:音符即DO,RE,MI,FA,SO,LA,SI ...
- 51单片机数码管详解
一.数码管基础知识 LED数码管是由多个发光二极管封装在一起组成"8"字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极.LED数码管常用的段数一般为7段,有的另加 ...
- 51单片机“密码锁”代码详解
注:此代码一经过验证,读者不必怀疑其正确性,如果烧录进去没有反应,请自行检查引脚端口配置,以及仔细分析代码实现原理.倘若能静下心来分析代码,一定能受益匪浅. 废话不多说,,直接上代码.如有问题,请下方 ...
最新文章
- fetchtype 动态控制_RouterOS利用aliyun的API接口实现DDNS动态解析
- 研究发现大部分企业没有在云端采用Office 365
- 010_logback中的SocketAppender
- WCF与 Web Service的区别
- 数据库连接池之_DButils
- Hadoop Yarn配置参数整理(非常全面)
- android 不同型号的终端的UI适配--一种解决方法
- 【转】Dynamics CRM 365零基础入门学习(七)Dynamics 365 DataMigrationUtility tool使用
- 哔哩哔哩n倍速播放视频
- linux用户登录失败,锁定用户
- 算法设计和数据结构学习_2(常见排序算法思想)
- Excel与对齐的文本文件互转
- GOF-23种设计模式UML图
- 【Linux】Linux的字符终端
- Written English-书面-现在进行时
- b站pink老师JavaScript的DOM案例代码——模拟京东快递单号查询
- java创建临时文件
- 使用SSH服务管理远程主机(RHEL8)
- 泰科 | 高压连接革命!CSJ高压连接器与您共赢电动汽车新时代
- MacBook Pro电池维修记
热门文章
- VS 2019 for Mac 第 3 个预览版发布,新编辑器、Xamarin 开发改进
- 在.NET中实现观察者模式(3种技术)
- 有效的数据处理:使用Tango库进行压缩和加密
- linux hadoop namenode_HADOOP_HDFS伪分布式安装步骤
- mediarecorder 录制的文件无法拖动进度条_录制课程不用愁,小V手把手教学
- 服务器迁移虚拟化实施方案,虚拟化实施方案
- nginx 伪静态php去掉后缀_Nginx与PHP是如何进行交互的?
- python函数的内涵_python内涵段子文章爬取
- 小程序组件的使用(二) packer多选组件
- linux查看宽带ip是否动态,linux CentOS系统查看实时宽带的办法