2.28

#include<reg52.h>


#define LCD1602_DB P0
sbit LCD1602_RS = P2^4;
sbit LCD1602_RW = P2^5;
sbit LCD1602_E = P2^6;


void InitLcd1602();
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str,unsigned char len);


bit flag = 0;
unsigned char code str1[] = "ZHOUTAO";
unsigned char code str2[] = "Welcome";


void main()
{
unsigned char pdata bufMove1[16+sizeof(str1)+16];
unsigned char pdata bufMove2[16+sizeof(str2)+16];
    unsigned char index = 0;
unsigned char i;


EA = 1;
TMOD = 0x01;
TH0 = 0xD8;
TL0 = 0xF0;
ET0 = 1;
TR0 = 1;


InitLcd1602();


    for(i=0;i<16;i++)
{
   bufMove1[i] = ' ';
bufMove2[i] = ' ' ;
}
for(i=0;i<(sizeof(str1)-1);i++)
{
   bufMove1[16+i] = str1[i];
bufMove2[16+i] = str2[i];
}
for(i=(16+sizeof(str1)-1);i<sizeof(bufMove1);i++)
{
   bufMove1[i] = ' ';
bufMove2[i] = ' ';
}


while(1)
{
///////////////////////////////////////静态显示
   /*InitLcd1602();
   LcdShowStr(3,0,str1);
   LcdShowStr(0,1,str2);*/
///////////////////////////////////////动态显示
        /*InitLcd1602();
LcdShowStr(3,0,str1);
LcdShowStr(0,1,str2);*/
///////////////////////////////////////滚动显示 
        if(flag == 1)
{
   flag = 0;
LcdShowStr(0,0,bufMove1+index,16);
LcdShowStr(0,1,bufMove2+index,16);
index++;
if(index >= (16+sizeof(str1)-1))
{
   index = 0;
}
}
}
}


void InterruptTimer0() interrupt 1
{
     static unsigned char cnt = 0;


     TH0 = 0xD8;
TL0 = 0xF0;
cnt++;
if(cnt > 50)
{
   cnt = 0;
flag = 1;
}
}


void LcdWaitReady()
{
    unsigned char sta;


LCD1602_DB = 0xFF;
LCD1602_RS = 0;
LCD1602_RW = 1;
do{
   LCD1602_E = 1;
sta = LCD1602_DB;
LCD1602_E = 0;
}while(sta & 0x80);
}


void LcdWriteCmd(unsigned char cmd)
{
    LcdWaitReady();
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_DB = cmd;
LCD1602_E = 1;
LCD1602_E = 0;
}


void LcdWriteDat(unsigned char dat)
{
    LcdWaitReady();
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_DB = dat;
LCD1602_E = 1;
LCD1602_E = 0;
}


void LcdSetCursor(unsigned char x,unsigned char y)
{
    unsigned char addr;


if(y == 0)
{
  addr = 0x00 + x; 
}
else
{
  addr = 0x40 + x;
}
LcdWriteCmd(addr|0x80);
}


/*void delay(unsigned char cnt)
{
    unsigned char i,j;
    for(i=0;i<255;i++)
{
       for(j=0;j<cnt;j++);
    }
}*/


void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str,unsigned char len)
{
    LcdSetCursor(x,y);
while(len--)
{
   LcdWriteDat(*str++);
//delay(100);
}
}


void InitLcd1602()
{
    LcdWriteCmd(0x38);
LcdWriteCmd(0x0C);
LcdWriteCmd(0x06);
LcdWriteCmd(0x01);
}
### 在 CentOS 7.9 上使用 RPM 安装 GLIBC 2.28 为了在 CentOS 7.9 上安装 GLIBC 2.28,需要解决依赖问题并确保系统的稳定性和兼容性。以下是具体方法及其相关依赖的下载链接。 #### 获取 GLIBC 2.28 的 RPM 包及相关依赖 由于 CentOS 7 默认提供的 GLIBC 版本较低(2.17),无法直接通过官方仓库获得更高版本的 GLIBC。因此,可以从第三方资源或自行编译获取适合的 RPM 包。以下是一些可用的下载地址: - **GLIBC 主体包** ```bash wget https://build.opensuse.org/package/show/home:manuelschneid3r:glibc/glibc?expand=1 ``` 这里提供了一个基于 OpenSUSE 构建的 GLIBC 2.28 RPM 包集合,适用于多种 Linux 发行版,包括 CentOS[^1]。 - **常见依赖项** - `glibc-common`: 提供国际化支持文件。 ```bash wget https://download-ib01.fedoraproject.org/pub/fedora/linux/releases/30/Everything/x86_64/os/Packages/g/glibc-common-2.28-10.fc30.x86_64.rpm ``` - `glibc-devel`: 开发工具链所需头文件和静态库。 ```bash wget https://download-ib01.fedoraproject.org/pub/fedora/linux/releases/30/Everything/x86_64/os/Packages/g/glibc-devel-2.28-10.fc30.x86_64.rpm ``` - `glibc-headers`: 编译器所需的系统调用接口定义。 ```bash wget https://download-ib01.fedoraproject.org/pub/fedora/linux/releases/30/Everything/x86_64/os/Packages/g/glibc-headers-2.28-10.fc30.x86_64.rpm ``` 以上链接仅为示例,请根据实际需求调整版本号或选择更可靠的镜像站点。 #### 手动安装 RPM 包 完成下载后,在终端中切换至存储 RPM 文件的目录,并依次执行以下命令以安装各组件: ```bash sudo rpm -Uvh glibc-*.rpm ``` 此过程中可能会因缺失某些深层依赖而导致失败。此时应返回上游项目页面或其他可信来源进一步定位遗漏部分并补充完整[^1]。 另外需要注意的是,强行覆盖原生发行版自带的基础运行时环境存在较大风险,可能导致已有服务异常甚至完全瘫痪。故建议仅当目标应用程序明确要求且无替代方案时才采取此类措施;或者考虑迁移到支持更新软件栈的新一代操作系统如 CentOS Stream 或 RHEL 8+ 系列产品[^3]。 --- ### 注意事项 - **验证安装效果**: 成功部署之后可通过简单脚本来检测是否达到预期目的。 ```bash strings /lib64/libc.so.6 | grep GLIBC_ ``` - **回滚机制准备**: 若后续出现问题难以快速修复,则提前规划好降级策略至关重要。比如保留原始状态快照、记录改动细节以便精确还原等手段都是不错的选择.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值