【51单片机系列】proteus中的LCD12864液晶屏

这篇具有很好参考价值的文章主要介绍了【51单片机系列】proteus中的LCD12864液晶屏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章来源:《单片机C语言编程与Proteus仿真技术》。

点阵字符型LCD显示模块只能显示英文字符和简单的汉字,要想显示较为复杂的汉字或图形,就必须采用点阵图型LCD显示模块,比如12864点阵图型LCD显示模块。

一、 LCD12864点阵图型显示模块

12864点阵图型LCD显示模块内部控制器采用KS0108或HD61202。其引脚排列如下图所示:

【51单片机系列】proteus中的LCD12864液晶屏,51单片机,51单片机,proteus,嵌入式硬件

各引脚功能功能如下表:

引脚 符号 功能 引脚 符号 功能
1 /CS1 1=选择左边64x64点 7 RW 1=数据读取,0=数据写入
2 /CS2 1=选择右边64x64点 8 E 使能信号,负跳变有效
3 GND 9~16 DB0~DB7 数据信号
4 VCC +5V电源 17 /RST 复位,低电平有效
5 V0 显示驱动电源0~5V 18 -Vout LCD驱动负电源
6 RS 1=数据输入,0=命令输入 有些模块19、20引脚为空脚

12864点阵图型LCD内部存储器DDRAM与显示屏上的显示内容具有对应关系,使用时只需要将显示内容写入到1286412864内部显示存储器DDRAM中,就能正确显示。

12864点阵图型LCD屏横向有128个点,纵向有64个点,分为左半屏和右半屏。

DDRAM与显示屏的对应关系如下表:

/CS1=1(左半屏) /CS2=1(右半屏)
Y= 0 1 ... 62 63 0 1 ... 62 63 行号
X=0 DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
0

7
X=1 DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
8

15
... ... ... ... ... ... ... ... ... ... ... ...
X=7 DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
DB0

DB7
56

63

在12864点阵图型LCD屏上显示图形或汉字时,可以利用字模提取软件获得图形或汉字的点阵代码。

二、12864的指令

12864点阵图型LCD显示模块的指令功能比较简单,共有8条指令。

  1. 读忙标志

编码格式为:

RS R/W E D7 D6 D5 D4 D3 D2 D1 D0
0 1 1 BUSY 0 ON/OFF RESET 0 0 0 0

BUSY=1表示显示模块内部控制器忙,不能进行操作,只有BUSY=0时才允许操作。

ON/OFF=1表示显示关闭,ON/OFF=0表示显示打开。

RESET=1表示复位状态,RESET=0表示正常状态。

在BUSY和RESET状态下,除读忙标志指令外,其它指令均不对液晶显示模块产生作用。

  1. 写指令

编码格式为:

RS R/W E D7 D6 D5 D4 D3 D2 D1 D0
0 0 下降沿 指令
  1. 写数据

编码格式为:

RS R/W E D7 D6 D5 D4 D3 D2 D1 D0
1 0 下降沿 显示数据
  1. 显示开/关

编码格式为:

RS R/W D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 1 1 1 1 1 D 3E/3F

D=1表示显示RAM中的内容,D=0表示关闭显示。

  1. 显示起始行

编码格式为:

RS R/W D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 1 显示起始行(0~63)

该指令规定显示屏上起始行对应DDRAM的行地址,有规律地改变现实起始行,可以实现现实滚屏的效果。

  1. 页面地址

编码格式为:

RS R/W D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 0 1 1 1 页面(0~7)

DDRAM共64行,分8页,每页8行。

  1. 列地址

编码格式为:

RS R/W D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 1 显示列地址(0~63)

列地址计数器在每一次读/写数据后自动加1,每次操作后明确起始列的地址。设置了页面地址和列地址,就唯一确定了DDRAM中的一个单元。这样单片机就可以用读/写指令读出该单元中的内容或向该单元写进一个字节数据。

  1. 读数据

编码格式为:

