卜若的代码笔记-一周搞定树莓派-第二十四章:七段显示译码管的使用

1 先来看一下一个七段显示姨妈管

它的译码图为:

这是共阴极的译码,如果共阳极,就取反

共阳极时

0  = 1100 0000

1 = 1111 1001

好,有这个概念之后,当我们通过串转并的74HC595将一窜二进制流转化成对应编码可以直接的让其显示对应的字符

这就是七段显示译码管的工作原理

而对应的二进制转化成16进制之后:

结果为:

unsigned char Processer::LED_f[] =
{//0 1 2 3 4 5 6 7 8 9 A B C D E F -
 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80,
 0x90, 0x8c, 0xbf, 0xc6, 0xa1, 0x8e, 0xbf, 0xff, 0x7f, 0xbf
};

而,想要通过串行方式点亮这个姨妈管,需要小心控制写入时序:

比如我要写入一个0

第一次,我们需要写入的数据是1,写入过程如下:

DIO置为高电平(DIO = 高电平时,表明写入1,否则写入0)

SCLK写入一个上跳信号(隔一个时钟置低电平,隔一个时钟置高电平)

然后依次写入1 0 0 0 0 0 0

写完之后干嘛呢

我们看到:

这个是不是有4个姨妈管?每个姨妈管都有一个地址,写完之后,你得写地址

从左到右的编址为:

0x08 0x04 0x02 0x01

好了,显示数据和地址都写完之后写啥?

通知他写完了,给一个CRLK的上跳信号就可以了

 

2 16进制转二进制的算法:

 

int* Ox2binary(int value) {

	int a = value;
	int b = 0x80;
	int* vi = new int[8];
	for (int i = 0; i < 8; i++) {

		vi[7 - i] = ((a) % 2);
		a = a >> 1;
	}
	return vi;
}
int main()
{
	
	int* vi = Ox2binary(0xc0);

	for (int i = 0; i < 8; i++) {
	
		cout << "index  = " << i << ": " << vi[i]<<"\n";
	}
	

}

处理起来就很容易了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值