ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:71.50KB ,
资源ID:3121417      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3121417.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(如何利用51单片机输出PWM波.doc)为本站会员(11****ws)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

如何利用51单片机输出PWM波.doc

1、如何利用 51 单片机输出 PWM 波1、理论知识2、程序及分析1、理论知识PWM 这个功能在飞思卡尔、STM32 等高档的单片机内部有专用的模块,用此类芯片实现 PWM 功能时只需要通过设置相应的寄存器就可实现周期和占空比的控制。但是如果要用 51 单片机的话,也是可以的,但是比较的麻烦。此时需要用到内部定时器来实现,可用两个定时器实现,也可以用一个定时器实现。用两个定时器的方法是用定时器 T0 来控制频率,定时器 T1 来控制占空比。大致的的编程思路是这样的:T0 定时器中断让一个 I0 口输出高电平,在这个定时器 T0 的中断当中起动定时器 T1,而这个 T1 是让 IO 口输出低电平,

2、这样改变定时器 T0 的初值就可以改变频率,改变定时器 T1 的初值就可以改变占空比。下面重点介绍用一个定时器的实现 PWM 的方法。因为市面上的智能小车所采用的电机大多数为 TT 减速电机,通过复杂的实验此电机最佳的工作频率为1000HZ(太高容易发生哨叫,太低电机容易发生抖动),所以下面以周期为1ms(1000HZ)进行举例,要产生其它频率的 PWM 波,程序中只需作简单修改即可。用一个定时器时(如定时器 T0),首先你要确定 PWM 的周期 T 和占空比 D,确定了这些以后,你可以用定时器产生一个时间基准 t,比如定时器溢出 n 次的时间是 PWM 的高电平的时间,则 D*T=n*t,类

3、似的可以求出 PWM 低电平时间需要多少个时间基准 n。因为这里我们是产生周期为 1ms(1000HZ)的 PWM,所以可设置中断的时间基准为 0.01ms,,然后中断 100 次即为 1ms。在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:1、当 time=100 时,time 清零(此语句保证频率为 1000HZ),2、当 timen 时(n 应该在 0100 之间变化开),让单片相应的 I/O 口输出高电平,当 time#define uint unsigned int#define uchar unsigned charsbit PWM1=P20;/接 IN

4、1 控制正转sbit PWM2=P21;/接 IN2 控制反转uchar time;void main()TMOD=0x01;/定时器 0 工作方式 1TH0=0xff;/(65536-10)/256;/赋初值定时TL0=0xf7;/(65536-10)%256;/0.01msEA=1;/开总中断ET0=1;/开定时器 0 中断TR0=1;/启动定时器 0 while(1)void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=500;y0;y-);void tim0() interrupt 1TR0=0;/赋初值时,关闭定时器TH0=0xff;/(655

5、36-10)/256;/赋初值定时TL0=0xf7;/(65536-10)%256;/0.01msTR0=1;/打开定时器time+;if(time=100) time=0;/1khzif(time#define uint unsigned int #define uchar unsigned charuchar time,count=50,flag=1;/低电平的占空比sbit PWM1=P20;/PWM 通道 1,反转脉冲sbit PWM2=P21;/PWM 通道 2,正转脉冲sbit key_turn=P37; /电机换向/*函数声明*/void delayxms(uint z);voi

6、d Motor_turn(void);void timer0_init(void);/*主函数*/void main(void)timer0_init();while(1)Motor_turn();/*延时处理*/void delayxms(uint z)/延时 xms 程序uint x,y;for(y=z;x0;x-)for(y=110;y0;y-);/*电机正反向控制*/void Motor_turn(void)if(key_turn=0)delayxms(2);/此处时间不能太长,否者会的中断产生冲突if(key_turn=0)flag=flag;while(!key_turn);/*定

7、时器 0 初始化*/void timer0_init(void)TMOD=0x01; /定时器 0 工作于方式 1TH0=(65536-10)/256;TL0=(65536-10)%256;TR0=1;ET0=1;EA=1;/*定时 0 中断处理*/void timer0_int(void) interrupt 1 TR0=0;/设置定时器初值期间,关闭定时器TH0=(65536-10)/256;TL0=(65536-10)%256;TR0=1;if(flag=1)/电机正转PWM1=0; time+;if(time=100)time=0;else /电机反转PWM2=0; time+;if(

8、time=100)time=0;4、程序 4、使单片机输出 PWM,并能控制正反转和实现调速为了使大家彻底掌握此方面,下面再给出一个复杂一点的程序,实现的功能为通过一个按键控制正反转并通过另外两个按键使之可以在 0 到 20 级之间调速的程序。/*/* 程序名:PWM 直流电机调速 */* 晶振:11.00592 MHz CPU 型号:STC89C52 */* 直流电机的 PWM 波控制,可以通过按键控制正反转并在 0 到 20 级之间调速 */ /*/ #include#define uint unsigned int #define uchar unsigned charuchar tim

9、e,count=50,flag=1;/低电平的占空比sbit PWM1=P20;/PWM 通道 1,反转脉冲sbit PWM2=P21;/PWM 通道 2,正转脉冲sbit key_add=P35;/电机加速sbit key_dec=P36;/电机减速sbit key_turn=P37;/电机换向/*函数声明*/void delayxms(uint z);void Motor_turn();void Motor_add();void Motor_dec();void timer0_init();/*主函数*/void main()timer0_init();while(1)Motor_turn

10、();Motor_add();Motor_dec();/*延时处理*/void delayxms(uint z)/延时 xms 程序uint x,y;for(y=z;x0;x-)for(y=110;y0;y-);/*电机正反向控制*/void Motor_turn()if(key_turn=0)delayxms(2);/此处时间不能太长,否者会的中断产生冲突if(key_turn=0)flag=flag;while(!key_turn);void Motor_add()/电机加速if(key_add=0)delayxms(2);/此处时间不能太长,否者会的中断产生冲突if(key_add=0)count+=5;if(count=100)count=0;while(!key_add);

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。