This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/MSP430G2553:用于 IAR Embedded Workbench 的 MSP430G2553 LCD 显示屏

Guru**** 2044430 points
Other Parts Discussed in Thread: ENERGIA
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/791431/compiler-msp430g2553-lcd-display-with-msp430g2553-for-iar-embedded-workbench

器件型号:MSP430G2553
主题中讨论的其他器件:Energia

工具/软件:TI C/C++编译器

您好!

我尝试通过读取 MSP430的 ADC 值在 LCD 上显示电池电压和电流。

通过使用 Energia IDE 和 Launchpad、我能够在 LCD 上显示并正常工作。

但我需要使用 IAR 嵌入式工作平台来显示这些值、任何用于 LCD 的示例代码和库都将有所帮助。

我使用的是 JHD162A LCD,任何与其兼容的库和驱动程序也会有所帮助。

此致、

Phanendra

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Phanendra、您好!

    由于此 LCD 显示屏不是 TI 产品、因此我们没有任何直接示例可供您用于此特定应用。

    但是、客户使用此或其他 LCD 模块的还有其他线程、这些线程可能是您参考的:

    下面 是我通过网络找到的另一个资源、它可能也会有所帮助。

    谢谢、

    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chris:

    好的、谢谢、但我需要示例代码、因为通过 Energia IDE、我能够获得所有值并集成系统。

    但是、为了实现代码隐私、我需要在 IAR 嵌入式系统上完成该操作。

    此致、

    Phanendra

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    还有一件事、我需要将 MSP430 RX 引脚上接收的数据打印到 LCD 上。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chris:

    请提供最新信息。

    我能够将 LCD 与 IAR 集成、但只能看到黑点。我正在打印字符串、但无法在 LCD 上看到任何内容。

    电平转换器或任何特定的频率。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    /*
    libLCD.h
    *
    *为 SparkFun 的 Basic 16x2字符 LCD 编写的头文件。
    *(www.sparkfun.com/.../9053)
    *应适用于在
    4位模式下使用公共* ST7066/HD44780并行接口的任何显示器。
    *要使这在8位模式下工作、只需调整
    下面的一些*引脚定义并调整一些初始化。
    *
    *创建日期:2012年10月18日
    * 作者:Stephen Bennett
    */
    
    #ifndef LIBLCD_H_
    #define LIBLCD_H_
    
    /********* \|*
    标准 MSP430包括*|\********
    /#include
    
    
    /*微控制器时钟速度-用于定时计算*/
    #define MCU_XTAL_CLK 1000000
    #define MCU_XTAL_TIME ((MCU_XTAL_CLK)/ 1000)
    
    /*将毫秒转换为时钟周期。 */
    #define _delay_milliseconds (ms)\
    __DELAY_CYCLES ((((毫秒)*(MCU_XTAL_TIME)))
    
    
    /******* \|*
    定义用于通信的端口*|目前,所有引脚都应位于同一端口
    \******* //*
    数据引脚必须位于同一端口*//#define
    LCD_DIR_DATA P2DIR
    //#define LCD_OUT_DATA P2OUT
    
    /*寄存器选择端口*/
    //#define LCD_DIR_RS P2DIR
    //#define LCD_OUT_RS P2OUT
    
    /*读/写端口*/
    //#define LCD_DIR_RW P2DIR
    //#define LCD_OUT_RW P2OUT
    
    /*启用端口*/
    //#define LCD_DIR_EN P2DIR
    //#define LCD_OUT_EN P2OUT/*********
    
    
    \|*
    定义用于通信的引脚*|\*********
    //*
    数据引脚必须是连续且升序的*/
    #define LCD_PIN_D4 Bit 2
    #define LCD_PIN_D5 BIT3
    #define LCD_PIN_D6 BIT4
    #define LCD_PIN_D7 Bit 5
    
    #define LCD_PIN_RS BIT6
    //#define LCD_PIN_RW BIT6
    #define LCD_PIN_EN BIT7
    
    #define LCD_MASK_DATA (LCD_PIN_D7 | LCD_PIN_D6 | LCD_PIN_D5 | LCD_PIN_D4)
    
    
    /*********** \|*
    定义有用的显示特性*|\*********
    /#define
    LCD_NUM_cols 16
    #define LCD_NUM_ROWS 2
    
    
    /********* \|*
    定义显示命令*|\*********
    /*
    函数集定义*/
    #define FUNC功能性 集 0x20 //必须设置为执行 FUNC功能性 Set_CMD
    #define Intfc_data_LEN 0x10 //高:8位接口|低:4位接口
    #define Two_line_DISP 0x08 //高:2行显示|低:1行显示
    #define char_font_size 0x04 //高:5x10点|低:5x8点(仅可用于单线显示)
    //函数集命令-修改为喜欢*/
    #define Function_Set_CMD (Function_Set | Two_LINE_DISP)
    
    /* Display Initialization define */
    #define DISPLAY_ON 0x08 //必须设置为执行 DISPLAY_ON_CMD
    #define LOW_DISP_ON 0x04
    #define LOCK_ON 0x02 //将光标显示在当前位置
    #define curse_blink_on 0x01 //使光标闪烁
    //显示初始化命令-修改为喜欢*/
    #define Display_ON_CMD (DISPLAY_ON | ENLOW_DISP_ON | LOSOR_ON)
    
    /*进入模式初始化定义*/
    #define entry_mode 0x04 //必须设置为执行 entry_mode_CMD
    #define Cursor INCR 0x02 //字符写入时光标增量,否则减量
    #define Display_shift_on 0x01 //根据 Cursor _INCR /*
    进入模式初始化命令移动显示-修改为喜欢*/
    #define Entry_mode_CMD (entry_mode | Cursor _INCR)
    
    /*其他命令*/
    #define CLEAR_DISP_CMD 0x01 //清除显示
    #define RET_HOME_CMD 0x02 //返回光标到左上角(0,0)/********
    
    
    \|*
    有用数据类型定义*|\********
    /#define
    命令 0
    #define 数据 1
    typedef unsigned char uint8_t;
    
    
    /********* \|*
    公共函数原型*|\********
    /
    void LCD_init (void);
    void LCD_printStr (char *文本);
    void LCD_printChar (char 字符);
    void LCD_sendCommand (char 命令);
    void LCD_setCursorPosition (uint8_t row、 uint8_t col);
    void lcd_clearScreen (void);
    
    #endif
    
    
    
    
    //
    * liblcd.c
    *
    *创建日期:2012年10月18日
    * 作者:Stephen Bennett
    */
    
    #include "lcdLib.h"
    
    
    /******** \|*
    Helper 函数原型*|\********
    /
    void lcd_sendCommand (char 命令);
    void lcd_sendByte (char byteToSend、uint8_t byteType);
    void lcd_sendNibble (char nibleToSend);
    void lcd_pulseEnablePin (void);
    
    
    /******** \|*
    公共功能*|\******
    //*------------------
    
    *\
    |*公共函数:lcd_setCursorPosition
    |*
    ||设置光标在屏幕上的位置。
    |*
    |*参数
    |*
    |***不检查行/列限制**
    |*行-基于零的行号<LCD_NUM_ROWS
    |*-基于零的列号<LCD_COL_cols
    |*
    |* return
    |*
    void
    |*
    \*--- //
    void lcd_setCursorPosition (uint8_t row、uint8_t col)
    {
    uint8_t address;
    
    //从(row、col)对构造地址*/
    if (row =0)
    {
    地址= 0;
    }
    否则
    {
    地址= 0x40;
    }
    
    地址|= col;
    
    LCD_sendCommand (0x80 |地址);
    }
    
    /*--------------- *\
    |*公共功能::LCD_clearScreen
    |*
    |*清除屏幕数据并将光标返回到初始位置(0、0)。
    ||自动将光标设置为递增。
    |*显示切换不受影响。
    |*
    |*参数
    |*
    |* void
    |*
    |* return
    |*
    void
    |*
    \*-->--------- */
    void LCD_clearScreen (void)
    {
    LCD_sendCommand (clear_DISP_CMD);
    LCD_sendCommand (RET_HOME_CMD);
    }/*---------------
    
    *\
    |*公共函数::lcd_init
    |*
    ||加电后初始化 LCD
    |*
    ||注:|*
    此例程不得在 LCD 上调用两次。
    ||当 MCU 和 LCD 的电源是独立的时,这种情况并不少见。
    |*
    |*参数
    |*
    |* void
    |*
    |* return
    |*
    void
    |*
    \*-->---------
    
    
    
    
    
    
    
    
    ~void LCD_init (void){//*设置 MSP 引脚配置并将其设为低电平*/ P2DIR |= LCD_MASK_DATA;P2DIR |= LCD_PIN_RS;P2DIR |= LCD_PIN_EN;P2DIR &=~(LCD_MASK_DATA);P2DIR &=Δ Σ LCD_PIN_RS;
    P2DIR &=~LCD_PIN_EN;
    
    //等待 LCD 预热并到达活动区域。
    *请记住、MSP 的加电速度比 LCD 快得多。
    *(Vcc 升至2.7V 以上后至少40ms)
    */
    _delay_milliseconds (80);
    
    /********* \|*
    初始化 LCD 模块*|\*********
    /*
    根据 Hitachi HD44780数据表(图24,第46页)*/*
    
    1a。 设置为4位输入-尝试三(3)次*/
    uint8_t i = 3;
    同时(i!= 0)
    {
    LCD_sendNibble (0x03);
    _delay_milliseconds (5);
    --i;
    }
    
    /* 1b。 设置为4位接口*/
    lcd_sendNibble (0x02);
    _delay_milliseconds (1);
    
    /* 1c。 设置行数、字体大小等 //
    lcd_sendCommand (function_set_cmd);
    _delay_milliseconds (1);
    
    // 2. 初始化显示
    *打开/关闭显示屏、光标打开/关闭、光标闪烁打开/关闭
    //
    lcd_sendCommand (display_ON_CMD);
    _delay_milliseconds (1);
    
    // 3. 初始化进入模式
    *文字方向、光标移动、显示移动等
    */
    lcd_sendCommand (entry_mode_cmd);
    _delay_milliseconds (1);
    }
    
    /*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *\
    |*公共函数:LCD_printStr
    |*
    ||在屏幕上打印字符串。
    |*
    |*参数
    |*
    |*文本-字符的 NULL 终止字符串
    |*
    |*返回
    |*
    |* void
    |*
    \*--------- //
    void LCD_printStr (char *文本)
    {
    char * c;
    c = text;
    
    while (c!= 0)&&(* c!= 0)
    {
    lcd_sendByte (* c、data);
    C++;
    }
    }/*--><!--kadov_tag{{</spaces>}}-->
    
    *\
    |*公共函数:LCD_printChar
    |*
    ||在屏幕上打印字符。
    |*
    |*参数
    |*
    |*字符-要打印的字符
    |*
    |*返回
    |*
    |* void
    |*
    \*-->------ */
    void LCD_printChar (char 字符)
    {
    LCD_sendByte (字符、数据);
    }/*---------------
    
    *\
    |*公共函数::lcd_sendCommand
    |*
    ||以4位模式向数据总线上的 LCD 发送命令。
    |*
    |*参数
    |*
    |*命令-发送
    |*
    |* return
    |*
    |* void
    |*
    \*------------------------------------------------------- //
    void lcd_sendCommand (char 命令){
    lcd_sendByte (命令、命令);
    }
    
    
    /****** \|*
    Helper 功能*|\******
    //*------------------
    
    *\
    |* helper 函数::lcd_sendByte
    |*
    ||在4位模式下在数据总线上发送一个字节。
    |*这需要以两个块发送数据。
    |*先是高半字节,然后是低半字节。
    |*
    |*参数
    |*
    byteToSend -要发送的单字节
    |* byteType -数据或命令
    |*
    |* return
    |*
    void
    |*
    \*------------------------------------------------------- //
    void lcd_sendByte (char byteToSend、uint8_t byteType)
    {
    //将 Reg Select 行设置为适当的模式(HIGH:data | low:command)*/
    if (byteType == command)
    {
    P2DIR &=~LCD_PIN_RS;
    }
    else //(字节=数据)
    {
    P2DIR |= LCD_PIN_RS;
    }/*
    
    在数据线路上设置高半字节(HN)*/
    LCD_sendNibod((byteToSend & 0xF0)>>4);
    
    /*在数据线路上设置低半字节(LN)*/
    LCD_sendNibod( byteToSend & 0x0F );
    }/---------------
    
    *\
    |*帮助函数:lcd_sendNibble
    |*
    |*在4位模式下在数据总线上发送半字节。
    |*
    |*参数
    |*
    byteToSend -要发送的单字节
    |*
    |* return
    |*
    void
    |*
    \*------------------------------------------------------- /void
    lcd_sendNibble (char nibbleToSend)
    {/*
    清除所有数据引脚*/
    P2DIR &=~(lcd_mask_data);
    
    /*设置半字节*/
    P2DIR |= nibbleToSend;
    
    /*现在设置 LCD 的数据线-让它读取它们*/lcd_pulseEnablePin
    (---------------------;----------------------------------------------------
    
    
    *\
    |*帮助程序函数:lcd_pulseEnablePin
    |*
    |*每当需要
    ||命令 LCD 扫描其数据总线时,必须调用此函数。
    |*
    |*参数
    |*
    |* void
    |*
    |* return
    |*
    void
    |*
    \*-->---------
    
    
    
    
    
    
    
    
    
    
    
    ~void LCD_pulseEnablePin (void){//*将 EN 位拉低*/ P2DIR &=~LCD_PIN_EN;__DELAY_CYCLES (200);//*将 EN 位拉高*/ P2DIR |= LCD_PIN_EN;__DELAY_CYCLES (200);//*再次将 EN 位拉低*/ P2DIR &=*
    
    
    
    
    
    
    
    
    * 2 * LCD_IN_IN_EN 位;**创建时间********** 2 IN_IN_IN_IN_IN_INCEN 周期(200);******
    作者:Stephen Bennett
    */
    
    #include "liblcd.h"
    #include "libmsp430.h"
    
    
    /*--------------- *\
    |*公共函数:: main
    |*
    ||主入口点到 sketch。
    |*
    |*参数
    |*
    |* void
    |*
    |* return
    |*
    void
    |*
    \*-->--------- //
    void main (void)
    {
    WDTCTL = WDTPW + WDTHOLD;//停止看门狗计时器
    
    P1DIR |= BIT6;//将 BIT6设置为输出(绿色 LED)
    P1OUT &=~BIT6; //打开绿色 LED
    
    //初始化2秒延迟的计时器->中断并返回活动模式中的代码*/
    MSP430_timerA0Init(1000);
    
    LCD_init();
    
    while (1){
    
    lcd_clearScreen();
    
    LCD_printStr ("您好...");
    LCD_setCursorPosition (1、6);
    
    _bis_SR_register (LPM3_bits + GIE);//在启用通用中断的情况下进入 LPM3
    
    LCD_printStr ("Hello World");
    
    _bis_SR_register (LPM3_bits + GIE);//启用常规中断后进入 LPM3
    }
    
    
    void timerA0InterruptHandler (void)
    {
    P1OUT ^= BIT6;//切换绿色 LED 以获得视觉提示
    }
    
    
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、phanendra、

    在尝试移植到 IAR 之前、您的项目是否在 Energia 中正常运行?  

    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Chris:

    是的
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    快速滚动您的代码、我认为您已经将 P2DIR 和 P2OUT 功能混合在一起。
    在 INIT 中设置 P2DIR 是可以的、但是当您想要写入数据时、您可能需要使用 P2OUT 来输出数据。
    注意:当 P2DIR 使能输出时、P2DIR 会设置 IO 的方向(输入= 0 /输出= 1)、而 P2OUT 会设置电平

    此致、
    Stefan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    /*
    liblcd.c
    *
    *创建时间:2012年10月18日
    * 作者:Stephen Bennett
    */
    
    #include "lcdLib.h"
    
    
    /******** \|*
    Helper 函数原型*|\********
    /
    void lcd_sendCommand (char 命令);
    void lcd_sendByte (char byteToSend、uint8_t byteType);
    void lcd_sendNibble (char nibleToSend);
    void lcd_pulseEnablePin (void);
    
    
    /******** \|*
    公共功能*|\******
    //*------------------
    
    *\
    |*公共函数:lcd_setCursorPosition
    |*
    ||设置光标在屏幕上的位置。
    |*
    |*参数
    |*
    |***不检查行/列限制**
    |*行-基于零的行号<LCD_NUM_ROWS
    |*-基于零的列号<LCD_COL_cols
    |*
    |* return
    |*
    void
    |*
    \*--- //
    void lcd_setCursorPosition (uint8_t row、uint8_t col)
    {
    uint8_t address;
    
    //从(row、col)对构造地址*/
    if (row =0)
    {
    地址= 0;
    }
    否则
    {
    地址= 0x40;
    }
    
    地址|= col;
    
    LCD_sendCommand (0x80 |地址);
    }
    
    /*--------------- *\
    |*公共功能::LCD_clearScreen
    |*
    |*清除屏幕数据并将光标返回到初始位置(0、0)。
    ||自动将光标设置为递增。
    |*显示切换不受影响。
    |*
    |*参数
    |*
    |* void
    |*
    |* return
    |*
    void
    |*
    \*-->--------- */
    void LCD_clearScreen (void)
    {
    LCD_sendCommand (clear_DISP_CMD);
    LCD_sendCommand (RET_HOME_CMD);
    }/*---------------
    
    *\
    |*公共函数::lcd_init
    |*
    ||加电后初始化 LCD
    |*
    ||注:|*
    此例程不得在 LCD 上调用两次。
    ||当 MCU 和 LCD 的电源是独立的时,这种情况并不少见。
    |*
    |*参数
    |*
    |* void
    |*
    |* return
    |*
    void
    |*
    \*-->---------
    
    
    
    
    
    
    
    ~ void LCD_init (void){//*设置 MSP 引脚配置并将其设为低电平*/ P2DIR |= LCD_MASK_DATA;P2DIR |= LCD_PIN_RS;P2DIR |= LCD_PIN_EN;P2OUT &=μ F (LCD_MASK_DATA);
    P2OUT &=μ~LCD_PIN_RS;
    P2OUT &=~LCD_PIN_EN;
    
    /*等待 LCD 预热并达到活动区域。
    *请记住、MSP 的加电速度比 LCD 快得多。
    *(Vcc 升至2.7V 以上后至少40ms)
    */
    _delay_milliseconds (80);
    
    /********* \|*
    初始化 LCD 模块*|\*********
    /*
    根据 Hitachi HD44780数据表(图24,第46页)*/*
    
    1a。 设置为4位输入-尝试三(3)次*/
    uint8_t i = 3;
    同时(i!= 0)
    {
    LCD_sendNibble (0x03);
    _delay_milliseconds (5);
    --i;
    }
    
    /* 1b。 设置为4位接口*/
    lcd_sendNibble (0x02);
    _delay_milliseconds (1);
    
    /* 1c。 设置行数、字体大小等 //
    lcd_sendCommand (function_set_cmd);
    _delay_milliseconds (1);
    
    // 2. 初始化显示
    *打开/关闭显示屏、光标打开/关闭、光标闪烁打开/关闭
    //
    lcd_sendCommand (display_ON_CMD);
    _delay_milliseconds (1);
    
    // 3. 初始化进入模式
    *文字方向、光标移动、显示移动等
    */
    lcd_sendCommand (entry_mode_cmd);
    _delay_milliseconds (1);
    }
    
    /*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *\
    |*公共函数:LCD_printStr
    |*
    ||在屏幕上打印字符串。
    |*
    |*参数
    |*
    |*文本-字符的 NULL 终止字符串
    |*
    |*返回
    |*
    |* void
    |*
    \*--------- //
    void LCD_printStr (char *文本)
    {
    char * c;
    c = text;
    
    while (c!= 0)&&(* c!= 0)
    {
    lcd_sendByte (* c、data);
    C++;
    }
    }/*--><!--kadov_tag{{</spaces>}}-->
    
    *\
    |*公共函数:LCD_printChar
    |*
    ||在屏幕上打印字符。
    |*
    |*参数
    |*
    |*字符-要打印的字符
    |*
    |*返回
    |*
    |* void
    |*
    \*-->------ */
    void LCD_printChar (char 字符)
    {
    LCD_sendByte (字符、数据);
    }/*---------------
    
    *\
    |*公共函数::lcd_sendCommand
    |*
    ||以4位模式向数据总线上的 LCD 发送命令。
    |*
    |*参数
    |*
    |*命令-发送
    |*
    |* return
    |*
    |* void
    |*
    \*------------------------------------------------------- //
    void lcd_sendCommand (char 命令){
    lcd_sendByte (命令、命令);
    }
    
    
    /****** \|*
    Helper 功能*|\******
    //*------------------
    
    *\
    |* helper 函数::lcd_sendByte
    |*
    ||在4位模式下在数据总线上发送一个字节。
    |*这需要以两个块发送数据。
    |*先是高半字节,然后是低半字节。
    |*
    |*参数
    |*
    byteToSend -要发送的单字节
    |* byteType -数据或命令
    |*
    |* return
    |*
    void
    |*
    \*------------------------------------------------------- //
    void lcd_sendByte (char byteToSend、uint8_t byteType)
    {
    //将 Reg Select 行设置为适当的模式(HIGH:data | low:command)*/
    if (byteType == command)
    {
    P2OUT &=~LCD_PIN_RS;
    }
    else //(字节=数据)
    {
    P2OUT |= LCD_PIN_RS;
    }/*
    
    在数据线路上设置高半字节(HN)*/
    LCD_sendNibod((byteToSend & 0xF0)>>4);
    
    /*在数据线路上设置低半字节(LN)*/
    LCD_sendNibod( byteToSend & 0x0F );
    }/---------------
    
    *\
    |*帮助函数:lcd_sendNibble
    |*
    |*在4位模式下在数据总线上发送半字节。
    |*
    |*参数
    |*
    byteToSend -要发送的单字节
    |*
    |* return
    |*
    void
    |*
    \*------------------------------------------------------- /void
    lcd_sendNibble (char nibbleToSend)
    {/*
    清除所有数据引脚*/
    P2OUT &=~(lcd_mask_data);
    
    /*设置半字节*/P2OUT
    |= nibbleToSend;
    
    /*现在设置 LCD 的数据线-让它读取它们*/lcd_pulseEnablePin
    (---------------------;----------------------------------------------------
    
    
    *\
    |*帮助程序函数:lcd_pulseEnablePin
    |*
    |*每当需要
    ||命令 LCD 扫描其数据总线时,必须调用此函数。
    |*
    |*参数
    |*
    |* void
    |*
    |* return
    |*
    void
    |*
    \*-->--------- //
    void LCD_pulseEnablePin (void)
    {
    //*将 EN 位拉为低电平*/
    P2OUT &=~
    
    
    
    
    
    
    
    ~LCD_PIN_EN;__DELAY_CYCLES (200);//*将 EN 位拉为高电平*/ P2OUT |= LCD_PIN_EN;__DELAY_CYCLES (200);//再次将 EN 位拉为低电平*/= P2OUT &= 3
    = LCD_BISTOP_DELAM
    
    
    = 3;= 3 p_BISTOP_DELAY = 3;//扩展器= 3 = toffer宽度= 2 

    感谢 Stefan、

    根据建议、我更改了代码、但仍然无法在屏幕上显示任何字符、只有我能够自己看到黑点。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    请验证,我被此代码卡住了。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Phanendra、您好!

    请提供更多信息、  

    您是否在 IDE 中收到任何错误代码?

    到目前为止、您尝试了哪些调试方法?

    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chris:

    代码中没有错误调试。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Chris:

    由于一些接地问题、它现在可以工作、但它没有工作。

    以下是代码片段。

    unsigned char packetBuf[PACKETLEN];
    unsigned int 电池电压;
    
    packetBuf[106]=电池 电压&0xFF;
    packetBuf[107]=(电池电压>> 8)& 0xFF; 

    我需要您的指导来显示8位值并将其通过数据库传递到 LCD。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Phanendra、

    很高兴听到您的显示屏正在工作!

    请查看以下应用报告:"使用 MSP430 MCU 和分段式 LCD 进行设计"。

    本文档应包含使用 MSP430设计段 LCD 项目时需要考虑的所有信息。  

    最棒的

    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    我需要在 LCD 上显示上述参数、因为它们是十六进制数。

    在转换期间、我能够在 LCD 16x2屏幕上看到8个零。

    请找到以下用于十六进制转换的代码片段。

    unsigned int Hexadecime_to _decimal (unsigned int value)
    {
    unsigned char a、b、c、d;
    unsigned int e、f、g、十进制;
    A=(Value&0x0F);//提取第一位
    
    b=((value>>4)&0x0F);//提取第二位
    
    C=((value>>8)&0x0F);//提取第三位
    
    D=((value>>12)&0x0F);//提取第四位
    
    
    E= A*(8>3);
    f=(b*(8<1)+e);
    G=(c*(8<5))+f;
    十进制=(d*(8<9)+g;
    
    返回十进制;
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、请指导完成项目。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Phanendra、

    您现在在屏幕上看到的是数字-正确吗?
    当前的问题是什么?

    您是否有时间查看此主题中链接的资源-示例和应用报告?

    Chris