51单片机驱动1602液晶显示器的小例子

发布者:salahc1983最新更新时间:2016-06-08 来源: eefocus关键字:51单片机  驱动1602  液晶显示器 手机看文章 扫描二维码
随时随地手机看文章
首先附上1602的相关资料:

引脚功能:

1602采用标准的16脚接口,其中:
第1脚:VSS为电源地
第2脚:VCC接5V电源正极
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。
第7~14脚:D0~D7为8位双向数据端。

第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。

指令表:

 

 
指令码
功 能
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
 
清除显示
0
0
0
0
0
0
0
0
0
1
将DDRAM填满"20H",并且设定DDRAM的地址计数器(AC)到"00H"
地址归位
0
0
0
0
0
0
0
0
1
X
设定DDRAM的地址计数器(AC)到"00H",并且将游标移到开头原点位置;这个指令不改变DDRAM 的内容
显示状态开/关
0
0
0
0
0
0
1
D
C
B
[D=1: 整体显示 ON][C=1: 游标ON]
[B=1:游标位置反白允许]
进入点设定
0
0
0
0
0
0
0
1
I/D
S
指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位
游标或显示移位控制
0
0
0
0
0
1
S/C
R/L
X
X
设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的内容
功能设定
0
0
0
0
1
DL
X
RE
X
X
[DL=0/1:4/8位数据]
[RE=0/1: 基本指令操作 / 扩充指令操作]
设定CGRAM地址
0
0
0
1
AC5
AC4
AC3
AC2
AC1
AC0
设定CGRAM 地址
设定DDRAM地址
0
0
1
0
AC5
AC4
AC3
AC2
AC1
AC0
设定DDRAM 地址(显示位址)
[第一行:80H-A7H]
[第二行:C0H-E7H]
读取忙标志和地址
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值
写数据到RAM
1
0
数据
将数据D7——D0写入到内部的RAM (DDRAM/CGRAM/IRAM/GRAM)
读出RAM的值
1
1
数据
从内部RAM读取数据D7——D0(DDRAM/CGRAM/IRAM/GRAM)

 

特性:

3.3V或5V工作电压,对比度可调
内含复位电路
提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能
有80字节显示数据存储器DDRAM
内建有192个5X7点阵的字型的字符发生器CGROM
8个可由用户自定义的5X7的字符发生器CGRAM

测试电路原理图:

51单片机驱动1602液晶显示器的小例子

测试代码:

 

#include
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P3^2;     //使能端
sbit lcdrs=P3^0;	 //数据命令选择端
sbit rw=P3^1;
uchar code table[]="xian shi 1";  //输入的字符
uchar code table1[]="xian shi 2";  //输入的字符
uchar num=0;

void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
	for(y=110;y>0;y--);
}

void write_com(uchar com)//根据写时序图写出指令程序
{
	lcdrs=0;
	rw=0;
	P1=com;
	delay(5);
	lcden=1;
	delay(5);
	lcden=0;
}

void write_data(uchar date)//根据写时序图写出数据程序
{
	lcdrs=1;
 	rw=0;
	P1=date;
	delay(5);
	lcden=1;
	delay(5);
	lcden=0;
}

void init()
{
	lcden=0; //使能端为低电平
	write_com(0x38);
	/*显示模式设置  00111000  设置16*2显示  5*7点阵  8位数据接口*/
	write_com(0x0f);
	/*显示开关及光标设置   00001DCB
	D=1,开显示     D=0, 关显示
	C=1,显示光标   C=0,不显示光标
	B=1,光标闪烁   B=0,光标不闪烁*/
	write_com(0x06);//地址指针自动+1且光标+1,写字符屏幕不会移动
	write_com(0X01);
	write_com(0X80); 
}


void main()
{

	init();
	for(num=0;num<10;num++)    //输入的字符数量,修改
	{
		write_data(table[num]);
		delay(50);
	}
	write_com(0X80+0x40);
	for(num=0;num<10;num++)	//输入的字符数量,修改
	{
		write_data(table1[num]);
		delay(50);
	}
	while(1);
}


测试效果:

 

51单片机驱动1602液晶显示器的小例子

关键字:51单片机  驱动1602  液晶显示器 引用地址:51单片机驱动1602液晶显示器的小例子

上一篇:普通51单片机驱动3.5寸TFT的应用实例
下一篇:TLV5616 51单片机 驱动 程序

推荐阅读最新更新时间:2024-03-16 14:56

