51单片机驱动1602液晶显示

1602:每行16个字符,共2行,只能显示数字字符等ascII码

12864: 图形液晶 横着128个点竖着64点

彩色液晶,单片机也可以驱动,控制液晶任意位置显示任意字符

原理图:

代码如下:

cpp 复制代码
#include <reg52.h>

sbit lcden=P3^4;
sbit lcdrs=P3^5;

sbit dula=P2^6;
sbit wela=P2^7;

unsigned int num;

unsigned char code table1[]="HEllO WORLD!!!";
unsigned char code table2[]="I LIKE MCU *0*";

//延时函数
void delay(unsigned int z)
{	
	unsigned int x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}

//写命令函数
void write_com(unsigned char com)
{
	lcdrs=0;
	P0=com;
	delay(5);
	lcden=1;
	delay(5);
	lcden=0;
	
}

//写数据函数
void write_data(unsigned char data1)
{
	lcdrs=1;
	P0=data1;
	delay(5);
	lcden=1;
	delay(5);
	lcden=0;
}

//初始化函数
void init()
{
	dula=0;//关闭数码管,因数码管和液晶接口一样,防止功率不足关闭数码管
	wela=0;

	lcden=0;
	write_com(0x38);//设置16x2显示,5*7点阵,8位数据接口
	write_com(0x0f);//开显示,显示光标,光标闪烁
	write_com(0x06);//当写一个字符后数据指针加一,光标加一
	write_com(0x01);//清屏
	write_com(0x80);//设置光标指针在第一行第一位
}
void main()
{
	init();
	
	for(num=0;num<14;num++)
	{
		write_data(table1[num]);
		delay(20);
	}

	write_com(0x80+0x40);//设置光标指针在第二行第一位

	for(num=0;num<14;num++)
	{
		write_data(table2[num]);
		delay(20);
	}

	while(1);//程序终止在此处
}
相关推荐
智者知已应修善业1 小时前
【51单片机用数码管显示流水灯的种类是按钮控制数码管加一和流水灯】2022-6-14
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机
智商偏低7 小时前
单片机之helloworld
单片机·嵌入式硬件
青牛科技-Allen9 小时前
GC3910S:一款高性能双通道直流电机驱动芯片
stm32·单片机·嵌入式硬件·机器人·医疗器械·水泵、
森焱森11 小时前
无人机三轴稳定控制(2)____根据目标俯仰角,实现俯仰稳定化控制,计算出升降舵输出
c语言·单片机·算法·架构·无人机
白鱼不小白11 小时前
stm32 USART串口协议与外设(程序)——江协教程踩坑经验分享
stm32·单片机·嵌入式硬件
S,D11 小时前
MCU引脚的漏电流、灌电流、拉电流区别是什么
驱动开发·stm32·单片机·嵌入式硬件·mcu·物联网·硬件工程
芯岭技术14 小时前
PY32F002A单片机 低成本控制器解决方案,提供多种封装
单片机·嵌入式硬件
youmdt15 小时前
Arduino IDE ESP8266连接0.96寸SSD1306 IIC单色屏显示北京时间
单片机·嵌入式硬件
嘿·嘘15 小时前
第七章 STM32内部FLASH读写
stm32·单片机·嵌入式硬件
Meraki.Zhang15 小时前
【STM32实践篇】:I2C驱动编写
stm32·单片机·iic·驱动·i2c