静态数码管和LCD1602

1、51开发板数码管电路相关芯片知识

  • 74LS138译码器的作用​
    ​74LS138​​ 是一种常用的 ​​3-8 线译码器​​(3-to-8 Line Decoder),属于组合逻辑电路​​,主要用于​地址译码​或​信号选择​​。它的核心功能是将​​3位二进制输入​转换为​8个独立的输出信号​​,其中一个输出有效(低电平或高电平,取决于型号),其余输出无效。
  • 74HC245​​芯片的作用
    74HC245​​ 是一款 ​​8 位双向总线收发器​​,其核心功能是通过 ​​DIR 引脚​​ 控制数据流向(A→B 或 B→A)

2、静态数码管实现原理

在实现之前我们先来看一下原理图:

在本套51开发板当中,我们使用的是共阴极数码管公共端
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <REGX52.H>

const unsigned char Seg_Num[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void Display(unsigned char position,unsigned char Num){
switch(position){
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
default:break;
}
P0=Seg_Num[Num];
}

void main(){
Display(1,0);
while(1){

}
}

3、动态数码管显示

在了解动态数码管工作之前,我们首先要对数码管的显示进行消影。
因为如果不对P0口进行清零,那么上一次P0口赋的值就会对下一次产生影响
我们可以在Display函数当中加入最后对P0数值的清0.这个时候就会达到消影的效果了

核心代码:先延时一段时间,保证数码管维持显示一段时间,再对P0口进行消0,以防对下一次数码管显示造成影响。

1
2
Delayxms(1);
P0=0x00;

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Display(unsigned char position,unsigned char Num){
switch(position){
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
default:break;
}
P0=Seg_Num[Num];
Delayxms(1);
P0=0x00;
}

4.LCD1602调试工具

先来介绍一下LCD1602显示屏的相关信息
LCD1602命名规则:
16——表示每行显示16个字符
02——表示显示两行

LCD1602是一种字符点阵型显示模块,如下图 ,每个字符是由 5X8 的点阵组成。

LCD1602的相关调试函数:

我们可以使用51单片机进行显示实验,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <REGX52.H>
#include "LCD1602.h"

void main(){
LCD_Init();
while(1){
LCD_ShowChar(1,1,'S');
LCD_ShowString(1,2,"laozhichi");
LCD_ShowNum(1,11,12345,5);
LCD_ShowSignedNum(2,1,99,2);
LCD_ShowHexNum(2,4,0xFF,2);
LCD_ShowBinNum(2,6,0xFF,8);
}
}

代码的显示效果如下:


静态数码管和LCD1602
http://example.com/2025/05/11/静态数码管和LCD1602/
Author
John Doe
Posted on
May 11, 2025
Licensed under