重力感应贪吃蛇(C51 MPU6050 8*8LED点阵)
本文讲述如何从无到有用C51做一个重力感应的贪吃蛇,包括元件选型、原理图PCB绘制和代码编写。
所需元件及其选型
元件 | 封装 | 数量 |
---|---|---|
89C52 | 双列直插DIP40 | 1 |
MPU6050 | 8引脚(实际只用到4个) | 1 |
8*8LED点阵屏 | 18引脚(2个起固定作用) | 1 |
74HC595 | 贴片SOP16 | 1 |
CH340 | 贴片SOP16 | 1 |
12M晶振 | HC-49S | 2 |
USB母座 | 6脚(USB-A) | 1 |
排阻10k | 0603 8P4R | 4 |
电阻10k | 贴片0603 | 2 |
电阻33R | 贴片0603 | 2 |
电阻47k | 贴片0603 | 1 |
电阻4.7k | 贴片0603 | 1 |
电容22P | 贴片0603 | 3 |
电容33P | 贴片0603 | 2 |
电容103 | 贴片0603 | 1 |
电容104 | 贴片0603 | 2 |
电解电容10u | 插件 | 1 |
电解电容470u | 插件 | 1 |
SS14肖特基二极管 | SMA | 1 |
A1SHB | SOT-23 | 1 |
贴片LED | 0603 | 1 |
轻触开关 | 6*6*5 | 1 |
按钮开关 | 8*8 | 1 |
原理图绘制
C51外围电路
//上拉电阻画得比较丑,大家意会一下。。。
复位晶振电路
USB下载电路/电源电路
实不相瞒,最难的这部分电路是从网上抄的- -
MPU6050插座电路
代码部分
驱动程序
- IIC&MPU6050
这个比较简单的,网上有很多资料,不赘述。
拿P1的0和1做IIC通信的时钟线和数据线,配置一下MPU6050的寄存器:
sbit SCL=P1^0;
sbit SDA=P1^1;
#define SMPLRT_DIV 0x19
#define CONFIG 0x1A
#define GYRO_CONFIG 0x1B
#define ACCEL_CONFIG 0x1C
#define ACCEL_XOUT_H 0x3B
#define ACCEL_XOUT_L 0x3C
#define ACCEL_YOUT_H 0x3D
#define ACCEL_YOUT_L 0x3E
#define ACCEL_ZOUT_H 0x3F
#define ACCEL_ZOUT_L 0x40
#define TEMP_OUT_H 0x41
#define TEMP_OUT_L 0x42
#define GYRO_XOUT_H 0x43
#define GYRO_XOUT_L 0x44
#define GYRO_YOUT_H 0x45
#define GYRO_YOUT_L 0x46
#define GYRO_ZOUT_H 0x47
#define GYRO_ZOUT_L 0x48
#define PWR_MGMT_1 0x6B
#define WHO_AM_I 0x75