欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于DSP的直流电机控制系统C程序包括1602显示捕获CAPPWM波发生程序.docx

    • 资源ID:18470883       资源大小:18.24KB        全文页数:15页
    • 资源格式: DOCX        下载积分:6金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要6金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于DSP的直流电机控制系统C程序包括1602显示捕获CAPPWM波发生程序.docx

    1、基于DSP的直流电机控制系统C程序包括1602显示捕获CAPPWM波发生程序DSP2407控制直流电机程序附录系统主程序:/*Main.c*/ /*PWM电机控制程序,正反转,默认设置的工作频率1kHz*/#include register.h void SystemInit();void Timer1Init(); void KickDog(); void change();void cap4Init();unsigned int numled=20,numkey=0; unsigned int a=0,b=0;unsigned int count=0,time_count=0,f_coun

    2、t=0;unsigned char tab13=r,/,s;unsigned char tab215= ,S,e,t, ,B,y, ,L,i,n,F,a,n,g;#define RS_H PADATDIR=PADATDIR | 0x0008#define RS_L PADATDIR=PADATDIR & 0xFFF7#define RW_H PADATDIR=PADATDIR | 0x0010 #define RW_L PADATDIR=PADATDIR & 0xFFEF #define E_H PADATDIR=PADATDIR | 0x0020#define E_L PADATDIR=PA

    3、DATDIR & 0xFFDF#define PASC PADATDIR=PADATDIR | 0x3800#define PCSC PCDATDIR=PCDATDIR | 0xFF00#define PCSR PCDATDIR=PCDATDIR & 0x00FF#define uchar unsigned char#define uint unsigned intvoid LCD1602init();void writecommand(uchar command);void LCDdisplay();void readstat();void delay(unsigned int i);mai

    4、n() SystemInit(); /系统初始化 MCRB=MCRB & 0xFF00; /IOPC口为一般I/O口 MCRA=MCRA & 0xC0C7; /IOPB0-5、IOPA3-5设为IO口模式 MCRC=MCRC & 0xE0FF; /IOPF0-4设为IO口模式 PBDATDIR=0xFFC2; /所有LED=0 PFDATDIR=0xF8E7; /置IOPE1-3为输入口 Timer1Init(); /定时器1初始化 cap4Init(); LCD1602init(); T3CON=T3CON|0X0040; / 启动定时器3 asm( CLRC INTM ); while(1

    5、) change(); LCDdisplay(); void SystemInit() asm( SETC INTM ); /* 关闭总中断 */ asm( CLRC SXM ); /* 禁止符号位扩展 */ asm( CLRC CNF ); asm( CLRC OVM ); /* 累加器结果正常溢出*/ SCSR1=0x83FE; /* 系统时钟CLKOUT=20*2=40M */ /* 打开ADC,EVA,EVB,CAN和SCI的时钟,系统时钟CLKOUT=40M */ WDCR=0x006F; /* 禁止看门狗,看门狗时钟64分频 */ KickDog(); /* 初始化看门狗 */ I

    6、FR=0xFFFF; /* 清除中断标志 */ IMR=0x0000; /* 禁止所有中断*/ void Timer1Init() EVAIMRA=0x0080; / 定时器1周期中断使能 EVAIFRA=0xFFFF; / 清除中断标志 GPTCONA=0x0000; T1PR=25000; / 定时器1初值,定时0.4us*2500=1ms CMPR1=25000; T1CNT=0; T1CON=0x144E; /增模式, TPS系数40M/16=2.5M,T1使能 IMR|=0x0002; /打开中断2 void cap4Init() T3PR=0xFFFF; / 通用定时器3的周期寄存

    7、器为0XFFFF T3CON=0x1400; / 通用定时器3为连续增计数模式 T3CNT=0x00; / 计数器清0 WSGR=0x0000; / 禁止所有等待状态 CAPCONB=0x0A440; / 设置捕获单元4为检测上升沿,且选择TIMER3为时钟 asm( clrc INTM); / 开总中断 IMR|=0x0008; / 允许中断优先级4的中断 CAP4FIFO=0; EVBIMRC=EVBIMRC|0X0001; / 允许CAPTURE4中断 EVBIFRC=EVBIFRC|0X0FFFF; void LCD1602init() /LCD1602初始化函数 writecomma

    8、nd(0x38); writecommand(0x38); writecommand(0x38); delay(150); writecommand(0x01); delay(150); writecommand(0x02); delay(150); writecommand(0x06); delay(150); writecommand(0x0c); delay(150); writecommand(0x38); void writecommand(uchar command) /LCD1602写命令函数 readstat(); PCSC; PASC; RS_L; RW_L; PCDATDI

    9、R=PCDATDIR & 0x0FF00|command; /在此条指令之后只要使能信号有个由高到低的跳变即可写液晶 delay(5); E_L; /可以不要 asm( NOP); /可以不要 asm( NOP); /可以不要 asm( NOP); /可以不要 E_H; delay(5); /可以不要 E_L;void readstat()unsigned int stat; PCSR; PASC; while(1) RS_L; E_H; RW_H; stat=PCDATDIR & 0x0080; if(stat=0)break; void writedata(uchar data) /LCD

    10、1602写数据函数readstat();PCSC;PASC;RS_H;RW_L;PCDATDIR=PCDATDIR & 0x0FF00|data;/在此条指令之后只要使能信号有个由高到低的跳变即可写液晶/如果在这之前就有/由高到低的变化就会送出去乱码,即不是自己想要的值delay(5);E_L; /可以不要asm( NOP);/可以不要asm( NOP);/可以不要asm( NOP);/可以不要E_H;delay(5); /可以不要E_L;void change() MCRA=MCRA | 0x00C0; /PA6为PWM口 ACTRA=0x0006; /PWM1高有效 DBTCONA=0x0

    11、530; /使能死区定时器1,分频40M/16=2.5M,死区时5*0.4us=2us COMCONA=0xA600; /比较控制寄存器 if(PFDATDIR & 0x0001)!=0x0001) /若有按键仍为低,IOPF0=0 delay(800); if(PFDATDIR & 0x0001)!=0x0001) b=0; numkey=1; a+; if(a=4) a=1; while(PFDATDIR & 0x0001)!=0x0001); if(PFDATDIR & 0x0002)!=0x0002) /若有按键仍为低,IOPF1=0 a=0; b=0; numkey=2; if(PF

    12、DATDIR & 0x0004)!=0x0004) /若有按键仍为低,IOPF2=0 delay(800); if(PFDATDIR & 0x0004)!=0x0004) a=0; numkey=3; b+; if(b=4) b=1; while(PFDATDIR & 0x0004)!=0x0004); if(numkey=1) PFDATDIR=PFDATDIR & 0xF8E7; PFDATDIR=PFDATDIR | 0x1010; PBDATDIR=PBDATDIR & 0xFFC7; /将其他的led灭掉 PBDATDIR=PBDATDIR | 0x0404; /IOPB2=1;LE

    13、D1亮 if(a=1) CMPR1=21000; if(a=2) CMPR1=17000; if(a=3) CMPR1=23500; if(numkey=2) PFDATDIR=PFDATDIR & 0xF8E7; CMPR1=25000; PFDATDIR=PFDATDIR | 0x1818; PBDATDIR=PBDATDIR & 0xFFCB; PBDATDIR=PBDATDIR | 0x0808; /IOPB3=1;LED2亮 if(numkey=3) PFDATDIR=PFDATDIR & 0xF8E7; PFDATDIR=PFDATDIR | 0x0808; PBDATDIR=PB

    14、DATDIR & 0xFFD3; PBDATDIR=PBDATDIR | 0x1010; /IOPB4=1;LED3亮 if(b=1) CMPR1=21000; if(b=2) CMPR1=17000; if(b=3) CMPR1=23500; void c_int2() /*定时器1中断服务程序*/ if(PIVR!=0x27) asm( CLRC INTM ); return; time_count+; if(time_count=100) time_count=0; f_count=count; count=0; T1CNT=0; numled-; if(numled=0) numled

    15、=20; if(PBDATDIR & 0x0001)=0x0001) PBDATDIR=PBDATDIR & 0xFFFE; /IOPB0=0;LED灭 else PBDATDIR=PBDATDIR |0x0101; /IOPB0=1;LED亮 EVAIFRA=0x80; asm( CLRC INTM ); return; void cap4int() int flag; flag=EVBIFRC&0X01; / 判断是否是CAP4中断 if(flag!=0x01) asm( clrc INTM); / 返回前开中断 return; / 如果不是CAP4中断,则直接返回 count+; EVB

    16、IFRC=EVBIFRC|0x01; / 写1清除CAP4中断标志 asm( clrc INTM); / 返回前开中断 return; / 中断返回void LCDdisplay(void) uint data; uchar data_qian,data_bai,data_shi,data_ge,address=0,add=0; writecommand(0x84); if(numkey = 3) data = -; else data = +; writedata(uchar)data); data=f_count/4; data_qian=data/1000; data_bai=data%

    17、1000/100; data_shi=data%100/10; data_ge =data%10; writecommand(0x85); writedata(data_qian+0x30); writecommand(0x86); writedata(data_bai+0x30); writecommand(0x87); writedata(data_shi+0x30); writecommand(0x88); writedata(data_ge+0x30); address=0x89; for(add=0;add3;add+,address+) writecommand(address);

    18、 data=tab1add; writedata(data); address=0xC0; for(add=0;add0;i-) for(j=1000;j0;j-); void interrupt PHANTOM() asm( clrc INTM); / 返回前开中断 return;void KickDog() /*踢除看门狗 */ WDKEY=0x5555; WDKEY=0xAAAA;中断向量表:;define.asm.include lf2407a.h .include F2407REGS.H.global _c_int0,_c_int2,_cap4int .global _IMR,_IF

    19、R.global _SCSR1,_SCSR2,_XINT1CR,_XINT2CR.global _WDCNTR,_WDKEY,_WDCR.global _MCRA,_MCRB,_MCRC,_PADATDIR,_PBDATDIR,_PCDATDIR,_PEDATDIR,_PFDATDIR.global _ADCTRL1,_ADCTRL2,_MAXCONV,_CHSELSEQ1,_CHSELSEQ2,_CHSELSEQ3,_CHSELSEQ4.global _AUTO_SEQ_SR,_RESULT0,_RESULT1,_RESULT2,_RESULT8,_RESULT9.global _CANMD

    20、ER,_CANTCR,_CANRCR,_CANMCR,_CANBCR2,_CANBCR1,_CANESR,_CANGSR.global _CANCEC,_CANIFR,_CANIMR,_CANLAM0H,_CANLAM0L.global _CANID0L,_CANID0H,_CANCTRL0,_CANBX0A,_CANBX0B,_CANBX0C,_CANBX0D.global _CANID1L,_CANID1H,_CANCTRL1,_CANBX1A,_CANBX1B,_CANBX1C,_CANBX1D.global _CANID2L,_CANID2H,_CANCTRL2,_CANBX2A,_C

    21、ANBX2B,_CANBX2C,_CANBX2D.global _CANID3L,_CANID3H,_CANCTRL3,_CANBX3A,_CANBX3B,_CANBX3C,_CANBX3D.global _CANID4L,_CANID4H,_CANCTRL4,_CANBX4A,_CANBX4B,_CANBX4C,_CANBX4D.global _CANID5L,_CANID5H,_CANCTRL5,_CANBX5A,_CANBX5B,_CANBX5C,_CANBX5D .global _SCICCR,_SCICTL1,_SCIHBAUD,_SCILBAUD,_SCICTL2,_SCIRXST

    22、,_SCIRXEMU,_SCIRXBUF,_SCITXBUF,_SCIPRI;.global _GPTCONA,_T1CNT,_T1PR,_T1CON,_T2CNT,_T2PR,_T2CON.global _EVAIMRA,_EVAIMRB,_EVAIFRA,_EVAIFRB,_PIVR.global _GPTCONB,_T3CNT,_T3CMPR,_T3PR,_T3CON,_COMCONA,_ACTRA,_DBTCONA,_CMPR1,_EVBIMRA,_EVBIFRA .global _WSGR,_CAPCONB,_EVBIMRC,_EVBIFRC ;建立中断向量表 .sect .vectors RSVECT B _c_int0INT1 B PHANTOMINT2 B _c_int2INT3 B PHANTOMINT4 B _cap4intINT5 B PHANTOMINT6 B PHANTOM .text PHANTOM:KICK_DOGRET .end


    注意事项

    本文(基于DSP的直流电机控制系统C程序包括1602显示捕获CAPPWM波发生程序.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开