打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
Arduino学习笔记A10
宽宽r700
>《arduino》
2016.10.03
关注
Arduino数码管骰子实验
电路连接
由于数码管品种多样,还有共阴共阳的,下面我们使用一个
数码管段码生成器(在文章结尾)
去解决不同数码管的问题:
本例作者利用手头现有的一位不知品牌的共阳数码管:型号D5611A/B,在Eagle找了一个类似的型号SA56-11,引脚功能一样可以直接代换。所以下面电路图使用SA56-11做引脚说明。
注意:
1.将数码管的a~g段,分别接到Arduino的D0~D6上面。如果你手上的数码管未知的话,可以通过通电测量它哪个引脚对应哪个字段,然后找出a~g即可。
2. 分清共阴还是共阳。共阴的话,接220Ω电阻到电源负极;共阳的话,接220Ω电阻到电源+5v。3.220Ω电阻视数码管实际工作亮度与手头现有原件而定,不一定需要准确。
4. 按下按钮即停。
源代码
由于我是按照段码生成器默认接法接的,所以不用修改段码生成器了,直接在段码生成器选择共阳极,再按“自动”生成数组就搞定。
下面是源代码,由于偷懒不用写循环,使用了部分AVR语句。
PORTD这个是AVR的端口输出控制语句,8位对应D7~D0,PORTD=00001001就是D3和D0是高电平。
PORTD = a;就是找出相应的段码输出到D7~D0。
DDRD这个是AVR语句中控制引脚作为输出/输入的语句。DDRD = 0xFF;就是D0~D7全部作为输出脚了。
//定义段码表,表中十个元素由LED段码生成器生成,选择了共阳极。
int a[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80,0x90};
void setup()
{
DDRD =0xFF;
//AVR定义PortD的低七位全部用作输出使用。即0xFF=B11111111对应D7~D0
pinMode(12,INPUT);
//D12用来做骰子暂停的开关
}
void loop()
{
for(int i = 0; i < 10;i++)
{
//将段码输出PortD的低7位,即Arduino的引脚D0~D6,这样需要取出PORTD最高位,即D7的状态,与段码相加,之后再输出。
PORTD =a[i];
delay(50);
//延时50ms
while(digitalRead(12)){}
//如果D12引脚高电平,则在此死循环,暂停LED跑动
}
}
复制代码
实物演示视频
夜间摄像头拍摄的,质量可能比较差。仅供感性认识参考
还有,笔者录视频的时候手头没有220Ω电阻,随便抓了一个LED做电阻降压,效果一样,凑合看吧。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
细数pic单片机,pic单片机与51/AVR单片机IO操作
基于AVR单片机的CD纹机的自动控制程序
端口寄存器允许在Arduino板上更低级和更快地操纵微控制器的i / o引脚。Arduino板上使用的芯片(ATmega8和ATmega168)有三个端口:
AVR单片机系列教程(二)
轻触式开关电路在AVR单片机中的应用
arduino: 各种Arduino基础器件的用法图
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×