⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 全新小车.c

📁 常用经典小车程序常用经典小车程序常用经典小车程序
💻 C
字号:

/*
//    头文件   //
#pragma  OT(5,SIZE)
#include <reg52.h>
//   逻辑量
#define  TRUE         1
#define  FALSE        0
#define  ALL_1        0xFF
//    简写--数据类型   //  
#define  UCHAR  unsigned char
#define  UINT   unsigned int
//    简写--各口    //
#define	 P_MOTOR  P0           //  电机数据输出口--P1  (低电平有效)
UCHAR    *IP_MOTOR;            //  电机运行数据表 指针
UCHAR 	 data  nstp;		   //  电机运行数据表下标值
UCHAR    data  MOTOR_ndelay;   //  延时控制电机速度
#define	 P_VOICE  P2           //  语音数据输出口--P2  (低电平有效)
sbit	 P_L_LED=P1^0;    //  左转弯灯--指示输出--P2.0  (低电平有效)
sbit	 P_R_LED=P1^1;    //  右转弯灯--指示输出--P2.1  (低电平有效)
sbit	 P_WORD_PULSE=P1^2;    //  汉字脉冲信号--输出--P1.2  (低电平有效)
sbit	 P_DISTE_PULSE=P1^3;   //  行程脉冲信号--输出--P1.3  (低电平有效)
sbit	 P_TIME_PULSE=P1^4;   //  秒脉冲信号--输出--P1.4  (低电平有效)

sbit	 MODE_FLAGE=P1^7; //  无线模块工作模式 
#define  RECEIVE_MODE  0  //  MODE_FLAGE  =0 (RECEIVE_MODE)为接收
#define  SEND_MODE     1  //  MODE_FLAGE  =1 (SEND_MODE)   为发送
//   T0-延时计时-初始值(T0)  //
#define	 T0_DELAY_H	  0XEE     // 0XEE=200Hz//0XDC=100Hz//0XB8=50Hz  XTAL=11.0592MHz 定时初值(方式1-16位)
#define	 T0_DELAY_L	  0x00

#define	 DELAY_RENEW  30  // 复位(T0=50Hz,100Hz,200Hz)=>(DELAY_RENEW=8,15,30)
#define  DELAY_02s	  40  //0.2S
#define	 DELAY_05s	  100 // 依次类推
#define	 DELAY_1s	  200		
#define	 DELAY_2s	  400
#define	 DELAY_4s	  800 // 依次类推

//   T1-波特率--初始值( SMOD 0;C/T=0; 模式 2)//
#define  TIMECOM_9600  0xfd  //XTAL=11.0592MHz 波特率=9600时初值
#define  CTRLCOM_9600  0X00

//   以下是为了方便通信定义的
// 1  相关地址定义   //
#define  MASTER_ID   0x00    //  PC机地址
#define  MY_ID       0xDD    //  小车地址 221
#define  ADD_TEST    0x00    //  外加校验
//      Command        //
// 2  小车运行状态  Command 
#define   NSTEP_END           0xff  //  小车运行完指定操作反馈给PC
#define   SEND_TIME_DISTENCE  0x66  //  命令发送状态     
#define   OUT_WORD_VOICE      0x77  //  命令输出站台汉字和语音  
// 3  小车运行方向  Command &0x0f
#define   STOP       0x00      //  停车       
#define   GO_AHEAD   0x01      //  向前直行   
#define   GO_BACK    0x02      //  向后直行   
#define   GO_LEFT    0x03      //  左转停车  
#define   GO_RIGHT   0x04      //  右转停车   
UCHAR     data  	 MOTOR_where_ndelay_chang;   //  控制电机转向速度切换
// 4  小车运行速度   Command &0xf0
#define   LOW_SPEED  0x30      //  低速       
#define   MID_SPEED  0x20      //  中速    
#define   HIGH_SPEED 0x10      //  高速   
 
#define   LOW_SPEED_NDELAY   8 //   50*5ms运行1步
#define   MID_SPEED_NDELAY   5 //   50*3ms运行1步
#define   HIGH_SPEED_NDELAY  4 //   50*2ms运行1步
//*****    以上是为了方便通信定义的    **********     
// 5  自定义函数   //
void  InitDevice(void);      // 初始化  
void  GetCOM(void);          //主程序
void  Get_LED(void);	     //转弯灯查询程序

void  COM_intermit(void);    // 串口中断
void  Timer0_intermit(void); // T1中断(20ms/50Hz)
void  Delay(UINT delay);     // 延时 
UCHAR  data      n5ms;		 // 5ms基准延时计数器
UINT   data      ndelay;     // 最大延时 65536/200=327.68s

void  Send_to_PC(void);     // 发送状态数据
void  OutVOICE(void);       // 站台语音输出
void  OutWORD(void);        // 站台汉字输出
void  Outdistence_pluse(void);  	 // 里程脉冲输出
void  OutTIME_pluse(void);			 //输出时间脉冲
void  Send_COMMAND_OVER(void);       // 反馈运行完标志
void  ZW_RL_LED(UCHAR nc,UCHAR delay); // 转弯灯都闪- n为闪的次数,delay为延时既闪的快慢
void  ZW_L_LED(UCHAR nc,UCHAR delay);  // 左转弯灯闪- n为闪的次数

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -