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 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); } }
|
代码的显示效果如下: