【蓝桥杯嵌入式笔记】(十一)SEG数码管

一、原理图

d0cf47b2b88fab2e62175b97ff22b975.png

PA1、PA2、PA3接SEG、RCK、SCK。

二、CubeMX配置

d6a25df6d3f763a8cc5839b3f87fcc4e.pngPA1、PA2、PA3接Output

三、代码

seg.h

#ifndef __SEG_H
#define __SEG_H

#include "main.h"

#define SER_H HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
#define SER_L HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
#define RCK_H HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET);
#define RCK_L HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET);
#define SCK_H HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET);
#define SCK_L HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);

void seg_set(unsigned char seg1,unsigned char seg2,unsigned char seg3);

#endif

seg.c

#include "seg.h"

const unsigned char seg_buff[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0X39,0X77};

void seg_set(unsigned char seg1,unsigned char seg2,unsigned char seg3)
{
	unsigned int seg=(seg_buff[seg3]<<16)|(seg_buff[seg2]<<8)|seg_buff[seg1];
	for( int i=0;i<24;i++ )
	{
		if( seg&0x800000 )	{SER_H;}
		else	SER_L;
		SCK_H;
		SCK_L
		seg<<=1;
	}
	RCK_H;
	RCK_L;
}

应用

seg_set(1,3,9);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值