基于51单片机ADC0808自动数字电压表仿真数码管显示
硬件设计 该设计是基于51单片机,ADC采用TI公司的ADC0808,自动数字电压测量表,显示器采用4位数码管,测量范围为0.5~10V,精度约为0.02。 仿真图如下: 程序源码: #include reg52.h unsigned char code dispbitcode ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char dispbuf ; unsigned int i; unsigned int j; unsigned int getdata; unsigned int temp; unsigned int temp1;
[单片机]
基于<font color='red'>51单片机</font>ADC0808自动数字电压表仿真数码管显示
AT89C51单片机对直流电动机的驱动仿真加汇编语言源程序
电机驱动仿真原理图如下 单片机汇编语言源程序如下: ADC EQU 35H CLOCK BIT P2.4 ;定义ADC0808时钟位 ST BIT P2.5 EOC BIT P2.6 OE BIT P2.7 PWM BIT P3.7 ORG 00H SJMP START ORG 0BH LJMP INT_T0 START: MOV TMOD,#0
[单片机]
AT89C<font color='red'>51单片机</font>对直流电动机的<font color='red'>驱动</font>仿真加汇编语言源程序
51单片机-------流水灯(实验报告)
一、实验目的 掌握51单片机开发板的使用步骤; 掌握51单片机开发板所需软件的安装过程; 以LED流水灯实验为例子,掌握软件KEIL4的使用方法。 二、实验设备 实验仪器设备: 计算机 软件: Proteus仿真软件、KELL开发软件 三.实验任务 在单片机I/O口(P0)上依次外接八个发光二极管LED,通过程序实现LED依次闪烁显示,即不停的一亮一灭向下推移,亮,灭持续时间均为1秒。 四、实验内容及实验步骤 【注:1.项目背景 2.需求分析 3.项目内容及仿真软件(可以参考本人闪烁灯实验报告的写法link)】 4.项目内容及仿真: (1)打开Keil软件,新建一个工程,命名为“LED流水灯”; (2)选择
[单片机]
<font color='red'>51单片机</font>-------流水灯(实验报告)
51单片机的出租车计价器C51程序
已通过模拟测试 #include reg52.h unsigned char cir_num,pwm_mach,temp,distance,wait_time,price,distance; unsigned int a,t; sbit pwm_mach=P1^0; sbit key_clean=P3^0;//定义按键位置 sbit key_stop=P3^1; sbit key_cheak=P3^2; sbit key_oneway=P3^3; sbit key_doubleway=P3^4; unsigned char code led_buf ={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07
[单片机]
51单片机快速入门指南】4.4:I2C 读取HMC5883L / QMC5883L 磁力计
硬知识 摘自《HMC5883L中文规格书》、《QMC5883L Datasheet 1.0》、《QMC5883L寄存器对比及参考设置》、QMC5883L说明文档 —— yedongnan001 简介 HMC5883L 霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域。 QMC5883L QMC5883L源于霍尼韦尔的HMC5883L,是一款表面贴装的集成了信号处理电路的三轴磁性传感器,应用场景主要包括罗盘、导航、无人机、机器人和手持设备等一些高精度的场合。 性能对比 操作模式 HMC5883L 连续测量模式 连续测量模式,在客户所
[单片机]
【<font color='red'>51单片机</font>快速入门指南】4.4:I2C 读取HMC5883L / QMC5883L 磁力计
51单片机ALE、PSEN、EA、RD、WR脚的使用
使用ALE信号作为低8位地址的锁存控制信号。 以PSEN信号作为扩展程序存储器的读选通信号,在读外部ROM是PSEN是低电平有效,以实现对ROM 的读操作。 以EA信号作为内外程序存储器的选择控制信号,当其为低电平时,对ROM的读操作限定在外部的程序存储器,当其为高电平时, 对ROM的读操作是从内部存储器开始的,并可延至外部程序存储器. 由RD和WR信号作为扩展数据存储器和I/O口的读选通、写选通信号。 使用ALE信号作为低8位地址的锁存控制信号。 以PSEN信号作为扩展程序存储器的读选通信号,在读外部ROM是PSEN是低电平有效,以实现对ROM 的读操作。 以EA信号作为内外程序存储器的选择控制信号,当其为低电平时,对ROM的
[单片机]
51单片机如何扩展外部端口
我们知道 51单片机本身是没有pwm接口的,这个程序是通过软件模拟pwm.在一定的频率的方波中,调整高电平和低电平的占空比,即可实现LED灯亮度控制。           要用51产生PWM去控制LED,首先要确定PWM的周期T和占空比D,确定了这些以后,可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D*T=n*t,类似的可以求出PWM低电平时间需要多少个时间基准n'。 那么就可以编写程序,根据定的时间基准t给定时器赋值初始化,然后开启定时器,定义一个标志位flag,根据flag的状态决定输出高平还是低电平,假设定义flag=1的时候输出高电平,用一个变量去记录定时器中断的次数,每次中断就让记
[单片机]
以80C51单片机为例讲述单片机如何运行
前言 要想理解单片机是如何运行程序的,首先需要了解单片机的组成。本文以80C51单片机为例,给大家讲一讲程序在单片机中是如何运行的。 单片机的组成 8051单片机的内部硬件结构包括: 中央处理器CPU:它是单片机内部的核心部件,决定了单片机的主要功能特性,由运算器和控制器两大部分组成。 存储器:8051单片机在系统结构上采用了哈佛型,将程序和数据分别存放在两个存储器内,一个称为程序存储器,另一个为数据存储器在物理结构上分程序存储器和数据存储器,有四个物理上相互独立的存储空间,即片内ROM和片外ROM,片内RAM和片外RAM。 定时器/计数器(T/C):8051单片机内有两个16位的定时器/计数器,每个T/C既可以设置成计数方式
[单片机]
以80C<font color='red'>51单片机</font>为例讲述单片机如何运行
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved