整屏滚动设置data-tooltip的位置_lcd1602实现字幕滚动原理_lcd1602滚动显示程序

LCD1602 分为带背光和不带背光两种,基控制器大部分为 HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别。

字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。lcd1602即为1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图所示。

5ed4a4adc519883bba029650edca87ac.png

LCD1602主要技术参数:

显示容量:16&TImes;2个字符

芯片工作电压:4.5—5.5V

工作电流:2.0mA(5.0V)

模块最佳工作电压:5.0V

字符尺寸:2.95&TImes;4.35(W&TImes;H)mm

引脚功能说明

LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表所示:

2c37c4644e12d9214e803bfe723aac1f.png

第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光源正极。

第16脚:背光源负极。

138e00f2284c7d98640df05cf2eebdbb.png

注释:1602为2行16列,屏幕所能显示的地址为00H~0FH(第一行),40H~4FH(第二行),其他地址可以存储待显示的数据。这就给我们的花样显示提供了条件哈:-D

476bbb8fa2cba94075ed67fbc7b33c24.png

运行时序图

a244aea54fbc5387e828657604e3be28.png

注释:这里的读操作指的是C51读1602的总线数据,RS=0,RW=1的时候,E给高电平则可以读到显示屏的状态,这个功能一般用于读忙,除了初始化之外,每次对1602进行读写操作都要读忙检测,当总线最高为STAD7=1则为繁忙,禁止读写操作。

37bea5ca85c8570dbc10ad69f8671012.png

注释:这里指的是C51往1602写数据/命令,通过使能E的高脉冲写入,在E的下降沿就执行写入的命令或者显示写入的数据。

接下来简要介绍下1602的相关指令

2394b600c0464d22fb00d9ad590c2e40.png

常用命令:

0x80+0xdd:dd为地址,这条命令用于设置显示起点坐标

0x0c :开显示,无光标,光标不闪烁 。一般做带键盘输入的才加入光标,如计算器。常用的计量显示不显示光标。

0x06 :写一个数据,地址指针加1,由1602地址表可以看出,实际上就是设置成从左往右写数据而已。

0x38 : 设置显示模式,16x2显示 5x7点阵,8位数据接口。端口不够用时,这个命令也可以换用4位数据接口的。

0x01 :清屏。

电路连接图

829a1d7f4c94eea0e0a2e6da46d5726c.png

接下来写相关子程序:

//写入命令子函数

void LcdWriteCom(unsigned char com)

{

LCD_RS=0;

LCD_RW=0;

LCD_GPIO=com;

delay1ms(1);

LCD_E=1;

delay1ms(1);

LCD_E=0;

}

//写入数据子函数

void LcdWriteData(unsigned char dat)

{

LCD_RS=1;

LCD_RW=0;

LCD_GPIO=dat;

delay1ms(1);

LCD_E=1;

delay1ms(1);

LCD_E=0;

}

//读忙子函数

bit LCD_bz(void)

{

bit bz;

LCD_RS=0;

LCD_RW=1;

LCD_E=1;

delay1ms(10);

P0=0xff; //C51单片机读引脚要先置高电平,原因不赘述,很多资料没有这一步骤,大家格外注意下

bz=(bit)(LCD_GPIO&0x80);

LCD_E=0;

return bz;

}

//延时子程序

void delay1ms(unsigned int t)

