此为基础小白文
说明
四位数码管几个说明:
每一位数码管由八个发光二极管组成,其供电模式分为共阳极和共阴极两种,一般有12个引脚。
(1)共阳极:即四位供电脚LED1+、LED2+、LED3+、LED4+需要给高电平(HIGH);八个显示A、B、C、D、E、F、G、dp需要给低电平(LOW)。
(2)共阴极:即四位供电引脚LED1-、LED2-、LED3-、LED4-需要给低电平(LOW);八个显示引脚A、B、C、D、E、F、G、dp需要给高电平(HIGH)。
(3)位选和段选:位选指通过给LED1+、LED2+、LED3+、LED4+其中一个供电电平,即哪一位亮,全给就是全都亮。段选指要显示的数字多少,这里我们用数组实现段选(下面会讲)。
*本实验为共阳极管
arduino开发板引脚说明:
实验的开发板用到的数字引脚2~13,其中2号引脚为中断引脚:
说明 | 引脚 |
---|---|
中断触发 | 2、3 |
数字输入输出 | 2、3、4、5、6、7、8、9、10、11、12、13 |
程序说明:
本实验实现数码管计数和循环计数,两个功能。
实验中可以重点学习的两个程序内容:数组和中断机制。
数组说明:
一维数组 :粗浅解释指一组相同类型元素的集合。
其函数表达式:类型说明符 数组名 [常量表达式] = {同类型元素}
例如: int value [5];
初始化后: int value [5] = {1, 2, 3, 4, 5};//读作一组名为value的整数型数组,每个元素分别赋值1、2、3、4、5
调用:
value [1] ;//此时名为value值是1
二维数组:指一维数组的叠加的集合。
其函数表达式:类型说明符 数组名 [常量表达式] [常量表达式] = {同类型元素}
例如: int value [5]【4】;
初始化后:int value [5]【4】=
{
{0,0,0,1}
{0,0,1,0}
{0,0,1,1}
{0,1,0,0}
{0,1,0,1}
};//理解为从0行0零开始的,一共5行4列的一维数组
调用:
value [0]【0】;//第零行,第零列,则它的值为0
value [2]【3】;//第二行,第三列,它的值为1
//想更深入学习数组的,有B站大佬视频的BV号:BV1ka411M73P
程序模块化解析
一、全局变量定义
(1)引脚定义:
定义引脚3、4、5、6、7、8、9对应数码管的a、b、c、d、e、f、g引脚;
定义计数变量value;
定义中断接口为2,赋予了不可改变的字符型button:const(不可改变)byte(字符型)button(名称)=(赋予)2(接口)
(2)定义一个int(整数型)名为table的10行,7列的数组表格。
引脚从左到右数为a、b、c、d、e、f、g所以是7列,要显示0~9数字所以是10行,最后通过低电平点亮(0为低电平,1为高电平)。
例如数码管显示数字0,则g=1(灭),a=b=c=d=e=f=0(亮)。
dp aaaaa
f b
f b
ggggg
e c
e c
ddddd
数码管八个发光二极管排布
int a = 3;//引脚定义
int b = 4;//引脚定义
int c = 5;//引脚定义
int d = 6;//引脚定义
int e = 7;//引脚定义
int f = 8;//引脚定义
int g = 9;//引脚定义
int value;//计数变量
const byte button = 2;//中断接口
int table[10] [7] =
{
//数字显示数组 从左到右a b c d e f g
{
0, 0, 0, 0, 0, 0, 1, },//数字0
{
1, 0, 0, 1, 1, 1, 1, },//数字1
{
0, 0, 1, 0, 0, 1, 0, }