1. 实验材料
Uno R3开发板
配套USB数据线
面包板及配套连接线
共阴极数码管
1个220Ω限流电阻
2. 实验步骤
1. 根据原理图搭建电路。
数码管的A,B,C,D,E,F,G,DP引脚分别接入开发板的数字管脚7,6,5,10,11,8,9,4。数码管公共端接限流电阻,电阻另一端接GND。
实验原理图如下图所示:
实验原理图
实物连接图如下图所示:
实物连接图
2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。
/*Random
通过Random随机显示0到9的数字
*///设置控制各段的数字IO脚,具体几号引脚对应哪一段,来源为数码管官方引脚图。int pin_a = 7int pin_b = 6int pin_c = 5int pin_d = 10int pin_e = 11int pin_f = 8int pin_g = 9int pin_p = 4int num//根据共阴极数码管段码表定义0~9显示的各段开关状态int numTable[10][8] = { //1为点亮,0为关闭
//a b c d e f g dp
{1, 1, 1, 1, 1, 1, 0, 0}, //0
{0, 1, 1, 0, 0, 0, 0, 0}, //1
{1, 1, 0, 1, 1, 0, 1, 0}, //2
{1, 1, 1, 1, 0, 0, 1, 0}, //3
{0, 1, 1, 0, 0, 1, 1, 0}, //4
{1, 0, 1, 1, 0, 1, 1, 0}, //5
{1, 0, 1, 1, 1, 1, 1, 0}, //6
{1, 1, 1, 0, 0, 0, 0, 0}, //7
{1, 1, 1, 1, 1, 1, 1, 0}, //8
{1, 1, 1, 1, 0, 1, 1, 0}, //9}void setup(){ for (int i = 4i <= 11i++)
{
pinMode(i, OUTPUT)//设置4~11引脚为输出模式
}
randomSeed(analogRead(0))
}//根据索引显示数字void showNum(int index){
digitalWrite(pin_a, numTable[index][0])//设置a 引脚的电平
digitalWrite(pin_b, numTable[index][1])//设置b 引脚的电平
digitalWrite(pin_c, numTable[index][2])//设置c 引脚的电平
digitalWrite(pin_d, numTable[index][3])//设置d 引脚的电平
digitalWrite(pin_e, numTable[index][4])//设置e 引脚的电平
digitalWrite(pin_f, numTable[index][5])//设置f 引脚的电平
digitalWrite(pin_g, numTable[index][6])//设置g 引脚的电平
digitalWrite(pin_p, numTable[index][7])//设置dp引脚的电平}void loop(){
num = random(10)//产生随机数
showNum(num)//显示随机数
delay(500)
}
3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。
Arduino语言和C语言很类似。整个Arduino程序可以分为两个大块:setup函数和loop函数。其中setup(初始化)函数为上电时一开始就执行的函数。类似电脑的开机自启动程序,此函数仅在上电时被执行一次,此后永不执行,除非重启。此函数内的代码一般为各种元件、模块、功能的初始化函数。
而loop(循环)函数则是初始化完成后一直执行的函数。此函数其实为一个无限循环(死循环),里面的代码将被反复执行,直到断电或者重启。大部分的代码都在这个函数内。
在初始化部分中,又有一个pinMode函数,这个函数是用来规定当前管脚功能的。
语法规则:pinMode(引脚编号,模式)
其中模式主要有三种:
OUTPUT——输出
INPUT——输入
INPUT_PULLLUP——带上拉电阻的输入。对于什么是上拉电阻,以后的推送中会介绍。
在这里是规定为输出模式以点亮LED。
若你想让管脚输出或者输入高/低电平,请务必在初始化部分加上这个函数,否则会有很多意想不到的问题!
在循环部分中,有两个函数:
第一个是digitalWrite函数,这个函数是用来规定管脚的输出的。
语法规则:digitalWrite(引脚编号,模式)
其中模式有两种:
HIGH或1——高电平,输出+5V电压
LOW或0——低电平,输出0V电压
第二个是delay函数,这个函数是用来控制延时的。
语法规则:delay(时间)
时间单位为毫秒(ms),1秒等于1000毫秒。
在延迟期间内,处理器将什么也不做直到延时结束,这其实极大地浪费了处理器的性能,故我个人不推荐直接通过delay来实现延时的目的。你可以使用其他方法来替代,具体做法将在以后的推送中介绍。
这样一来,这个程序也就十分清晰明了了:
首先,规定13号引脚,也就是LED_BUILTIN,为输出模式。
然后,让其输出高电平来点亮LED并延迟一秒来维持这种状态。
再后,让其输出低电平来熄灭LED并延迟一秒来维持这种状态。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)