PIC单片机控制C程序.doc
《PIC单片机控制C程序.doc》由会员分享,可在线阅读,更多相关《PIC单片机控制C程序.doc(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流PIC单片机控制C程序#include /电动车双闭环程序,采用双闭环方式控制电机,以得到最好的zh 转速性能,并且可以/限制电机的最大电流。本应用程序用到两个CCP 部件,其中CCP1 用于PWM 输出,以控制电机电压;CCP2 用于触发AD,定时器TMR2、TMR1,INT 中断,RB 口电平变化中断,/看门狗以及6 个通用I/O 口#define AND 0xe0 /状态采集5,6,7 位#define CURA 0X0a /电流环比例和积分系数之和#define CURB 0X09 /电流环比例系数#define THL 0X6400 /电流环最
2、大输出#define FULLDUTY 0X0FF /占空比为1 时的高电平时间#define SPEA 0X1d /转速环比例和积分系数之和#define SPEB 0X1c /转速环比例系数#define GCURHILO 0X0330 /转速环最大输出#define GCURH 0X33 /最大给定电流#define GSPEH 0X67 /最大转速给定#define TSON 0X38 /手柄开启电压1.1 V,TSON*2 为刹车后手柄开启电压,即/2.2 V#define VOLON 0X4c /低电压保护重开电压3.0 V 即33 V#define VOLOFF 0X49 /低电
3、压保护关断电压2.86 V 即31.5 Vvolatile unsigned char DELAYH,DELAYL,oldstate,speed,speedcount,tsh,count_ts,count_vol,gcur,currenth,voltage; /寄存器定义static bit sp1,spe,ts,volflag,spepid,lowpower,off,shutdown,curpid; /标志位定义static volatile unsigned char new10=0xaf,0xbe,0xff,0x7e,0xcf,0xff,0xd7,0x77,0xff,0xff; /状态寄
4、存器表/-PIC16F877 初始化子程序-void INIT877()PORTC=0X0FF; /关断所有MOSFETTRISC=0X02; /设置C 口输出PIE1=0X00; /中断寄存器初始化,关断所有中断TRISA=0XCF; /设置RA4,RA5 输出TRISB=0XEF; /RB 口高三位输入,采集电机三相的霍尔信号PORTC=new(PORTB&AND)5; /采集第一次霍尔信号,并输出相应的信号,导通/两个MOS 管T2CON=0X01; /TMR2 4 分频CCPR1L=0X0FF; /初始时PWM 输出全高CCP1CON=0X0FF; /CCP1 设置为PWM 方式CCP
5、2CON=0X0B; /CCP2 设置为特殊方式,以触发ADADCON0=0X81; /AD 时钟为32 分频,且AD 使能,选择AN0 通道采集手/柄电压TMR2=0X00; /TMR2 寄存器初始化TMR1H=0X00; /TMR1 寄存器初始化TMR1L=0X00;T1CON=0X00; /TMR1 为1 分频CCPR2H=0X08;CCPR2L=0X00; /电流采样周期设置为TAD=512 sPR2=0XC7; /PWM 频率设置为5 kHzADCON1=0X02; /AD 结果左移OPTION=0XFB; /INT 上升沿触发TMR2ON=1; /PWM 开始工作INTCON=0X
6、D8; /中断设置GIE=1,PEIE=1,RBIE=1ADIE=1; /AD中断使能speedcount=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 部件开始工作/-延时子程序-#pragma interrupt_level 1
7、void DELAY1(x)char x;DELAYH=x; /延时参数设置#asmDELAY2 MOVLW 0X06MOVWF _DELAYLDELAY1 DECFSZ _DELAYLGOTO DELAY1DECFSZ _DELAYHGOTO DELAY2#endasm/-状态采集子程序-void sample()char state1,state2,state3,x;do x=1;state1=(PORTB&AND); /霍尔信号采集DELAY1(x);state2=(PORTB&AND);while(state1-state2); /当三次采样结果不相同时继续采集状态if(state1-
8、oldstate!=0) /看本次采样结果是否与上次相同,不同/则执行oldstate=state1; /将本次状态设置为旧状态state1=(oldstate5);PORTC=newstate1; /C 口输出相应的信号触发两个MOS 管if(sp1=1)spe=1;sp1=0;else /如果转速很低,则spe 置1spe=0;sp1=0;speedcount2); /否则,spe=0,计转速speed=speedcount+state3; /speed 寄存器为每256 s 加1speedcount=0;/-AD 采样子程序-void AD()char x;ADIF=0; /清AD 中断
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PIC 单片机 控制 程序
限制150内