基于51单片机LCD1602显示

您所在的位置:网站首页 液晶屏上显示数字怎么调出来 基于51单片机LCD1602显示

基于51单片机LCD1602显示

2024-07-13 14:10| 来源: 网络整理| 查看: 265

基于51单片机LCD1602显示

要在1602上显示字符,要大概明白1602液晶显示屏工作原理。 一般的液晶显示器(Liquid Crystal Display, LCD) 的主要原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面。 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。1602LCD是指显示的内容16×2,即最多只能显示32个字符。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。5X7点阵可以看做5行7列等间距分布的led灯,每一个灯相当于一个像素点,你要表达的字母或者数字都是由这些像素点组成的。只需控制灯的亮灭就可以了。 一般1602一共有16位引脚。(引脚作用如下表)

编号符号引脚作用编号符号引脚作用1VSS电源正级9D2数据口2VDD电源地10D3数据口3VO液晶显示对比度调节(即亮度需要接滑动电阻)11D4数据口4RS数据命令选择端(H\L)12D5数据口5RW读写选择端(H\L)13D6数据口6E使能端14D7数据口7D0数据口15BLA背光电源正极8D1数据口16BLK背光电源负极

明白了引脚后,就可以将引脚链接到单片机用单片机I\O口来控制每一个引脚来让1602显示字符。编程用到的主要管脚不过三个,分别为:RS(数据命令选择端),R/W(读写选择端),E(使能信号);编程便主要围绕这三个管脚展开按照时序进行初始化,写命令,写数据。基本操作如下: (1) 读状态:输入:RS=L, RW=H,E=H 输出:D0-D7=状态字。 (2) 写指令:输入:RS=L, RW=L,D0-D7=指令码,E=H,输出:无。 (3) 读数据:输入:RS=H, RW=H,E=H 输出:D0~D7=数据。 (4) 写数据:输入:RS=L,RW=H,D0-D7=数据,E=高脉冲,输出:无。

由于此次是让1602显示我们让1602显示的字符所以使用向1602写指令,写数据具体操做代码如下:

//写指令代码 void write_com(uint com){ E=0; RS=0; P0=com; delay_ms(5);//软件延时 E=1; delay_ms(5); E=0; } //写数据代码 void write_date(uint date){ E=0; RS=1; P0=date; delay_ms(5);//软件延时 E=1; delay_ms(5); E=0; }

写指令就是向1602发送设置指令,如在那一行显示,从这一行的什么位置开始,显示时是滚动显示还是静态显示。 写数据就是将我们想要显示的字符用循环的方式写入1602。 显示指令设置(具体如下表)

指令码功能0 0 1 1 1 0 0 0设置16X2显示,5X7点阵,8位数据口0 0 0 0 1 D C BD=1开显示: D=0关显示;C=1显示光标: C=0不显示光标B=1光标闪烁; B=0 光标不显示0 0 0 0 0 1 N SN=1当读或写一个字符后地址指针加1,且光标加1N=0当读或写一个字符后地址指针减1,且光标减1S=1,当写一个字符时,整屏显示左移(N=1)或右移(N=0), 以得到光标不移动而屏幕移动的效果S=0,当写一个字符时,整屏显示不移动0 0 0 1 0 0 0 0光标左移0 0 0 1 0 1 0 0光标右移0 0 0 1 1 0 0 0整屏左移,同时光标跟随移动0 0 0 1 1 1 0 0整屏右移,同时光标跟随移动

将以上所需要的指令通过写指令函数写入1602来设置1602就是1602初始化,这次我们要让1602显示一行字符,初始化代码为:

void write_init(){ E = 0; write_com(0x38);//开显示 write_com(0x0c);//开显示不显示光标 write_com(0x06);//写一个字符指针加1 write_com(0x01);//清屏 write_com(0x80);//设置数据指针起点 }

将以上设置好然后就可以用写数据将想要显示的显示在1602上了 代码如下

#include #define uint unsigned int #define uchar unsigned char sbit RS=P3^1; sbit E=P3^2; uchar code table[]="Welcome to china"; void delay(ms){ uint i,j; for(i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3