云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 直流电机调速测速系统开发 - 图文

直流电机调速测速系统开发 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/6/21 9:52:23

2011届本科生毕业设计(论文)

INTCONbits.GIE=1;//CPU全局中断使能允许

INTCONbits.PEIE=1;//CPU第二梯队中断使能允许 }

void PIC_CCPForPWM_Initize(void) {

TRISCbits.TRISC1=0;//RC1置输出方向 TRISCbits.TRISC2=0;//RC2置输出方向 TRISCbits.TRISC3=0;//RC2置输出方向 TRISCbits.TRISC4=0;//RC2置输出方向 LATCbits.LATC1=0;//RC1引脚输出为0 LATCbits.LATC2=0;//RC2引脚输出为0 LATCbits.LATC3=0;//RC3引脚输出为0 LATCbits.LATC4=0;//RC3引脚输出为0 CCP1CON=0x0F;//CCP1设置为PWM模式 CCP2CON=0x0F;//CCP2设置为PWM模式 T2CON=0x03;//TMR2的预分频为1:16 T2CONbits.TMR2ON=1;//TMR2开始工作

PR2=249;//PWM周期为2000Hz,FOSC=32MHz CCPR1L=0;//PWM1的占空比为0

CCPR2L=0;//PWM2的占空比为0 }

unsigned char CycleFlag; unsigned char FreqFlag;

#define RUNSTOPKEY PORTBbits.RB3 #define PWMKEY PORTBbits.RB4 #define DIRKEY PORTBbits.RB5

unsigned char MotorRunStatus; unsigned char MotorDirection; unsigned char MotorPWMData; unsigned char RunStopKeyFlag; unsigned int RunStopKeyCounter; unsigned char DirKeyFlag; unsigned int DirKeyCounter; unsigned char PWMKeyFlag; unsigned int PWMKeyCounter;

void SystemVariant_Initize(void) {

MotorPWMData=10;

38

2011届本科生毕业设计(论文)

}

void Motor_Control(unsigned char Direction, unsigned char Speed) {

switch(Direction) {

case 0:

CCPR1L=0; CCPR2L=0; CCPR1L=Speed; break; case 1:

CCPR2L=0; CCPR1L=0; CCPR2L=Speed; break; } }

//------------------------------------------------------------------- void PIC18F_High_isr(void);//高优先级中断函数声明 #pragma code high_vector_section=0x8 void high_vector (void) {

_asm goto PIC18F_High_isr _endasm }

void SystemInterruptISR(void);//低优先级中断函数声明 #pragma code low_vector=0x18//低中断优先级 void low_interrupt(void) {

_asm goto SystemInterruptISR _endasm }

#pragma code

//-------------------------------------------------------------------

void main(void) {

unsigned long temp; unsigned char i;

OSCillator_Initize();//CPU系统时钟初始化内部时钟源8MHz,经过4xPLL PIC_PortDir_Initize();//PIC单片机的使用到的I/O口方向初始化

39

2011届本科生毕业设计(论文)

PIC_TMR0_Initize();//PIC单片机的TMR0定时器初始化为内部定时方式 PIC_TMR1_Initize();//PIC单片机的TMR1定时器初始化为外部计数方式 PIC_TMR3_Initize();

PIC_CCPForPWM_Initize(); PIC_Interrupt_Initize(); initize_lcd();

while(1) {

if(0==RUNSTOPKEY)//判断启动按键是否按下 { if(0==RunStopKeyFlag)//检测启动按键是否成功按下标志 { RunStopKeyCounter++;//软件计数器,用于按键去抖动 if(2000==RunStopKeyCounter)//按键去抖动延时到 { RunStopKeyCounter=0;//清软计数器为0 if(0==RUNSTOPKEY)//再判断启动按键是否真得按下 { RunStopKeyFlag=1;//置启动按键成功按下标志为1 if(0==MotorRunStatus)//如果电机是处理停止状态 {//则启动电机运转 MotorRunStatus=1;//同时置电机状态为1 LATCbits.LATC3=0;// LATCbits.LATC4=0;// LCDBuffer_0[0]='R';//LCD显示屏上显示\ LCDBuffer_0[1]='U'; LCDBuffer_0[2]='N'; LCDBuffer_0[3]=' '; LCDBuffer_0[4]=' '; temp=MotorPWMData;//读取设置电机速度的变量 temp<<=1;//转换成占空比送到LCD上显示 temp/=5; LCDBuffer_0[5]=(temp/10)+0x30; LCDBuffer_0[6]=(temp)+0x30; LCDBuffer_0[7]='%'; LCDBuffer_0[8]=' '; LCDBuffer_0[9]='D'; LCDBuffer_0[10]='I'; LCDBuffer_0[11]='R'; LCDBuffer_0[12]=' '; if(0==MotorDirection)//根据电机运转的方向 {//来设置电机是正转还是反转,并在LCD上显示 LATCbits.LATC3=1;//

40

2011届本科生毕业设计(论文)

LATCbits.LATC4=0;// CCPR1L=MotorPWMData;//使RC1引脚输出PWM信号 LCDBuffer_0[13]='+';//表示电机正转 } else { LATCbits.LATC3=0;// LATCbits.LATC4=1;// CCPR1L=MotorPWMData;//使RC2引脚输出PWM信号 LCDBuffer_0[13]='-';//表示电机反转 } } else//如果电机是在运转中,则这时按下该键可以停止电机运转 { MotorRunStatus=0;//置电机运动状态为0 LATCbits.LATC3=0;// LATCbits.LATC4=0;// LCDBuffer_0[0]='S';//LCD屏上显示\ LCDBuffer_0[1]='T'; LCDBuffer_0[2]='O'; LCDBuffer_0[3]='P'; LCDBuffer_0[4]=' '; LCDBuffer_0[5]='0'; LCDBuffer_0[6]='0'; CCPR1L=0;//RC1和RC2引脚不输出PWM信号 } // write_lcd_command(0x01); lcd_displaystr(0,0,LCDBuffer_0);//将字符串送到LCD上显示 lcd_displaystr(1,0,LCDBuffer_1); } } } } else { if(1==RUNSTOPKEY)//等待按键释放处理过程 { if(1==RunStopKeyFlag) { RunStopKeyFlag=0;//清启动按键上次成功按下标志

41

搜索更多关于: 直流电机调速测速系统开发 - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

2011届本科生毕业设计(论文) INTCONbits.GIE=1;//CPU全局中断使能允许 INTCONbits.PEIE=1;//CPU第二梯队中断使能允许 } void PIC_CCPForPWM_Initize(void) { TRISCbits.TRISC1=0;//RC1置输出方向 TRISCbits.TRISC2=0;//RC2置输出方向 TRISCbits.TRISC3=0;//RC2置输出方向 TRISCbits.TRISC4=0;//RC2置输出方向 LATCbits.LATC1=0;//RC1引脚输出为0 LATCbits.LATC2=0;//RC2引脚输出为0 LATCbits.LATC3=0;//RC3引脚输出为0 LATCbits.LATC4=0;//RC

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com