RS R/W D7 D6 D5 D4 D3 D2 D1 D0
1 1 显示数据

该指令将DDRAM对应单元中的内容读出,然后列地址计数器自动加1.需要注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要求单元中的数据。

三、 12864 LCD接口应用使用示例

单片机与12864图型LCD模块之间可以采用直接方式接口,也可以采用间接方式接口。

如下图,在proteus仿真电路图中采用间接方式实现51单片机与12864图型LCD模块的接口电路。LCD模块的/CS1、/CS2、RS、R/W和E信号分别由单片机的P2.0、P2.1、P2.2、P2.3和P2.4来控制,数据信号连接到单片机的P0口。由于间接控制方式需要通过单片机的端口引脚来操作液晶模块,在编写驱动程序时要特别注意时序的配合。

【51单片机系列】proteus中的LCD12864液晶屏,51单片机,51单片机,proteus,嵌入式硬件

软件设计,判断12864是否忙,根据读忙标志指令判断,代码如下:

// 判断是否忙
void IsBusy()
{
	do
	{
		EN=0; 
		RW=1;  // 读操作
		RS=0;  // 0表示命令输入
		EN=1;  // 产生一个负跳变
		EN=0;
	}while(BUSY);  // BUSY=1时表示显示模块内部控制器忙
}

其中定义全局变量:

#define PORT	P0
sbit CS1=P2^0;
sbit CS2=P2^1;
sbit RS=P2^2;
sbit RW=P2^3;
sbit EN=P2^4;
sbit BUSY=P0^7;  // 忙标志

其它指令按照类似的方式编写。编写清屏函数,为显示做准备,首先清左半屏,打开显示;清右半屏,关闭显示。设置每个点不显示字符,即写显示数据为0x00。代码如下:

// 清屏,为显示做准备
void Ready()
{
	uint i,j;
	ClearLeft();  // 清左半屏
	WriteCom(0x3F);  // 显示开
	ClearRight();  // 清右半屏
	WriteCom(0x3F);  // 显示开
	ClearLeft();
	for(i=0;i<8;i++)
	{
		SetPage(i);  // 设置显示起始页
		SetCol(0x00);  // 设置显示起始列为第一列
		for(j=0;j<64;j++)
		{
			WriteDat(0x00);  // 设置每行的数据为00
		}
	}
	
	ClearRight();
	for(i=0;i<8;i++)
	{
		SetPage(i);
		SetCol(0x00);
		for(j=0;j<64;j++)
		{
			WriteDat(0x00);  // 设置每行的数据为00
		}
	}
}

每个汉字设置为16*16点阵大小,代码如下:

// 显示16*16的汉字,纵向取模,字节倒序
void Display(uchar *s, uchar page, uchar line)
{
	uchar i;
	SetPage(page);
	SetCol(line);
	for(i=0;i<16;i++)
	{
		WriteDat(*s);
		s++;
	}
	SetPage(page+1);
	SetCol(line);
	for(i=0;i<16;i++)
	{
		WriteDat(*s);
		s++;
	}
}

主函数中声明字符点阵数据,比如汉字“单片机”,点阵数据如下:

// 字符点阵数据
uchar code Disp[]=
{
 //单(0) 片(1) 机(2)
0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,0x48,0x4C,0x4A,0x49,0xF8,0x00,0x00,0x00,
0x10,0x10,0x13,0x12,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x13,0x10,0x10,0x00,/*"单",0*/

0x00,0x00,0x00,0xFE,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,
0x00,0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,/*"片",1*/

0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,
0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00/*"机",2*/
};

主函数中调用函数Display,如下:

void main()
{
	uchar page=0x03;
	Ready();
	ClearLeft();
	Display(Disp, page, 0);
	Display(Disp+32, page, 16);
	Display(Disp+32*2, page, 16*2);
	while(1);
}

仿真结果:

【51单片机系列】proteus中的LCD12864液晶屏,51单片机,51单片机,proteus,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-804180.html

