標(biāo)題:
基于STC12C5A60S2的電磁循跡小車源碼
[打印本頁(yè)]
作者:
舒服只給死人
時(shí)間:
2018-6-16 17:57
標(biāo)題:
基于STC12C5A60S2的電磁循跡小車源碼
采用STC12C5A60S2采集AD信號(hào)小車循跡
單片機(jī)源程序如下:
#include <STC12C5A60S2.H>
#include "intrins.h"
#include "Common.h" //通用宏定義
#include "delay.h" //通用延時(shí)程序
#include "PWM_TIME.h" //模擬PWM
#include "ADC.H"
#define k1 0.1
#define k2 0.1
void AD_send();
fp32 AD_chuli(uchar *s1, uchar *s2);
fp32 Engine_PWM = Engine_Left;
uchar a1 = 100, a2 = 100;
int error;
uchar flag;
uchar flag1 = 0;
uchar flag2;
extern INT32 kk;
void Init0_Init()
{
IT0 = 1; //set INT0 int type (1:Falling 0:Low level)
EX0 = 1; //enable INT0 interrupt
EA = 1; //open global interrupt switch
}
void main(void)
{
InitADC();
InitUart();
Init_PWM_TIME();
Init0_Init();
while(1)
{
if(flag == 1)
{
a1 = 0, a2 = 0;
Engine_PWM = Engine_Mid;
error = -150;
}
Engine_PWM = AD_chuli(&a1, &a2);
//AD_send();
change_Motor(a1,a2);
change_Engine(Engine_PWM);
}
}
void AD_send()
{
ShowResult(1); //show ChabneP10
ShowResult(2); //P11
ShowResult(3); //P12
//ShowResult(4);
//ShowResult(7);
//ShowResult(6);
Delay(30);
}
fp32 AD_chuli(uchar *s1, uchar *s2)
{
fp32 temp;
error = GetADCResult(2) - GetADCResult(1);
if(flag != 1)
{
if(GetADCResult(1) > GetADCResult(2))
{
Engine_PWM = k2 * error + Engine_Mid;
*s1 = 100, *s2 = 100;
flag2 = 1;
if(error < -60)
{
//Engine_PWM = k2 * error + Engine_Mid;
flag1 = 1;
temp = Engine_PWM;
*s1 = 100, *s2 = 100;
}
}
else if(GetADCResult(2) > GetADCResult(1))
{
Engine_PWM = k2 * error + Engine_Mid;
*s1 = 100, *s2 = 100;
flag2 = 2;
if(error > 60)
{
//Engine_PWM = k2 * error + Engine_Mid;
flag1 = 2;
temp = Engine_PWM;
*s1 = 100, *s2 = 100;
}
}
}
if(GetADCResult(2) == 0 && GetADCResult(1) == 0 && GetADCResult(3) == 0)
{
if(flag != 1)
{
if(flag2 != 2)
{
if(flag1 == 1)
{
Engine_PWM = temp;*s1 = 100, *s2 = 100;
}
else
{
Engine_PWM = Engine_Left;
}
}
else if(flag2 != 1)
{
if(flag1 == 2)
{
Engine_PWM = temp;*s1 = 100, *s2 = 100;
}
else
{
Engine_PWM = Engine_Right;
}
}
}
}
if(Engine_PWM <= Engine_Left)
{
Engine_PWM = Engine_Left;
}
else if(Engine_PWM >= Engine_Right)
{
Engine_PWM = Engine_Right;
}
return Engine_PWM;
}
void Int0_Routine(void) interrupt 0
{
if(kk >= 100000)
{
flag = 1;
}
else
{
flag = 2;
}
}
/* 中斷服務(wù)程序的編號(hào)
void Int0_Routine(void) interrupt 0; 外部中斷0(INT0)
void Timer0_Rountine(void) interrupt 1; 定時(shí)器0中斷
void Int1_Routine(void) interrupt 2; 外部中斷1(INT1)
void Timer1_Rountine(void) interrupt 3; 定時(shí)器1中斷
void UART_Routine(void) interrupt 4; 串口1(UART1)中斷
void ADC_Routine(void) interrupt 5; A/D轉(zhuǎn)換中斷
void LVD_Routine(void) interrupt 6; 低壓檢測(cè)(LVD)中斷
void PCA_Routine(void) interrupt 7; PCA中斷
void UART2_Routine(void) interrupt 8; 串口2中斷
void SPI_Routine(void) interrupt 9 SPI中斷
*/
復(fù)制代碼
所有資料51hei提供下載:
小車控制.zip
(119.94 KB, 下載次數(shù): 96)
2018-6-16 17:56 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
ty2030766
時(shí)間:
2019-4-3 23:31
嘿嘿 學(xué)習(xí)學(xué)習(xí)
作者:
qiu523
時(shí)間:
2019-4-13 14:12
借鑒一下
作者:
帥同學(xué)
時(shí)間:
2021-3-18 23:38
問(wèn)下樓主電磁傳感器使用的是什么傳感器呢?有沒(méi)有芯片的中文資料呀?
作者:
canyi
時(shí)間:
2022-8-17 11:43
求分享電路圖
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1