arduino学习笔记5数码管实验Word格式.docx
《arduino学习笔记5数码管实验Word格式.docx》由会员分享,可在线阅读,更多相关《arduino学习笔记5数码管实验Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
![arduino学习笔记5数码管实验Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/2/1a5ce2f2-d3b6-4496-8b1f-556a0611989f/1a5ce2f2-d3b6-4496-8b1f-556a0611989f1.gif)
分别表示了1,6,5,10针脚。
数码管和发光二极管一样,需要添加限流电阻,因为网上没有查到资料说明该数码管的击穿电压是多大。
所以供给电源电压宁可小不可大,所以选择220Ω限流电阻,和3.3V供电。
线路连接图如下
把下面的代码编译后下载到控制板上,看看效果~
//设置控制各段的数字IO脚,具体几号引脚对应哪一段,来源为数码管官方引脚图。
inta=7;
intb=6;
intc=5;
intd=11;
inte=10;
intf=8;
intg=9;
intdp=4;
//显示数字1
voiddigital_1(void)
{
unsignedcharj;
digitalWrite(c,LOW);
//给数字5引脚低电平,点亮c段
digitalWrite(b,LOW);
//点亮b段
for(j=7;
j<
=11;
j++)//熄灭其余段
digitalWrite(j,HIGH);
digitalWrite(dp,HIGH);
//熄灭小数点DP段
}
//显示数字2
voiddigital_2(void)
digitalWrite(a,LOW);
for(j=9;
j++)
digitalWrite(j,LOW);
digitalWrite(c,HIGH);
digitalWrite(f,HIGH);
//显示数字3
voiddigital_3(void)
digitalWrite(g,LOW);
digitalWrite(d,LOW);
for(j=5;
=7;
digitalWrite(e,HIGH);
//显示数字4
voiddigital_4(void)
digitalWrite(f,LOW);
digitalWrite(a,HIGH);
digitalWrite(d,HIGH);
//显示数字5
voiddigital_5(void)
=9;
digitalWrite(b,HIGH);
//显示数字6
voiddigital_6(void)
//显示数字7
voiddigital_7(void)
for(j=8;
//显示数字8
voiddigital_8(void)
voidsetup()
inti;
//定义变量
for(i=4;
i<
i++)
pinMode(i,OUTPUT);
//设置4~11引脚为输出模式
voidloop()
{
while
(1)
{
digital_1();
//数字1
delay(2000);
//延时2s
digital_2();
digital_3();
digital_4();
digital_5();
digital_6();
digital_7();
digital_8();
}
本次试验的效果为数码管1,2,3,4,5,6,7,8这样子循环显示。
上面的代码使用的是传统的方法来显示1,2,3,4。
如果遇到工程量比较大的时候,这种方法就不合适了。
这时我们需要使用数组的方法来进行控制。
使用数组前,需要先对显示0,1,2,3等情况下,各个端口的开关情况进行统计,统计结果如下图。
请大家把下面的代码输入控制板,看看实验效果,然后对两种代码表达方式进行研究~~看看异同。
byteseven_seg_digits[10][8]={//设置每个数字所对应的开关数组
{1,0,0,0,0,1,0,0},//=0
{1,0,0,1,1,1,1,1},//=1
{1,1,0,0,1,0,0,0},//=2
{1,0,0,0,1,0,1,0},//=3
{1,0,0,1,0,0,1,1},//=4
{1,0,1,0,0,0,1,0},//=5
{1,0,1,0,0,0,0,0},//=6
{1,0,0,0,1,1,1,1},//=7
{1,0,0,0,0,0,0,0},//=8
{1,0,0,0,0,0,1,0}//=9
};
voidsetup(){//4-11号端口设定为输出模式
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
voidsevenSegWrite(bytedigit){//设置通过数组控制引脚开关,顺序为4-11号端口
bytepin=4;
for(bytesegCount=0;
segCount<
8;
++segCount){
digitalWrite(pin,seven_seg_digits[digit][segCount]);
++pin;
voidloop(){//设置显示效果为从9开始倒数
for(bytecount=10;
count>
0;
--count){
delay(1000);
sevenSegWrite(count-1);
视频效果如下