基于MC9S12XS128的直流电机调速及显示.docx_第1页
基于MC9S12XS128的直流电机调速及显示.docx_第2页
基于MC9S12XS128的直流电机调速及显示.docx_第3页
基于MC9S12XS128的直流电机调速及显示.docx_第4页
基于MC9S12XS128的直流电机调速及显示.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

直流电机调速,显示设定速度以及实际速度,共阳数码管显示,测速装置为100线编码器,电位器控制速度。#include #include #pragma LINK_INFO DERIVATIVE mc9s12xs128#define PITTIME 5000/设定为50ms定时#define Max 306#define Maichong 200/*变量定义*/ unsigned int i,p,vTmpPIT1; unsigned char j,ad0; float result; unsigned char a10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; unsigned char caiji6=0; unsigned int bits,Speed,later_result,data,duty,flag,flagPIT,delta_result; long Real_Speed;/*变量及数组初始化*/ void InitVariable(void) vTmpPIT1=0; bits=0; flag=1; flagPIT=1; vTmpPIT1=0; /*主频设置(72M)*/void Busclock(void) /05,01 48MHz 06,01 56MHz 07,01 64MHz 08,01 72MHz CLKSEL=0x00; PLLCTL_PLLON=1; SYNR=0xC0 | 0x08; REFDV=0xC0 | 0x01; POSTDIV=0x00; _asm(nop); _asm(nop); while(!(CRGFLG_LOCK=1); CLKSEL_PLLSEL =1; /-PWM初始化程序-/void PWM_Init(void) PWME_PWME1=0x00; / Disable PWM 禁止 PWME_PWME2=0x00; PWMPRCLK_PCKA=2; PWMPRCLK_PCKB=2; PWMSCLA=9; PWMSCLB=9; PWMCLK_PCLK1=1; / PWM1-SA 时钟源的选择 PWMPOL_PPOL1=1; PWMCLK_PCLK2=1; / PWM2-SB 时钟源的选择 PWMPOL_PPOL2=1; / Duty=High Time 极性设置 PWMCAE_CAE1=0; PWMCAE_CAE2=0; / Left-aligned 对齐方式设置 PWMCTL=0x00; / no concatenation 控制寄存器设置 PWMPER1=255; PWMDTY1=0; PWMPER2=255; PWMDTY2=0; PWME_PWME1=1; PWME_PWME2=1; / Enable PWM 使能/*PIT定时器初始化*/void initPIT(void)/定时中断初始化函数 50MS定时中断设置 PITCFLMT_PITE=0; /禁止PIT PITCE_PCE0=1;/定时器通道0使能使用0通道 PITCE_PCE1=1;/定时器通道1使能使用1通道 PITMTLD0=72-1;/8位定时器初值设定。72分频,?2MHzBusClock下,为1MHz。即1us. PITMTLD1=72-1;/8位定时器初值设定。72分频,?2MHzBusClock下,为1MHz。即1us. PITLD0=PITTIME-1;/16位定时器初值设定。PITTIME*0.001ms=5ms PITLD1=PITTIME-1;/16位定时器初值设定。PITTIME*0.001ms=5ms PITCFLMT_PITE=1;/PIT定时器使能/*ECT定时器初始化*/void InitEct(void) TIOS=0x00; /外部输入捕捉0,1通道 TCTL4=0x59; /通道3上升沿触发,通道2上升沿触发,通道0上升沿触发,通道1下降沿触发 TCTL3=0xc0;/通道7任何沿捕捉 TSCR1=0x80; /使能定时器 TIE_C7I=1; /光电编码器输入脉冲中断使能 /*脉冲捕捉初始化*/void IOC_Init(void) PACTL=0X50;/PT7 PIN,PACN32 16BIT,ALLing edge,NOT INTERRUPT TCTL3=0xc0;/c-输入捕捉7任何沿有效, TIE =0x00;/每一位对应相应通道中断允许,0表示禁止中断 TIOS =0x00;/每一位对应通道的: 0输入捕捉,1输出比较 PACNTH=0x00; PACNTL=0x00; /计数寄存器初始化为0 /*I/O初始化*/ void InitIoport(void) DDRB=0xfc;/高6位做片选输出 DDRA=0xff;/A口做数码管段码输出 /*AD及其初始化程序*/void ADInit(void) ATD0CTL1=0x00; ATD0CTL2=0x40; ATD0CTL3=0xf0; ATD0CTL4=0x01; ATD0CTL5=0x30; ATD0DIEN=0x00;/初始化ADunsigned int read_ad0() /AN0做采集 unsigned int ad0=0; while(!ATD0STAT0_SCF); ad0=ATD0DR0L; return ad0; /AD转换0/*电机PWM输出控制*/void PWMDian_duty() duty=delta_result; PWMDTY1=duty; PWMPER1=255; PWMDTY2=0; PWMPER2=255; PWME_PWME1=1; PWME_PWME2=1; / Enable PWM 使能 /*延时子程序*/ void delay(long m) while(m-); /*LED显示子程序*/ void led_display(int bits) for(j=0;jbits;j+) for(i=0;i=9;i+) if(caijij=i) caijij=ai; i=9; else ; PORTB|=0x04;/传输第一位 PORTA=caiji0; delay(100); PORTB|=0x08;/传输第二位 PORTA=caiji1; delay(100); PORTB|=0x10;/传输第三位 PORTA=caiji2;/显示小数点 delay(100); PORTB|=0x20;/传输第四位 PORTA=caiji3&0x7f; delay(100); PORTB|=0x40;/传输第五位 PORTA=caiji4; delay(100); PORTB|=0x80;/传输第六位 PORTA=caiji5; delay(100); void chuli(unsigned int data) p=100; for(j=0;j=3;j+) caijij=data/p; data=data%p; p=p/10; /数据处理/*主函数*/void main(void) DisableInterrupts; Busclock(); InitVariable(); InitIoport(); ADInit(); InitEct(); initPIT(); IOC_Init(); PWM_Init(); EnableInterrupts; delay(4000); for(;) if(flagPIT=1) flagPIT=0; PITINTE_PINTE0=0;/定时器中断通道0中断禁止 PITINTE_PINTE1=1;/定时器中断通道1中断使能 if(flag=1) flag=0; result=read_ad0(); later_result=result*Max/255; delta_result=result; PWMDian_duty(); led_display(6);/调用数码管显示 delay(100); if(flag=0) flag=1; delta_result=result; PWMDian_duty(); led_display(6);/调用数码管显示 delay(100); /*PIT定时器1中断*/#pragma CODE_SEG _NEAR_SEG NON_BANKEDvoid interrupt 67 PIT1(void) vTmpPIT1+; if(vTmpPIT1=100)/定时1s vTmpPIT1=0; DisableInterrupts; Real_Speed=PACNTL+256*PACNTH; PACNTH=0x00; PACNTL=0x00; PITTF=0x02;/清中断标志位 EnableInterrupts; if(Real_Speedlater_result) delta_result-=2; else delta_result+=0; Real_Speed=Real_Speed/100; p=100; caiji5=Real_Speed/p; Real_Speed=Real_Speed%p; p=10; caiji4=Real_Speed/p; Real_Speed=Real_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论