LK32T102 单片机 四位数码管

  • Post author:
  • Post category:其他



前言:

之前我们学习了解了

LK32T102单片机 操作GPIO实现 主按钮、矩阵按键 和 蜂鸣器

,今天我们来学习一下

LK32T102 单片机的显示部分:

数码管


我们常用的数码管 根据

公共端接 地/正极

分为:

共阴数码管



共阳数码管

,根据显示位数可分为:

一位数码管



两位数码管



四位数码管



八位数码管

,我今天为 大家介绍的是

一位共阴数码管 和 四位共阴数码管


一、一位共阴数码管


1.  一位数共阴码管引脚图



2.  一位共阴数码管 原理图

这里的一位数码管我采用的是 CD4511芯片控制 段选,因为这里是一位数码管,所以我们也就没必要对 位选 进行控制。然后我们 CD4511芯片 是通过4个输入IO口 来控制段选,

芯片图详解如下图所示:




(1)CD4511 芯片



3.  代码部分


<DS2.h>

#ifndef _DS2_H_
#define _DS2_H_

#include <SC32F5832.h>
#include <DevInit.h>

void smg_4511_Init(void);    // 一位数码管-管脚 初始化

void smg_4511_display(u8 key);    // 一位数码管 显示函数

#endif


<DS2.c>

#include <SC32F5832.h>
#include <DevInit.h>
#include <DS2.h>

#define A0_0 PA_OUT_LOW(0)
#define A0_1 PA_OUT_HIGH(0)

#define A1_0 PA_OUT_LOW(1)
#define A1_1 PA_OUT_HIGH(1)

#define A2_0 PA_OUT_LOW(2)
#define A2_1 PA_OUT_HIGH(2)

#define A3_0 PA_OUT_LOW(3)
#define A3_1 PA_OUT_HIGH(3)


//--- 一位数码管-管脚 初始化 ---//
void smg_4511_Init()
{
	GPIO_AF_SEL(DIGITAL,PA,0,0) , PA_OUT_ENABLE(0);    
	GPIO_AF_SEL(DIGITAL,PA,1,0) , PA_OUT_ENABLE(1);
	GPIO_AF_SEL(DIGITAL,PA,2,0) , PA_OUT_ENABLE(2);
	GPIO_AF_SEL(DIGITAL,PA,3,0) , PA_OUT_ENABLE(3);    // 初始化:数字模式、第0种功能、输出使能
}

//--- 一位数码管 显示函数 ---//
void smg_4511_display(u8 key)
{
	switch(key)
	{
		case 0: A3_0, A2_0, A1_0, A0_0; break;    // 0 
		case 1: A3_0, A2_0, A1_0, A0_1; break;    // 1
		case 2: A3_0, A2_0, A1_1, A0_0; break;    // 2
		case 3: A3_0, A2_0, A1_1, A0_1; break;    // 3 
		case 4: A3_0, A2_1, A1_0, A0_0; break;    // 4
		case 5: A3_0, A2_1, A1_0, A0_1; break;    // 5
		case 6: A3_0, A2_1, A1_1, A0_0; break;    // 6
		case 7: A3_0, A2_1, A1_1, A0_1; break;    // 7
		case 8: A3_1, A2_0, A1_0, A0_0; break;    // 8
		case 9: A3_1, A2_0, A1_0, A0_1; break;    // 9
		case 10: A3_1, A2_1, A1_1, A0_1; break;   // 消隐:不显示
	}
}


这里为将

4个IO口初始化

,并且封装了一个

一位共阴数码管显示函数





需要显示什么数值直接将

函数中的 key

替换成

你要显示的数值








二、四位共阴数码管




1. 四位共阴数码管引脚图




2. 四位共阴数码管 原理图




四位数码管显示我们这里采用的是 74SLS138 芯片来实现位选、74HC245芯片来实现段选,这里我用采用了 11个 IO口(3个IO口用来控制位选(1-4),8个IO口用来控制段选(a-dp)),

芯片图详解如下图所示:


(1)74LS138 芯片



(2)74HC245 芯片



3. 代码部分


<DS2.h>

#ifndef _DS2_h_
#define _DS2_h_

#include <SC32F5832.h>
#include <DevInit.h>

void shumaguan_Init(void);		// 4位共阴数码管 初始化				

void smg_displays(uint8_t wei,uint8_t value);		// 4位共阴数码管 显示

#endif



<DS2.c>



/* Includes -----------------------------------------------------------------*/
#include <SC32F5832.h>
#include <DevInit.h>
#include <LED.h>
#include "delay.h"
#include <GPIO.h>
#include "smg_4.h"

/* define -----------------------------------------------------------------*/
#define A0_1 PA_OUT_HIGH(8)
#define A0_0 PA_OUT_LOW(8) 

#define A1_1 PA_OUT_HIGH(9)
#define A1_0 PA_OUT_LOW(9)

#define A2_1 PA_OUT_HIGH(10)
#define A2_0 PA_OUT_LOW(10)    // 3个段选位

uint8_t shuzhi[11] = {0x003F,0x0006,0x005B,0x004F,0x0066,0x006D,0x007D,0x0007,0x007F,0x006F,0X00FF};    // 储存显示内容:0-9、消隐

//--- 4位共阴数码管 初始化 ---// 
void shumaguan_Init()
{
	// 为 138 管脚使能
	PA_OUT_ENABLE(0);
	PA_OUT_ENABLE(1);
	PA_OUT_ENABLE(2);
	PA_OUT_ENABLE(3);
	PA_OUT_ENABLE(4);
	PA_OUT_ENABLE(5);
	PA_OUT_ENABLE(6);
	PA_OUT_ENABLE(7);
	PA_OUT_ENABLE(8);
	PA_OUT_ENABLE(9);
	PA_OUT_ENABLE(10);
	
	// 138 管脚初始化
	GPIO_AF_SEL(DIGITAL,PA,0,0);
	GPIO_AF_SEL(DIGITAL,PA,1,0);
	GPIO_AF_SEL(DIGITAL,PA,2,0);
	GPIO_AF_SEL(DIGITAL,PA,3,0);
	GPIO_AF_SEL(DIGITAL,PA,4,0);
	GPIO_AF_SEL(DIGITAL,PA,5,0);
	GPIO_AF_SEL(DIGITAL,PA,6,0);
	GPIO_AF_SEL(DIGITAL,PA,7,0);
	GPIO_AF_SEL(DIGITAL,PA,8,0);
	GPIO_AF_SEL(DIGITAL,PA,9,0);
	GPIO_AF_SEL(DIGITAL,PA,10,0);
}

//--- 4位共阴数码管 显示 ---//
void smg_displays(uint8_t wei,uint8_t value)
{
	switch(wei)
	{
		case 0:
			A0_0,A1_0,A2_0;break;
		case 1:
			A0_0,A1_0,A2_1;break;
		case 2:
			A0_0,A1_1,A2_0;break;
		case 3:
			A0_0,A1_1,A2_1;break;	
	}
	if(wei == 2)
	{
		PA->OUT |= shuzhi[value]|0x80;
	}
	else
	{
		PA->OUT |= shuzhi[value];	
	}

	delay_ms(5);
	PA->OUT &= 0XFF00;		//消隐函数 
}


这里我对

3个位选IO口



8个段选IO口

初始化,并封装了 4位共阴数码管显示函数,


第一变量 wei:操作变量显示在4位中的 哪一位,第二变量 value:操作显示的值 是什么




版权声明:本文为qq_58676187原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。