两片74hc138作单片机点阵显示列驱动

时间: 2023-08-15 12:07:09 浏览: 61
74HC138是三-八译码器,可以用来驱动点阵显示器的列。可以使用两片74HC138来驱动一个8x8的点阵显示器。其中一片74HC138用来控制高四位列,另一片74HC138用来控制低四位列。 具体的接法如下: 1. 将单片机的P0口连接到两片74HC138的A、B、C三个引脚上,用来选择要驱动的列。 2. 将两片74HC138的输出引脚Y0-Y7分别连接到点阵显示器的列引脚上。 3. 将点阵显示器的行引脚连接到单片机的P1口上。 通过控制单片机的P0口输出不同的三位二进制数,可以选择要驱动的列。然后单片机通过P1口输出相应的行数据,完成点阵显示的控制。 需要注意的是,74HC138的输出是低电平有效的,需要将其接到点阵显示器的共阳或共阴极端上,具体根据点阵显示器的类型来确定。
相关问题

基于51单片机编程让两片74HC573驱动8*8点阵显示“月”

首先需要了解一下74HC573芯片的特性:它是一个8位锁存器,可以存储8位二进制数据,并且可以通过控制端LE将数据锁存到输出端Qn。同时,它还有一个使能端OE,用于控制输出是否有效。 接下来,我们可以按照以下步骤来实现月字的显示: 1. 定义需要显示的“月”字的点阵数据,可以使用一个8x8的二维数组表示,例如: ```c unsigned char moon[8][8] = { {0,0,0,1,1,0,0,0}, {0,0,1,1,1,1,0,0}, {0,1,1,1,1,1,1,0}, {1,1,1,1,1,1,1,1}, {1,1,1,1,1,1,1,1}, {0,0,0,1,1,0,0,0}, {0,0,0,1,1,0,0,0}, {0,0,0,0,0,0,0,0} }; ``` 其中,1表示该位置需要亮灯,0表示该位置不需要亮灯。 2. 初始化需要使用的IO口和74HC573芯片,注意设置控制端LE和使能端OE的状态。 ```c sbit LATCH = P2^0; // 74HC573控制端LE,连接到P20 sbit OE = P2^1; // 74HC573使能端OE,连接到P21 void init() { P1 = 0; // P1口用于输出数据 P2 = 0xFF; // P20和P21口为输入,设置为高电平 LATCH = 1; // 控制端LE初始为高电平 OE = 0; // 使能端OE初始为低电平,输出有效 } ``` 3. 编写一个函数用于将点阵数据写入到两个74HC573芯片中。由于一个74HC573芯片只能控制8个LED的亮灭,因此需要使用两个74HC573芯片来控制整个8x8的点阵。具体实现方法是,将8x8的点阵分成两个4x8的部分,每个部分分别写入到一个74HC573芯片中。 ```c void writeData(unsigned char data[8][8]) { unsigned char i, j, k; for (i = 0; i < 2; ++i) { // 依次写入两个4x8的部分 for (j = 0; j < 8; ++j) { // 依次写入每一行 for (k = 0; k < 8; ++k) {// 依次写入每一列的数据 P1 = (data[j][i*4+k] << i) | (P1 & ~(1 << i)); // 将数据写入到P1口 LATCH = 0; // 控制端LE下降沿,数据锁存到74HC573 LATCH = 1; } } } } ``` 在该函数中,变量i表示写入的是第几个4x8的部分,变量j表示写入的是第几行,变量k表示写入的是第几列。因为一个74HC573芯片只能控制8个LED的亮灭,所以需要使用位运算将数据写入到P1口的对应位置。 4. 在主函数中调用初始化函数和写入数据函数即可。 ```c void main() { init(); // 初始化 writeData(moon);// 将点阵数据写入到74HC573芯片中 while (1); } ``` 完整代码如下:

基于51单片机编程让74HC573驱动8*8点阵显示“月”

