PIC16F72单片机控制的电动自行车C源程序.doc

PIC16F72单片机控制的电动自行车C源程序.doc

ID:51693297

大小:39.50 KB

页数:10页

时间:2020-03-15

PIC16F72单片机控制的电动自行车C源程序.doc_第1页
PIC16F72单片机控制的电动自行车C源程序.doc_第2页
PIC16F72单片机控制的电动自行车C源程序.doc_第3页
PIC16F72单片机控制的电动自行车C源程序.doc_第4页
PIC16F72单片机控制的电动自行车C源程序.doc_第5页
资源描述:

《PIC16F72单片机控制的电动自行车C源程序.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

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

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

3、保护重开电压3.0V即33V#defineVOLOFF0X49//低电压保护关断电压2.86V即31.5VvolatileunsignedcharDELAYH,DELAYL,oldstate,speed,speedcount,tsh,count_ts,count_vol,gcur,currenth,voltage;//寄存器定义staticbitsp1,spe,ts,volflag,spepid,lowpower,off,shutdown,curpid;//标志位定义staticvolatileunsignedcharnew[10]={0xaf,0xbe,0

4、xff,0x7e,0xcf,0xff,0xd7,0x77,0xff,0xff};//状态寄存器表//------------PIC16F877初始化子程序------------voidINIT877(){PORTC=0X0FF;//关断所有MOSFETTRISC=0X02;//设置C口输出PIE1=0X00;//中断寄存器初始化,关断所有中断TRISA=0XCF;//设置RA4,RA5输出TRISB=0XEF;//RB口高三位输入,采集电机三相的霍尔信号PORTC=new[(PORTB&AND)>>5];//采集第一次霍尔信号,并输出相应的信号,导通//两

5、个MOS管T2CON=0X01;//TMR24分频CCPR1L=0X0FF;//初始时PWM输出全高CCP1CON=0X0FF;//CCP1设置为PWM方式CCP2CON=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=0X

6、C7;//PWM频率设置为5kHzADCON1=0X02;//AD结果左移OPTION=0XFB;//INT上升沿触发TMR2ON=1;//PWM开始工作INTCON=0XD8;//中断设置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

7、次手柄,采集1次电池电压ts=1;//可以采集手柄值的标志位ADGO=1;//AD采样使能TMR1ON=1;//CCP2部件开始工作}//------------延时子程序---------------#pragmainterrupt_level1voidDELAY1(x)charx;{DELAYH=x;//延时参数设置#asmDELAY2MOVLW0X06MOVWF_DELAYLDELAY1DECFSZ_DELAYLGOTODELAY1DECFSZ_DELAYHGOTODELAY2#endasm}//-----------状态采集子程序----------

8、------------voidsample(){c

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

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

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