【51MCUシリーズ】文字型取りソフトの使用

ソフトウェアリンク: https://pan.baidu.com/s/1k-ND9vJReW_KHMWx8uwpcQ?pwd=gz8w

抽出コード:gz8w

1. ソフトウェアの紹介

ダブルクリックしてソフトを開き、[基本操作]→[新規画像]を選択し、画像の幅と高さを8に設定します。[OK] をクリックすると、8x8 LED ドット マトリックスに似た 8x8 の白いグリッドが表示ウィンドウに表示されます。

画像の幅と高さを設定する

新しいイメージ

この8x8の白いグリッドをクリックすると、対応する位置に黒い点が表示され、LEDドットマトリクスの対応位置が表示されていることを示します。クリックされない場合は、LEDドットマトリクスの対応位置が表示されていることを意味しますは表示されませんので、間違ってクリックした場合は再度クリックしてください。画像が小さすぎる場合は、[アニメーションをシミュレート]→[グリッドを拡大]をクリックすると拡大できます。

画像を拡大する

たとえば、8x8 LED ドット マトリクス上に数字の 0 を表示したい場合、白いボックス内の対応する位置をクリックすると、0 の形状を記述することができます。

表示番号0

モジュロデータのモジュロ方式を以下のように設定します。ここでの型取り方法が縦型取りなのか横型取りなのかに注意が必要であり、ソフトウェア上では次のように説明されています。

1. テキストの入力が終了したら、Ctrl+Enter を押してテキスト入力を終了することもできますが、テキストを
個別にテキストを画像に変換する処理方法が異なります。水平係数を取得すると、
入力テキストは垂直方向に画像に配置されます。垂直方向の係数を取得する場合は、入力されたテキストは水平方向に画像に配置されます。2
. 新しい画像を作成して画像を読み込むときに、水平または垂直のサイズが 8 の倍数でない場合は、選択した水平係数または垂直係数に従って拡大されます
。具体的には、垂直係数を取る場合、高さは横係数をとると画像の幅が拡大されます

モジュラスモードを設定する

[画像の修正]→[画像の左右入れ替え]をクリックすると、表示領域に表示されている数字の0が左右入れ替え結果となります。

画像の左右を入れ替える

[モジュラムモード]をクリックし、[C51形式]を選択すると、ドットマトリクス生成エリアに数字に対応したデータが自動生成されます。

文字に対応したデータを生成

生成されたデータは、次に示すように、プログラム内で定義された配列にコピーできます。

u8 ledduan[] = {
    
    0x00,0x7E,0x81,0x81,0x81,0x81,0x7E,0x00};  // 类似于数码管的段选

2. 使用例

便宜上、51 マイクロコントローラーの I/O ポートを直接使用して駆動します。proteus の設計は次のとおりです。

  • 8x8LED ドット マトリックスを 4 つ、赤色ドット マトリックスを 2 つ、緑色ドット マトリックスを 2 つ作成します。
  • 赤いドット マトリックス インターフェイスは上の列と下の行を制御し、緑色のドット マトリックス インターフェイスは上の行と下の行を制御します。現在のフローの方向は列 -> 行です。インターフェイスは最初の行から最後の行、または最初の行を制御します。左から右に列から最後の列まで。
  • ポート P0 と P1 はそれぞれ赤色ドット マトリックスの列と行を制御し、ポート P2 と P3 はそれぞれ緑色ドット マトリックスの列と行を制御します。
  • 左側の 2 つのドットマトリックス インターフェイスのバイト順序は、左から右に bit7->bit0 であり、右側の 2 つのドットマトリックス インターフェイスのバイト順序は、左から右に bit0->bit7 です。

テキスト成形ソフト使用例 proteus設計図

ソフトウェア設計 1. 列ごとにスキャンし、行データに基づいてどのライトが点灯しているかを決定します。テキストモジュロソフトを使って数字の0を法して得られたデータは以下の通りです. 上図の左側にある2つのドットマトリクスデザインは得られたデータと一致しません. 1つの点は、上の図は、列1行0が点灯しているため、取得したデータを修正する必要があります データ反転。

列ごとにスキャン

コードは以下のように表示されます:

/*
	实现功能:文字取模软件使用示例
	[2023-12-16] zoya
*/
#include "reg52.h"
#include "intrins.h"
#include "typedef.h"

#define MATRIX_R_COL 	P0
#define MATRIX_R_ROW	P1
#define MATRIX_G_COL 	P2
#define MATRIX_G_ROW	P3



// 延时函数,i=1时延时10us
void Delay(u16 i)
{
    
    
	while(i--);
}

// 依次扫描列,根据行的数据确定点亮哪些LED,从第一列开始扫描
void LEDMatrix()
{
    
    
	u8 i;
	u8 col = 0x80;
	u8 code row[] = {
    
    0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00};
	for(i=0;i<8;i++)
	{
    
    
		MATRIX_R_COL = col;
		MATRIX_R_ROW = ~row[i];
		MATRIX_G_COL = col;
		MATRIX_G_ROW = ~row[i];
		Delay(100);
		col = _cror_(col, 1);
	}
	
}	


void main()
{
    
    
	MATRIX_R_COL = 0x00;
	MATRIX_R_ROW = 0xff;
	MATRIX_G_COL = 0x00;
	MATRIX_G_ROW = 0xff;
	
	while(1)
	{
    
    
		LEDMatrix();
	}
}

シミュレーション結果は次のとおりです。

シミュレーション結果

ソフトウェア設計 2 は、行スキャンに従って、列データに基づいてどのライトが点灯するかを決定し、テキスト モジュロ ソフトウェアを使用して数値 0 をモジュロし、得られるデータは次のとおりです。バイト逆順が選択されていない場合、設計図の左側の 2 つの点は次の設計要件を満たし、バイト逆順が選択されている場合、設計図の右側の 2 つの点は次の設計要件を満たします。

行ごとにスキャンする

コードは以下のように表示されます:

/*
	实现功能:文字取模软件使用示例
	[2023-12-16] zoya
*/
#include "reg52.h"
#include "intrins.h"
#include "typedef.h"

#define MATRIX_R_COL 	P0
#define MATRIX_R_ROW	P1
#define MATRIX_G_COL 	P2
#define MATRIX_G_ROW	P3



// 延时函数,i=1时延时10us
void Delay(u16 i)
{
    
    
	while(i--);
}

// 依次扫描行,根据列的数据确定点亮哪些LED,从第一行开始扫描
void LEDMatrix1()
{
    
    
	u8 i;
	u8 row = 0x7f;
	u8 code col[] = {
    
    0x1C,0x22,0x22,0x22,0x22,0x22,0x1C,0x00};
	for(i=0;i<8;i++)
	{
    
    
		MATRIX_R_COL = col[i];
		MATRIX_R_ROW = row;
		MATRIX_G_COL = col[i];
		MATRIX_G_ROW = row;
		Delay(100);
		row = _cror_(row, 1);
	}
}	


void main()
{
    
    
	MATRIX_R_COL = 0x00;
	MATRIX_R_ROW = 0xff;
	MATRIX_G_COL = 0x00;
	MATRIX_G_ROW = 0xff;
	
	while(1)
	{
    
    
		LEDMatrix1();
	}
}

シミュレーション結果は次のとおりです。

シミュレーション結果2

3. 使用概要

  • モジュロ取得モードでは、水平モジュロを選択した場合は行ごとにスキャンし、列データに基づいてどのライトがオンであるかを決定することを意味し、垂直モジュロを選択した場合は列ごとにスキャンし、どのライトが点灯しているかを判断することを意味します。行データに基づいてオンになります。今すぐ水平モジュロを選択することによって得られるデータは列制御データであり、垂直モジュロを選択することによって取得されるデータは行制御データです。
  • モジュロ モードでは、横モジュロが選択されている場合は、電流の流れの方向が列→行であることを意味し、バス モジュロが選択されている場合は、電流の流れの方向が行→列であることを意味します。今すぐ横方向の金型電流方向を列 1、行 0 として選択し、縦方向の金型電流方向を行 1、列 0 として選択します。
  • 通常のバイト順序は左から右へ bit7-bit0 ですが、バイト逆順が選択されている場合は、左から右へのバイト順序が bit0-bit7 であることを意味します。

おすすめ

転載: blog.csdn.net/sinat_41752325/article/details/134923671