Protues仿真 8X8 LED点阵

本文详细介绍了使用Protues软件进行8X8LED点阵仿真的具体步骤,包括所需元件清单、电路图绘制、Keil5 C语言代码详解及仿真结果展示。通过控制74HC595和74HC138芯片,实现LED点阵的逐行扫描显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Protues仿真 8X8 LED点阵

  • 仿真步骤
  • 原理
  • 代码详解

本博客是关于Protues仿真8X8 LED点阵的具体步骤(包括原理图与代码)

注意:protues中,红色代表高电平,蓝色代表低电平,黄色表示异常
注意:protues中,红色代表高电平,蓝色代表低电平,黄色表示异常
注意:protues中,红色代表高电平,蓝色代表低电平,黄色表示异常

1.仿真所需元件清单:

元件标号注释
89C52U1
74HC595U2
74HC138U3
CRYSTALX112MHz
CAPC1,C230pF
CAPC3100uF
RESR110K
BUTTONS
MATRIX-8X8-REDD

2.仿真电路图

2.1-晶振电路:

图片:
晶振电路

2.2-复位电路:

图片:
复位电路

2.3-单片机:

图片:
单片机

2.4-8X8 LED点阵:

图片:
8X8 LED点阵

3.Keil5 代码(C语言):

#include<reg52.h>
#include<intrins.h>

typedef unsigned char u8;
typedef unsigned int u16;

sbit R3 = P1^2;    //
sbit R2 = P1^1;    //
sbit R1 = P1^0;    //

sbit DS   = P1^5;  //
sbit SHCP = P1^6;  //
sbit STCP = P1^7;  //

data u8 g[]={0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1};

void wrong(u16 i)  //调试用
{
	if(i)
		P0=0xff;
}

void delay1ms(void)   //100ms延时
{
    unsigned char a,b;
    for(b=199;b>0;b--)
        for(a=1;a>0;a--);
}


void row(u8 r)  //选择点亮第几行
{
	switch(r)
	{
		case 1:{R3=1;R2=1;R1=1;};break;
		case 2:{R3=1;R2=1;R1=0;};break;
		case 3:{R3=1;R2=0;R1=1;};break;
		case 4:{R3=1;R2=0;R1=0;};break;
		case 5:{R3=0;R2=1;R1=1;};break;
		case 6:{R3=0;R2=1;R1=0;};break;
		case 7:{R3=0;R2=0;R1=1;};break;
		case 8:{R3=0;R2=0;R1=0;};break;
		
		default :wrong(1);break;
	}
}

void send(u8 d) //选择该行显示的内容
{
	u8 i;
	
	SHCP = 0;
	STCP = 0;
	
	for(i=0;i<8;i++)
	{
		DS = d>>7;
		d<<=1;
		SHCP = 1;
		_nop_();	
		_nop_();	
		SHCP = 0;
	}
	STCP = 1;
	_nop_();
	_nop_();
	STCP = 0;
}

void main()
{
	u8 i;
	
	while(1)
	{
		for(i=0;i<8;i++)
		{
		row(i+1);    //i+1表示第几行
		send(g[i]);
		delay1ms();  //延时
		send(0);     //消隐,和延时一起使用
		}
	}
}

4.仿真结果:

图片:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

74HC595 串口输入(示波器):

在这里插入图片描述

74HC138 串口输入(示波器):

在这里插入图片描述

5.原理:

8X8 LED点阵

在这里插入图片描述
在这里插入图片描述
演示图:
阴极 1,3脚接低电平(1,3行可以点亮),阳极1,2脚接高电平( 1,2列可以点亮)。

在这里插入图片描述

74HC138

在这里插入图片描述

引脚功能用法
4使能控制低电平
5使能控制低电平
6使能控制高电平
1输入端二进制最低位
2输入端二进制中间位
3输入端二进制最高位
Y0~Y7输出端对应输入端(从0~7)
示例:

令 A = 0,B = 0 ,C = 0,即输入0b 000,对应八进制数:0o 0,Y0输出低电平
在这里插入图片描述
A =0,B = 0 ,C = 1,即输入0b 100,对应进八进制0o 4,Y4输出低电平
在这里插入图片描述

74HC595

引脚功能接法
MR移位寄存器清零低电平有效
OE输出使能低电平有效
Q0~Q7并行输出
DS串口输入一次输入一位
SH_CP控制数据左移位高电平有效
ST_CP数据输出高电平有效

例如
让并口输出0b 1010 1010(以Q0为最低位),DS按顺序应输入1,0,1,0,1,0,1,0

模拟该输入过程
  • 1-全部置低电平(DS=0,SH_CP=0.ST_CP=0)
    在这里插入图片描述

  • 2-DS置高电平(输入1)低电平则输入0
    在这里插入图片描述

  • 3-SH_CP置高电平(产生一个上升电平>2us)

在这里插入图片描述

  • 4-SH_CP置低电平(恢复低电平)
    在这里插入图片描述
    2,3,4步重复共8次,即完成1个字节的传输

  • 5-ST_CP置高电平(产生一个上升电平>2us)

注意:第9个引脚输出不用管 !!!
注意:第9个引脚输出不用管 !!!
注意:第9个引脚输出不用管 !!!
在这里插入图片描述

  • 6-ST_CP置低电平(恢复低电平)
  • 在这里插入图片描述
### 如何在Proteus中使用8x8 LED点阵屏 #### 创建新项目并设置环境 为了开始创建基于8x8 LED点阵屏的电路设计,在启动Proteus之后,需新建一个工程文件。通过菜单栏中的`File -> New Design`来实现这一点。 #### 添加组件到工作区 从ISIS库加载所需的元件至原理图编辑器内。对于8x8 LED矩阵而言,通常会涉及到如下几个重要部件: - **74HC595移位寄存器**:用于驱动列线。 - **ULN2003A达林顿管阵列芯片**:负责控制行电流。 - **电阻网络**:确保每个LED获得适当的工作电压和电流。 - **8x8 LED Matrix Display Module (MAX7219)** 或者单独购买8*8 LED Dot Matrix模块[^1]。 这些器件可以通过搜索框快速定位,并拖拽放置于布之上。 #### 连接硬件线路 按照标准连接模式完成各部分之间的电气链接。具体来说就是把数据输入端口接到单片机I/O引脚上;而电源供应则要遵循制造商给出的技术规格说明进行配置。特别注意的是行列扫描逻辑关系以及对应的GPIO分配策略[^2]。 #### 编写程序代码 编写适用于所选微控制器平台的应用软件,该应用程序应当能够执行以下功能: - 初始化外设接口; - 定义字符映射表(即字模),这决定了屏幕上呈现的具体图案或文字形状; - 实现动态刷新机制以维持稳定的视觉效果。 下面是一个简单的C语言实例片段,展示了如何向74HC595发送命令从而点亮特定位置上的发光二极管: ```c void send_to_shift_register(unsigned char data){ digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, data); digitalWrite(latchPin, HIGH); } ``` 此函数接受一个参数作为待传输的数据包,它会被逐位推入串行输入并行输出型移位寄存器内部等待进一步处理。 #### 启动模拟测试 最后一步就是在虚拟环境中运行整个系统模型以便观察实际运作情况。利用Proteus自带的功能按钮可以方便地暂停/继续进程、调整时间比例尺甚至记录下关键节点处的变化趋势供后续分析之用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值