手把手教学51单片机 | 1602液晶

最新更新时间:2022-04-18来源: eefocus关键字:51单片机  1602液晶 手机看文章 扫描二维码
随时随地手机看文章

像这种含有芯片的元器件,最重要的是去学习怎样学会看懂这个芯片的引脚功能,而不是去背诵这个芯片的语句,不同厂家的同款元器件还有微小的差异,所以购买这种东西的时候,要向厂家索要一份芯片手册,看着手册设计程序或是电路。


1602液晶

1602:16意思是一行能显示16个字符,02表示一共有两行

只能显示数字和字符


写数据时序图

在这里插入图片描述
在这里插入图片描述

RS 低电平就是选择数据,高电平就是选择指令

RW 高电平就是读,低电平就是写

E是使能信号,发出高低脉冲


按照时序图,先写指令(数据),延迟,给脉冲


写指令(数据)

先选择写指令,然后把P0口赋值,接下来就是按照时序图的指示写程序啦。写数据也是一样的 就不展开了。


void write_com(uchar com)//

{

lcdrs=0; // set write com

P0=com; // give value data

delay(5);

lcden=1;// Âö³å

delay(5);

lcden=0;

}


初始化程序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里显示的就是每一位矩阵的RAM地址,只显示00-0F,40-4F,在这两行右边的虽然有地址但是不显示,可以用来全屏左移,达到动态效果。


void init()

{

dula=0;//因为数码管会分压,所以关掉防止电压不够

wela=0;

lcden=0;

write_com(0x38);//初始化5*7矩阵

//0000 1DCB  D显示 C光标 B闪烁 

write_com(0x0f);

//0000 01NS  

write_com(0x06);//光标移动,数据不移动

write_com(0x80);//初始化指针位置,80H就是第一位

}


字符手册

我们可以用矩阵来写数据,根据下表

在这里插入图片描述

若是要直接写的话,用‘’隔开

write_data('A');


若是要写一串字符的话

就用矩阵


uchar code table[]="    I Love U";


但这里的矩阵外不再是{}花括号了,而是双引号


移动

在这里插入图片描述

按照芯片手册的说法此时赋予P0=0x18就是左移一次,光标也会跟着左移


其他设置

在这里插入图片描述

0x01就是清屏 0x02就是回车


代码示例

不包含移动,包涵清屏,另起一页的代码示例


#include

#define uchar unsigned char

#define uint unsigned int 


sbit lcden=P3^4;

sbit lcdrs=P3^5;

sbit dula=P2^6;

sbit wela=P2^7;

uchar code table[]="    I Love U";

uchar code table1[]="    FOREVER";

uchar code table2[]="Just a joking";


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; // set writing com

P0=com; // input value data

delay(5);

lcden=1;//给脉冲

delay(5);

lcden=0;

}


void write_data(uchar date)//写数据

{

lcdrs=1; //选择数据

P0=date; 

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void init()

{

dula=0;

wela=0;

lcden=0;

write_com(0x38);

write_com(0x0f);

write_com(0x06);

write_com(0x80);

}


void main()

{

uint time;

init();

for(time=0;time<12;time++)

{

write_data(table[time]);

delay(300);

}

write_com(0x80+0x40);

for(time=0;time<11;time++)

{

write_data(table1[time]);

delay(300);

}

delay(300);

write_com(1);

delay(300);

delay(300);

delay(300);

write_com(0x80+0x00);

for(time=0;time<13;time++)

{

write_data(table2[time]);

delay(300);

}

while(1);

}


整屏移动代码

#include

#define uchar unsigned char

#define uint unsigned int 


sbit lcden=P3^4;

sbit lcdrs=P3^5;

sbit dula=P2^6;

sbit wela=P2^7;

uchar code table[]="I Love U";

uchar code table1[]="FOREVER";

uchar code table2[]="Just a joking";


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; // set write com

P0=com; // give value data

delay(5);

lcden=1;// Âö³å

delay(5);

lcden=0;

}


void write_data(uchar date)//дÊý¾Ý

{

lcdrs=1; // set write com

P0=date; // give value data

delay(5);

lcden=1;// Âö³å

delay(5);

lcden=0;

}

