LK32T102 单片机 四位数码管

前言:        

        之前我们学习了解了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:操作显示的值 是什么

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值