当前位置: 首页 > news >正文

实验五 LCD1602 显示字符串

#include<reg51.h>
#define uchar  unsigned char
#define uint  unsigned int#define LCD_Data P0 // - - P0 = DB0锝濪B7sbit LCD_RS=P3^5;        
sbit LCD_RW=P3^6;
sbit LCD_E=P3^4;uchar code str1[] = {"  Jia****heng   "};
uchar code str2[] = {"  159xxxx5255   "};void LCD_Write_Cmd(uchar Cmd);
void LCD_Write_Data(uchar Dat);
void LCD_Delayms(uchar xms);
void LCD_Check_Busy();
void LCD_Init();
void LCD_GoXY(uchar x,uchar y);
void LCD_Write_Str(uchar str[]);//DELAY FUNCTION
void LCD_Delayms(uchar xms)
{uchar  j;while(xms--)for(j=0;j<100;j++);}/****************** 忙检测 *********************
LCD_Data 与 0x80 进行或运算,判断 bit7 位状态若 LCD_Data 的 bit7 位是 0,则 LCD 不忙
若 LCD_Data 的 bit7 位是 1,则 LCD 忙
***********************************************/
void LCD_Check_Busy(){uchar temp;LCD_Data = 0xff;  // 十六进制:1111 1111LCD_RS = 0;  // 0 指令LCD_RW = 1;	 // 1 读do{LCD_E = 1;		  // 拉高temp = LCD_Data;  // 将 LCD 状态保存在 temp 中,用于判忙LCD_E = 0;		  // 负跳变使能 }while(temp & 0x80);  // 结果为 1,LCD 忙,继续循环;结果为 0,LCD 不忙,可以进行后面的操作
}/****************** 写命令 *********************
RS=0 指令
RW=0 写操作
E=0 开始为 0
写入指令(给单片机 P0 端口)
延时 2ms
E=1 拉高
延时5ms,写入指令有效
E=0 负跳变,指令写入LCD
***********************************************/
void LCD_Write_Cmd(uchar Cmd){LCD_Check_Busy();  // 判忙LCD_RS = 0;  // 0 指令LCD_RW = 0;  // 0 写LCD_E = 0;LCD_Data = Cmd;  // 送指令LCD_Delayms(2);LCD_E = 1;  // 拉高LCD_Delayms(5);LCD_E = 0;
}/****************** 写数据 *********************
RS=1 数据
RW=0 写操作
E=0 开始为 0
写入数据(给单片机 P3 端口)
延时 2ms
E=1 拉高
延时 7ms,写入数据有效
E=0 负跳变,数据写入LCD
***********************************************/
void LCD_Write_Data(uchar Dat){LCD_Check_Busy();  // 判忙LCD_RS = 1;  // 1 数据LCD_RW = 0;  // 0 写LCD_E = 0;LCD_Data = Dat;  // 送数据LCD_Delayms(2);LCD_E = 1;  // 拉高LCD_Delayms(7);LCD_E = 0;
}/****************** 初始化 *********************
指令1 ——清屏
指令3 ——AC加1,画面不动 
指令4 ——显示开,光标关,闪烁关 
指令6 ——8位数据接口,两行显示,5X7点阵
指令8 ——从第一行第一列开始显示
***********************************************/
void LCD_Init(){LCD_Write_Cmd(0x01); // 指令1 ——清屏LCD_Write_Cmd(0x06); // 指令3 ——AC加1,画面不动 LCD_Write_Cmd(0x0c); // 指令4 ——显示开,光标关,闪烁关 LCD_Write_Cmd(0x38); // 指令6 ——8位数据接口,两行显示,5X7点阵LCD_Write_Cmd(0x80); // 指令8 ——从第一行第一列开始显示
}
//移动光标
void LCD_GoXY(uchar x,uchar y){if(y==0x01)    LCD_Write_Cmd(x|0x80);      if(y==0x02)      LCD_Write_Cmd(x|0xc0);
}
//显示字符串
void LCD_Write_Str(uchar str[]){uchar num = 0;     while (str[num])     {             LCD_Write_Data(str[num++]); LCD_Delayms(200);}
}void main(void)
{LCD_Init();while (1)        {	LCD_GoXY(0, 1);      //第一行显示			LCD_Write_Str(str1);			LCD_GoXY(0, 2);      //第二行显示			LCD_Write_Str(str2);			}
}

相关文章:

  • Craft 是什么:腾讯 Cloud Studio 中的 CodeBuddy 提供了 Craft 功能
  • 深入解析 Spring 中的 @Value 注解(含源码级剖析 + 自定义实现)
  • 工具:下载vscode .vsix扩展文件及安装的方法
  • 关于敏感文件或备份 安全配置错误 禁止通过 URL 访问 Vue 项目打包后的 .gz 压缩文件
  • 网络结构及安全科普
  • 机器学习-08-推荐算法-协同过滤
  • SQL问题分析与诊断(8)——分析方法2
  • 常用 SQL 转义符的总结
  • 【目标检测】目标检测综述 目标检测技巧
  • 利用人工智能(AI)增强IT运营,提高IT管理效率
  • 使用若依二次开发商城系统-2
  • 【sylar-webserver】重构日志系统
  • 布尔差分法解析:从逻辑导数到电路优化
  • 链式栈和线性栈
  • 服务器在国外国内用户访问慢会影响谷歌排名吗?
  • gnome中删除application中失效的图标
  • (三十)安卓开发中的MVP模式详解
  • 四种阻抗匹配的方式
  • C#—Lazy<T> 类型(延迟初始化/懒加载模式)
  • [wifiI]CCA
  • 广西三江通报“网约车司机加价”:对网约车平台进行约谈
  • 著名作家、中国艺术研究院原常务副院长曲润海逝世
  • 印度空军计划增购40架法制“阵风”战机,此前已购买36架
  • 从南宋遗韵到海派风情,解码江南服饰美学基因
  • 海南医科大学继续开展部门正职竞聘上岗,致力营造“谁有本事谁来”
  • 北京理工大学解除宫某聘用关系,该教师被指涉嫌骚扰猥亵学生