#ifndef __LCD1602_H__ #define __LCD1602_H__ /** * @brief LCD1602 字符液晶显示库 * * 默认使用 8 位并口方式: * RS -> P16 * EN -> P17 * D0~D7 -> P0 * * 字符串接口区分 code 区字符串和 data 区字符串,避免在 C51 中使用泛型指针。 */ #ifndef LCD1602_RS #define LCD1602_RS P16 #endif #ifndef LCD1602_EN #define LCD1602_EN P17 #endif #ifndef LCD1602_DATA_PORT #define LCD1602_DATA_PORT P0 #endif /** * @brief 初始化 LCD1602 * @retval 无 */ void LCD1602_Init(void); /** * @brief 清屏并复位光标 * @retval 无 */ void LCD1602_Clear(void); /** * @brief 设置光标位置 * @param line 行号,范围 1~2 * @param column 列号,范围 1~16 * @retval 无 */ void LCD1602_SetCursor(unsigned char line, unsigned char column); /** * @brief 在指定位置显示一个字符 * @param line 行号,范围 1~2 * @param column 列号,范围 1~16 * @param ch 要显示的字符 * @retval 无 */ void LCD1602_ShowChar(unsigned char line, unsigned char column, char ch); /** * @brief 在指定位置显示 code 区字符串 * @param line 行号,范围 1~2 * @param column 列号,范围 1~16 * @param str code 区字符串,常用于字符串字面量 * @retval 无 */ void LCD1602_ShowString(unsigned char line, unsigned char column, const char code *str); /** * @brief 在指定位置显示 data 区字符串 * @param line 行号,范围 1~2 * @param column 列号,范围 1~16 * @param str data 区字符串 * @retval 无 */ void LCD1602_ShowDataString(unsigned char line, unsigned char column, char data *str); /** * @brief 显示无符号十进制整数 * @param line 行号,范围 1~2 * @param column 列号,范围 1~16 * @param value 要显示的数值 * @param width 最小显示位数,范围 0~5;不足时前面补 0 * @retval 无 * * width 为 0 时按自然宽度显示。 */ void LCD1602_ShowUInt(unsigned char line, unsigned char column, unsigned int value, unsigned char width); /** * @brief 显示有符号十进制整数 * @param line 行号,范围 1~2 * @param column 列号,范围 1~16 * @param value 要显示的数值 * @param width 绝对值的最小显示位数,范围 0~5 * @retval 无 * * 负数自动显示 '-';正数不显示 '+'。 */ void LCD1602_ShowInt(unsigned char line, unsigned char column, int value, unsigned char width); /** * @brief 显示十六进制整数 * @param line 行号,范围 1~2 * @param column 列号,范围 1~16 * @param value 要显示的数值 * @param width 显示位数,范围 1~4 * @retval 无 */ void LCD1602_ShowHex(unsigned char line, unsigned char column, unsigned int value, unsigned char width); /** * @brief 显示二进制整数 * @param line 行号,范围 1~2 * @param column 列号,范围 1~16 * @param value 要显示的数值 * @param width 显示位数,范围 1~16 * @retval 无 */ void LCD1602_ShowBin(unsigned char line, unsigned char column, unsigned int value, unsigned char width); /** * @brief 显示定点数 * @param line 行号,范围 1~2 * @param column 列号,范围 1~16 * @param value 放大后的整数值 * @param decimals 小数位数,最大按 4 位处理 * @retval 无 * * 示例: * LCD1602_ShowFixed(1, 1, 253, 1) 显示 25.3 * LCD1602_ShowFixed(1, 1, -1234, 2) 显示 -12.34 */ void LCD1602_ShowFixed(unsigned char line, unsigned char column, int value, unsigned char decimals); /** * @brief 从指定位置开始清空若干字符 * @param line 行号,范围 1~2 * @param column 列号,范围 1~16 * @param length 要清空的字符数量 * @retval 无 */ void LCD1602_ClearChars(unsigned char line, unsigned char column, unsigned char length); #endif