dsp呼吸灯C语言编程,pwm呼吸灯原理及程序分享
PWM
PulseWidthModulation脉冲宽度调制,简称PWM。
PWM(脉冲宽度调制)对模拟信号电平进行数字编码的方法,计算机只能输出0或5V的数字电压值而不能输出模拟电压,而我们如果想获得一个模拟电压值,则需通过使用高分辨率计数器,改变方波的占空比来对一个模拟信号的电平进行编码。
仍输出数字信号,因为满幅值的直流供电只有5V(1)和0V(0)两种。电压是以一种连接(1)或断开(0)的重复脉冲序列被夹到模拟负载上去的,连接即是直流供电输出,断开即是直流供电断开。通过对连接和断开时间的控制,只要带宽足够,可以输出任意不大于最大电压值的模拟电压。
51单片机的Timer
用的单片机是STC89C52,其内部有3个16位Timer,分别为T/C0,T/C1,T/C2,通过配置相关寄存器即可实现Timer的功能控制。
控制PWM需要用到定时器来生成不同占空比的波形,采用定时器中断的方式。
相关寄存器:
1.IE寄存器
2. TCON寄存器
3. TMOD寄存器
控制Timer0/1的工作方式
4. Timer0/1计数寄存器
TL0
TL1
TH0
TH1
当定时开启后,TL0(TL1)自动跟随机器周期加一。当TL0(TL1)满了后,自动清零同时向TH0(TH1)进一位,不需要手动操作。
而当TL0(TL1)和TH0(TH1)都满了以后,此时如果定时中断和总中断都已经打开,那么就会发生溢出中断,同时这两个寄存器清零。
运用PWM完成呼吸灯硬件电路
程序设计:
unsigned char PWM_COUNT; //计数
unsigned int HUXI_COUNT; //占空比更新时间
unsigned char PWM_VLAUE; //占空比比对值
bit direc_flag; //占空比更新方向
void timer0_init()
{ TMOD=0x02; //模式设置,00010000,定时器0,工作于模式2(M1=1,M0=0)
TH0=0x47; //定时器溢出值设置,每隔200us发起一次中断。
TL0=0X47; TR0=1; //定时器0开始计时
ET0=1; //开定时器0中断
EA=1; //开总中断
PWM_COUNT =0; }
void time0() interrupt 1
{ PWM_COUNT++; HUXI_COUNT++;
if(PWM_COUNT == PWM_VLAUE) //判断是否到了点亮LED的时候
LED = 1; //点亮LED
if(PWM_COUNT == 10) //当前周期结束
{ LED = 0; //熄灭LED
PWM_COUNT = 0; //重新计时 }
if((HUXI_COUNT == 600) && (direc_flag == 0)) { //占空比增加10%
HUXI_COUNT = 0;
PWM_VLAUE++; if(PWM_VLAUE == 9) //占空比更改方向
direc_flag = 1;
}
if((HUXI_COUNT == 600) && (direc_flag == 1))
{ //占空比减少10%
HUXI_COUNT = 0;
PWM_VLAUE--;
if(PWM_VLAUE == 1) //占空比更改方向
direc_flag = 0;
}
}
void main()
{ HUXI_COUNT = 0;
PWM_COUNT = 0;
PWM_VLAUE = 5;
direc_flag = 0;
LED = 1; //默认LED熄灭
timer0_init(); //定时器0初始化
while(1);
}
dsp呼吸灯C语言编程,pwm呼吸灯原理及程序分享相关推荐
- dsp呼吸灯C语言编程,DSP28335 呼吸灯程序
DSP28335呼吸灯程序 //########################################################################### // // FI ...
- led交通灯c语言程序设计,单片机控制的交通灯C语言编程.doc
单片机控制的交通灯C语言编程 单片机控制的交通灯 红灯停,绿灯行,黄灯闪烁提示行人红绿灯即将切换.四个方向各有一个红.黄.绿显示和两个数码管. 东西道为人行道(20秒),南北道为车行道(60秒),黄灯 ...
- 节日流水灯c语言编程,流水灯C语言编程
这是流水灯C语言编程,针对单片机的仿真,可以在Keil或是在C++中实现编程. 流水灯C语言编程 #include #include #define LED_PORT1 P1 #define LED_ ...
- 【c】C语言编程写的一个http下载程序
来自: 百度空间-软件工程师 大家都很熟悉HTTP协议的应用,因为每天都在网络上浏览着不少东西,也都知道是HTTP协议是相当简单的.每次用到FlashGet之类的下载软件下载网页,当用到那个" ...
- 51单片机呼吸灯c语言,51单片机呼吸灯C语言版.doc
基于单片机与PWM的呼吸灯设计 实训指导教师: 班 级: 设 计 人姓名: 设 计 日 期: 设 计 地 点: 完 成 时 间: 摘要 本设计是基于单片机的原理与接口设计,采用单片机I/O口,加以C语 ...
- 树莓派输出pwm波c语言,02树莓派4B—C语言编程——PWM
01树莓派直接输出PWM波 -- 硬件PWM程序 (推荐使用) #include #include #include //必不可少 int main( void) { int pwm_gpio5 = ...
- 一开关控制两个灯c语言编程,如何实现楼梯踏步灯用两个反射感应开关控制两台led编程控制器...
楼梯上下口各设置一个感应开关,有人上时,灯从下往上亮,有人下时,灯从上往下亮,同时有人,灯从两边往中间亮.感谢平台好友的指导.需要什么设备来实现这个控制系统? 用单片机系统就可以实现这样的功能.前提是 ...
- C语言编程双向流水灯,C语言编程--数组控制流水灯-2
原标题:C语言编程--数组控制流水灯-2 /*********************** ********************/ #include unsigned char code tabl ...
- 单片机人体感应灯c语言,红外人体感应灯单片机方案
近来,红外人体感应灯受到了居家人们关注和喜爱.为此,英锐恩推出了一款低成本红外人体感应灯单片机方案.红外人体感应灯可应用于走廊.床边.楼梯.衣柜等地方,提供柔和照明作用.人来即亮,人走即灭,不受强光影 ...
- 流水灯c语言及汇编程序,流水灯C语言及汇编程序.doc
一.51单片机流水灯C语言源程序 文件说明:流水灯C程序程序说明:MCU采用AT89S51,外接11.0592M晶振,P2口输出 ?? #include?? //51系列单片机定义文件#define ...
最新文章
- Windows 上看端口 找PID
- 如何有效使用Project(1)——编制进度计划、保存基准
- 转:Merge into的使用详解
- ionic3学习之总结
- Linux下apache与tomcat完美整合笔记
- python sys os_python常用的一些东西——sys、os等(转)
- 自适应滤波器原理第四版计算机实验,自适应滤波器原理(中文第4版)答案
- 《jQuery Cookbook中文版》——1.9 根据当前上下文遍历DOM获得新的DOM元素集
- silverlight体验之三:简单控件堆成个Login
- bzoj 1046: [HAOI2007]上升序列【dp+二分】
- [JavaScript]面向对象编程
- 西门子、RA、施耐德、三菱、汇川、和利时:中国PLC市场及产业链分析
- java外文文献_spring框架外文文献 PDF 下载
- 程序员脱离苦海就靠这些绝招了了了。。。
- Swarm创始人:强调BZZ主网上线不需要质押
- XSS(Reflected) 反射型跨站攻击
- 2021-10-26 MSA (测量系统分析)
- termux—手机远程连接服务器教程
- 如何引流购物粉?如何引流网购粉?怎么吸购物粉?
- oracle12c命令行安装grid,oracle12c-RAC安装部署之GRID安装-grid设置