在Proteus中用8×8来实现16×16点阵屏

文章目录
 💙 一、预备知识
   1.1 如何自己检测8×8点阵屏的引脚信息
   1.2 常见8×8点阵屏的引脚信息
 💜 二、Proteus仿真以及原理讲解
   2.1 仿真图示
   2.2 原理讲解
   2.3 源文件
   2.4 注意事项
 ❤️ 三、C代码编写
   3.1 取字模软件设置以及链接
   3.2 C代码的编写以及解析
   3.3效果
   3.4获取仿真源文件
 💚 四、结尾

💙 一、预备知识

首先,在proteus8.6中并没有已经集成好的16×16的点阵屏。因此我们需要利用已有的8×8点阵屏来实现

1.1 如何自己检测8×8点阵屏的引脚信息

调出一个8×8点阵,在点阵的管脚上接上VCC,另一端的管脚就接GND,运行仿真,看看点阵是不是能亮,亮了哪几个点,如果不亮就调换VCC和GND,这样测出点阵的行和列,共阴或共阳等引脚信息。


假如说在仿真的时候不想自己检测引脚信息,这里已经给出四种颜色的点阵屏的引脚信息以及图示

1.2 常见8×8点阵屏的引脚信息

对于红色的点阵屏说,在不旋转的情况下:
  上面是列选,高电平有效;
  下面是行选,低电平有效;

对于其他点阵屏说,在不旋转的情况下:
  下面是列选,高电平有效;
  上面是行选,低电平有效;


提示:以下是本篇文章正文内容,下面案例可供参考

💜 二、Proteus仿真以及原理讲解🎉

2.1 仿真图示

2.2 原理讲解

 我并没有直接使用端口,是为了让看的人更加直观的理解原理;
  对列选来说: 我将C0-C15这16根线逐个引至下面的两个8×8矩阵,是为了列选的端口接收到的数据是一样的,使其从逻辑上和8×8矩阵的原理一样;
  当然,如果说读者对于我的这样子的做法觉得不太满意,我也自己制作了一个16*16点阵屏的元器件,直接下载就能用.

2.3 源文件

 仿真源文件获取方法已经放在文末,需要自取  有 Proteus8.6 以及 Proteus7.8 两个版本  相应版本的下载链接已经放到文末;

2.4 注意事项

 本原理图中使用的是红色点阵屏,那么相应的要使用74HC07驱动器,不能用74LS系列,否则后果不可名状


❤️ 三、C代码编写

3.1 取字模软件设置以及链接

下载途径:
 链 接🔒:跳转百度网盘下载
 提取码🔑:TTFF

3.2 C代码的编写以及解析

代码如下:

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define out0 P0
#define out1 P1
#define out2 P2

//这里的字模可以用上面的取模软件获得
uchar code string[]=
{
	//物
	0x10,0x00,0x10,0x02,0x14,0x02,0x7E,0x3F,
	0x91,0x50,0x10,0x58,0x7F,0x6C,0x10,0x76,
	0x10,0x5B,0x10,0x4C,0x10,0x46,0x10,0x70,
	0x10,0x60,0x10,0x00,0x00,0x00,0x00,0x00,
	//联
	0x00,0x00,0x00,0x00,0x7E,0x21,0x24,0x12,
	0x3C,0x0C,0xA4,0x7F,0x3C,0x0C,0x24,0x0C,
	0xA4,0x7F,0x7F,0x0C,0x20,0x1E,0x20,0x33,
	0xA0,0x61,0x00,0x00,0x00,0x00,0x00,0x00,
	//网
	0x00,0x00,0x00,0x00,0xFE,0xFF,0x01,0x80,
	0x01,0x80,0x45,0xA2,0x29,0x94,0x11,0x88,
	0x29,0x94,0x45,0xA2,0x01,0x80,0x01,0xC0,
	0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
	//工
	0xFC,0x3F,0x00,0x01,0x00,0x01,0x00,0x01,
	0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,
	0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,
	0x00,0x01,0x00,0x01,0xFE,0x7F,0x00,0x00,
	//程
	0x00,0x00,0x00,0x00,0x30,0x1F,0x0C,0x11,
	0x0B,0x11,0x08,0x1F,0x08,0x00,0x3F,0x00,
	0x1C,0x1F,0x1A,0x04,0x29,0x1F,0x48,0x04,
	0x08,0x04,0x88,0x3F,0x08,0x00,0x00,0x00
};
//延时函数
void delay(uint j)
{
	uchar i=250;
	for(;j>0;j--)
	{
		while(--i);
		i=100;
	}
}
//主函数
void main()
{
	uchar i, j ,n;
	while(1)
	{
		for(j=0;j<5;j++)
		//这里控制输出几个字
		{
			for(n=0;n<40;n++)
			{
				for(i=0;i<16;i++)
				//逐行来扫描,一共扫描十六行
				{
					out1=i%16;
					//利用4-16译码器来控制显示哪一行
					out0=string[i*2+j*32];
					out2=string[i*2+1+j*32];
					//该数组中,前后两个十六进制数正好为16位
					//所以,out0不需加一,out2需要加一
					delay(4);
				}
			}
		}
	}
}

3.3 效果

3.4 获取仿真源文件

🔗点击跳转下载地址:16×16点阵屏利用8×8点阵实现内有配套源码


💚 结尾

若有错误,欢迎私信指出

🔗Proteus 8.6下载链接

  • 25
    点赞
  • 189
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论
Proteus点阵屏是一种常被用于嵌入式系统的显示屏,可以通过编程将文字、图形等信息显示在屏幕上。要实现16×32的显示,我们需要对点阵屏进行初始化和编程。 首先,我们需要将点阵屏的列数设置为32,行数设置为16。这可以通过修改点阵屏的控制寄存器来实现。控制寄存器是用来配置点阵屏的相关参数的,包括设置列数、行数、显示模式等。 然后,我们需要将需要显示的内容按照16×32的大小进行编码。编码是将文字、图形转换成点阵屏所支持的字符集的过程。可以使用专门的编码软件来完成这个步骤。每个字符或图形都会被编码成一个16位或32位的二进制数字,用于表示在点阵屏上的像素。 接下来,我们需要将编码后的内容按照顺序写入点阵屏的显示寄存器中。显示寄存器是用来存储点阵屏将要显示的内容的,我们可以通过向寄存器写入数据来实现内容的显示。依次将编码后的内容写入寄存器的相应位置,即可实现16×32的显示效果。 最后,通过控制寄存器将点阵屏设置为显示模式,即可将内容在屏幕上显示出来。可以设置点阵屏的显示模式为常规模式或双倍模式等,根据需求选择合适的显示效果。 总之,要实现16×32的显示效果,我们需要对Proteus点阵屏进行初始化和编程,设置正确的列数和行数,对内容进行编码,将编码后的内容写入显示寄存器,并设置显示模式,最终实现内容在屏幕上的显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stanford_sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值