⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd1602.c

📁 用C51写的液晶1602显示字符的程序
💻 C
字号:
//最近需要用C51来写一个LCD1602的显示程序,
//本想偷懒从网上下段程序,不想好多都是用汇编写的,部分51写的还没有接线图,有些有图但是看到它的程序和图有点不想用,因为处理的有点复杂,就这样还有的程序被标明有删减,
//我晕,还是自已设计一个原理图和自已写C51程序以方便自已使用,
//现在贴出来给大家,方便大家研究和使用,做个设计参考,如发现有待改进之处,请赐教,选行谢过.
//本程序在POWERTIP PC 1602-D上跑并顺利通过.
//以下是程序:

//功能:使用LCD1602显示字符
//作者:深圳+双科
//邮箱:kgsn007@163.com
//QQ:530354776
//编写日期:2009。02。25
//
#include <reg52.h>
#include <INTRINS.H> //_nop_指令所需的头文件
#include <string.h>

#define uchar unsigned char
#define uint unsigned int //定义方便使用
#define Busy ((*r_lcd_i)&0x80) //用于检测LCD状态字中的Busy标识

/*************定义字符组*************/
code uchar Char1[]={"FeiDa Test Tools\0"};
code uchar Char2[]={" Waiting! \0"};

/*************用于对LCD不同操作的指针*************/
uchar xdata * r_lcd_d;//读LCD数据
uchar xdata * r_lcd_i;//读LCD状态
uchar xdata * w_lcd_d;//写LCD数据
uchar xdata * w_lcd_i;//写LCD指令

uchar i;

/****************LCD初始化函数****************/
void LCDInit(void) 
{
	*w_lcd_i = 0x1;
	while(Busy);
	*w_lcd_i = 0x38;
	while(Busy);
	*w_lcd_i = 0x08;
	while(Busy);
	*w_lcd_i = 0x1;
	while(Busy);
	*w_lcd_i = 0x6;
	while(Busy);
	*w_lcd_i = 0xc;
	while(Busy);
}


/***********************主函数**************************/
void main(void)
{
w_lcd_i = 0x0000;//写指令
r_lcd_i = 0x0100;//读状态
w_lcd_d = 0x0200;//写数据
r_lcd_d = 0x0300;//读数据
LCDInit(); //LCD初始化

while(1)
{
	*w_lcd_i = 0x80;//第一行的开始地址
	while(Busy);
	i = 0;
	do{
		*w_lcd_d = Char1[i];
		while(Busy);
		i++;
	}while(Char1[i]);


	*w_lcd_i = 0xa8;//第二行的开始地址,不同的屏可能会不同
	while(Busy);
	i = 0;
	do{
		*w_lcd_d = Char2[i];
		while(Busy);
		i++;
	}while(Char2[i]);

}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -