在Proteus8.6中用8×8来实现16×16点阵屏

   日期:2021-04-01     浏览:204    评论:0    
核心提示:在Proteus中用8×8点阵屏来实现16×16点阵屏百度网盘链接资源免费proteus仿真代码编写

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

  • 一、预备知识
    • 1.1 如何自己检测8×8点阵屏的引脚信息
    • 1.2 常见8×8点阵屏的引脚信息
  • 二、Proteus仿真以及原理讲解
    • 2.1 仿真图示
    • 2.2 源文件
  • 三、C代码编写
    • 3.1 取字模软件设置以及链接
    • 3.2 C代码的编写以及解析
  • 结尾

一、预备知识

首先,在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 源文件

点我获取仿真图.
提取码:19WL

三、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);
// out0=0xff;
// out2=0xff;
				}
			}
		}
	}
}

结尾

若有错误,欢迎私信指出

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服