{

unsigned int i,j; //节约内存起见,建议用uchar,由于后面要做动态显示,为了满足显示效果,这里用了uint

for(i=0;i

{

for(j=0;j《300;j++);

}

}

//初始化显示屏程序

void LcdInit()

{

LcdWriteCom(0x38);//显示模式2行16列

LcdWriteCom(0x0c);//开显示 无光标 不闪烁

LcdWriteCom(0x06);//写一个指针加1

LcdWriteCom(0x01);//清屏

LcdWriteCom(0x80);//设置(0,0)为起点

}

主程序:

//我们要把第一行做成一个16字符固定显示,第二行做成滚动显示25字符

//这里采用的是1602指针右移的基础命令而不是整屏右移命令

#include

#define LCD_GPIO P0

void LcdWriteCom(unsigned char); //写入命令子函数声明

void LcdWriteData(unsigned char);//写入数据子函数声明

void LcdInit();//显示屏初始化子函数声明

void delay1ms(unsigned int);//延时函数声明

bit LCD_bz(void);//读忙函数声明

sbit LCD_RW=P2^5;

sbit LCD_RS=P2^6;

sbit LCD_E=P2^7;

unsigned char displayDate1[]=“ I‘m Cesar ”;//一共16个字符(包括空格在内)

unsigned char displayDate2[]=“ Please add QQ775222573 ”;//一共25个字符

void main(void)

{

unsigned char i=0,j=0,n=0;

LcdInit();

LcdWriteCom(0x80);//设置坐标为第一行第一个字符

for(i=;i《16;i++)

{

LcdWriteData(displayDate1[ i]);

}

while(1)

{

if(LCD_bz())

conTInue;//读忙,结束本次循环

LcdWriteCom(0x80+0x40);//设置第二行第一个字符起点

for(j=n;j《25+n;j++)//我们没有进行整屏右移,但是我们进行了数组右移O(∩_∩)O~

{

LcdWriteData(displayDate2[j]);

}

n++;//数组的显示起点右移,这样实现了滚动

if(n》=(25-15))//当显示移到最右边时,停顿片刻,返回起点再次循环

{

n=0;

delay1ms(2000);

}

delay1ms(600);

}

}

下载到C51调试结果:

bfa5a4f0bfb4b1a0e99ff1a45dbaf941.png
cdb4bd08f49c44f7a530f13cc7ea41c6.png
### 解决方案 为了正确修改 `el-tooltip__popper` 的长度,可以按照以下方法操作: #### 方法一:通过 CSS 设置最大宽度 可以通过全局样式文件设置 `.el-tooltip__popper` 的 `max-width` 属性来控制其显示的最大宽度。这种方式适用于大多数场景。 ```css <style lang="css"> .el-tooltip__popper { font-size: 14px; max-width: 50%; /* 控制提示框的宽度 */ } </style> ``` 上述代码片段设置了工具提示框的最大宽度为父容器宽度的 50%,可以根据实际需求调该比例或固定数值[^1]。 --- #### 方法二:强制覆盖默认样式 如果发现 `max-width` 或其他属性未生效,可能是由于样式的优先级问题。此时可通过增加 `!important` 来提高优先级。 ```css <style lang="css"> .el-tooltip__popper { max-width: 300px !important; /* 使用具体像素值并加重要声明 */ } </style> ``` 此方式能够有效解决某些情况下样式被覆盖的问题[^3]。 --- #### 方法三:动态绑定类名实现自定义样式 对于更复杂的场景,可以在 Vue 组件中动态绑定类名,并针对特定类名应用样式。 HTML 结构如下: ```html <el-tooltip class="custom-tooltip" content="这是一个很长的文字提示内容"> <button>鼠标悬停查看提示</button> </el-tooltip> ``` 对应的样式定义: ```css <style lang="css"> .custom-tooltip .el-tooltip__popper { max-width: 400px; /* 自定义宽度 */ background-color: rgba(0, 0, 0, 0.8); /* 可选:更改背景颜色 */ } </style> ``` 这种方法适合需要对不同 tooltip 应用差异化样式的场景。 --- #### 注意事项 1. **全局样式的作用范围** Element UI 的 Tooltip 是渲染到 DOM 的最外层(与 app 同一层级),因此局部样式无法影响它。必须在全局样式文件中进行修改[^2]。 2. **调试技巧** 如果遇到样式不生效的情况,建议使用浏览器开发者工具检查最终渲染后的 HTML 和 CSS,确认是否有更高优先级的样式冲突。 --- ### 示例代码 以下是完的示例代码展示如何修改 `el-tooltip__popper` 的宽度: ```vue <template> <div> <el-tooltip content="这是一段非常长的内容测试是否能正常换行并且不会超出设定的宽度限制"> <button>悬浮按钮</button> </el-tooltip> </div> </template> <style lang="css"> /* 全局样式 */ .el-tooltip__popper { max-width: 300px !important; /* 强制指定宽度 */ font-size: 14px; background-color: rgba(0, 0, 0, 0.7); } /* 针对特定方向的小三角颜色 */ .el-tooltip__popper[x-placement^=top] .popper__arrow::after { border-top-color: #ccc !important; } </style> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值