当前位置:网站首页>(18) LCD1602 experiment
(18) LCD1602 experiment
2022-07-06 22:26:00 【I love notes】
In this section, we will complete the programming of another display on the MCU , Use LCD1602 LCD to display the characters we want to output , Output "I LOVE MCU" and “MCU LOVE I” These two short strings . Finish us 51 The last simple experiment of single chip microcomputer , After that, you may directly put several simple projects on it , Deepen for 51 Understanding of SCM .
About LCD1602
1602 Liquid crystal is also called LCD1602 Character LCD , It can show 2 Line character information , Each line can show 16 Characters , It is a kind of special used to display letters 、 Numbers 、 Dot matrix liquid crystal module of symbol , Each of us LCD1602 Modules may be different , But their usage is basically the same , stay LCD1602 Contains 80 Bytes of DDRAM, They are used to display characters . The corresponding relationship between the address and the screen is as follows :

Only one 0x00 To 0x0f and 0x40 To 0x4f It is used to display , The rest can only be used for storage , And about the LCD1602 When we write addresses, each address is added correspondingly 0x80 To reach the corresponding address , For example, you should be in 0x00 This address writes a value , So we need to be in 0x80 Write value , It means that every address has one 0x80 The migration , And about the LCD1602 We have some commonly used instructions to control it ,
among (1) Clear screen instruction :0x01, (2) Mode setting instruction , The instruction format is as follows :

among DB1 The meaning is :
0: After writing data, the cursor moves left 1: After writing data, the cursor moves to the right
among DB0 The meaning is :
0: The display does not move after writing data 1: After writing the data, the whole display screen moves to the right by one unit
(3) Display switch control command , The instruction format is as follows :

among DB2 The meaning is :
0: Display function off 1: Display function on
among DB1 The meaning is :
0: No cursor 1: There are cursors
among DB0 The meaning is :
0: The cursor blinks 1: The cursor does not flash
(4) display mode , Our default setting 16*2 Show ,5*7 Lattice ,8 Bit interface , Then our default instruction is 0x38
About hardware

Among them, there are three control interfaces connected with the single chip microcomputer RS,WR,EN, rest D0 To D7 It's a data port , Used to transmit data , The basic timing is as follows
Read status : Input :RS=L,R/W=H, EN = H Output :D0~D7 Status word
We can't read the corresponding data
Write instructions : Input :RS=L, R/W=L, D0~D7= Instruction code ,E= High pulse Output :D0~D7= data
Writing data : Input :RS=H,R/W=L,D0~D7= data ,E= High pulse Output : nothing
As for each reading and writing, we may delay , In fact, we don't need to be so accurate , Because most liquid crystal displays are nanosecond , And our MCU is not so fast , But in order to stabilize the delay , We will still do a short delay .
About software :
ds1602 The main functions of are as follows :
#include "reg52.h"
sbit lcd_en = P2^7;
sbit lcd_rs = P2^6;
sbit lcd_rw = P2^5;
void delay_us(unsigned int xus){
while(xus--);
}
void lcd1602_write(unsigned char dat, int flag){
lcd_en = 0;
lcd_rs = flag;
lcd_rw = 0;
P0 = dat;
delay_us(500);
lcd_en = 1;
delay_us(100);
lcd_en = 0;
}
void lcd1602_init(){
lcd1602_write(0x38, 0);
lcd1602_write(0x0c, 0);
lcd1602_write(0x06, 0);
lcd1602_write(0x01, 0);
lcd1602_write(0x80, 0);
}Its header file is as follows :
#ifndef _LCD1602_H_
#define _LCD1602_H_
#include "reg52.h"
void delay_us(unsigned int xus);
void lcd1602_write(unsigned char dat, int flag);
void lcd1602_init();
#endifIts main function is as follows :
#include <reg52.h>
#include "ds1602.h"
unsigned char table0[] = {"I LOVE MCU"};
unsigned char table1[] = {"MCU LOVE I"};
void main(){
int i;
lcd1602_init();
lcd1602_write(0x80 + 0x03 , 0);
for(i = 0; i < 10;i++){
lcd1602_write(table0[i], 1);
delay_us(100);
}
lcd1602_write(0x80 + 0x40 + 0x03, 0);
for(i = 0;i < 10;i++){
lcd1602_write(table1[i], 1);
delay_us(100);
}
while(1){
}
} 边栏推荐
- Powerful domestic API management tool
- Unity3d Learning Notes 6 - GPU instantiation (1)
- How do I write Flask's excellent debug log message to a file in production?
- 12、 Start process
- Maximum product of three numbers in question 628 of Li Kou
- Leetcode question brushing (XI) -- sequential questions brushing 51 to 55
- (十八)LCD1602实验
- About the professional ethics of programmers, let's talk about it from the way of craftsmanship and neatness
- HDR image reconstruction from a single exposure using deep CNNs阅读札记
- Wechat red envelope cover applet source code - background independent version - source code with evaluation points function
猜你喜欢

0 basic learning C language - digital tube

自制J-Flash烧录工具——Qt调用jlinkARM.dll方式

Build op-tee development environment based on qemuv8

CCNA Cisco network EIGRP protocol

Embedded common computing artifact excel, welcome to recommend skills to keep the document constantly updated and provide convenience for others
The SQL response is slow. What are your troubleshooting ideas?

2020 Bioinformatics | GraphDTA: predicting drug target binding affinity with graph neural networks

【数字IC手撕代码】Verilog无毛刺时钟切换电路|题目|原理|设计|仿真
![[线性代数] 1.3 n阶行列式](/img/6e/54f3a994fc4c2c10c1036bee6715e8.gif)
[线性代数] 1.3 n阶行列式

Aardio - 通过变量名将变量值整合到一串文本中
随机推荐
2021 geometry deep learning master Michael Bronstein long article analysis
Management background --3, modify classification
Management background --1 Create classification
中国固态氧化物燃料电池技术进展与发展前景报告(2022版)
labelimg的安装与使用
extern关键字
Barcodex (ActiveX print control) v5.3.0.80 free version
枚举与#define 宏的区别
PVL EDI 项目案例
Classification, function and usage of MySQL constraints
Oracle control file and log file management
墨西哥一架飞往美国的客机起飞后遭雷击 随后安全返航
二分图判定
zabbix 代理服务器 与 zabbix-snmp 监控
Heavyweight news | softing fg-200 has obtained China 3C explosion-proof certification to provide safety assurance for customers' on-site testing
Support multiple API versions in flask
signed、unsigned关键字
Adjustable DC power supply based on LM317
十二、启动流程
变量与“零值”的比较