|
本帖最后由 恒星撒旦 于 2020-11-7 17:32 編輯
之前校賽做的題目。
主控單片機(jī)為L(zhǎng)PC546,程序?qū)崿F(xiàn)功能為室內(nèi)電磁循跡具體代碼注釋的很詳細(xì),一看就能明白,實(shí)際循跡效果還不錯(cuò),有十字,坡道,環(huán)島等處理方式。
分享給大家,有問題可以留言。
小車如下:
單片機(jī)源程序如下:
- //* @changed by ZZH ZHY DZH
- /*
- 接口定義:
- 攝像頭 單片機(jī)接口
- D0-D7數(shù)據(jù)口 B24 B25 B26 B27 B28 B29 B30 B31
- SDA A9 F5
- SCL A8
- 場(chǎng)信號(hào) A0
- 像素信號(hào) A1
- 運(yùn)放
- 通道1 A10
- 通道2 A15
- 通道3 A16
- 通道4 A31
- 通道5 B0
- 通道6 A23
- IIC
- SDA A13 F1
- SCL A14
- 電機(jī)PWM
- PWM1 A18 T1
- PWM2 A20
- PWM3 B4 T2
- PWM4 B5
- 編碼器
- LSB1 A2 T0
- DIR A3
- LSB2 A4 T3
- DIR A5
- 舵機(jī)
- PWM A6 T4
- OLED/TFT
- SCK B19
- MOSI B21
- MISO B20 液晶沒有這個(gè)引腳 但是SPI會(huì)占用這個(gè)引腳
- CS B9 F4
- DC B10
- RES B8
- BL B7
- UART
- RX A24
- TX A25
- 按鍵
- B1 B2 B3 B23任意交換
- 撥碼開關(guān)
- B17 B22任意交換
- NRF
- B15 B14 A29 A22 A21 A17 任意交換
- */
- //打開新的工程或者工程移動(dòng)了位置務(wù)必執(zhí)行以下操作
- //第一步 關(guān)閉上面所有打開的文件
- //第二步 project clean 等待下方進(jìn)度條走完
- #include "headfile.h"
- #include "LPC546XX_adc.h"
- #include "LYG_motor.h"
- #include "LYG_direction.h"
- #include "LYG_mspeed.h"
- #include "LYG_keyboard.h"
- #include "LYG_mohu.h"
- #include "SEEKFREE_ICM20602.h"
- #include "LPC546XX_spi.h"
- #include "LPC546XX_mrt.h"
- #include "LYG_chaoshengbo.h"
- #define TRIG_PIN1 B6 //定義超聲波觸發(fā)引腳端口
- #define ECHO_PIN1 B4 //定義超聲波觸發(fā)引腳端口
- uint16 speed0,speed1,speed2,speed3,speed4,speed5; //直道 彎道 坡道 路障
- uint16 read_ZHI[6]; //eeprom儲(chǔ)存的最大電感值
- extern float AD_MAX_Data1[6];
- uint16 duoji_zz;
- uint32 speeds;
- extern int16 Turn_PID ;
- extern int16 Offset;
- uint16 huandao[8];
- extern int16 D_error ;
- extern uint16 ad_03_he;
- extern uint16 time;
- extern int16 speedl,AD_SS0[3],AD_SS1[3],AD_SS2[3],AD_SS3[3],AD_SS4[3],AD_SS5[3];
- extern uint8 flag_dawan;
- extern uint32 distance1;
- extern int16 Turn_PID ;
- uint16 shizi1[2];
- uint16 zhijiao1[2];
- uint16 benzenedao[2];
- extern uint8 con,fangxiangshu;
- uint8 xuanze,xuanze1;
- int main(void)
- {
- get_clk();
- oled_init();
- eeprom_init();
- motor_init();
- duoji_init();
- mspeed_init();
- //chaoshengbo_init();
- //uart_init(USART_0,115200,UART0_TX_A25,UART0_RX_A24); //藍(lán)牙
- //icm20602_init_spi(); //陀螺儀
- //spi_init(SPI_NUM,SPI_CS_PIN,SPI_SCK_PIN,SPI_MOSI_PIN,SPI_MISO_PIN,3,10*1000*1000);
- //gpio_init(A8,GPI,1,NOPULL);
-
- // gpio_init(TRIG_PIN1,GPO,0,NOPULL);//超聲波
-
-
-
- adc_init(ADC1);
- adc_init(ADC2);
- adc_init(ADC3);
- adc_init(ADC4);
- adc_init(ADC5);
- adc_init(ADC6);
- huandao[0]=EEPROM_READ_WORD(11); // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
- huandao[1]=EEPROM_READ_WORD(12);
- huandao[2]=EEPROM_READ_WORD(13);
- huandao[3]=EEPROM_READ_WORD(14);
- huandao[4]=EEPROM_READ_WORD(15);
- huandao[5]=EEPROM_READ_WORD(16);
- huandao[6]=EEPROM_READ_WORD(20);
- huandao[7]=EEPROM_READ_WORD(21);
- benzenedao[0]=EEPROM_READ_WORD(25);
- benzenedao[1]=EEPROM_READ_WORD(26);
- shizi1[0]=EEPROM_READ_WORD(10);
- shizi1[1]=EEPROM_READ_WORD(22);
- zhijiao1[0]=EEPROM_READ_WORD(23);
- zhijiao1[1]=EEPROM_READ_WORD(24);
- fangxiangshu=EEPROM_READ_WORD(30);
- //duoji_zz=EEPROM_READ_WORD(9);
- duoji_zz=779;
- speed0=EEPROM_READ_WORD(5);
- speed1=EEPROM_READ_WORD(6);
- speed2=EEPROM_READ_WORD(7);
- speed3=EEPROM_READ_WORD(8);
- speed4=EEPROM_READ_WORD(27);
- speed5=EEPROM_READ_WORD(28);
- read_ZHI[0]=EEPROM_READ_WORD(1);
- read_ZHI[1]=EEPROM_READ_WORD(2);
- read_ZHI[2]=EEPROM_READ_WORD(3);
- read_ZHI[3]=EEPROM_READ_WORD(4);
- read_ZHI[4]=EEPROM_READ_WORD(17);
- read_ZHI[5]=EEPROM_READ_WORD(18);
- con=EEPROM_READ_WORD(29);
- xuanze=EEPROM_READ_WORD(19);
- xuanze1=EEPROM_READ_WORD(31);
- AD_MAX_Data1[0] = (read_ZHI[0]/10)/10.0;
- AD_MAX_Data1[1] = (read_ZHI[1]/10)/10.0;
- AD_MAX_Data1[2] = (read_ZHI[2]/10)/10.0;
- AD_MAX_Data1[3] = (read_ZHI[3]/10)/10.0;
- AD_MAX_Data1[4] = (read_ZHI[4]/10)/10.0;
- AD_MAX_Data1[5] = (read_ZHI[5]/10)/10.0;
-
-
- systick_delay_ms(500); //防止上電標(biāo)志置位
-
- //pint_init(PINT_CH0,ECHO_PIN1,FALLING); //超聲波
- //set_irq_priority(PIN_INT0_IRQn,0);//設(shè)置優(yōu)先級(jí) 越低優(yōu)先級(jí)越高
- //enable_irq(PIN_INT0_IRQn);//開中斷 PIN_INT0_IRQn - PIN_INT7_IRQn
-
- pint_init(PINT_CH1,B12,RISING);//霍爾停車
- set_irq_priority(PIN_INT1_IRQn,1);
- enable_irq(PIN_INT1_IRQn);
-
- //pint_init(PINT_CH2,A8,RISING);//激光避障
- //set_irq_priority(PIN_INT2_IRQn,2);
- //enable_irq(PIN_INT2_IRQn);
-
- // pint_init(PINT_CH1,A8,FALLING); //引腳中斷停車
- // pint_enable_irq(PINT_CH1); //開啟引腳中斷
- // EnableInterrupts;
-
- pit_init_ms(5); //周期定時(shí)器
- enable_irq(RIT_IRQn);
- //mrt_pit_init_ms(MRT_CH0,5);
- // enable_irq(MRT0_IRQn);
- EnableInterrupts;
-
- // mrt_start(MRT_CH1);
- while(1)
- {
- // OLED_ConfigParameter(); //菜單 //yihuigai
- // data_conversion(AD_Norm[0],AD_Norm[3],AD_Norm[4],AD_Norm[5],virtual_scope_data);//藍(lán)牙傳輸數(shù)據(jù)
- oled_p6x8str(0,1,"ADCl :"); oled_printf_int32(6*8,1,AD_Norm[0],4);
- //oled_p6x8str(0,2,"ADC2 :"); oled_printf_int32(6*8,2,AD_SS1[2],3);
- //oled_p6x8str(0,3,"ADC3 :"); oled_printf_int32(6*8,3,AD_SS2[2],3);
- oled_p6x8str(0,3,"ADCr :"); oled_printf_int32(6*8,3,AD_Norm[3],4);
- oled_p6x8str(0,5,"D :"); oled_printf_int32(6*8,5,Turn_PID,4);
- ctimer_pwm_duty(TIMER1_PWMCH0_A18,2000 );
- ctimer_pwm_duty(TIMER2_PWMCH1_B4, 2000 );
-
- // oled_p6x8str(0,4,"Offset :"); oled_printf_int32(6*8,4,Offset,3);
- //oled_p6x8str(0,4,"turn :"); oled_printf_int32(6*8,4,Turn_PID,3);
-
-
-
- //chaoshengboZF();
- }
-
-
-
-
- }
復(fù)制代碼
|
-
-
Tortoise 1.7z
2020-11-7 16:59 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
193.01 KB, 下載次數(shù): 7, 下載積分: 黑幣 -5
|