到了这里,关于【51单片机系列】proteus中的LCD12864液晶屏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于51单片机的烟雾温度火灾报警器 LCD1602显示proteus仿真

    设计要求 设计一个简单、实用的基于单片机室内火灾报警系统(模拟机),对火灾的实时、准确监测,快速、自动报警,该系统能自动完成对布测点的火情检测即气体温度、浓度,设定一个温度,由液晶显示屏会看到温度变化,如果超过设定温度就会自动报警,报警形式有声

    2023年04月20日
    浏览(50)
  • 【51单片机Keil+Proteus8.9】控制步进电机+LCD1602显示状态

    步进电机控制 设计思路 电路设计: 选用AT89C51单片机作为电路核心部件,外加LM016L液晶显示屏作为显示,显示步进电机的Fast,Slow,Stop的三个状态 将AT89C51单片机所选引脚与LM016L控制引脚相连,再将数据通过引脚与LCD接收引脚相连。 通过AT89C51单片机P0^0和P0^2两个引脚引出两个

    2024年01月20日
    浏览(55)
  • 【51单片机系列】proteus仿真单片机的串口通信

    本文参考:https://zhuanlan.zhihu.com/p/425809292。 在proteus之外使用串口软件和单片机通信。通过在proteus设计一个单片机接收PC发送的数据,并将接收的数据发送出去,利用软件【Configure Virtual Serial Port Driver】创建一对虚拟串口,利用软件【串口助手】向单片机发送数据。 proteus仿真

    2024年01月17日
    浏览(49)
  • 218、仿真-基于51单片机步进电机正反转加减速度LCD1602显示Proteus仿真设计(程序+Proteus仿真+配套资料等)

    目录 一、硬件设计 二、设计功能 三、Proteus仿真图​编辑 四、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足

    2024年02月12日
    浏览(42)
  • 51单片机外设系列:LCD1602 的详细编程

    前言,LCD1602是一个比较常用的单片机显示外设,下面我们从它的显示原理,来分析用51单片机编程的思路。另外结尾还提供了完成的程序代码参考。 一、LCD1602的外观、结构和基本参数 引脚功能解析: 第1引脚:GND为电源地脚。 第2引脚:VCC接5V电源正极。 第3引脚:VL为液晶显

    2024年02月05日
    浏览(43)
  • 【单片机】16-LCD1602和12864和LCD9648显示器

    (1)显示器,常见显示器:电视,电脑 (2)LCD(Liquid Crystal Display),液晶显示器,原理介绍 (3)LCD应用领域:手机,电脑 (4)将来取代LCD:LED,OLED【全面屏---软性】 1.像素(分辨率) 显示单元【液晶分子】 但是实际上: 像素!=分辨率 比如:出厂时电脑的像素已经确

    2024年02月08日
    浏览(58)
  • STM32单片机三线制PT100温度采集控制系统LCD12864显示器

    功能介绍:    

    2024年02月15日
    浏览(59)
  • 51单片机——LCD1602模块

    一.LCD1602介绍 1.LCD1602 (Liquid Crystal Display )液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符。 2.显示容量:16x2个字符,每个字符为5*7点阵。 二.LCD1602接口介绍 引脚 功能 VSS 接地 VDD 电源正极(4.5v-5.5v) VO 对

    2024年02月07日
    浏览(40)
  • 51单片机入门——LCD1602

    LCD ( Liquid Crystal Display 的简称) 液晶显示器 。 LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达

    2024年02月09日
    浏览(40)
  • 51单片机LCD1602的使用

    本篇文章将为大家讲解LCD1602的使用方法。 LCD1602是一种常用的液晶显示器,它的原理是通过液晶分子的振荡来控制显示内容的。液晶分子在电场的作用下,会发生振荡,从而改变液晶分子的极性,从而控制显示内容。液晶显示器的控制电路会根据输入的信号,控制电场的强度

    2024年02月06日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包