[51マイコンシリーズ]デジタル管ディスプレイの制御には74HC595を使用します

文字表示には74HC595とデジタル管を組み合わせてご使用ください。

Proteus のシミュレーション設計は、74HC595 の出力端をダイナミック デジタル管のビット選択とスタティック デジタル管のセグメント選択に接続し、ダイナミック デジタル管のセグメント選択を P0 ポートに接続します。両方のデジタル管は共通のカソードを共有します。

74HC595とデジタル管を組み合わせて文字を表示

静止デジタル チューブには 0 ~ F の文字が表示されます。ソフトウェア設計は次のとおりです。

/*
	实现功能:74HC595芯片控制静态数码管显示字符0-F
	[2023-12-11] zoya
*/
#include "reg52.h"
#include "intrins.h"
#include "HC595.h"

// 共阴极数码管编码
u8 code smg[] = {
    
    0x3F, 0x06, 0x5B, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,  // 0~9
0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00}; // a~f+不显示
	
// 延时函数,i=1时延时10us
void Delay(u16 i)
{
    
    
	while(i--);
}

void main()
{
    
    
	u8 i;
	while(1)
	{
    
    
		for(i=0;i<17;i++)
		{
    
    
			HC595SendByte(smg[i]);  // 发送段选数据
			Delay(50000);
		}
	}
}

HC595SendByte機能のリファレンスについては、以前の記事「【マイコンシリーズ51選】74HC595チップを使ってLEDドットマトリクスに数字を表示する74HC595拡張実験」を参照してください。

シミュレーション結果:

74HC595 は静的デジタル管を制御して 0 ~ F を表示します

ダイナミック デジタル チューブには 0 ~ 7 が表示され、ソフトウェア コードは次のとおりです。

/*
	实现功能:74HC595芯片控制动态数码管显示0-7
	[2023-12-11] zoya
*/
#include "reg52.h"
#include "intrins.h"
#include "HC595.h"

#define GPIO_LED P0

// 共阴极数码管编码
u8 code smg[] = {
    
    0x3F, 0x06, 0x5B, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,  // 0~9
0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00}; // a~f+不显示

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

// 数码管显示函数
void digDisplay()
{
    
    
	u8 i;
	for(i=0;i<8;i++)
	{
    
    
		HC595SendByte(duan);
		GPIO_LED = smg[i];
		Delay(150);
		duan = _crol_(duan,1);
		GPIO_LED = 0x00;
	}
}

void main()
{
    
    
	while(1)
	{
    
    
		digDisplay();
	}
}

シミュレーション結果:

74HC595 はダイナミックデジタルチューブディスプレイ 0 ~ 7 を制御します

ダイナミックデジタル管を表示する際、複数のディレイタイムを設定してみましたが、どれも38デコーダの0~7を安定して表示する効果が得られませんでした。これもバグです。詳しく調べて解決できればと思います。未来。

おすすめ

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