【ct107d】静态数码管显示

1.基本知识

数码管分为共阴和共阳数码管,实质还是点亮led,来显示不同的数字或字符
在这里插入图片描述
在明确数码管类型之后,就可以确定段码数组了,也就是显示内容所对应的值,例如,要在数码管上显示数值“7”,那么就要输出的数值为“0xf8”
在这里插入图片描述

ct107d中数码管原理图

在这里插入图片描述
原理图中数码管的位选和段选都有一个M74hc573的锁存器锁存,和led,蜂鸣器继电器的控制一样,若想输出先打通锁存器,实则是来控制138译码器的输入来选择打通哪个锁存器;

void HC138out(uchar n)
{
	switch(n)
	{
		case 4:	 HC138_A=0;HC138_B=0;HC138_C=1; break;
		case 5:	 HC138_A=1;HC138_B=0;HC138_C=1; break;
		case 6:	 HC138_A=0;HC138_B=1;HC138_C=1; break;
		case 7:	 HC138_A=1;HC138_B=1;HC138_C=1; break;
	}
}

这就是来选择打通哪个锁存器。

静态显示和动态显示的区别:
所谓静态显示, 就是每一个数码管的段码都要独占具有锁存功能的输出口, CPU把要显示的字码送到输出口上,就可以使数码管显示对应的字符, 直到下一次送出另外一个字码之前, 显示的内容一直不会消失;动态扫描是把所有显示器的8个段码中的A-dp的各个相同段连接在一起, 接到一个公共的输出口上,而数码管的位端分别接在另外的输出口上,通过这两个输出口的两组信号相互作用来产生显示效果。即让各位数码管按照一定顺序轮流显示, 只要扫描频率足够高, 由于人眼的“ 视觉暂留”现象,就能连续稳定的显示。

2.程序代码:

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar i,j;

uchar code SMG_Duanma[18] = 
    {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
     0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
     0xbf,0x7f};

sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;

void delay(uint t)
{
	while(t--);
}

void HC138out(uchar n)
{
	switch(n)
	{
		case 4:	 HC138_A=0;HC138_B=0;HC138_C=1; break;
		case 5:	 HC138_A=1;HC138_B=0;HC138_C=1; break;
		case 6:	 HC138_A=0;HC138_B=1;HC138_C=1; break;
		case 7:	 HC138_A=1;HC138_B=1;HC138_C=1; break;
	}
}

void init()
{
   HC138out(5);	 //关蜂鸣器,继电器
   P0=0X00;
}

void smgshuju(uchar a,uchar b)
{
	HC138out(6);	//位选打开
	P0=0X01<<b;
	HC138out(7);
	P0=a;
}

void displaysmg()
{
	for(i=0;i<8;i++)
	{	
		for(j=0;j<10;j++)
		{
		  smgshuju(SMG_Duanma[j],i);
		  delay(50000);
		}
	}
}

void main()
{
	init();
	while(1)
	{
		displaysmg();
	}	
}
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你我山巅自相逢y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值