目录
1、单片机整体模块
单片机使用的是TTL电平(一种电平的规范),规定为0V为低电平,5V为高电平;
字母上有一横,意为低电平有效。
单片机上电时,所有I/O口默认为高电平。
单片机I/O口连接的模块(重复I/O口在同一时间只能实现一个功能):
(1)P0.0~P0.7:数码管、外接显示屏LCD1602
(2)P1.0~P1.7:矩阵键盘
(3)P2.0~P2.7:LED模块的8个LED灯
P2.2~P2.4:138译码器选择位;
P2.5~P2.7:外接显示屏LCD1602
(4)P3.0~P3.3:四个独立按键K1~K4
2、 LED模块
上图左边8个口连接到单片机的P2.0口~P2.7口, 右边VCC是指电源;
VCC左边的蓝色方框是指电阻,右上角1K指1000Ω,用于保护电路,防止超载;
中间绿色的为LED二极管,当P2.0口为低电平时,则对应电路上的LED灯D1亮;若为高电平,则对应电路上的LED灯D1灭,其他灯同理。
单片机上电阻的读数方式
3、独立按键模块
右边接地,左边四个口分别连接到单片机的P3.0~P3.3;
要注意RXD与TXD的顺序与上面不一致。K1对应P3.1,K2对应P3.0,K3对应P3.2,K4对应P3.3
因为单片机上电时,I/O默认为高电平,所有按键没有按下时,则I/O口为高电平;按键按下时,I/O变为低电平。
4、数码管模块
(1)138译码器
~:有上划线,代表低电平有效,如果没有上划线,表示高电平有效。
开发板上接的是74HC138,右侧LED1~LED8接到了数码管的公共端,通过138译码器,能够使由左侧P22、P23、P24三个端口来控制选择右边的8个端口LED1~LED8。
例:当C、B、A输入为000时,输出Y0低电平有效,其他无效,即输出LED8~LED1为1111 1110。
C | B | A | 输出(上面一横代表低电平有效) |
0 | 0 | 0 | Y0(1111 1110 ) |
0 | 0 | 1 | Y1(1111 1101) |
0 | 1 | 0 | Y2(1111 1011) |
0 | 1 | 1 | Y3(1111 0111) |
1 | 0 | 0 | Y4(1110 1111) |
1 | 0 | 1 | Y5(1101 1111) |
1 | 1 | 0 | Y6(1011 1111) |
1 | 1 | 1 | Y7(0111 1111) |
左下角G1、G2A和G2B为使能端,当G1接VCC,G2A和G2B接地,138译码器才会工作。
89C52RC单片机采用的是共阴极数码管,右上角COM指公共端,所以如果想点亮第三个数码管,首先需要给LED1~LED8赋值1101 1111,这样第三个数码管就被选中了,然后给第三个数码管数据,需要给数码管下面的接口输入阳码(1为亮,0为灭)——如想让数码管显示1,需要输入 0110 0000。
74HC245为双向数据缓冲器,右上角VDD是电源接VCC,OE为使能端口,低电平有效,接地时芯片才开始工作,左下角GND为接地。
左侧A0和右侧B0为一 一对应的关系,左上角DIR为控制数据方向端口,如果DIR接高电平是将左侧数据A0~A8送到右侧B0~B8,如果DIR接低电平,是将右侧数据B0~B8送到左侧A0~A8,由于在电路板上LE始终与VCC连接,因此这里74HC245的作用是将左侧数据A0~A8送到右侧B0~B8。
由于数码管为共阴极,给数码管下面接口输入阳码时,LED才亮,但是直接将P0~P7的高电平输入到数码管时,89C52RC单片机的I/O口是弱上拉类型,单片机高电平驱动能力有限,输出的最大电流不能太大,而低电平驱动能力更强一些。因此通过从P0~P7的数据,经过74HC245,就会使输入数码管的电流更小,这样驱动能力会更强一些。
5、LCD1602模块
通过调用LCD1602调试程序,使数据显示在LCD1602液晶屏上。
6、矩阵按键模块
由独立按键模块可知,当P1.7口接地时,通过检测P1.0~P1.3口是否为低电平,来判断按键是否被按下。
逐行扫描,就是通过给P1.4~P1.7哪一个口设置低电平,来表示扫描哪一行,通过检测P1.0~P1.3哪一个口为低电平,来判断是哪一个按键被按下,再通过单片机快速的读取输入扫描,就能最终实现所有按键同时检测的效果。
由于单片机的自身局限性,P1.5口逐行扫描时会和其它引脚冲突,会导致蜂鸣器一直响,因此在这里我们用逐列扫描,原理和逐行扫描相同。通过给P1.0~P1.3哪一个口设置低电平,来表示扫描哪一行,通过检测P1.4~P1.7哪一个口为低电平,来判断是哪一个按键被按下。
7、串口通信模块
上面电路图的功能是将51单片机中的UART串口(TXD与RXD)与电脑的USB串口互相传输数据。
8、LED点阵屏模块
上图与开发板LED点阵屏引脚对应关系如下:
通过P0.0~P0.7来控制LED点阵屏的列;
通过D0~D7来控制LED点阵屏的横,D0~D7连接在74HC595移位寄存器上。
74HC595是串行输入,并行输出的移位寄存器,可用3根线输入串行数据,8根线输出并行数据,多片级联后,可输出16位、24位、32位等,常用于I/O口扩展。
:输出使能位,如果给低电平给,则可以输出D0~D7。
(VCC):串行清零端
RCLK(P3.5):寄存器时钟
(P3.6):串行时钟
SER(P3.4):串行数据
QH':用来多片级联(多个74HC595移位寄存器相连)
左边竖着的为8位移位寄存器,右边竖着的为输出缓存。
首先由SER串行输入数据,从上端进入移位寄存器, 串行时钟每来一个上升沿,数据就会向下进行移一位, 当移位寄存器中8位数据满了后,寄存器时钟RCLK会发出一个上升沿,然后将左边8位移位寄存器数据,同时搬运到右边的8位输出缓存。
若当左边8位移位寄存器数据满了后,继续向SER串行输入数据,那么数据会从QH'流入下一片的移位寄存器。
为什么LED点阵屏没有横竖两排都接I/O口?
单片机高电平驱动能力有限,输出的最大电流不能太大,而低电平驱动能力更强一些。
竖排接I/O口接地后,如果横排接I/O口接高电平,LED点阵屏的亮度不会特别亮。