假设你已经将8*8点阵的行列分别接到了P0口和P2口,并且连接了一个74HC573锁存器用于控制点阵显示的开关。 以下是基于51单片机的程序: ```c #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit LATCH=P3^4; //锁存器锁存引脚 uchar code table[]={ 0x00,0x3C,0x42,0x81,0x81,0x42,0x3C,0x00, //月字码表 /* 0x00: 空白,0x3C: 00111100, 0x42: 01000010, 0x81: 10000001 */ }; void writeByte(uchar dat){ uchar i; for(i=0;i<8;i++){ P0=dat&0x01; //先将最低位输出到P0口 dat>>=1; //将数据右移一位,准备输出下一位 P2=(P2&0xFE)|0x01; //将P2口第0位(即74HC573的SER引脚)设为1,将数据输入74HC573 P2=P2<<1; //将P2口左移一位,准备输出下一位 } } void main(){ uchar i; while(1){ for(i=0;i<8;i++){ LATCH=0; //锁存器使能 writeByte(table[i]); //输出点阵每一列的数据 LATCH=1; //锁存器禁能 P0=0xFF; //清空P0口,避免显示上一次的残留 delay(1); //延时一段时间,让人眼可以看清每一列的显示 } } } void delay(uint z){ uint x,y; for(x=z;x>0;x--){ for(y=110;y>0;y--); } } ``` 这段程序实现了一个简单的点阵显示效果,每隔一段时间(通过`delay`函数模拟)刷新一次点阵,显示出“月”字。其中,`writeByte`函数用于将一列数据输出到点阵上,而`main`函数则不断循环,输出每一列的数据。需要注意的是,由于点阵是共阴极的,所以需要将数据取反后再输出。

相关推荐