void init()

{

dula=0;

wela=0;

lcden=0;

write_com(0x38);

write_com(0x0f);

write_com(0x06);

write_com(0x80+0x10);


void main()

{

uint time;

init();

for(time=0;time<8;time++)

{

write_data(table[time]);

delay(20);

}


write_com(0x80+0x50);//»»ÐÐ


for(time=0;time<7;time++)

{

write_data(table1[time]);

delay(20);

}



for(time=0;time<16;time++)

{

write_com(0x18);

delay(200);

}

while(1);

}

关键字:51单片机  1602液晶 编辑:什么鱼 引用地址:手把手教学51单片机 | 1602液晶

上一篇:手把手教学51单片机第七课 | AT24C02的I²C总线数据传输
下一篇:手把手教学51单片机 | 第四节 动态数码管,用6位数码管做一个时钟

推荐阅读

51单片机知识重点汇总一,学单片机必须要了解的知识。
主要性能:  与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、 1000次擦写周期、全静态操作:0Hz~33Hz 、三级加密程序存储器 、 32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针、掉电标识符 。一、STC89C51单片机外部引脚简介电源及时钟引脚:Vcc(40脚)、GND(20脚)、XTAL1(19脚)、XTAL2(18脚)。Vcc、GND——单片机电源引脚,不同的型号单片机接入对应电压电源,常压为+5V,低压为+3.3V。XTAL1、XTAL2——外接时钟引脚。XTAL1为片内震荡电路的输入端
发表于 2022-11-17
单片机led灯闪烁实验总结_玩转51单片机(1):点亮led灯
01新建工程与点亮LED小灯,LED小灯即发光二极管,它具有单向导电性,对于发光二极管而言,需要根据它的压降与额定电流来选择合适的限流电阻,打开Keil4软件,选择Project,New uVision Project选定工程的保存路径,并给工程命名,保存类型默认.uvproj,点击保存出现如下对话框,点击下拉按钮,选择STC MCU Database,点击OK选择STC89C52RC,点击OK选择否点击New,生成一个Text1文件点击 File, Save, 出现如下对话框,将文件命名为后缀为.c的文件,默认保存类型,点击保存点击Target 1前面的加号,在Source Group 1上右击,选择Add Files to Gr
发表于 2022-11-14
单片机led灯闪烁实验总结_玩转<font color='red'>51单片机</font>(1):点亮led灯
51单片机1602自定义字符原理及示例(”汉“、爱心及摄氏度示例)
原理设置1602屏幕的对比度的时候我们能够看到5*8的点阵,其实液晶显示的都是字符的字模(下图),而CGROM里面都是已经定义好的,只能读不能写,而RAM是可以读写的所以我们只要将我们自定义的字符字模写入对应的CGRAM中就好,CGRAM一共有8个对应的地址分别为(0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78),因为每个字模对应8行所以每写完一个字模以后要加8,按照指令写入CGRAM时需要加0x40所以对应地址就如上了,然而其实CGRAM的实际地址是0x00-0x07所以在后面写入数据的时候需要按照实际地址来写入。CGROM中的字模也是同样的原理 字模代码:1602显示模式为5*7点阵型,字模代码
发表于 2022-11-12
【<font color='red'>51单片机</font>】<font color='red'>1602</font>自定义字符原理及示例(”汉“、爱心及摄氏度示例)
51单片机1602 CGRAM、CGROM及DDRAM的作用
CGRAM : 允许用户自建字模区的空间。从CGROM表上可以看到,在表的最左边是一列可以允许用户自定义的CGRAM,从上往下看着是16个,实际只有8个字节可用。它的字符码是00000000-00000111这8个地址,表的下面还有8个字节,但因为这个CGRAM的字符码规定0-2位为地址,3位无效,4-7全为零(表上的高位)。因此CGRAM的字符码只有最后三位能用也就是8个字节了。等效为0000X111,X为无效位,最后三位为000-111共8个。CGROM : 字模存储用空间。你要显示某个ASCII字符时,要显示字符的字模就存在这里。DDRAM : 显示用RAM。直接和屏幕上的点相对应。屏幕上的一个点和DDRAM中的一个位对应。1
发表于 2022-11-12
【<font color='red'>51单片机</font>】<font color='red'>1602</font> CGRAM、CGROM及DDRAM的作用
51单片机】 数据管显示HELLO
软件准备+硬件准备软件:1.Keil软件v6.12(与书中版本保持一致方便学习,如果喜欢别的版本也可以下载别的)2. STC-ISP(将十六进制代码写到单片机上)硬件:TX-1C(书本推荐,并非本人广告)【学习单片机,你起码得有块单片机的板子吧…也不一定是自己的,借别人的也可以】HELLO.程序#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6; //申明U1锁存器的锁存端sbit wela=P2^7; //申明U2锁存器的锁存端void delayms(u
发表于 2022-11-12
【<font color='red'>51单片机</font>】 数据管显示HELLO
51单片机】数据管的消影问题
数码管的消影未消影代码#include<reg52.h>sbit wela=P2^7; //位选sbit dula=P2^6; //段选void main(){ while(1) { //一直显示 dula=1; P0=0x06; //显示1 dula=0; wela=1; P0=0xfe; //选择第一个数码管 wela=0; } }运行结果原因第一个数码管的1显示较亮但是同时伴随着另外较弱一点段位的显示,可以看出是下面位选的影响(0xfe),然后几个未选择的数码管亮了,可以看出是前面段选带来的影响(0x06->对应位
发表于 2022-11-12
【<font color='red'>51单片机</font>】数据管的消影问题

推荐帖子

芯朋微LED照明解决方案
芯朋微提供全面的LED照明解决方案,请大家参考,也希望能与我交流,谢谢。QQ:2217142156芯朋微LED照明解决方案
归来兄弟 电源技术
制作MP3可以不用单片机吗?
我原来搜了许多方案,说自己DIY一个MP3的话必须用到单片机。用来驱动VS1003将MP3文件解码为音频输出。 但是下面淘宝这个东西老板说没有用单片机就可以工作?求大神解析。 急急急http://item.taobao.com/item.htm?id=20729192634制作MP3可以不用单片机吗?
mdq123 微控制器 MCU
学习嵌入式--选择考研深造还是进入企业技术部工作学习?
本人为在校大学生,想请问各位, 想学好嵌入式是考研深造还是进入企业技术部边工作边学习? 就当前的社会形势,那个各位实在? 请各位电子行业的前辈们指点迷津,分析分析当前高校关于嵌入式教学的情况 以及现在嵌入式行业的技术情形。 在此感觉万分!学习嵌入式--选择考研深造还是进入企业技术部工作学习?
liyongzhou 嵌入式系统
片内RAM和内部RAM,请问这两个概念有区别吗?
我在资料上看到片内RAM和内部RAM,请问这两个概念有区别吗? 还有MCS-51单片机的数据存储器在物理上和逻辑上都分为两个地址空间,一个是内部数据存储区和一个外部数据存储区,这句话是什么意思,什么叫物理上和逻辑上?再者这里的内部数据存储区和一个外部数据存储区指什么?和片内RAM和内部RAM有什么联系? 谢谢!片内RAM和内部RAM,请问这两个概念有区别吗?
kangjianbo 嵌入式系统
有没有什么好的STR910系列的实验板推荐?
现在准备用LQFP80的STR910arm9~期望的功能,主要就是各种通信端口(特别是CAN),还有调试和IO口。有没有什么好的推荐?有没有什么好的STR910系列的实验板推荐?
lfc311 stm32/stm8
固态硬盘不能格式化,PE里也不行
某天笔记本电脑用的好好的突然卡死蓝屏,接着就是开机失败 然后我家里刚好没win系统 一个乌班图,一个macos一个raspi,想做个pe或者U盘镜像这三个系统都不好使。折腾两天试了各种命令行不得行 转而用mac自带的启动转换做了win10双系统,然后顺利做了win7启动盘 然后做笔记本的系统这时候发现固态不好使了。不能格式化分区改guid看似改好实则不行。mbr分区看似也好实则低格也不行。 弄了快一周了 真想用老方法解决一下固态硬盘不能格式化,PE里也不行
吾妻思萌 WindowsCE
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

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

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