/**************51单片机全向小车PS2手柄控制运动*****************
功能:51单片机全向小车PS2手柄控制运动。
小车上电后,
如果电池电压小于门槛值,小车进行蜂鸣器响,LED亮,这时应该给电池充电。
如果电池电压足够,按下控制板上的K1键,就可以用PS2手柄控制小车运动了。
液晶上会显示提示信息。
烧写程序时,选择单片机内部时钟,频率为22.1184M。
**************************************************************/
#include "stc15.h" //包含头文件stc15.h
#include<intrins.h> //包含头文件intrins.h
#define FOSC 22118400L //系统频率
#define BAUD 115200 //串口波特率
#define LCD_Data P5 //定义LCD数据口
#define Busy 0x80 //LCD忙
#define ADC_POWER 0x80 //将0x80宏定义成ADC_POWER
#define ADC_FLAG 0x10 //将0x10宏定义成ADC_FLAG
#define ADC_START 0x08 //将0x08宏定义成ADC_START
#define ADC_SPEEDLL 0x03 //将0x03宏定义成ADC_SPEEDLL
#define ADC_SPEEDL 0x20 //将0x20宏定义成ADC_SPEEDL
#define ADC_SPEEDH 0x40 //将0x40宏定义成ADC_SPEEDH
#define ADC_SPEEDHH 0x60 //将0x60宏定义成ADC_SPEEDHH
#define warning_voltage 7.0 //报警电压值
#define START_CMD 0x01 //开始命令
#define ASK_DAT_CMD 0x42 //获取数据命令
typedef bit BOOL; //定义BOOL变量
sbit LCD_RS = P3^5; //定义LCD的RS管脚
sbit LCD_RW = P3^6; //定义LCD的RW管脚
sbit LCD_E = P3^7; //定义LCD的E管脚
sbit LCD_D7 = P5^3; //定义LCD的D7管脚
sbit BEEP = P1^0; //定义LCD的BEEP管脚
sbit LED = P1^1; //定义LCD的LED管脚
sbit K1 = P1^4; //定义LCD的K1管脚
sbit K2 = P1^2; //定义LCD的K1管脚
sbit U5_En1 = P0^0; //定义电机驱动芯片L293D(U5)的EN1管脚
sbit U5_In1 = P0^1; //定义电机驱动芯片L293D(U5)的IN1管脚
sbit U5_In2 = P0^2; //定义电机驱动芯片L293D(U5)的IN2管脚
sbit U5_En2 = P0^3; //定义电机驱动芯片L293D(U5)的EN2管脚
sbit U5_In3 = P0^4; //定义电机驱动芯片L293D(U5)的IN3管脚
sbit U5_In4 = P0^5; //定义电机驱动芯片L293D(U5)的IN4管脚
sbit U6_En1 = P0^6; //定义电机驱动芯片L293D(U6)的EN1管脚
sbit U6_In1 = P0^7; //定义电机驱动芯片L293D(U6)的IN1管脚
sbit U6_In2 = P2^2; //定义电机驱动芯片L293D(U6)的IN2管脚
sbit U6_En2 = P2^3; //定义电机驱动芯片L293D(U6)的EN2管脚
sbit U6_In3 = P2^4; //定义电机驱动芯片L293D(U6)的IN3管脚
sbit U6_In4 = P2^5; //定义电机驱动芯片L293D(U6)的IN4管脚
sbit U7_En1 = P4^0; //定义电机驱动芯片L293D(U7)的EN1管脚
sbit U7_In1 = P4^1; //定义电机驱动芯片L293D(U7)的IN1管脚
sbit U7_In2 = P4^3; //定义电机驱动芯片L293D(U7)的IN2管脚
sbit U7_En2 = P4^4; //定义电机驱动芯片L293D(U7)的EN2管脚
sbit U7_In3 = P4^6; //定义电机驱动芯片L293D(U7)的IN3管脚
sbit U7_In4 = P4^7; //定义电机驱动芯片L293D(U7)的IN4管脚
sbit PS2_DAT = P4^2; //PS2信号接收器DAT管脚定义
sbit PS2_CMD = P4^5; //PS2信号接收器CMD管脚定义
sbit PS2_ATT = P2^7; //PS2信号接收器ATT管脚定义
sbit PS2_CLK = P2^6; //PS2信号接收器CLK管脚定义
unsigned char code start[] = {"Initialization"}; //定义LCD显示内容
unsigned char code voltage[] = {"Voltage: . V"}; //定义LCD显示内容
unsigned char code PowerLow[] = {"Power Low"}; //定义LCD显示内容
unsigned char code PressKey1[] = {"Press K1 Start"}; //定义LCD显示内容
unsigned char code Space[] = {" "}; //定义LCD显示内容(空白)
unsigned char code state[] = {"State"}; //定义LCD显示内容
unsigned char code Forward1[] = {"Forward"}; //定义LCD显示内容
unsigned char code Back1[] = {"Back"}; //定义LCD显示内容
unsigned char code Left1[] = {"Left"}; //定义LCD显示内容
unsigned char code Right1[] = {"Right"}; //定义LCD显示内容
unsigned char code LeftForward1[] = {"LeftForward"}; //定义LCD显示内容
unsigned char code RightBack1[] = {"RightBack"}; //定义LCD显示内容
unsigned char code RightForward1[] = {"RightForward"}; //定义LCD显示内容
unsigned char code LeftBack1[] = {"LeftBack"}; //定义LCD显示内容
unsigned char code LeftTurn1[] = {"LeftTurn"}; //定义LCD显示内容
unsigned char code RightTurn1[] = {"RightTurn"}; //定义LCD显示内容
unsigned char code ClockWise1[] = {"ClockWise"}; //定义LCD显示内容
unsigned char code Anticlockwise1[] = {"Anticlockwise"}; //定义LCD显示内容
unsigned char code Stop1[] = {"Stop"}; //定义LCD显示内容
unsigned char psx_buf[9]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //存储手柄的数据
void Delay5Ms(void); //延时函数
void delay(unsigned int t); //delay延时函数
void delay_us(unsigned int t); //delay_us延时函数
void delay_ms(unsigned int t); //delay_ms延时函数
void WriteDataLCD(unsigned char WDLCD); //LCD写数据函数
void WriteCommandLCD(unsigned char WCLCD,BuysC); //LCD写命令函数
unsigned char ReadDataLCD(void); //LCD读数据函数
unsigned char ReadStatusLCD(void); //LCD读状态函数
void LCDInit(void); //LCD初始化
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); //LCD显示一个字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData); //LCD显示一个字符串
void ADC_init(void); //AD初始化
unsigned char GetADCResult(unsigned char ch); //获取AD值
void LcdGpio_Init(void); //LCD的IO口初始化
void BeepGpio_Init(void); //BEEP的IO口初始化
void LedGpio_Init(void); //LED的IO口初始化
void KeyGpio_Init(void); //KEY的IO口初始化
void MotorGpio_Init(void); //电机驱动芯片的IO口初始化
void Ps2Gpio_Init(void); //PS2信号接收器的IO口初始化
void Beep_On(void); //蜂鸣器响
void Beep_Off(void); //蜂鸣器不响
void Led_On(void); //LED亮
void Led_Off(void); //LED不亮
void Voltage_Warning(void); //测量电池电压
void KeySacn(void); //按键扫描
void L293d_Init(void); //L293D管脚初始化
void ZQL_ZhenZhuan(void); //左前轮正转
void YQL_ZhenZhuan(void); //右前轮正转
void ZHL_ZhenZhuan(void); //左后轮正转
void YHL_ZhenZhuan(void); //右后轮正转
void ZQL_FanZhuan(void); //左前轮后转
void YQL_FanZhuan(void); //右前轮后转
void ZHL_FanZhuan(void); //左后轮后转
void YHL_FanZhuan(void); //右后轮后转
void ZQL_Ting(void); //左前轮停
void YQL_Ting(void); //右前轮停
void ZHL_Ting(void); //左后轮停
void YHL_Ting(void); //右后轮停
void Pwm_Moto(void); //电机PWM调速
void Forward(void); //前进运动
void Back(void); //后退运动
void Left(void); //左运动
void Right(void); //右运动
void Left_Forward(void); //左前运动
void Right_Back(void); //右后运动
void Right_Forward(void); //右前运动
void Left_Back(void); //左后运动
void Left_Turn(void); //左转运动
void Right_Turn(void); //右转运动
void ClockWise(void); //顺时针运动
void Anticlockwise(void); //逆时针运动
void Stop(void); //停止
void Psx_Init(void); //手柄初始化
unsigned char Psx_Transfer(unsigned char dat); //读取一个字节数据
void Timer_Init(void); //定时器初始化
unsigned char pwmval = 0;
没有合适的资源?快使用搜索试试~ 我知道了~
51单片机(STC15W4K56S4)麦克纳姆轮全向智能小车PS2手柄控制程序源代码.rar
共14个文件
h:2个
bak:2个
lst:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 3 下载量 163 浏览量
2021-12-11
10:27:15
上传
评论 3
收藏 91KB RAR 举报
温馨提示
该程序源代码用于51单片机(STC15W4K56S4)麦克纳姆轮全向智能小车PS2手柄控制实验。 1、源代码开发软件:keil4; 2、程序对应处理器是:STC15W4K56S4; 3、智能小车电机驱动芯片是:L293D; 4、智能小车电机为:TT直流减速电机; 5、需要用到1602液晶; 6、需要用到无线PS2遥控手柄; 该程序源代码在本人51单片机(STC15W4K56S4)麦克纳姆轮全向智能小车上亲测可用。
资源推荐
资源详情
资源评论
收起资源包目录
2、51单片机(STC15W4K56S4)麦克纳姆轮全向智能小车PS2手柄控制程序源代码.rar (14个子文件)
2、51单片机(STC15W4K56S4)麦克纳姆轮全向智能小车PS2手柄控制程序源代码
51单片机全向小车PS2手柄控制.uvopt 72KB
src
main.c 34KB
obj
inc
stc15.h 13KB
STC15Fxxxx.h 33KB
51单片机全向小车PS2手柄控制_uvopt.bak 72KB
out
51单片机全向小车PS2手柄控制.lnp 106B
51单片机全向小车PS2手柄控制.hex 12KB
51单片机全向小车PS2手柄控制 45KB
main.obj 52KB
51单片机全向小车PS2手柄控制.plg 2KB
lst
main.lst 71KB
51单片机全向小车PS2手柄控制.m51 59KB
51单片机全向小车PS2手柄控制.uvproj 13KB
51单片机全向小车PS2手柄控制_uvproj.bak 13KB
共 14 条
- 1
资源评论
- m0_683060192022-06-17用户下载后在一定时间内未进行评价,系统默认好评。
- m0_642575502023-04-22资源很实用,内容详细,值得借鉴的内容很多,感谢分享。
- m0_641275732022-04-25用户下载后在一定时间内未进行评价,系统默认好评。
嵌入式硬件与代码
- 粉丝: 492
- 资源: 582
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功