STM32单片机利用74HC595驱动数码管是一种常见的方法。以下是详细步骤: 1. 连接硬件:首先,将数码管的共阳极引脚连接到74HC595芯片的输出引脚,并将74HC595的时钟引脚(CLK)连接到STM32单片机的某个GPIO引脚;将74HC595的数据引脚(DATA)连接到STM32单片机的另一个GPIO引脚;将74HC595的锁存引脚(LATCH)连接到STM32单片机的第三个GPIO引脚。 2. 初始化:在STM32单片机上,配置相应的GPIO引脚为输出模式。然后,设置锁存引脚为低电平。 3. 数据发送:以适当的形式将要显示的数字或字符数据存储在一个数组中。然后,使用移位运算将数据逐位发送到74HC595芯片。具体实现时,通过逐位将数据写入数据引脚,并在每次写入后将时钟引脚上升沿触发以将数据移位到74HC595芯片。 4. 确定数据有效:当所有位的数据都被正确移位到74HC595芯片后,将锁存引脚置为高电平。这将导致芯片将存储的数据显示在数码管上。 5. 重复步骤:通过循环结构重复步骤3和4,以连续显示多个字符或数字。 使用74HC595驱动数码管具有优点,如节约IO资源,允许连接更多的数码管,并可以通过级联多个74HC595芯片以驱动更多的数码管。此外,通过移位方式发送数据,可以快速更新显示内容。当然,还要注意74HC595芯片的工作电压和电流要求,以及连接电阻等其他硬件设置。
好的,我来回答你的问题。首先,74HC164是一个8位移位寄存器,可以实现串行输入并行输出的功能,适合驱动数码管等显示器件。而在51单片机中,我们可以通过串口通信来控制74HC164。 下面是一个简单的代码示例,可以实现通过串口控制74HC164驱动数码管显示数字: c #include <reg51.h> // 74HC164控制引脚定义 sbit HC164_CLK = P1^0; sbit HC164_SER = P1^1; sbit HC164_RCLK = P1^2; // 数码管显示码表 unsigned char code LED_Table[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f }; // 串口初始化 void UART_Init() { TMOD |= 0x20; // 设置定时器1为模式2 TH1 = 0xfd; // 波特率设置为9600 TL1 = 0xfd; TR1 = 1; // 启动定时器1 SCON = 0x50; // 设置串口为模式1 ES = 1; // 允许串口中断 EA = 1; // 允许总中断 } // 串口发送数据 void UART_SendByte(unsigned char dat) { SBUF = dat; while (!TI); // 等待发送完成 TI = 0; // 清除发送完成标志 } // 延时函数 void delay(unsigned int n) { unsigned int i, j; for (i = 0; i < n; i++) { for (j = 0; j < 50; j++); } } // 74HC164移位函数 void HC164_Shift(unsigned char dat) { unsigned char i; for (i = 0; i < 8; i++) { HC164_CLK = 0; HC164_SER = (dat & 0x80) ? 1 : 0; dat <<= 1; HC164_CLK = 1; } } // 74HC164输出函数 void HC164_Output() { HC164_RCLK = 0; HC164_RCLK = 1; } // 主函数 void main() { unsigned char num = 0; UART_Init(); // 初始化串口 while (1) { // 等待串口接收完成 while (!RI); num = SBUF; // 读取串口数据 RI = 0; // 清除接收完成标志 HC164_Shift(LED_Table[num]); // 移位 HC164_Output(); // 输出 } } 在这个代码中,我们将串口通信设置为了9600波特率,当接收到一个字节的数据时,就将其作为数字0~9的索引,查表得到对应的数码管显示码,然后通过HC164移位和输出函数控制74HC164驱动数码管显示。
51单片机控制74HC595驱动数码管的显示,一般需要以下步骤: 1. 定义数码管的连接引脚,如数码管的A-G引脚和DP引脚的连接引脚,以及74HC595的串行数据引脚(DS)、时钟引脚(SHCP)和输出使能引脚(STCP)。 2. 定义数码管显示的字符集,可以将数字0~9、字母A~F和DP转换为相应的二进制码,存储在一个数组中。 3. 编写移位函数,将待显示的数字依次存入74HC595中。 4. 在主函数中,通过调用移位函数,将要显示的数字存入74HC595中,然后通过STCP引脚的高电平脉冲,将数据输出到数码管上。 以下是一个简单的51单片机控制74HC595驱动数码管显示的代码示例: c #include <reg51.h> sbit DS = P2^0; //74HC595的串行数据引脚 sbit SHCP = P2^1; //74HC595的时钟引脚 sbit STCP = P2^2; //74HC595的输出使能引脚 unsigned char code num[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管字符集 void delay(unsigned int t) //延时函数 { unsigned int i, j; for (i = 0; i < t; i++) for (j = 0; j < 125; j++); } void shift(unsigned char dat) //移位函数 { unsigned char i; SHCP = 0; for (i = 0; i < 8; i++) { DS = dat & 0x80; dat <<= 1; SHCP = 1; SHCP = 0; } STCP = 1; STCP = 0; } void main() { unsigned char i; while (1) { for (i = 0; i < 10; i++) { shift(num[i]); delay(100); } } } 在上述代码中,我们定义了一个数码管字符集数组num[],通过移位函数shift()将待显示的数字存入74HC595中,最后通过STCP引脚的高电平脉冲,将数据输出到数码管上。在主函数中,我们通过循环调用移位函数,将数字0~9显示在数码管上。
首先,我们需要了解点阵秒表的原理。点阵秒表的显示是通过在数码管上显示0~9,然后通过多个数码管组成一个大的数字来显示时间。同时,我们需要使用译码器将数字转换成相应的控制信号,以控制对应的LED灯亮或灭。 在这个任务中,我们需要实现一个倒序秒表,也就是从9开始倒数到0。我们可以使用单片机控制译码器和74hc245进行信号的转换和传输,下面是具体的步骤: 1.连接硬件电路:将单片机的IO口与译码器的输入引脚相连接,然后将译码器的输出引脚与74hc245的输入引脚相连,接着将74hc245的输出引脚与点阵的LED灯相连。 2.编写程序:首先,我们需要定义数码管的显示数据,包括0~9的LED灯亮灭状态。然后,我们需要进行倒计时的逻辑处理,每秒钟减1,直到倒数到0。在每次倒计时后,我们需要将倒计时的数字转换成相应的控制信号,通过译码器控制LED灯的亮灭,最后通过74hc245将信号传输到点阵上进行显示。 3.仿真测试:在Proteus中进行仿真测试,检查电路和程序的正确性。 以下是一个示例程序,仅供参考: #include <reg52.h> #define uint unsigned int #define uchar unsigned char sbit LATCH = P3^4; // 74hc245锁存器片选引脚 sbit ENCODER = P1^0; // 74hc138译码器使能引脚 // 数码管显示数据,0~9的LED灯亮灭状态 uchar code LED[10] = { 0xC0, // 0 0xF9, // 1 0xA4, // 2 0xB0, // 3 0x99, // 4 0x92, // 5 0x82, // 6 0xF8, // 7 0x80, // 8 0x90 // 9 }; void delay(uint ms) { // 延时函数 uint i,j; for(i=ms;i>0;i--) for(j=114;j>0;j--); } void main() { uchar i; while(1) { for(i=9;i>=0;i--) { // 倒计时 P0 = LED[i]; // 显示数据 LATCH = 0; // 锁存器片选使能 LATCH = 1; ENCODER = 0; // 74hc138译码器使能 ENCODER = 1; delay(1000); // 延时1秒钟 } } }

