飞思卡尔智能车程序汇总.docx
- 文档编号:8491349
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:32
- 大小:20.26KB
飞思卡尔智能车程序汇总.docx
《飞思卡尔智能车程序汇总.docx》由会员分享,可在线阅读,更多相关《飞思卡尔智能车程序汇总.docx(32页珍藏版)》请在冰豆网上搜索。
飞思卡尔智能车程序汇总
1.流水灯程序:
#include
#include"derivative.h"/*derivative-specificdefinitions*/
voiddelay(unsignedintms)
{
unsignedinti;
unsignedcharj;
for(i=0;i { for(j=0;j<100;j++); } } voidmain(void){ /*putyourowncodehere*/ EnableInterrupts; DDRA=0x00; DDRB_DDRB0=1; for(;;) { delay(25000); PORTB_PB0=1; delay(25000); PORTB_PB0=0; } } 2.液晶屏按键程序 #include #include"derivative.h"/*derivative-specificdefinitions*/ #include"lcd5110.h" #include"24c02.h" #include"button.h" voiddelay(unsignedintms) { unsignedinti; unsignedcharj; for(i=0;i { for(j=0;j<100;j++); } } /******************************倍频*****************************************/ voidvPLLInit(void) { unsignedcharrefdv; refdv=3; CLKSEL=0X00;//disengagePLLtosystem PLLCTL_PLLON=1;//turnonPLL SYNR=0xc0|((80/(refdv+1))-1); REFDV=0x40|refdv; POSTDIV=0x00;//pllclock=2*osc*(1+SYNR)/(1+REFDV)=160MHz; _asm(nop);//BUSCLOCK=80M _asm(nop); while(! (CRGFLG_LOCK==1));//whenpllissteady,thenuseit; CLKSEL_PLLSEL=1;//engagePLLtosystem; } /******************************倍频*****************************************/ voidmain(void){ /*putyourowncodehere*/ unsignedchari; unsignedcharsetnum[12]; unsignedcharcur_sel; constcharlcd_show[12][4]={"MID\0","LEF\0","RIG\0","Kp\0","Kd\0","K1\0","K2\0","STP\0","MAX\0","MIN\0","HTM\0","HTX\0"}; vPLLInit(); lcd_init(); init_24c02(); init_btn(); //EnableInterrupts; for(i=0;i<12;i++)setnum[i]=RdEEPROM(i);//读取24c02 for(i=0;i<12;i++)//显示初值 { disply_listchar((i/6)*42,i%6,lcd_show[i],1); disply_number((i/6)*42+16,i%6,setnum[i],5); } if(btn_change()) { cur_sel=0; for(i=0;i<12;i++) { disply_listchar((i/6)*42,i%6,lcd_show[i],(cur_sel==i)? 0: 1); disply_number((i/6)*42+16,i%6,setnum[i],5); } for(;;) { if(btn_add()) { setnum[cur_sel]++; disply_number((cur_sel/6)*42+16,cur_sel%6,setnum[cur_sel],5); } if(btn_sub()) { setnum[cur_sel]--; disply_number((cur_sel/6)*42+16,cur_sel%6,setnum[cur_sel],5); } if(btn_change()) { cur_sel++; if(cur_sel>11)cur_sel=0; for(i=0;i<12;i++)disply_listchar((i/6)*42,i%6,lcd_show[i],(cur_sel==i)? 0: 1); } if(btn_sav()) { for(i=0;i<12;i++)WrEEPROM(i,setnum[i]); disply_listchar(0,0,"SMARTCAR",1); disply_listchar(0,1,"SAVEOK",1); disply_listchar(0,2,"=================",1); disply_listchar(0,3,"TURNPOWEROFF",1); disply_listchar(0,4,"=================",1); disply_listchar(0,5,"",1); while (1); } } } DDRA=0x00; DDRB_DDRB0=1; for(;;) { delay(setnum[0]*100); PORTB_PB0=1; delay(setnum[1]*100); PORTB_PB0=0; } } 3.电机程序 #include #include"derivative.h"/*derivative-specificdefinitions*/ #include"lcd5110.h" #include"24c02.h" #include"button.h" #defineservo_period20//ms #definemotor_pwm_frequ1//khz voiddelay(unsignedintms) { unsignedinti; unsignedcharj; for(i=0;i { for(j=0;j<100;j++); } } /******************************倍频*****************************************/ voidvPLLInit(void) { unsignedcharrefdv; refdv=3; CLKSEL=0X00;//disengagePLLtosystem PLLCTL_PLLON=1;//turnonPLL SYNR=0xc0|((80/(refdv+1))-1); REFDV=0x40|refdv; POSTDIV=0x00;//pllclock=2*osc*(1+SYNR)/(1+REFDV)=160MHz; _asm(nop);//BUSCLOCK=80M _asm(nop); while(! (CRGFLG_LOCK==1));//whenpllissteady,thenuseit; CLKSEL_PLLSEL=1;//engagePLLtosystem; } /******************************倍频*****************************************/ /**PWM初始化***/ voidInit_PWMout(void) { PWME=0x00;//禁止输出 PWMPOL=0xff;//极性寄存器,1先输出高电平后为低电平0先输出低电平后为高电平 PWMCTL=0xf0;//01234567通道级联 PWMPRCLK=0x55;//ClockA=BusClock/32;ClockB=BusClock/32; PWMCLK=0b00000000;//选择clock: 7B,6B,5A,4A,3B,2B,1A,0A PWME=0xaa;//pp1,pp3,pp5,pp7口输出 PWMPER67=80/4*125/motor_pwm_frequ; PWMPER45=80/4*125/motor_pwm_frequ; PWMPER23=80/4*servo_period*125; PWMPER01=80/4*servo_period*125; PWMDTY67=0; PWMDTY45=0; PWMDTY23=0; PWMDTY01=0; } voidmain(void){ /*putyourowncodehere*/ unsignedchari; unsignedcharsetnum[12]; unsignedcharcur_sel; constcharlcd_show[12][4]={"MID\0","LEF\0","RIG\0","Kp\0","Kd\0","K1\0","K2\0","STP\0","MAX\0","MIN\0","HTM\0","HTX\0"}; vPLLInit(); lcd_init(); init_24c02(); init_btn(); Init_PWMout(); EnableInterrupts; for(i=0;i<12;i++)setnum[i]=RdEEPROM(i);//读取24c02 for(i=0;i<12;i++)//显示初值 { disply_listchar((i/6)*42,i%6,lcd_show[i],1); disply_number((i/6)*42+16,i%6,setnum[i],5); } if(btn_change()) { cur_sel=0; for(i=0;i<12;i++) { disply_listchar((i/6)*42,i%6,lcd_show[i],(cur_sel==i)? 0: 1); disply_number((i/6)*42+16,i%6,setnum[i],5); } for(;;) { if(btn_add()) { setnum[cur_sel]++; disply_number((cur_sel/6)*42+16,cur_sel%6,setnum[cur_sel],5); } if(btn_sub()) { setnum[cur_sel]--; disply_number((cur_sel/6)*42+16,cur_sel%6,setnum[cur_sel],5); } if(btn_change()) { cur_sel++; if(cur_sel>11)cur_sel=0; for(i=0;i<12;i++)disply_listchar((i/6)*42,i%6,lcd_show[i],(cur_sel==i)? 0: 1); } if(btn_sav()) { for(i=0;i<12;i++)WrEEPROM(i,setnum[i]); disply_listchar(0,0,"SMARTCAR",1); disply_listchar(0,1,"SAVEOK",1); disply_listchar(0,2,"=================",1); disply_listchar(0,3,"TURNPOWEROFF",1); disply_listchar(0,4,"=================",1); disply_listchar(0,5,"",1); while (1); } } } DDRA=0x00; DDRB_DDRB0=1; for(;;) { delay(setnum[0]*1000); PORTB_PB0=1; PWMDTY67=0; PWMDTY45=1000; delay(setnum[0]*1000); PORTB_PB0=0; PWMDTY67=0; PWMDTY45=0; delay(setnum[0]*1000); PORTB_PB0=0; PWMDTY45=0; PWMDTY67=1000; delay(setnum[0]*1000); PORTB_PB0=0; PWMDTY67=0; PWMDTY45=0; } } 4.码盘控速 #include #include"derivative.h"/*derivative-specificdefinitions*/ #include"lcd5110.h" #include"24c02.h" #include"button.h" #defineservo_period20//ms #definemotor_pwm_frequ1//khz voiddelay(unsignedintms) { unsignedinti; unsignedcharj; for(i=0;i { for(j=0;j<100;j++); } } /******************************倍频*****************************************/ voidvPLLInit(void) { unsignedcharrefdv; refdv=3; CLKSEL=0X00;//disengagePLLtosystem PLLCTL_PLLON=1;//turnonPLL SYNR=0xc0|((80/(refdv+1))-1); REFDV=0x40|refdv; POSTDIV=0x00;//pllclock=2*osc*(1+SYNR)/(1+REFDV)=160MHz; _asm(nop);//BUSCLOCK=80M _asm(nop); while(! (CRGFLG_LOCK==1));//whenpllissteady,thenuseit; CLKSEL_PLLSEL=1;//engagePLLtosystem; } /******************************倍频*****************************************/ /**PWM初始化***/ voidInit_PWMout(void) { PWME=0x00;//禁止输出 PWMPOL=0xff;//极性寄存器,1先输出高电平后为低电平0先输出低电平后为高电平 PWMCTL=0xf0;//01234567通道级联 PWMPRCLK=0x55;//ClockA=BusClock/32;ClockB=BusClock/32; PWMCLK=0b00000000;//选择clock: 7B,6B,5A,4A,3B,2B,1A,0A PWME=0xaa;//pp1,pp3,pp5,pp7口输出 PWMPER67=80/4*125/motor_pwm_frequ; PWMPER45=80/4*125/motor_pwm_frequ; PWMPER23=80/4*servo_period*125; PWMPER01=80/4*servo_period*125; PWMDTY67=0; PWMDTY45=0; PWMDTY23=0; PWMDTY01=0; } /**PWM初始化***/ //////////////////////测速增加部分///////////////////////// intcur_speed; intcur_time; /****测速初始化****/ voidspeed_Init(void) { PACTL_PAMOD=0;//0Eventcountermode. PACTL_PEDGE=1;//1RisingedgesonIOC7pincausethecounttobeincremented. PACTL_PAEN=1;//1PulseAccumulatorsystemenabled. } //////stl测速定时器中断///////////// voidInit_INT_Timer(void) { TSCR2_PR=5; TSCR2_TOI|=1; TSCR1_TEN=1; } #pragmaCODE_SEG__NEAR_SEGNON_BANKED voidinterrupt16INT_Timer0(void) { cur_speed=PACNT; PACNT=0; cur_time++; TFLG2_TOF=1; } //////////////////////测速增加部分///////////////////////// voidmain(void){ /*putyourowncodehere*/ unsignedchari; unsignedcharsetnum[12]; unsignedcharcur_sel; intpwm_motor; Boolopen=FALSE; constcharlcd_show[12][4]={"MID\0","LEF\0","RIG\0","Kp\0","Kd\0","K1\0","K2\0","STP\0","MAX\0","MIN\0","HTM\0","HTX\0"}; vPLLInit(); lcd_init(); init_24c02(); init_btn(); Init_PWMout(); speed_Init(); cur_time=0; pwm_motor=0; PACNT=0; Init_INT_Timer(); EnableInterrupts; for(i=0;i<12;i++)setnum[i]=RdEEPROM(i);//读取24c02 for(i=0;i<12;i++)//显示初值 { disply_listchar((i/6)*42,i%6,lcd_show[i],1); disply_number((i/6)*42+16,i%6,setnum[i],5); } if(btn_change()) { cur_sel=0; for(i=0;i<12;i++) { disply_listchar((i/6)*42,i%6,lcd_show[i],(cur_sel==i)? 0: 1); disply_number((i/6)*42+16,i%6,setnum[i],5); } for(;;) { if(btn_add()) { setnum[cur_sel]++; disply_number((cur_sel/6)*42+16,cur_sel%6,setnum[cur_sel],5); } if(btn_sub()) { setnum[cur_sel]--; disply_number((cur_sel/6)*42+16,cur_sel%6,setnum[cur_sel],5); } if(btn_change()) { cur_sel++; if(cur_sel>11)cur_sel=0; for(i=0;i<12;i++)disply_listchar((i/6)*42,i%6,lcd_show[i],(cur_sel==i)? 0: 1); } if(btn_sav()) { for(i=0;i<12;i++)WrEEPROM(i,setnum[i]); disply_listchar(0,0,"SMARTCAR",1); disply_listchar(0,1,"SAVEOK",1); disply_listchar(0,2,"=================",1); disply_listchar(0,3,"TURNPOWEROFF",1); disply_listchar(0,4,"=================",1); disply_listchar(0,5,"",1); while (1); } } } DDRA=0x00; DDRB_DDRB0=1; for(;;) { disply_number(16,5,cur_speed/3,5); if(cur_time>=setnum[0]) { open=! open; cur_time=0; pwm_motor=0; } if(FALSE==open) { PORTB_PB0=1; PWMDTY67=0; pwm_motor=(setnum[4]-cur_speed/3)*20; if(pwm_motor>PWMPER45)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 卡尔 智能 车程 汇总
![提示](https://static.bdocx.com/images/bang_tan.gif)