当前位置:网站首页>(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();
#endif
Its 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){
}
}
边栏推荐
- (十八)LCD1602实验
- 微信红包封面小程序源码-后台独立版-带测评积分功能源码
- Spatial domain and frequency domain image compression of images
- zabbix 代理服务器 与 zabbix-snmp 监控
- 414. The third largest digital buckle
- 第3章:类的加载过程(类的生命周期)详解
- LeetCode刷题(十一)——顺序刷题51至55
- 插入排序与希尔排序
- Aardio - 利用customPlus库+plus构造一个多按钮组件
- GPS from getting started to giving up (XI), differential GPS
猜你喜欢
图像的spatial domain 和 frequency domain 图像压缩
CCNA Cisco network EIGRP protocol
HDR image reconstruction from a single exposure using deep CNN reading notes
如何用程序确认当前系统的存储模式?
Management background --5, sub classification
signed、unsigned关键字
Hardware development notes (10): basic process of hardware development, making a USB to RS232 module (9): create ch340g/max232 package library sop-16 and associate principle primitive devices
Should novice programmers memorize code?
软考高级(信息系统项目管理师)高频考点:项目质量管理
The SQL response is slow. What are your troubleshooting ideas?
随机推荐
Mise en place d'un environnement de développement OP - tee basé sur qemuv8
2022年6月国产数据库大事记-墨天轮
signed、unsigned关键字
GD32F4XX串口接收中断和闲时中断配置
3DMax指定面贴图
Web APIs DOM 时间对象
【sdx62】WCN685X将bdwlan.bin和bdwlan.txt相互转化操作方法
i. Mx6ull build boa server details and some of the problems encountered
Management background --2 Classification list
3DMAX assign face map
MySQL----初识MySQL
如何用程序确认当前系统的存储模式?
Mysql database basic operations DML
LeetCode 练习——剑指 Offer 26. 树的子结构
Wechat red envelope cover applet source code - background independent version - source code with evaluation points function
Powerful domestic API management tool
RESNET rs: Google takes the lead in tuning RESNET, and its performance comprehensively surpasses efficientnet series | 2021 arXiv
HDR image reconstruction from a single exposure using deep CNNs阅读札记
anaconda安装第三方包
手写ABA遇到的坑