收藏 分销(赏)

arduino学习笔记5-数码管实验.doc

上传人:xrp****65 文档编号:7708968 上传时间:2025-01-13 格式:DOC 页数:13 大小:686.50KB 下载积分:10 金币
下载 相关 举报
arduino学习笔记5-数码管实验.doc_第1页
第1页 / 共13页
arduino学习笔记5-数码管实验.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
数码管介绍 数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数数码管和八段数数码管,八段数数码管比七段数数码管多一个发光二极管单元(多一个小数点显示) 发光二极管单元连接方式分为共阳数码管和共阴数码管。共阳数码管是指将所有发光二极管的阳极连接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极PWR接到电源输入PWR上,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管则更好相反,阴极连接到一起形成了公共阴极,阳极是独立分开的。 先来看一下本次实验使用的数码管。   通过查询型号LG5011BSR得知其为0.5"单联共阳数码管,下面是其引脚图。   查看其背后,四个角分别有2个原点和5,10两个标记。分别表示了1,6,5,10针脚。   数码管和发光二极管一样,需要添加限流电阻,因为网上没有查到资料说明该数码管的击穿电压是多大。所以供给电源电压宁可小不可大,所以选择220Ω限流电阻,和3.3V供电。 线路连接图如下     把下面的代码编译后下载到控制板上,看看效果~ //设置控制各段的数字IO脚,具体几号引脚对应哪一段,来源为数码管官方引脚图。 int a=7; int b=6; int c=5; int d=11; int e=10; int f=8; int g=9; int dp=4; //显示数字1 void digital_1(void) { unsigned char j; digitalWrite(c,LOW);//给数字5引脚低电平,点亮c段 digitalWrite(b,LOW);//点亮b段 for(j=7;j<=11;j++)//熄灭其余段 digitalWrite(j,HIGH); digitalWrite(dp,HIGH);//熄灭小数点DP段 } //显示数字2 void digital_2(void) { unsigned char j; digitalWrite(b,LOW); digitalWrite(a,LOW); for(j=9;j<=11;j++) digitalWrite(j,LOW); digitalWrite(dp,HIGH); digitalWrite(c,HIGH); digitalWrite(f,HIGH); } //显示数字3 void digital_3(void) { unsigned char j; digitalWrite(g,LOW); digitalWrite(d,LOW); for(j=5;j<=7;j++) digitalWrite(j,LOW); digitalWrite(dp,HIGH); digitalWrite(f,HIGH); digitalWrite(e,HIGH); } //显示数字4 void digital_4(void) { digitalWrite(c,LOW); digitalWrite(b,LOW); digitalWrite(f,LOW); digitalWrite(g,LOW); digitalWrite(dp,HIGH); digitalWrite(a,HIGH); digitalWrite(e,HIGH); digitalWrite(d,HIGH); } //显示数字5 void digital_5(void) { unsigned char j; for(j=7;j<=9;j++) digitalWrite(j,LOW); digitalWrite(c,LOW); digitalWrite(d,LOW); digitalWrite(dp,HIGH); digitalWrite(b,HIGH); digitalWrite(e,HIGH); } //显示数字6 void digital_6(void) { unsigned char j; for(j=7;j<=11;j++) digitalWrite(j,LOW); digitalWrite(c,LOW); digitalWrite(dp,HIGH); digitalWrite(b,HIGH); } //显示数字7 void digital_7(void) { unsigned char j; for(j=5;j<=7;j++) digitalWrite(j,LOW); digitalWrite(dp,HIGH); for(j=8;j<=11;j++) digitalWrite(j,HIGH); } //显示数字8 void digital_8(void) { unsigned char j; for(j=5;j<=11;j++) digitalWrite(j,LOW); digitalWrite(dp,HIGH); } void setup() { int i;//定义变量 for(i=4;i<=11;i++) pinMode(i,OUTPUT);//设置4~11引脚为输出模式 } void loop() { while(1) { digital_1();//数字1 delay(2000);//延时2s digital_2(); delay(2000); digital_3(); delay(2000); digital_4(); delay(2000); digital_5(); delay(2000); digital_6(); delay(2000); digital_7(); delay(2000); digital_8(); delay(2000); } } 本次试验的效果为数码管1,2,3,4,5,6,7,8这样子循环显示。 上面的代码使用的是传统的方法来显示1,2,3,4。如果遇到工程量比较大的时候,这种方法就不合适了。这时我们需要使用数组的方法来进行控制。使用数组前,需要先对显示0,1,2,3等情况下,各个端口的开关情况进行统计,统计结果如下图。   请大家把下面的代码输入控制板,看看实验效果,然后对两种代码表达方式进行研究~~看看异同。 byte seven_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 }; void setup() { //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); } void sevenSegWrite(byte digit) { //设置通过数组控制引脚开关,顺序为4-11号端口 byte pin = 4; for (byte segCount = 0; segCount < 8; ++segCount) { digitalWrite(pin, seven_seg_digits[digit][segCount]); ++pin; } } void loop() { //设置显示效果为从9开始倒数 for (byte count = 10; count > 0; --count) { delay(1000); sevenSegWrite(count - 1); } delay(2000); } 视频效果如下
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服