❶ 急求一份剛學過c語言學生能看懂有關的循跡小車源程序代碼
尋跡,其實也沒什麼,就是車輪的轉速不同而已……
❷ 請高手幫我把下列循跡小車的C語言代碼解析一下,註明的幾處看不懂
解說給你了...
❸ 50分懸賞循跡小車完整程序,
智能小車程序
#include "reg52.h"
#define det_Dist 2.55 //單個脈沖對應的小車行走距離,其值為車輪周長/4
#define RD 9 //小車對角軸長度
#define PI 3.1415926
#define ANG_90 90
#define ANG_90_T 102
#define ANG_180 189
/*============================全局變數定義區============================*/
sbit P10=P1^0; //控制繼電器的開閉
sbit P11=P1^1; //控制金屬接近開關
sbit P12=P1^2; //控制顏色感測器的開閉
sbit P07=P0^7; //控制聲光信號的開啟
sbit P26=P2^6; //接收顏色感測器的信號,白為0,黑為1
sbit P24=P2^4; //左
sbit P25=P2^5; //右 接收左右光感測器的信號,有光為0
unsigned char mType=0; //設置運動的方式,0 向前 1 向左 2 向後 3 向右
unsigned char Direction=0; //小車的即時朝向 0 朝上 1 朝左 2 朝下 3 朝右
unsigned sX=50; unsigned char sY=0; //小車的相對右下角的坐標 CM(sX,sY)
unsigned char StartTask=0; //獲得鐵片後開始執行返回卸貨任務,StartTask置一
unsigned char Inter_EX0=0; // 完成一個完整的任務期間只能有一次外部中斷
// Inter_EX0記錄外部中斷0的中斷狀態
// 0 動作最近的前一次未中斷過,
// 1 動作最近的前一次中斷過
unsigned char cntIorn=0; //鐵片數
unsigned char bkAim=2; //回程目的地,0為A倉庫,1為B倉庫,2為停車場,
//(在MAIN中接受鐵片顏色判斷感測器的信號來賦值)
unsigned char Light_Flag=0;//進入光引導區的標志(1)
unsigned int cntTime_5Min=0;//時間周期數,用於 T0 精確定時
unsigned int cntTime_Plues=0; //霍爾開關產生的脈沖數
/*============================全局變數定義區============================*/
/*------------------------------------------------*/
/*-----------------通用延遲程序-------------------*/
/*------------------------------------------------*/
void delay(unsigned int time) // time*0.5ms延時
{
unsigned int i,j;
for(j=0;j<time;j++)
{
for(i=0;i<60;i++)
{;}
}
}
/*-----------------------------------------------*/
/*-------------------顯示控制模塊----------------*/
/*-----------------------------------------------*/
/*數碼管顯示,顯示鐵片的數目(設接在P0,共陰)*/
void Display(unsigned char n)
{
char Numb[12]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x37,0x77};
P0=Numb[n];
}
/*-----------------------------------------------*/
/*-------------------感測器模塊------------------*/
/*-----------------------------------------------*/
/*光源檢測程序: */
/*用於糾正小車運行路線的正確性*/
unsigned char LightSeek()
{ void Display(unsigned char);
bit l,r;
l=P24;
r=P25;
if(l==0&&r==1)
{
//Display(1);
return (3); //偏左,向右開
}
if(r==0&&l==1)
{
//Display(3);
return(1); //偏右,向左開
}
if((l==1&&r==1)||(l==0&&r==0))
{//Display(9);
return(0); //沒有偏離,前進
}
}
/*鐵片檢測程序: */
/*判斷鐵片的顏色,設定bkAim,0為A倉庫,1為B倉庫,2為停車場*/
void IornColor()
{
delay(4000);
bkAim=(int)(P26);
Display((int)(P26)+2);
}
/*-----------------------------------------------*/
/*------------------運動控制模塊-----------------*/
/*-----------------------------------------------*/
/*====基本動作層:完成基本運動動作的程序集====*/
/*運動調整程序: */
/*對小車的運動進行微調*/
void ctrMotor_Adjust(unsigned char t)
{
if(t==0)
{
P2=P2&240|11; //用來解決兩電機不對稱的問題
delay(6);
}
if(t==3)
{
P2=P2&250; //向左走
delay(1);
}
if(t==1)
{
P2=(P2&245);
delay(1); //向右走
}
P2=((P2&240)|15);
delay(10);
}
/*直走程序: */
/*控制小車運動距離,dist為運動距離(cm),type為運動方式(0 2)*/
/*只改變小車sX 和 sY的值而不改變Direction的值. */
void ctrMotor_Dist(float dist,unsigned char type)
{unsigned char t=0;
mType=type;
P2=((P2&240)|15);
cntTime_Plues=(int)(dist/det_Dist);
while(cntTime_Plues)
{
if(Inter_EX0==1&&StartTask==0)
{
cntTime_Plues=0;
break;
}
if(Light_Flag==1) t=LightSeek();
if(type==0) //向前走
{
P2=P2&249;
delay(40);
ctrMotor_Adjust(t);
}
if(type==2) //向後退
{
P2=P2&246;
delay(50);
ctrMotor_Adjust(t);
}
P2=((P2&240)|15);
if(mType==2) delay(60);//剎車制動 0.5ms
else delay(75);
}
}
/*拐彎程序: */
/*控制小車運動角度,type為運動方式(1 3) */
/*只改變小車Direction的值而不改變sX 和 sY的值*/
void ctrMotor_Ang(unsigned char ang,unsigned char type,unsigned char dir)
{
unsigned char i=0;
mType=type;
P2=((P2&240)|15);
cntTime_Plues=(int)((PI*RD*90/(180*det_Dist)*1.2)*ang/90);
while(cntTime_Plues)
{
if(Inter_EX0==1&&StartTask==0)
{
cntTime_Plues=0;
break;
}
if(type==1) //向左走
{
P2=P2&250;
delay(100);
ctrMotor_Adjust(0);
}
if(type==3) //向右走
{
P2=P2&245;
delay(100);
ctrMotor_Adjust(0);
}
P2=((P2&240)|15);
delay(50);//剎車制動 0.5ms
}
if(!(Inter_EX0==1&&StartTask==0))
{
Direction=dir;
}
}
/*====基本路線層:描述小車基本運動路線的程序集====*/
/*當小車到達倉庫或停車場時,放下鐵片或停車(0,1為倉庫,2為停車場)*/
void rchPlace()
{unsigned int time,b,s,g;
time=(int)(cntTime_5Min*0.065535);//只有一個數碼管時,輪流顯示全過程秒數 個 十 百
b=time%100;
s=(time-b*100)%100;
g=(time-b*100-s*10)%10;
if(bkAim==2)
{
//到達停車場了,停車
EA=0;
P2=((P2&240)|15);
while(1)
{
Display(10); //N
delay(2000);
Display(cntIorn);
delay(2000);
Display(11);//A
delay(2000);
Display(b);
delay(2000);
Display(s);
delay(2000);
Display(g);
delay(2000);
}
}
else
{
if(Inter_EX0==1&&StartTask==1)P10=0; //到達倉庫,卸下鐵片
}
}
/*無任務模式: */
/*設置小車的固定運動路線,未發現鐵片時的運動路線*/
void BasicRoute()
{ //Light_Flag=1;
ctrMotor_Dist(153,0);
//Light_Flag=0;
ctrMotor_Ang(ANG_90,1,1);
ctrMotor_Dist(100-sX,0);
ctrMotor_Dist(125,2);
ctrMotor_Dist(73,0);
ctrMotor_Ang(ANG_90,1,2);
//Light_Flag=1;
ctrMotor_Dist(153,0);
//Light_Flag=0;
ctrMotor_Ang(ANG_180,1,0);
rchPlace();
}
/*任務模式: */
/*設置小車的發現鐵片後的運動路線*/
void TaskRoute()
{
//基本運行路線表,記載拐彎 0 向前 1 左拐 2 向後 3 右拐,正讀去A區;反讀去B區
StartTask=1;
ctrMotor_Ang(ANG_90_T,1,2);
if(bkAim==1) //倉庫A
{
ctrMotor_Dist(10,0);
P2=((P2&240)|15);
delay(60);
ctrMotor_Ang(ANG_90_T,1,3);
ctrMotor_Dist(100-sX,2);
ctrMotor_Ang(ANG_90_T,1,2);
Light_Flag=1;
ctrMotor_Dist(153,2);
Light_Flag=0;
// ctrMotor_Ang(208,1,0);
}
else if(bkAim==0) //倉庫B
{
ctrMotor_Dist(10,0);
P2=((P2&240)|15);
delay(60);
ctrMotor_Ang(ANG_90_T,1,3);
ctrMotor_Dist(100-sX,0);
ctrMotor_Ang(ANG_90_T,1,0);
Light_Flag=1;
ctrMotor_Dist(153,2);
Light_Flag=0;
//ctrMotor_Ang(208,1,0);
}
delay(5000);
rchPlace();
}
/*---------------------------------------------*/
/*-------------------主程序段------------------*/
/*---------------------------------------------*/
void main()
{
delay(4000);
P2=0xff; //初始化埠
P07=0;
P1=0;
TMOD=0x01; //初始化定時器0/1 及其中斷
TL0=0;
TH0=0;
TR0=1;
ET0=1;
ET1=1;
IT0=1; //初始化外部中斷
EX0=1;
IT1=1;
EX1=1;
EA=1;
P11=1;
while(1)
{
Display(cntIorn);
bkAim=2;
BasicRoute();
if(Inter_EX0==1)
{
TaskRoute();//按獲得鐵片後的路線運動
IE0=0;
EX0=1;
}
Inter_EX0=0;
}
}
/*----------------------------------------------------*/
/*----------------------中斷程序段--------------------*/
/*----------------------------------------------------*/
/*定時器0中斷程序: */
/*當時間過了5分鍾,則就地停車並進入休眠狀態*/
void tmOver(void) interrupt 1
{
cntTime_5Min++;
TL0=0;
TH0=0;
if(cntTime_5Min>=4520)
{
Display(5);
P2=((P2&240)|15);
EA=0; //停車程序
P07=1;
delay(4000);
PCON=0X00;
while(1);
}
}
/*外部中斷0中斷程序: */
/*發現鐵片,發出聲光信號並將鐵片吸起,發光二極體和蜂鳴器*/
/*並聯在一起(設接在P07). 0為A倉庫,1為B倉庫,2為停車場*/
void fndIorn(void) interrupt 0
{
unsigned char i;
P10=1;
P2=((P2&240)|15); //停車
P07=1;
delay(1000);//剎車制動 0.5ms
P07=0;
Inter_EX0=1;
cntIorn++;
Display(cntIorn);
for(i=0;i<40;i++)
{
P2=P2&249;
delay(2);
P2=((P2&240)|15);
delay(2);
}
P2=P2&249;
delay(100);
P2=((P2&240)|15); //停車
IornColor(); //判斷鐵片黑白,設置bkAim
for(i=0;i<95;i++)
{
P2=P2&249;
delay(3);
P2=((P2&240)|15);
delay(2);
}
P2=((P2&240)|15); //停車
delay(4000); //把鐵片吸起來
EX0=0;
}
/*外部中斷1中斷程序: */
/*對霍爾開關的脈沖記數,對小車的位置進行記錄,以便對小車進行定位*/
void stpMove(void) interrupt 2
{
cntTime_Plues--;
if(Direction==0) //向上
{
if(mType==0) sY+=det_Dist;
else if(mType==2)
sY-=det_Dist;
}
else if(Direction==1) //向左
{
if(mType==0) sX+=det_Dist;
else if(mType==2)
sX-=det_Dist;
}
else if(Direction==2) //向下
{
if(mType==0) sY-=det_Dist;
else if(mType==2)
sY+=det_Dist;
}
else if(Direction==3) //向右
{
if(mType==0) sX-=det_Dist;
else if(mType==2)
sX+=det_Dist;
}
❹ 下面一段c語言代碼驅動小車實現三路循跡,停車5秒,壁障,尋光,但是下載到單片機中,驅動小車存在問題。
三個問題:
1. 你的flag沒有初始化。
2. while(flag!=1){}中的代碼有些問題。有幾處應加上{ },給你改了一下:
while(flag!=1)
{
if(a5==0)
qianjin();
else
{ if(a4==0)
zuozhuan();
else
{ if(a6==0)
youzhuan();
else
flag=1;
}
}
}
3. 為什麼不在最外層設置大循環?
❺ STC的89C52做的循跡小車L298N的電機驅動急求一個C語言的驅動程序做循跡小車的有三個黑白關電
#include<reg51.h>
#define sen_port P1
sbit SEN1=P1^0;
sbit SEN2=P1^1;
sbit EN1=P2^2;
sbit IN1=P2^3;
sbit IN2=P2^4;
sbit EN2=P2^5;
sbit IN3=P2^6;
sbit IN4=P2^7;
void delay(int n) //延時子程序
{
unsigned char i,j,k;
for(i=n;i>0;i--)
for(j=100;j>0;j--)
for(k=200;k>0;k--);
}
unsigned char sensor_inp()
{
unsigned char sensor;
sensor = sen_port;
sensor &= 0x03;
P0 = sensor;
return sensor;
}
void forward() //two motos are runing forward
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void backward() //two motos are runing backward
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
EN1=1;
EN2=1;
}
void turn_left() //left moto is runing, but right moto is brake
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
EN1=1;
EN2=1;
}
void rotate_left() //right moto is runing forward, and left moto is running backward
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
EN1=1;
EN2=1;
}
void turn_right() //right moto is runing, but left moto is brake
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void rotate_right() //left moto is running forward, and right moto is running backward
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void free() //two motos is free
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
EN1=0;
EN2=0;
}
void stop() //two motos stop
{
IN1=1;
IN2=1;
IN3=1;
IN4=1;
EN1=1;
EN2=1;
}
void main(void)
{
delay(10);
P0=0x55;
while(1)
{
// P0=P1;
// delay(100); forward();
// delay(100); stop();
delay(100); backward();
delay(100); stop();
delay(100); turn_left();
delay(100); stop();
delay(100); turn_right();
delay(100); stop();
delay(100); rotate_left();
delay(100); stop();
delay(100); rotate_right();
delay(100); stop();
delay(100); stop();
delay(20); forward();
delay(20); backward();
delay(20);
/*
*/
}
}
這個是沒有加感測器的,你試著加上傳感器改一下,有問題可以發郵件 [email protected]...
❻ 循跡小車源程序,用匯編語言寫。
主程序和中斷程序入口 *
;* *
;*************************************
;
ORG 0000H ;程序執行起始地址
LJMP START ;跳至START
ORG 0003H ;外中斷0入口
LJMP INTEX0 ;跳至INTEX0中斷服務程序
ORG 000BH ;定時器T0中斷入口
RETI ;中斷返回
ORG 0013H ;外中斷1入口
LJMP INTEX1 ;跳至INTEX1中斷服務程序
ORG 001BH ;定時器T1中斷入口
LJMP INTT1 ;跳至INTT1中斷服務程序
ORG 0023H ;串口中斷入口
RETI ;中斷返回
ORG 002BH ;定時器T2中斷入口
RETI ;中斷返回
;
;***************************
;* *
;* 初始化程序 *
;* *
;****************************
CLEARMEMIO: MOV R0, #70H ;清70H-76H顯示單元
MOV R7, #07H ;循環次數
ML0: MOV @R0, #00H ;清0
INC R0 ;下一地址
DJNZ R7, ML0 ;未完再循環
MOV TMOD,#10H ;T1為16位定時器
MOV R4,#14H ;1秒定時用(50毫秒20次)
MOV TL1,#0B0H ;50毫秒定時用初值
MOV TH1,#3CH ;
MOV 20H,#00H ;清0操作
MOV 21H,#00H ;
MOV 22H,#00H ;
MOV 23H,#00H ;
MOV 24H,#00H ;
CLR 30H ;清停車標志
SETB ET1 ;開T1中斷
SETB EX1 ;開外中斷1
SETB IT1 ;外中斷1採用邊沿觸發
SETB IT0 ;外中斷0優先順序為1(最高)
SETB EX0 ;開外中斷0
SETB EA ;開總中斷允許
SETB TR1 ;開啟定時器T1
RET ;子程序返回
;
;*************************************
;* *
;* 主 程 序 *
;* *
;*************************************
;
START: LCALL CLEARMEMIO ;上電初始化
SETB P1.6 ;選擇7.5V輸出
CLR P1.7 ;選擇7.5V輸出
SETB P3.7 ;前進狀態
CLR P3.6 ;前進狀態
CLR P1.0 ;電機供電開始
;MAIN: LCALL DISP ;LED顯示一次
LJMP MAIN ;轉MAIN循環
NOP ;PC值出錯處理
NOP
LJMP START ;重新初始化
;
;*************************************
;* *
;*外中斷0服務程序,用作跑道位置處理 *
;* 23H作跑道計數器 *
;*************************************
INTEX0: PUSH ACC ;堆棧保護
PUSH PSW ;
CLR EX0 ;關中斷
LCALL DISP ;LED顯示一次(延時抗干擾)
JB P3.2,IN0RET ;P3.2為1退出(干擾)
INC 23H ;跑道計數器加1
MOV A,23H ;數據入A
CJNE A,#06H,JUDGE1 ;不是第6道轉JUDGE1
LCALL STOP ;是第6道,停車
LJMP IN0RET ;轉中斷退出
JUDGE1: CJNE A,#03H,JUDGE2 ;不是第3道轉JUDGE2
LCALL STOPSLOW ;是第3道,變慢車
LJMP IN0RET ;轉中斷退出
JUDGE2: CJNE A,#04H,JUDGE3 ;不是第4道轉JUDGE3
LCALL FAST ;是第4道,變快車
LJMP IN0RET ;轉中斷退出
JUDGE3: CJNE A,#05H,IN0RET ;不是第5道轉INORET退出
LCALL STOPSLOW ;是第5道,變慢車
IN0RET: CLR IE0 ;清外中斷0中斷標志
POP PSW ;恢復現場
POP ACC ;
LCALL DL7MS ;延時7毫秒(抗干擾)
SETB EX0 ;開外中斷0
RETI ;中斷返回
;
;************************************
;* 慢車控制子程序 *
;************************************
STOPSLOW: CLR P1.6 ;關7.5V電源
CPL P3.6 ;反向驅動(剎車)
CPL P3.7 ;反向驅動
LCALL DS50MS ;剎車時間(可根據試車情況調整)
LCALL DS50MS ;
LCALL DS50MS ;
CPL P3.6 ;正向驅動
CPL P3.7 ;正向驅動
SETB P1.7 ;開4.3V電源
RET ;返回
;
;************************************
;* 快車控制子程序 *
;************************************
FAST: CLR P1.7 ; 關4.3V電源
SETB P1.6 ; 開7.5V電源
RET ;返回
;
;************************************
;* 停車控製程序 *
;************************************
STOP: MOV 23H,#00H ;跑道計數單元清0
CPL P3.6 ;反向驅動(剎車)
CPL P3.7 ;反向驅動(剎車)
LCALL DS50MS ;剎車時間
LCALL DS50MS ;剎車時間(可調整)
SETB P1.0 ;關電機電源
SETB PT1 ;定時器T1為高優先順序
LCALL DS10S ;停車10秒
CLR PT1 ;恢復T1為低優先順序
SETB P1.6 ;開7.5V電源(高速)
CLR P1.7 ;關4.3V
CLR P1.0 ;電機電源開
CPL 30H ;停車點位置判斷標志取反
JB 30H,STREN ;為1(中途停車)轉STREN
LCALL CLR00 ;是終點,調復0程序
STREN: RET ;返回
❼ 急求基於MSP430單片機編寫的智能循跡小車C語言程序。要求小車能按圓形軌跡和8字形軌跡行駛。
MSP430
專門的教材
MSP430
有本署名
❽ STC的89C52做的循跡小車L298N的電機驅動急求一個C語言的驅動程序做循跡小車有4個黑白關電
21ic電子技術網站上有很多循跡小車的程序,你可以參考一下。。。可以修改一下,起碼有個模板
❾ 求高手給一份c程序,用rpr220黑白循跡模塊進行小車黑白循跡,有急用的!!!~~~謝謝了啊
#include<reg52.h>
#define uchar unsigned char; //char單位元組整型數據或字元型數據
#define uint unsigned int; //int聲明基本整型數據
#define PON 0
#define POFF 1
#define ON 1
#define OFF 0
#define SPEED2 100
#define SPEED1 50
uchar ito=0;
uchar m=0;
uchar time=0;
uchar PWM1=0;
uchar PWM2=0;
sbit p=P2^0; //控制左輪
sbit q=P2^1; //控制右輪
sbit p_green=P2^2;
sbit p_red=P2^3;
sbit TCRD1=P2^4;//此處是感測器RPR220管腳位聲明
sbit TCRD2=P2^5;
sbit TCRD3=P2^6;
sbit TCRD4=P2^7;
int count1=0;//用於定時計數的兩個全局變數位聲明
int count2=0;
int x[4];
uchar table1[]={ 0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60,0xff};//0,1,2,3,4,5,6,7,8,9,關顯示,數碼管碼表,高電平有效
unsigned char code table2[]=
{0xfe,0xfd,0xfb, //11111110,11111101,11111011
0xf7,0xef,0xdf,0xbf,0x7f,}; //11110111,11101111,11011111,10111111,01111111
unsigned char dp=0x7f; //Use AND to add the decimal point/clock point.
unsigned char cp;
int s=0;
int sec=0; //定義路程,時間
char a;
int idi=0;
int j=0;
bit rup3=0;
int GAO=4000;
int T=0;//處理時間中斷3
int timeCount;//計時標志
int wheelCount;//測距標志
//int white=0;//測交叉線
void delay(int x)
{
int a;
int b;
for(a=x;a>0;a--)
for(b=125;b>0;b--);
}
void display()//顯示時間和路程
{
//顯示時間
P0=table1[x[idi]];
P1=table2[idi];
idi++;
if(idi==4)
idi=0;
delay(1);
}
void forward_turn1()//電機1前進
{
if(PWM1)
p=PON;
else
p=POFF;
}
void forward_turn2()//電機2前進
{
if(PWM2)
q=PON;
else
q=POFF;
}
void stop_turn1()//電機停止
{
P=POFF;
q=POFF;
}
void speed1(int ct,int sd)//電機1速度控制函數,其中參數 sd為生成 PWM 波
{
if(ct>=sd)
PWM1=0;
else
PWM1=1;
}
void speed2(int ct,int sd)//電機2速度控制函數,其中參數 sd為生成 PWM 波
{
if(ct>=sd)
PWM2=0;
else
PWM2=1;
}
void advance(int ct1,int sd1,int ct2,int sd2)//小車直線前進函數
{
forward_turn1();
forward_turn2();
speed1(ct1,sd1);
speed2(ct2,sd2);
}
//*************以下是方案1, 通過使兩輪一快一慢來實現轉向*********
void left_turn1(int ct1,int sd1,int ct2,int sd2)//小車左轉
{
forward_turn1();
forward_turn2();
speed1(ct1,sd1);
speed2(ct2,sd2);
}
void right_turn1(int ct1,int sd1,int ct2,int sd2)//小車右轉
{
forward_turn1();
forward_turn2();
speed1(ct1,sd1);
speed2(ct2,sd2);
}
//*************以下是方案2, 通過使兩輪一慢傳,一停轉來實現轉向***
void left_turn2(int ct1,int sd1,int ct2,int sd2)//小車左轉
{
forward_turn1();
forward_turn2();
speed1(ct1,sd1);
speed2(ct2,sd2);
}
void right_turn2(int ct1,int sd1,int ct2,int sd2)//小車右轉
{
forward_turn1();
stop_turn1();
speed1(ct1,sd1);
speed2(ct2,sd2);
}
void main()
{
p=1;
q=1;
TMOD=0x11;//中斷模式設置
TH0=(65536-1000)/256;//定時器1初始化
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;
TH1=(65536-1000)/256;//定時器2初始化
TL1=(65536-1000)%256;
EA=1;
ET1=1;
TR1=1;
while(1)
{
..............
}
}
void time0()interrupt 1
{
TH0=(65536-5000)/256;//定時 5ms
TL0=(65536-5000)%256;
count1++;
ito++;
if(ito==200)
{
ito=0;
s++;
if(s==60)
{
s=0;
m++;
if(m==60)
{
m=0;
}
x[0]=m/10;
x[1]=m%10;
}
x[2] =s/10;
x[3] =s%10;
}
display();
if(count1==SPEED2)//周期是1s
count1=0;
count2++;
if(count2==SPEED2)//周期是1s
count2=0;
}
❿ 基於51單片機智能循跡小車軟體部分的程序,用到了c語言中的什麼知識(重要知識點)
這問題有點大,不是51單片機,也不是c語言的問題。
而是一個系統的問題,是各種演算法和技巧的問題
建議您細分問題,一個一個解決,如怎麼驅動電機,怎麼驅動各種感測器等等。
而談到編程,用keil編寫程序(匯編和c語言都支持),編譯後的hex文件燒錄到單片機里就行了。