1.实验主角
将万用表跳到二极管档位上,将红黑表笔放在引脚上哪节灯亮就代表该引脚控制哪个灯管。我们买的是14根引脚的,在本次实验中我们只用到12根引脚,用不到控制数码管中间俩点的引脚,经过测量我们发现第7和8引脚是控制中间俩点的,故在本次实验中不考虑。
2. 实验材料
nano 开发板
配套USB数据线
面包板
杜邦线若干
四位共阴极数码管
4个4700Ω限流电阻
3.实验步骤
(1)根据四位数码管的引脚图连接电路
a,b,c,d,e,f,g,dp引脚分别连接开发板的数字引脚7,6,5,10,11,8,9,4。数码管的1,2,3,4引脚分别串联220Ω限流电阻,电阻另一端分别连接开发板的数字引脚2,3,12,13。
(2)下载SevSeg库
打开Arduino IDE,找到菜单栏的【项目】——【加载库】——【管理库】,搜索“SevSeg”,下载此库。
sevseg是数码管驱动库,常用于四位数码管的驱动。
3. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存
```
/*
* SevSegFour
* 驱动四位数码管显示0到9999
*/#include"SevSeg.h"SevSeg sevseg;
byte numDigits = 4; //数码管位数
byte digitPins[] = {2, 3, 12, 13}; //数码管公共极连接Arduino的引脚
byte segmentPins[] = {7, 6, 5, 10, 11, 8, 9, 4}; //数码管a,b,c,d,e,f,g,dp对应引脚
byte hardwareConfig = COMMON_CATHODE ; // 共阴极数码管
int numToShow = 0;int delaycount = 0;voidsetup(){
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins); //初始化数码管}
voidloop(){
delaycount++;
if (delaycount == 1000) { //通过变量自加来达到延时效果,如果使用delay函数则会打断数码管显示 delaycount = 0;
numToShow++;
}
if (numToShow > 9999)
{numToShow = 0;}
sevseg.setNumber(numToShow, -1); //设置要显示的数据,不显示小数点 sevseg.refreshDisplay(); // 必须重复运行刷新数码管显示}
代码中用到delaycount延时函数。delaycount == 1000表示数码管数字每+1的时间间隔为1000ms