- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
89c51 单片机 C 语言编写的 PWM程序
PWM, 单片机 , C语言 , 程序 , 编写
分享到: 新浪微博 QQ空间 开心网 人人网
说明:本程序使用 STC89C52RC单片机, 22.1184MHz 晶振,要使用本程序需要自己修改,
我是用来控制直流电机的,外接了 L298 驱动电路,有问题或意见请回复,谢谢 ^_^
#include "reg52.H"
#include "MyType.h"
//=============L298 端口定义 ===============
sbit ENA = P3^6; // 左轮驱动使能
sbit IN1 = P0^3; // 左轮黑线( - )
sbit IN2 = P0^4; // 左轮红线( +)
sbit IN3 = P0^5; // 右轮红线( - )
sbit IN4 = P0^6; // 右轮黑线( +)
sbit ENB = P3^7; // 右轮驱动使能
//=============PWM================
#define PWM_COUST 100 //PWM 细分等份
uchar MOTO_speed1; // 左边电机转速
uchar MOTO_speed2; // 右边电机转速
uchar PWM_abs1; // 左边电机取绝对值后占空比
uchar PWM_abs2; // 左边电机取绝对值后占空比
uchar PWM_var1=20; // 左边电机直走速度 (不同的电机,此参数不同)
uchar PWM_var2=20; // 右边电机直走速度
uchar PWMAnd = 0; //PWM 自增变量
/******************************************************************
名称:
motor(char speed1,char speed2)
;
功能:同时调节电机的转速
参数: speed1 :电机
1 的
PWM值; speed2 :电机
2 的
PWM值
speed>0.
正转;
speed<0.
反转(
-100~100 )
调用:
extern int abs(int val);
取绝对值
返回:
/******************************************************************/
void motor(char speed1,char speed2)
{
//============== 左边电机 =============
if (speed1>0)
{
IN1 =0;IN2 =1;// 正转
}
else if (speed1<0)
{
IN1 =1;IN2 =0;// 反转
}
//============== 右边电机 =============
if (speed2>0)
{
IN3 =1;IN4 =0;// 正转
}
else if (speed2<0)
{
IN3 =0;IN4 =1;// 反转
}
}
/******************************************************************
名称: motor_PWM();
功能: PWM占空比输出
参数:无
调用:无
返回:无
/******************************************************************/
void motor_PWM ()
{
uchar PWM_abs1;
uchar PWM_abs2;
PWM_abs1=MOTO_speed1;
PWM_abs2=MOTO_speed2;
if (PWM_abs1>PWMAnd) ENA=1; // 左边电机占空比输出
else ENA=0;
if (PWM_abs2>PWMAnd) ENB=1; // 右边电机占空比输出
else ENB=0;
if (PWMAnd>=PWM_COUST) PWMAnd=0; //PWM计数清零
else PWMAnd+=1;
}
/******************************************************************
名称: void TIME_Init () ;
功能:定时器初始化
指令:
调用:无
返回:无
/******************************************************************/
void TIME_Init ()
{
//========= 定时器 T2 初始化 PWM====
您可能关注的文档
- 1信息服务业务(仅限互联网信息服务)发展和实施计划专用表格1.docx
- 2018年度机修车间安全生产培训计划.docx
- 2018文明礼仪教育实施方案.docx
- 7设计和开发控制程序.docx
- 8086汇编语言程序设计实验指导书.docx
- c++数组指针题(含答案).docx
- c++程序设计电子宠物.docx
- b2c跨境电商题目.docx
- c程序设计作业(5).docx
- c语言--第六章:函数--教学设计(修改).docx
- 2024年黔南州惠水经济开发区招考紧缺急需人才高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2024年龙岩市长汀县部分事业单位招考工作人员(秋季)高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2024应急管理部消防产品合格评定中心第一次应届毕业生公开招聘12人高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2024江苏南京市教育局直属学校招聘教师97人网高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2024徐州住房保障和房产管理局局属企业招考35名高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2024年黑龙江齐齐哈尔市国资产监督管理委员招聘历年高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2024年黑龙江齐齐哈尔市富拉尔基区融媒体中心招聘4人历年高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2024招商局集团岗位招聘6人高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2024日照高新盈科招商集团限公司公开招聘15人高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 2024江苏今越控股集团限公司招聘工作人员高频考题难、易错点模拟试题(共500题)附带答案详解.docx
文档评论(0)