蓝桥杯学习03-共阳数码管的静态显示

要点:数码管的显示原理与对应段码;数码管显示的相关思维

1.原理图接口对应:

    


【注】 Y6C控制公共端com,Y7C控制段码显示;

              com端:公共端控制数码管数字的显示;

2.共阳数码管F3461BH(4位8段)(共阳:所有数码管的正极接在一端)


3.例题:

  新建工程,以 I/O 模式编写代码,在 CT107D 单片机综合训练平台上,实现以下功能:

1、系统上电后,关闭蜂鸣器,关闭继电器,关闭 8 个 LED 灯。

2、8 个数码管从左至右,逐个数码管依次显示“0”到“9”的 10 个数字。 即左边第 1 个数码管依次显示“0”到“9”,其他数码管熄灭;接着左边第 2 个数码管 依次显示“0”到“9”,其他数码管熄灭...依次类推,直到 8 个数码管显示完成。

3、8 个数码管同时显示“0”到“9”的 10 个数字和“A”到“F”的 6 个字母。

4、循环实现上面 2 组数码管的显示功能。

【训练要点】:数码管的工作原理,数码管显示内容的段码值计算。 在 138 译码器和 573 锁存器的控制下,共阳数码管的位置选择和内容显示。

4.代码实现:

#include "reg52.h"

unsigned char code SMG_duanma[18] = {0xc0,0xf9,0xa4,0xb0,0x99,
														0x92,0x82,0xf8,0x80,0x90,0x88,
														0xc6,0xc0,0x86,0x8e,0xbf,0x7f}; //16位数,'.','-'

void Delay(unsigned int t)
{
	while(t--);
	while(t--);
}
	
void InitHC138(unsigned char N)
{
	switch(N)
	{
		case 4: P2 = (P2 & 0x1f) | 0x80; break;
		case 5: P2 = (P2 & 0x1f) | 0xa0; break;
		case 6: P2 = (P2 & 0x1f) | 0xc0; break;
		case 7: P2 = (P2 & 0x1f) | 0xe0; break;
		
		case 0: P2 = (P2 & 0x1f) | 0x00; break;
	}
 	
}



void Show_SMG_Bit(unsigned char dat,unsigned char pos)
{

	InitHC138(6);  //数码管的位置com
	P0 = 0x01 << pos; //依次点亮,用移位来操作
	
	InitHC138(7);  //数码管的数值内容
	P0 = dat;

}

void SMG_Static()
{
	unsigned char i,j;
	
	for(i=0;i<8;i++)
		{
				
			for(j=0;j<=9;j++)
				{
					Show_SMG_Bit(SMG_duanma[j],i);
			    Delay(60000);
				}
			
		}
	for(j=0;j<16;j++)
		{
		  InitHC138(6);  //数码管的位置com
	    P0 = 0xff; //全部显示
	
			InitHC138(7);  //数码管的数值内容
			P0 = SMG_duanma[j] ; //
	    Delay(60000);
			Delay(60000);
		}
}


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

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值