51单片机 PWM基本原理理解(程序举例)
配置独立按钮K1,不按下时LED P2_0灯暗,按下时更亮。
#include <REGX52.H>unsigned char Counter,Compare; //两个篮子,一个Counter计数器,一个Compare比较值。void main()
{while(1) //大循环。{while(P3_1==1) //循环:独立按钮K1,没有按下的时候,在这里面循环。{Counter++; //计数器自增1.Counter%=100; //当计数器增加到100时,变成0,赋值给计数器。(也可以设定其他值)Compare=95; //自己设定的比较值。(设得高,不亮的时间越长,看起来就越暗。红色线)if(Counter<Compare) //把两者作比较。当计数器值小于比较值时 执行。{P2_0=1; //设计:当计数器值小于比较值灯不亮。 }else {P2_0=0; //反之:灯亮。 }}while(P3_1==0){Counter++;Counter%=100;Compare=5;if(Counter<Compare){P2_0=1; }else {P2_0=0; } }}
}
注意:
1. PWM控制灯亮度的方式是:将一个计数器从 0到设定的值(如:10,100等) 作为一个周期,计数器值在此周期内 从0自增到最大又变为0。
设定一个 比较值, 计数器值自增一次就和比较值 比较一次,从而设定,是大于亮灯还是小于时亮灯,等。 快速的循环这个过程,肉眼看起来就好像灯变亮或者变暗了。
2. 如果编写程序为: if (计数器值Counter < 比较值Compare) —— {执行P2_0不亮} —— else否则——{ P2_0亮 }。 才满足 红线 与 绿线交点 右边部分 灯亮,左边部分 灯熄灭(如上图图)。得到的结果是:比较值Compare越大 P2_0灯越暗,反之越亮。
如果编写程序为:if (计数器值Counter > 比较值Compare) —— 执行P2_0不亮 —— else否则—— P2_0亮。 或者为: if (计数器值Counter < 比较值Compare) —— 执行P2_0亮 —— else否则—— P2_0不亮。 那么 交点 左边部分 灯亮,右边部分 灯熄灭。
3. 如上图熄灭表示的部分就是所谓的 占空比
51单片机 PWM基本原理理解(程序举例)相关推荐
- pid控制器c51语言编程,51单片机电机pid控制系统程序
51单片机电机pid控制系统程序 本程序来源网上,小编进行了简单修改,还未验证. /************************* 应用背景:直流电机的额定功率12V,额定转速3000rpm,光码 ...
- 基于51单片机PWM(即脉冲宽度调制)调速数码管显示测速L298M芯片控制直流电机正反运转的项目
基于51单片机PWM(即脉冲宽度调制)调速数码管显示测速L298芯片控制直流电机正反运转的项目 一.前言 1.基于51单片机PWM(即脉冲宽度调制)调速数码管显示测速L298芯片控制直流电机正反运转的 ...
- 单片机c语言的按键程序,51单片机按键扫描C程序
原标题:51单片机按键扫描C程序 大二上学期做过80 的按键程序,当时项目要求实现按键控制 屏显示并且接收GPRS传来的数据.当时为了节省成本,就去大西电子市场买来8*8的LED块,然后自己一点一点的 ...
- 51单片机PWM调速风扇转速显示转速设置
实践制作DIY- GC0029-PWM调速风扇 一.功能说明: 基于51单片机设计-PWM调速风扇 二.功能介绍: STC89C52单片机(AT89C52)+5V4线PWM风扇+LCD1602显示器+ ...
- pt100+51单片机的温控系统程序+仿真图 还带压力显示的
pt100+51单片机的温控系统程序+仿真图 还带压力显示的 使用pt100测温度,经过放大器放大后的电压值乘以236就是实际的温度值0.42V对应100度,0V对应0度,经过ad运算显示出来,其他滤 ...
- 机械手编程用c语言,51单片机机械手控制C程序.doc
51单片机机械手控制C程序 //包含所需头文件 #include #define uchar unsigned char /***************------宏定义------******** ...
- 水下超声波测距c语言程序,51单片机超声波测距C程序
51单片机超声波测距C程序 (2010-01-26 14:09:10) 电子工程师电子资料大学校园 超声波检测原理 超声波测距的程序流程图 程序如下: //超声波模块程序 #include #defi ...
- matlab中光敏电阻,51单片机光敏电阻寻光程序
[实例简介] 51单片机光敏电阻寻光程序,测试可用,可用数码管显示电阻值大小 [实例截图] [核心代码] 光敏电阻寻光程序 ├── 光敏(最终) │ ├── AD转换 │ ├── AD转换.h ...
- 【制作】基于金沙滩51单片机的电子密码锁程序
基于金沙滩51单片机的电子密码锁程序 很久之前做的一个课设,在B站发了效果视频,发现忘记分享代码了,现在整理分享一下. 零.设计报告 1.设计要求 这部分是讲的整个系统实现了什么功能. 1.1.密码的 ...
最新文章
- oracle监听器动态注册于静态注册的区别
- 蓝驰创投朱天宇:用10年尺度看 AI 创业,如何发现独角兽 | 新智元专访
- python整数类型在每一台计算机上的取值范围是一样的_Python编程知识点总结
- 【Python学习】 - skimage包
- 中希尔排序例题代码_十大经典排序算法最强总结
- 致盲目标检测算法,阿里清华发起 “对抗攻击” 挑战赛!
- Jeecg-Boot 快速生成前后端代码
- oppo手机android 版本号,ColorOS新系统定档!紧跟安卓发布,但版本号亮了
- Navicat Premium 11.2.7 中文破解版安装
- 华擎计算机主板配置,DDR+478+PCIEx16当下最平民化的计算机配置
- table里的th和td加了边框后,他是两个边框重合的,1PX就变成了2PX
- C DoEvents
- RDIFramework.NET 框架之组织机构权限设置
- 论微服务架构设计与应用
- 原子物理与原子核物理知识结构(含链接)
- Spring-实现整合Mybatis框架
- 在SQL SERVER 2000中实行简繁体转换
- 亲爱的,你是吃屎了么
- 学生成绩abcde怎样划分_中考成绩中ABCD等级代表的分数段是什么?
- vacuum freeze
热门文章
- python爬取携程网游记_网页爬虫 - 用python selenium抓取携程信息
- STM32CUBEMX_STM32F030F4P6_TIM1_CH3_PWM
- __attribute__概述
- 【转载】USB Type-C设备是否需要CC逻辑芯片
- 比LastPass、1Password更安全的密码管理器,Horcrux是怎么实现的?
- oracle 脚本定时,Oracle存储过程定时执行2种方法
- 【渝粤教育】电大中专办公设备使用与维护_1作业 题库
- Vue3 企业级项目实战:项目须知与课程约定
- 点云自适应滤波matlab代码,一种机载激光雷达点云的自适应滤波方法与流程
- 德国科隆大学计算机排名,德国科隆大学世界排名如何?