最新推荐

基于FPGA的74HC595驱动数码管动态显示--Verilog实现

基于FPGA的74HC595驱动数码管动态显示--Verilog实现.由FPGA控制74HC595驱动数码管其实主要是抓住74HC595的控制时序,进而输出所需控制显示的内容,由同步状态机实现.

单片机控制74HC595动态扫描数码管显示

74HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在SCK的上升沿输入,在RCK的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个...

LED显示屏常用芯片简介(74HC138,74HC245,74HC595,4953,TB62726)

LED显示屏常用芯片简介(74HC138,74HC245,74HC595,4953,TB62726)

STM8S 硬件SPI驱动74HC595

一直对STM8S的硬件SPI感兴趣,但没有真正使用过,以往都是用IO口模拟,这次刚好有个板子上有两个595驱动的8位LED数码管,就在上面试了一把,把过程记录一下。

两片74HC595控制8个数码显示

两块74HC595分别用来作为段码和片选,U1作为段码驱动(高电平有效),U2作为片选(低电平有效),程序中先发送高8位的片选码,然后发送低8位的段码,每发送一次只能显示以个数码管,通过延时防止闪烁,然后循环发送8...

输入输出方法及常用的接口电路资料PPT学习教案.pptx

输入输出方法及常用的接口电路资料PPT学习教案.pptx

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

Office 365常规运维操作简介

# 1. Office 365概述 ## 1.1 Office 365简介 Office 365是由微软提供的云端应用服务,为用户提供办公软件和生产力工具的订阅服务。用户可以通过互联网在任何设备上使用Office应用程序,并享受文件存储、邮件服务、在线会议等功能。 ## 1.2 Office 365的优势 - **灵活性**:用户可以根据实际需求选择不同的订阅计划,灵活扩展或缩减服务。 - **便捷性**:无需安装繁琐的软件,随时随地通过互联网访问Office应用程序和文件。 - **协作性**:多人可同时编辑文档、实时共享文件,提高团队协作效率。 - **安全性**:微软提供安全可靠

如何查看linux上安装的mysql的账号和密码

你可以通过以下步骤查看 Linux 上安装的 MySQL 的账号和密码: 1. 进入 MySQL 安装目录,一般是 /usr/local/mysql/bin。 2. 使用以下命令登录 MySQL: ``` ./mysql -u root -p ``` 其中,-u 表示要使用的用户名,这里使用的是 root;-p 表示需要输入密码才能登录。 3. 输入密码并登录。 4. 进入 MySQL 的信息库(mysql): ``` use mysql; ``` 5. 查看 MySQL 中的用户表(user): ``` se

最新电力电容器及其配套设备行业安全生产设备设施及隐患排查治理.docx

2021年 各行业安全生产教育培训