Utilisez 8 × 8 pour réaliser un écran matriciel 16 × 16 dans Proteus8.6

1. Connaissances préliminaires

Tout d'abord, il n'y a pas d'écran matriciel 16 × 16 intégré dans Proteus8.6. Par conséquent, nous devons utiliser l'écran à matrice de points 8 × 8 existant pour obtenir

1.1 Comment détecter vous-même les informations de broche de l'écran matriciel 8 × 8

Appelez une matrice de points 8 × 8, connectez VCC à la broche de la matrice de points et connectez la broche à l'autre extrémité à GND, exécutez la simulation pour voir si la matrice de points peut être brillante, quels points sont brillants, sinon Commutez VCC et GND lorsque la lumière est allumée, de sorte que la ligne et la colonne de la matrice de points, de la cathode commune ou des informations de broche d'anode commune puissent être mesurées.


Si vous ne souhaitez pas vérifier vous-même les informations sur les broches pendant la simulation, les informations sur les broches et les icônes de l'écran matriciel à quatre couleurs ont été indiquées ici.

1.2 Informations sur les broches des écrans matriciels 8 × 8 courants

Pour l'écran à matrice de points rouges, lorsqu'il ne tourne pas: le
  haut est la sélection de colonne, le niveau haut est valide; le
  bas est la sélection de ligne, le niveau bas est valide;

Pour les autres écrans matriciels, sans rotation: le
  haut est la sélection de ligne et le niveau bas est valide; le
  bas est la sélection de colonne et le niveau haut est valide;


Conseil: ce qui suit est le contenu de cet article, les cas suivants sont pour référence

Deux, simulation Proteus et explication du principe

2.1 Icône de simulation

2.2 Fichiers sources

Cliquez sur moi pour voir l'image de la simulation .
Code d'extraction: 19WL


Trois, écriture de code C

3.1 Obtenir les paramètres et les liens du logiciel de police

Cliquez sur moi pour obtenir le logiciel du module .
Code d'extraction: le
lien TTFF provient de Baidu Netdisk

3.2 Écriture et analyse de code C

code montrer comme ci-dessous:

#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;
				}
			}
		}
	}
}

finir

S'il y a une erreur, veuillez envoyer un message privé pour la signaler

Je suppose que tu aimes

Origine blog.csdn.net/Stanford_sun/article/details/115337681
conseillé
Classement