LCD1602的简单代码

本文介绍LCD1602显示模块的基础知识,包括初步探索和使用Proteus进行仿真实验,帮助理解其工作原理和操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 LCD1602初探

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define out P0
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
void lcd_initial(void);	//LCD初始化函数
void check_busy(void);	   //检查是否忙碌函数
void write_command(uchar com);	 //写命令函数
void write_data(uchar dat);		  //写数据函数
void string(uchar ad,uchar *s);	  //显示字符串函数
void delay(uint);					//延时函数
void main(void)
	{
    lcd_initial();			 //调用初始化函数
	 while(1)
	 {
	 string(0x85,"mzf");
	 string(0xC2,"185*****5260");
	 delay(100);
	 write_command(0x01);
	 delay(100);

	 }
	}
void delay(uint j)	 //1ms的延时
{
	uchar i=250;
	for(;j>0;j--)
	{
		while(--i);
		i=249;
		while(--i);
		i=250;

	}
}

void check_busy(void)
{
	uchar dt;
	do
	{
		dt=0xff;	 //dt为变量单元,初值为0xff
		E=0;		  
		RS=0;		  //RS等于0,E=1时,才能够进行读忙碌状态
		RW=1;
		E=1;		 
		dt=out;		  //out为P0口,将P0口的状态送给dt;

	}while(dt&0x80);
		E=0;
}
void write_command(
以下是一个简单的C51单片机驱动LCD1602代码示例: ```c #include <reg52.h> #include <intrins.h> #define LCD_DATA P0 // 定义LCD数据端口 sbit LCD_RS = P2^6; // 定义RS引脚 sbit LCD_RW = P2^5; // 定义RW引脚 sbit LCD_EN = P2^7; // 定义EN引脚 void Delay_ms(unsigned int ms) { unsigned int i, j; for(i = ms; i > 0; i--) for(j = 110; j > 0; j--); } void LCD_WriteCommand(unsigned char command) { LCD_RS = 0; // 选择指令寄存器 LCD_RW = 0; // 写操作 LCD_DATA = command; // 发送命令 LCD_EN = 1; // 使能高电平 _nop_(); LCD_EN = 0; // 使能低电平 Delay_ms(2); // 等待指令执行 } void LCD_WriteData(unsigned char dat) { LCD_RS = 1; // 选择数据寄存器 LCD_RW = 0; // 写操作 LCD_DATA = dat; // 发送数据 LCD_EN = 1; // 使能高电平 _nop_(); LCD_EN = 0; // 使能低电平 Delay_ms(2); // 等待数据写入 } void LCD_Init() { LCD_WriteCommand(0x38); // 8位数据总线,2行显示,5x7点阵 LCD_WriteCommand(0x0C); // 显示开,光标关,闪烁关 LCD_WriteCommand(0x06); // 输入设置:光标右移,不移屏 LCD_WriteCommand(0x01); // 清屏 Delay_ms(2); } void LCD_DisplayString(unsigned char *str) { while(*str != '\0') { LCD_WriteData(*str++); } } void main() { LCD_Init(); LCD_WriteCommand(0x80); // 设置光标到第一行第一个位置 LCD_DisplayString("Hello, C51!"); LCD_WriteCommand(0xC0); // 设置光标到第二行第一个位置 LCD_DisplayString("LCD1602 Test"); while(1); } ``` 这段代码实现了以下功能: 1. 定义了LCD1602的引脚连接。 2. 实现了延时函数Delay_ms。 3. 实现了LCD_WriteCommand和LCD_WriteData函数,用于向LCD发送命令和数据。 4. 实现了LCD_Init函数,用于初始化LCD。 5. 实现了LCD_DisplayString函数,用于显示字符串。 6. 在main函数中,首先初始化LCD,然后显示两行文字:"Hello, C51!" 和 "LCD1602 Test"。 使用这段代码时,请确保: 1. 确认LCD1602的引脚与代码中定义的引脚连接一致。 2. 根据实际情况调整延时函数Delay_ms中的参数,以适应不同的晶振频率。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值