PIC单片机控制C程序教程文件.doc

PIC单片机控制C程序教程文件.doc

ID:59307167

大小:29.50 KB

页数:6页

时间:2020-09-05

PIC单片机控制C程序教程文件.doc_第1页
PIC单片机控制C程序教程文件.doc_第2页
PIC单片机控制C程序教程文件.doc_第3页
PIC单片机控制C程序教程文件.doc_第4页
PIC单片机控制C程序教程文件.doc_第5页
资源描述:

《PIC单片机控制C程序教程文件.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、PIC单片机控制的电动自行车驱动系统C程序 #include //电动车双闭环程序,采用双闭环方式控制电机,以得到最好的zh转速性能,并且可以 //限制电机的最大电流。本应用程序用到两个CCP部件,其中CCP1用于PWM输出,以控制电机电压;CCP2用于触发AD,定时器TMR2、TMR1,INT中断,RB口电平变化中断, //看门狗以及6个通用I/O口 #defineAND0xe0//状态采集5,6,7位 #defineCURA0X0a//电流环比例和积分系数之和 #defineCURB0X09//

2、电流环比例系数 #defineTHL0X6400//电流环最大输出 #defineFULLDUTY0X0FF//占空比为1时的高电平时间 #defineSPEA0X1d//转速环比例和积分系数之和 #defineSPEB0X1c//转速环比例系数 #defineGCURHILO0X0330//转速环最大输出 #defineGCURH0X33//最大给定电流 #defineGSPEH0X67//最大转速给定 #defineTSON0X38//手柄开启电压1.1V,TSON*2为刹车后手柄开启电压,即 //2.2V

3、#defineVOLON0X4c//低电压保护重开电压3.0V即33V #defineVOLOFF0X49//低电压保护关断电压2.86V即31.5V volatileunsignedcharDELAYH,DELAYL,oldstate,speed, speedcount,tsh,count_ts,count_vol,gcur,currenth, voltage;//寄存器定义 staticbitsp1,spe,ts,volflag,spepid,lowpower, off,shutdown,curpid;//标

4、志位定义 staticvolatileunsignedcharnew[10]={0xaf,0xbe,0xff,0x7e,0xcf, 0xff,0xd7,0x77,0xff,0xff};//状态寄存器表 //------------PIC16F877初始化子程序------------ voidINIT877() { PORTC=0X0FF;//关断所有MOSFET TRISC=0X02;//设置C口输出 PIE1=0X00;//中断寄存器初始化,关断所有中断 TRISA=0XCF;//设置RA4,RA5输出 TR

5、ISB=0XEF;//RB口高三位输入,采集电机三相的霍尔信号 PORTC=new[(PORTB&AND)>>5];//采集第一次霍尔信号,并输出相应的信号,导通 //两个MOS管 T2CON=0X01;//TMR24分频 CCPR1L=0X0FF;//初始时PWM输出全高 CCP1CON=0X0FF;//CCP1设置为PWM方式 CCP2CON=0X0B;//CCP2设置为特殊方式,以触发AD ADCON0=0X81;//AD时钟为32分频,且AD使能,选择AN0通道采集手 //柄电压 TMR2=0X00;//

6、TMR2寄存器初始化 TMR1H=0X00;//TMR1寄存器初始化 TMR1L=0X00; T1CON=0X00;//TMR1为1分频 CCPR2H=0X08; CCPR2L=0X00;//电流采样周期设置为TAD=512μs PR2=0XC7;//PWM频率设置为5kHz ADCON1=0X02;//AD结果左移 OPTION=0XFB;//INT上升沿触发 TMR2ON=1;//PWM开始工作 INTCON=0XD8;//中断设置GIE=1,PEIE=1,RBIE=1 ADIE=1;//AD中断使能 spe

7、edcount=0x00;//转速计数寄存器 speed=0x7f;//转速保持寄存器 spe=1;//低速标志位 sp1=1;//低速标志位 oldstate=0x0ff;//初始状态设置,区别于其他状态 count_ts=0x08;//电流采样8次,采集1次手柄 count_vol=0x00;//采样256次手柄,采集1次电池电压 ts=1;//可以采集手柄值的标志位 ADGO=1;//AD采样使能 TMR1ON=1;//CCP2部件开始工作 } //------------延时子程序------------

8、--- #pragmainterrupt_level1 voidDELAY1(x) charx; { DELAYH=x;//延时参数设置 #asm DELAY2MOVLW0X06 MOVWF_DELAYL DELAY1DECFSZ_DELAYL GOTODELAY1 DECFSZ_DELAYH GOTODELAY2 #endasm } //-----------状态采集子

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。