谢谢各位巨佬回答我问题 2023-06-11 12:29 采纳率: 0%
浏览 8

msp430g2553求巨佬们帮助一下

img

img

img

img

如图各位巨佬们 我接起来就是几个大白块 我是纯才开始学我想问问各位巨佬应该怎么硬件连接一下 我是根据网上一个图连的可我不知道自己连的问题出在哪 求指点

  • 写回答

2条回答 默认 最新

  • 张小兔爱钱钱 2023-06-12 08:50
    关注

    烧程序了没有

    #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);
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 6月11日

悬赏问题

  • ¥15 请教如何关于Msg文件解析
  • ¥200 sqlite3数据库设置用户名和密码
  • ¥15 AutoDL无法使用docker install吗?
  • ¥15 cups交叉编译后移植到tina sdk的t113,只需要实现usb驱动打印机,打印pdf文件
  • ¥30 关于#wireshark#的问题:需要网络应用流量数据集需要做长度序列的实验,需要与应用产生的会话的数据包的长度,如视频类或者聊天类软件
  • ¥15 根据上述描述表示泥浆密度沿着管路的长度方向在不断变化,如何来表示泥浆密度随管路的变化(标签-matlab|关键词-流计算)
  • ¥21 matlab可以把图像数据转换为小波分析吗
  • ¥60 基于香农编码的图像压缩算法实现
  • ¥15 matlabGUI绘制一个函数与其导数的图像
  • ¥20 大数据采集用Python爬取猫眼电影数据