蓝桥杯模块实现 #数码管1

在对蓝桥杯的IAP15F2K61S2单片机初步的了解后,现在要实现的是单片机的数码管模块。老规矩先放原理图

图片的最右端就是数码管的原理展示了,一共有8位数字所以我们是通过COM1~COM8来控制这8位数字,所以我们要想在哪位数字上进行操作就必须先由COM1~COM8来进行控制。那么其他的字母是什么含义呢?下面用一个放大图来进行说明

 

由图,我们将一个数字分为7个小段,这7个小段其实都会发光,我们通过这7个小段的亮灭来表示数字。那么如何控制这7个小段的亮灭呢?我们就如图所示通过A1~G1来对这7个小段进行标记进而通过一一对应的关系控制字母来控制小段。图一就是通过74HC573这个编码器来对A1~G1进行修改控制。现在又遇到新的问题,编码器对应数字是1时亮,还是0时亮呢?这个由数码管本身性质来决定。数码管分两种,一种是共阴极数码管一种是共阳极数码管。当数码管是共阴级时,数码管一端接低电平,那么编码器引脚P0对应高电平也就是数字1时数码管亮;数码管共阳极时,数码管一端接高电平,编码器引脚P0对应低电平也就是数字0时数码管亮。我们查我们使用的单片机数据手册,发现这个数码管是共阳极的,那么引脚对应0时就会亮。

知道了数码管最基础的原理那么我们就要实际操作了,首先我们从第一位开始(也就是COM1控制的位置) 如果我想要在第一位静态显示数字1该怎么做呢。第一步位选:我们由图一所示,COM1是通过左侧的74HC573来控制的,他的使能端是Y6C

Y6C对应由P2控制,即P25 P26 P27对应二进制为1 1 0时选中Y6开启对Y6的控制,110对应P2的十六进制是0xc0,图一P0对应二进制为0 0 0 0 0 0 0 1,十六进制为0x01 ;位选结束了第二步段选:通过图一中间的编码器来控制第一位的数字,这个编码器的使能端是Y7C,同样的P2来选中Y7的对应值是P27 P26 P25 1 1 1,16进制为0xe0,如果我想要第一位显示的数字为6,那么74HC573编码器P0对应的引脚二进制为1 0 0 0 0 0 1 0对应十六进制为0x82 ok现在了解了这些,代码应该也知道怎么写了,这里就直接放代码

#include <STC15F2K60S2.H>
void class_buzz()
{
	P0 = 0x00;
  P2 = (P2 & 0x1F | 0xA0 );
	P2 &= 0x1F;	
}
void class_led()
{
	P0 = 0xFF;
	P2 = (P2 & 0x1F | 0x80);
	P2 &= 0x1F;
}
void smg()
{ 
	P0 = 0x01;
	P2 = (P2 & 0x1F | 0xC0 );
	P2 &= 0x1F;	
	
	P0 = 0x82;
	P2 = (P2 & 0x1F | 0xE0 );
	P2 &= 0x1F;	
}
void main()
{
	class_buzz();
	class_led();
	while(1)
	{
	  smg();
	}
}

最后给板子上电验证

 

看的出来确实在第一位显示了数字6

小结:

这次只是数码管模块的最简单应用,下期来实现复杂点的动态数码管显示

(每周一期蓝桥杯模块实现文章) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值