24V直流电机H桥驱动电路及51单片机C程序.docx
- 文档编号:8593573
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:8
- 大小:55.61KB
24V直流电机H桥驱动电路及51单片机C程序.docx
《24V直流电机H桥驱动电路及51单片机C程序.docx》由会员分享,可在线阅读,更多相关《24V直流电机H桥驱动电路及51单片机C程序.docx(8页珍藏版)》请在冰豆网上搜索。
24V直流电机H桥驱动电路及51单片机C程序
24V直流电机H桥驱动电路及51单片机C程序
24V直流电机H桥驱动电路及51单片机C程序
一、原理图
特别说明:
CCP0、CCP1=00时,电机停止;为01时,电机正转,为10时,电机反转;11是绝对不允许的,为防止H桥共态导通,调试时需要特别注意!
!
!
二、程序代码
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitkey1=P2^3;//启动停止
sbitkey2=P2^2;//正反转
sbitkey3=P2^1;//UP
sbitkey4=P2^0;//DOWN
ucharrun_flag;//0停止;1启动
uchardirection_flag;//0正转;1反转
ucharcount;//加,减计数--key
//=======================================
voidstatus_initial(void);
voidPWM_initial(void);
voiddelay_1us(ucharx);
voiddelay_led(ucharx);
voidkey_scan(void);
voidM_run(void);
//=======================================
voidmain()//注:
在程序里面,对两路PWM进行互锁,防止H桥电路共态导通!
{//调试时,也要特别注意!
status_initial();
PWM_initial();
while
(1)
{
key_scan();
M_run();
}
}
voidstatus_initial(void)
{
/*
CCAP0H=0XFF;
CCAP0L=0XFF;//占空比为0%
CCAP1H=0XFF;
CCAP1L=0XFF;//占空比为0%
*/
run_flag=0;
direction_flag=0;
count=0;//----------------给定一个初始值,设定电机开机的初始转速?
?
?
或者按下启动,up启动加速
P1=0x00;//灯灭
}
voidPWM_initial(void)
{
CCON=0X00;
CMOD=0X02;//空闲模式下PCA计数器继续工作,使用系统时钟,禁止CCON的CF位中断
CCAPM0=0X42;//01000010允许比较器功能,允许CCP0脚用作脉宽调节输出
CCAPM1=0X42;//同上,8位PWM,无中断
CCAP0H=0XFF;//PCA捕捉/比较寄存器--低八位和高八位------频率f=SYSclk/256
CCAP0L=0XFF;//工作于PWM模式,用于控制输出的占空比
CCAP1H=0XFF;//当寄存器CL的值小于[EPCnL,CCAPnL]时,输出为低;当寄存器CL的值等于或大于【EPCnL,CCAPnL】时,输出为高;
CCAP1L=0XFF;//当CL的值有FF变为00溢出时,[EPCnH,CCAPnH]的内容装载到[EPCnL,CCAPnL]中
//当EPCnL=0及CCAPnL=00H时,固定输出高
//当EPCnL=1及CCAPnL=FFH时,固定输出低
CL=0;//PCA的16位计数器--低八位和高八位
CH=0;
CR=1;//启动PCA定时器
}
voiddelay_1us(ucharx)
{
uchari,j;
for(i=0;i for(j=0;j<120;j++); } voiddelay_led(ucharx) { uchari,j; j=x; while(j--) { for(i=0;i<100;i++)//时间再调整 { _nop_(); } } } voidkey_scan(void) { uchartemp; P2=0xff; temp=P2; temp=temp|0x0f; if(temp==0x0f)//检测是否有按键按下 { //============================启动停止key1 if(key1==0) { delay_1us(10); if(key1==0) { if(run_flag==1) run_flag=0;//stop else run_flag=1;//start } } //============================正转反转key2 if(key2==0) { delay_1us(10); if(key2==0) { if(direction_flag==1) direction_flag=0;//正 else direction_flag=1;//反 } } //============================upkey3 if(key3==0) { delay_1us(10); if(key2==0) { if(count==0) count=0; else count--; } } //============================downkey4 if(key4==0) { delay_1us(10); if(key2==0) { if(count==255) count=255; else count++; } } //===================================== } } voidM_run(void) { uchari,temp; if(run_flag==0)//stop { //=========================不转 CCAP0H=0XFF; CCAP0L=0XFF;//占空比为0% CCAP1H=0XFF; CCAP1L=0XFF;//占空比为0% //==============================led_display不转,灯不亮 temp=0x00; P1=temp; } if(run_flag==1)//run { temp=0xff; CY=0; if(direction_flag==0)//正转 { CCAP0H=0XFF; CCAP0L=0XFF;//占空比为0% CCAP1H=count; CCAP1L=count; //==============================led_display for(i=0;i<8;i++) { P1=temp; temp=temp<<1; delay_led(count); } } if(direction_flag==1)//反转 { CCAP1H=0XFF; CCAP1L=0XFF;//占空比为0% CCAP0H=count; CCAP0L=count; //==============================led_display for(i=0;i<8;i++) { P1=temp; temp=temp>>1; delay_led(count); } } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 24 直流电机 驱动 电路 51 单片机 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)