找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3732|回復(fù): 4
收起左側(cè)

基于LPC單片機(jī)的電磁循跡小車代碼

[復(fù)制鏈接]
ID:724905 發(fā)表于 2020-11-7 16:53 | 顯示全部樓層 |閱讀模式
本帖最后由 恒星撒旦 于 2020-11-7 17:32 編輯

之前校賽做的題目。
主控單片機(jī)為L(zhǎng)PC546,程序?qū)崿F(xiàn)功能為室內(nèi)電磁循跡具體代碼注釋的很詳細(xì),一看就能明白,實(shí)際循跡效果還不錯(cuò),有十字,坡道,環(huán)島等處理方式。
分享給大家,有問題可以留言。
小車如下:
單片機(jī)源程序如下:
  1. //* @changed by ZZH ZHY DZH
  2. /*
  3. 接口定義:

  4. 攝像頭             單片機(jī)接口
  5. D0-D7數(shù)據(jù)口        B24 B25 B26 B27 B28 B29 B30 B31
  6. SDA                A9   F5
  7. SCL                A8
  8. 場(chǎng)信號(hào)             A0
  9. 像素信號(hào)           A1

  10. 運(yùn)放
  11. 通道1              A10
  12. 通道2              A15
  13. 通道3              A16
  14. 通道4              A31
  15. 通道5              B0
  16. 通道6              A23

  17. IIC                 
  18. SDA                A13 F1
  19. SCL                A14

  20. 電機(jī)PWM
  21. PWM1               A18   T1
  22. PWM2               A20
  23. PWM3               B4   T2
  24. PWM4               B5

  25. 編碼器         
  26. LSB1               A2   T0
  27. DIR                A3
  28. LSB2               A4  T3
  29. DIR                A5


  30. 舵機(jī)   
  31. PWM                A6 T4

  32. OLED/TFT
  33. SCK                B19
  34. MOSI               B21
  35. MISO               B20      液晶沒有這個(gè)引腳  但是SPI會(huì)占用這個(gè)引腳
  36. CS                 B9 F4

  37. DC                 B10
  38. RES                B8
  39. BL                 B7

  40. UART               
  41. RX                 A24
  42. TX                 A25  

  43. 按鍵   
  44. B1 B2 B3 B23任意交換  


  45. 撥碼開關(guān)               
  46. B17  B22任意交換  

  47. NRF
  48. B15 B14 A29 A22 A21 A17        任意交換  

  49. */


  50. //打開新的工程或者工程移動(dòng)了位置務(wù)必執(zhí)行以下操作
  51. //第一步 關(guān)閉上面所有打開的文件
  52. //第二步 project  clean  等待下方進(jìn)度條走完

  53. #include "headfile.h"
  54. #include "LPC546XX_adc.h"
  55. #include "LYG_motor.h"
  56. #include "LYG_direction.h"
  57. #include "LYG_mspeed.h"
  58. #include "LYG_keyboard.h"
  59. #include "LYG_mohu.h"
  60. #include "SEEKFREE_ICM20602.h"
  61. #include "LPC546XX_spi.h"
  62. #include "LPC546XX_mrt.h"
  63. #include "LYG_chaoshengbo.h"

  64. #define TRIG_PIN1 B6                //定義超聲波觸發(fā)引腳端口
  65. #define ECHO_PIN1 B4                //定義超聲波觸發(fā)引腳端口

  66. uint16 speed0,speed1,speed2,speed3,speed4,speed5;                          //直道  彎道  坡道  路障
  67. uint16 read_ZHI[6];       //eeprom儲(chǔ)存的最大電感值
  68. extern float  AD_MAX_Data1[6];
  69. uint16   duoji_zz;
  70. uint32 speeds;
  71. extern int16 Turn_PID ;
  72. extern int16 Offset;
  73. uint16 huandao[8];
  74. extern int16 D_error ;
  75. extern uint16 ad_03_he;
  76. extern uint16 time;
  77. extern int16 speedl,AD_SS0[3],AD_SS1[3],AD_SS2[3],AD_SS3[3],AD_SS4[3],AD_SS5[3];
  78. extern uint8 flag_dawan;
  79. extern uint32 distance1;
  80. extern int16 Turn_PID ;
  81. uint16 shizi1[2];
  82. uint16 zhijiao1[2];
  83. uint16 benzenedao[2];

  84. extern uint8 con,fangxiangshu;
  85. uint8 xuanze,xuanze1;

  86. int main(void)
  87. {   
  88.     get_clk();
  89.     oled_init();
  90.     eeprom_init();
  91.     motor_init();
  92.     duoji_init();
  93.     mspeed_init();
  94.     //chaoshengbo_init();
  95.     //uart_init(USART_0,115200,UART0_TX_A25,UART0_RX_A24);  //藍(lán)牙
  96.     //icm20602_init_spi();                                   //陀螺儀
  97.     //spi_init(SPI_NUM,SPI_CS_PIN,SPI_SCK_PIN,SPI_MOSI_PIN,SPI_MISO_PIN,3,10*1000*1000);
  98.     //gpio_init(A8,GPI,1,NOPULL);  
  99.    
  100.    // gpio_init(TRIG_PIN1,GPO,0,NOPULL);//超聲波
  101.    
  102.    
  103.    
  104.     adc_init(ADC1);
  105.     adc_init(ADC2);
  106.     adc_init(ADC3);
  107.     adc_init(ADC4);
  108.     adc_init(ADC5);
  109.     adc_init(ADC6);
  110.     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
  111.     huandao[1]=EEPROM_READ_WORD(12);
  112.     huandao[2]=EEPROM_READ_WORD(13);
  113.     huandao[3]=EEPROM_READ_WORD(14);
  114.     huandao[4]=EEPROM_READ_WORD(15);
  115.     huandao[5]=EEPROM_READ_WORD(16);
  116.     huandao[6]=EEPROM_READ_WORD(20);
  117.     huandao[7]=EEPROM_READ_WORD(21);
  118.     benzenedao[0]=EEPROM_READ_WORD(25);
  119.     benzenedao[1]=EEPROM_READ_WORD(26);
  120.     shizi1[0]=EEPROM_READ_WORD(10);
  121.     shizi1[1]=EEPROM_READ_WORD(22);
  122.     zhijiao1[0]=EEPROM_READ_WORD(23);
  123.     zhijiao1[1]=EEPROM_READ_WORD(24);
  124.     fangxiangshu=EEPROM_READ_WORD(30);
  125.     //duoji_zz=EEPROM_READ_WORD(9);
  126.     duoji_zz=779;
  127.     speed0=EEPROM_READ_WORD(5);
  128.     speed1=EEPROM_READ_WORD(6);
  129.     speed2=EEPROM_READ_WORD(7);
  130.     speed3=EEPROM_READ_WORD(8);
  131.     speed4=EEPROM_READ_WORD(27);
  132.     speed5=EEPROM_READ_WORD(28);
  133.     read_ZHI[0]=EEPROM_READ_WORD(1);
  134.     read_ZHI[1]=EEPROM_READ_WORD(2);
  135.     read_ZHI[2]=EEPROM_READ_WORD(3);
  136.     read_ZHI[3]=EEPROM_READ_WORD(4);
  137.     read_ZHI[4]=EEPROM_READ_WORD(17);
  138.     read_ZHI[5]=EEPROM_READ_WORD(18);
  139.     con=EEPROM_READ_WORD(29);
  140.     xuanze=EEPROM_READ_WORD(19);
  141.     xuanze1=EEPROM_READ_WORD(31);

  142.     AD_MAX_Data1[0] = (read_ZHI[0]/10)/10.0;
  143.     AD_MAX_Data1[1] = (read_ZHI[1]/10)/10.0;
  144.     AD_MAX_Data1[2] = (read_ZHI[2]/10)/10.0;
  145.     AD_MAX_Data1[3] = (read_ZHI[3]/10)/10.0;
  146.     AD_MAX_Data1[4] = (read_ZHI[4]/10)/10.0;
  147.     AD_MAX_Data1[5] = (read_ZHI[5]/10)/10.0;

  148.    
  149.     systick_delay_ms(500);   //防止上電標(biāo)志置位
  150.    
  151.     //pint_init(PINT_CH0,ECHO_PIN1,FALLING); //超聲波
  152.     //set_irq_priority(PIN_INT0_IRQn,0);//設(shè)置優(yōu)先級(jí) 越低優(yōu)先級(jí)越高
  153.     //enable_irq(PIN_INT0_IRQn);//開中斷 PIN_INT0_IRQn - PIN_INT7_IRQn
  154.    
  155.     pint_init(PINT_CH1,B12,RISING);//霍爾停車
  156.     set_irq_priority(PIN_INT1_IRQn,1);
  157.     enable_irq(PIN_INT1_IRQn);
  158.    
  159.     //pint_init(PINT_CH2,A8,RISING);//激光避障
  160.     //set_irq_priority(PIN_INT2_IRQn,2);
  161.     //enable_irq(PIN_INT2_IRQn);
  162.    
  163.     // pint_init(PINT_CH1,A8,FALLING); //引腳中斷停車
  164.     // pint_enable_irq(PINT_CH1);  //開啟引腳中斷
  165.    // EnableInterrupts;
  166.    
  167.     pit_init_ms(5);    //周期定時(shí)器
  168.     enable_irq(RIT_IRQn);
  169.     //mrt_pit_init_ms(MRT_CH0,5);
  170.    // enable_irq(MRT0_IRQn);
  171.     EnableInterrupts;
  172.    
  173.   // mrt_start(MRT_CH1);
  174.     while(1)
  175.     {
  176.      // OLED_ConfigParameter();                  //菜單  //yihuigai
  177.      // data_conversion(AD_Norm[0],AD_Norm[3],AD_Norm[4],AD_Norm[5],virtual_scope_data);//藍(lán)牙傳輸數(shù)據(jù)

  178.         oled_p6x8str(0,1,"ADCl :");  oled_printf_int32(6*8,1,AD_Norm[0],4);
  179.         //oled_p6x8str(0,2,"ADC2 :");  oled_printf_int32(6*8,2,AD_SS1[2],3);
  180.         //oled_p6x8str(0,3,"ADC3 :");  oled_printf_int32(6*8,3,AD_SS2[2],3);
  181.         oled_p6x8str(0,3,"ADCr :");  oled_printf_int32(6*8,3,AD_Norm[3],4);
  182.         oled_p6x8str(0,5,"D :");  oled_printf_int32(6*8,5,Turn_PID,4);
  183.          ctimer_pwm_duty(TIMER1_PWMCH0_A18,2000 );
  184.          ctimer_pwm_duty(TIMER2_PWMCH1_B4, 2000 );
  185.          
  186.       //  oled_p6x8str(0,4,"Offset :");  oled_printf_int32(6*8,4,Offset,3);
  187.         //oled_p6x8str(0,4,"turn :");  oled_printf_int32(6*8,4,Turn_PID,3);
  188.         
  189.       
  190.         
  191.       //chaoshengboZF();
  192.     }
  193.    
  194.    
  195.         
  196.    
  197. }
復(fù)制代碼




Tortoise 1.7z

193.01 KB, 下載次數(shù): 7, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2020-11-7 17:00 | 顯示全部樓層
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

ID:724905 發(fā)表于 2020-11-7 17:37 | 顯示全部樓層
3BX1(7VTCCPV%D(JE{987[K.png 小車如圖
回復(fù)

使用道具 舉報(bào)

ID:724905 發(fā)表于 2020-11-7 17:40 | 顯示全部樓層
12.png
回復(fù)

使用道具 舉報(bào)

ID:780742 發(fā)表于 2021-3-18 23:35 | 顯示全部樓層
樓主的電磁傳感器是使用的什么傳感器呢?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表