如图各位巨佬们 我接起来就是几个大白块 我是纯才开始学我想问问各位巨佬应该怎么硬件连接一下 我是根据网上一个图连的可我不知道自己连的问题出在哪 求指点
烧程序了没有
#define RS BIT0 // RS引脚定义为P1.0
#define EN BIT1 // EN引脚定义为P1.1
#define D4 BIT4 // D4引脚定义为P1.4
#define D5 BIT5 // D5引脚定义为P1.5
#define D6 BIT6 // D6引脚定义为P1.6
#define D7 BIT7 // D7引脚定义为P1.7
#define LCD_ADDR 0x27 // PCF8574的I2C地址
#define LCD_ROWS 2 // LCD1602屏幕行数
#define LCD_COLS 16 // LCD1602屏幕列数
#define LCD_CLEAR 0x01 // 清屏命令
#define LCD_HOME 0x02 // 光标回到起始位置
#define LCD_ENTRY 0x06 // 从左到右写字符,不移动光标
#define LCD_ON 0x0C // 打开显示,关闭光标
#define LCD_OFF 0x08 // 关闭显示,关闭光标
void i2c_init() {
UCB0CTL1 |= UCSWRST; // 进入软件复位状态
UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // 主模式,I2C模式,同步通讯
UCB0CTL1 = UCSSEL_2 + UCSWRST; // SMCLK时钟源,保持软件复位状态
UCB0BR0 = 20; // 时钟分频,用于产生低速I2C时钟
UCB0BR1 = 0;
P1SEL |= BIT6 + BIT7; // P1.6和P1.7设置为I2C专用引脚
P1SEL2 |= BIT6 + BIT7;
UCB0CTL1 &= ~UCSWRST; // 取消软件复位状态,启动I2C硬件
}
void lcd_send_cmd(unsigned char cmd) { // 向LCD1602发送命令函数
unsigned char data1, data2;
data1 = cmd & 0xF0; // 先送高4位数据
data2 = (cmd << 4) & 0xF0; // 再送低4位数据(数据线在D4~D7上)
i2c_start();
i2c_write_byte(LCD_ADDR); // 发送设备地址
i2c_write_byte(data1 | 0x04); // 高4位数据加RS=0、RW=0、E=1写入I/O扩展芯片
i2c_write_byte(data1); // 高4位数据加RS=0、RW=0、E=0写入I/O扩展芯片
i2c_write_byte(data2 | 0x04); // 低4位数据加RS=0、RW=0、E=1写入I/O扩展芯片
i2c_write_byte(data2); // 低4位数据加RS=0、RW=0、E=0写入I/O扩展芯片
i2c_stop();
}
void lcd_send_data(unsigned char data) { // 向LCD1602发送数据函数
unsigned char data1, data2;
data1 = data & 0xF0; // 先送高4位数据
data2 = (data << 4) & 0xF0; // 再送低4位数据(数据线在D4~D7上)
i2c_start();
i2c_write_byte(LCD_ADDR); // 发送设备地址
i2c_write_byte(data1 | 0x05); // 高4位数据加RS=1、RW=0、E=1写入I/O扩展芯片
i2c_write_byte(data1 | 0x01); // 高4位数据加RS=1、RW=0、E=0写入I/O扩展芯片
i2c_write_byte(data2 | 0x05); // 低4位数据加RS=1、RW=0、E=1写入I/O扩展芯片
i2c_write_byte(data2 | 0x01); // 低4位数据加RS=1、RW=0、E=0写入I/O扩展芯片
i2c_stop();
}
void lcd_init() { // LCD1602初始化函数
lcd_send_cmd(0x33); // 初始化
lcd_send_cmd(0x32);
lcd_send_cmd(0x28); // 设置为2行16列显示
lcd_send_cmd(LCD_ENTRY); // 显示不移动,写字符时往右移动
lcd_send_cmd(LCD_ON); // 打开显示,关闭光标
lcd_send_cmd(LCD_CLEAR); // 清屏
lcd_send_cmd(LCD_HOME); // 光标返回起始位置
}
int main() {
unsigned char text[] = "Hello world!"; // 待显示的字符串
int i;
WDTCTL = WDTPW + WDTHOLD; // 停用看门狗
i2c_init(); // 初始化I2C总线和PCF8574
lcd_init(); // 初始化LCD1602
for (i = 0; i < sizeof(text) - 1; i++) { // 向LCD1602逐个字符地写入待显示的字符串
lcd_send_data(text[i]);
}
while(1);
}
不知道你这个问题是否已经解决, 如果还没有解决的话:1).直流电机(黄色DC3V-6V)2个;
2).亚克力板;
3).万向轮;
4).用于装配的螺钉与支撑若干。