風力擺代碼,直接用
單片機源程序如下:
- /*!
- * COPYRIGHT NOTICE
- * Copyright (c) 2013,山外科技
- * All rights reserved.
-
- * 除注明出處外,以下所有內容版權均屬山外科技所有,未經允許,不得用于商業用途,
- * 修改內容時必須保留山外科技的版權聲明。
- *
- * @file main.c
- * @brief 山外KL26 平臺主程序
- * @author 山外科技
- * @version v5.2
- * @date 2014-10-26
- */
- #include "common.h"
- #include "include.h"
- #define MOTOR_HZ (20*1000)
- #define XOUT ADC0_SE9
- #define YOUT ADC0_SE13
- #define ZOUT ADC0_SE15
- #define Gyro1 ADC0_SE14
- #define Gyro2 ADC0_SE12
- #define Ang ADC0_SE11
- Site_t site_lcd;
- uint16 x,y,z,gyro1,gyro2,ang; //保存ADC轉換結果
- //子函數聲明
- void LCD_show_int();//LCD顯示字符
- void PIT_IRQHandler(void);//中斷函數
- void move();//移動
- void main()
- {
- //陀螺儀初始化
- adc_init(XOUT);
- adc_init(YOUT);
- adc_init(ZOUT);
- adc_init(Gyro2); //角加速度 Angular2
- adc_init(Gyro1); //角加速度 Angular1
- adc_init(Ang);
-
- //LCD初始化
- LCD_init();
- LCD_show_int();
-
- //初始化 電機 PWM
- tpm_pwm_init(TPM0, TPM_CH0,MOTOR_HZ,100);
- tpm_pwm_init(TPM0, TPM_CH1,MOTOR_HZ,100);
- tpm_pwm_init(TPM0, TPM_CH4,MOTOR_HZ,100);
- tpm_pwm_init(TPM0, TPM_CH5,MOTOR_HZ,100);
- gpio_init(PTC12,GPO,0);
-
- /********************************開PIT中斷******************************/
- pit_init_ms(PIT0, 10); //初始化PIT0,定時時間為: ??ms
-
- set_vector_handler(PIT_VECTORn ,PIT_IRQHandler); //設置PIT0的中斷服務函數為 PIT_IRQHandler
- enable_irq (PIT_IRQn); //使能PIT0中斷
- while(1)
- {
- site_lcd.x = 24;
- site_lcd.y = 2;
- x = adc_once(XOUT,ADC_8bit);
- LCD_num_C (site_lcd, x , FCOLOUR , BCOLOUR);
-
- site_lcd.y += 15;
- y = adc_once(YOUT,ADC_8bit);
- LCD_num_C (site_lcd, y , FCOLOUR , BCOLOUR);
-
- site_lcd.y += 15;
- z = adc_once(ZOUT,ADC_8bit);
- LCD_num_C (site_lcd, z , FCOLOUR , BCOLOUR);
-
- site_lcd.y += 15;
- gyro1 = adc_once(Gyro1,ADC_8bit);
- LCD_num_C (site_lcd, gyro1 , FCOLOUR , BCOLOUR);
-
- site_lcd.y += 15;
- gyro2 = adc_once(Gyro2,ADC_8bit);
- LCD_num_C (site_lcd, gyro2 , FCOLOUR , BCOLOUR);
-
- site_lcd.y += 15;
- ang = adc_once(Ang,ADC_8bit);
- LCD_num_C (site_lcd, ang , FCOLOUR , BCOLOUR);
- }
- }
- /******************************LCD初始化****************************/
- void LCD_show_int()
- {
- LCD_init();
- site_lcd.x = 0;
- site_lcd.y = 2;
- LCD_str(site_lcd, "X", BLUE, GREEN);
- site_lcd.y = 17;
- LCD_str(site_lcd, "Y", BLUE, GREEN);
- site_lcd.y = 32;
- LCD_str(site_lcd, "Z", BLUE, GREEN);
- site_lcd.y = 47;
- LCD_str(site_lcd, "G1", BLUE, GREEN);
- site_lcd.y = 62;
- LCD_str(site_lcd, "G2", BLUE, GREEN);
- site_lcd.y = 77;
- LCD_str(site_lcd, "A", BLUE, GREEN);
- site_lcd.y = 92;
- LCD_str(site_lcd, "k", BLUE, GREEN);
- site_lcd.y = 107;
- LCD_str(site_lcd, "dp", BLUE, GREEN);
- site_lcd.x=68;
- site_lcd.y = 2;
- LCD_str(site_lcd, "wp", BLUE, GREEN);//位置PD
- site_lcd.y = 17;
- LCD_str(site_lcd, "wd", BLUE, GREEN);
- site_lcd.y = 32;
- LCD_str(site_lcd, "zl", BLUE, GREEN);//速度
- site_lcd.y = 47;
- LCD_str(site_lcd, "sp", BLUE, GREEN);
- site_lcd.y = 62;
- LCD_str(site_lcd, "h1", BLUE, GREEN);//環島
- site_lcd.y = 77;
- LCD_str(site_lcd, "h2", BLUE, GREEN);
- site_lcd.y = 92;
- LCD_str(site_lcd, "h3", BLUE, GREEN);
- site_lcd.y = 107;
- LCD_str(site_lcd, "D", BLUE, GREEN);
- }
- void PIT_IRQHandler(void)
- {
- //PIT0 和 PIT1 共用相同中斷號,所以兩者都共用相同中斷函數,需要根據標志位來判斷是由哪個PIT觸發中斷
- if(PIT_TFLG(PIT0) == 1 ) //判斷是否 PIT0 進入中斷
- {
- move();
- PIT_Flag_Clear(PIT0); //清中斷標志位
- }
- }
- void move()
- {
- tpm_pwm_duty(TPM0, TPM_CH0,70);
- tpm_pwm_duty(TPM0, TPM_CH1,70);
- tpm_pwm_duty(TPM0, TPM_CH4,70);
- tpm_pwm_duty(TPM0, TPM_CH5,70);
- }
復制代碼
所有資料51hei提供下載:
風力擺.rar
(854.08 KB, 下載次數: 37)
2018-1-15 17:55 上傳
點擊文件名下載附件
風力擺代碼 下載積分: 黑幣 -5
|