×

如何驱动数码管

消耗积分:2 | 格式:zip | 大小:0.10 MB | 2022-12-19

刘丰标

分享资料个

描述

我们需要的

  • 数码管需要 170V 直流电源,所以我们需要数码管电源模块 - 任何高压 170V 转换器都可以。
  • 我们需要一个适用于高压的驱动器 - 例如Nixie Tube Driver V2
  • 任何 Arduino 板 - 在本例中,它将是 Arduino Nano
 
 
 
poYBAGOYczGAY2OdAAdn7zcgq2E938.jpg
 
1 / 2
 

数码管驱动器 V2 - 参数

  • 22路输出连接数码管阴极(K1-K22)
  • 300V 关态最大输出电压
  • 兼容所有 5V / 3.3V 设计
  • 易于使用 - 只有 3 条控制线
  • 驱动器可以串联

有关 Nixie Tube Driver V2 的更多信息,请访问项目网站

poYBAGOYc1eARWztAAubLg3_4n8115.jpg
 

 

如何将数码管连接到驱动器

只有 3 条控制线 DIN、CLK、EN。22路输出让您可以连接两个带点的数码管

poYBAGOYc2KAOhZcAAKYT-qkBEo318.jpg
 
poYBAGOYc4GAa_ZAAAqfHv3lImo398.png
 

阿杜诺代码

一开始我们必须声明我们是如何连接各个数码管阴极的:

// Bit array for 2 nixie tubes, dot1, dot2, 2 bits for gaps
boolean nixieDisplayArray[24];

// Cathodes assignment to the position in the 24 bit array
// Each cathode of nixie tubes is connected to the corresponding driver output

// Bit numbers
byte nixie1[]={
//   0   1   2   3   4   5   6   7   8   9
0,  1,  2,  3,  4,  5,  6,  7,  8,  9 };
byte nixie2[]={
//   0   1   2   3   4   5   6   7   8   9
10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
byte dot1 = 20;   // K21 nixie driver output
byte dot2 = 21;   // K22

nixieDisplayArray[24]; 如果驱动器有 22 个输出,为什么是 24 位?如果您仔细查看数码驱动器的内部原理图,您会注意到其中一个移位寄存器有两个未连接的输出。如果我们想使用多个串联的驱动程序,我们必须填补这个空白,以便将数据正确传输到后续驱动程序(寄存器)。

移位寄存器控制程序。您还可以使用任何库来控制移位寄存器,但为了更好地理解该程序包含控制寄存器所需的所有步骤,而无需使用该库。

void ShiftOutData()
{
// Ground EN pin and hold low for as long as you are transmitting
digitalWrite(EN_PIN, 0);
// Clear everything out just in case to
// prepare shift register for bit shifting
digitalWrite(DIN_PIN, 0);
digitalWrite(CLK_PIN, 0);
// Send data to the nixie drivers
for (int i = 23; i >= 0; i--)
{
// Set high only the bit that corresponds to the current nixie digit
digitalWrite(DIN_PIN, nixieDisplayArray[i]);
// Register shifts bits on upstroke of CLK pin
digitalWrite(CLK_PIN, 1);
// Set low the data pin after shift to prevent bleed through
digitalWrite(CLK_PIN, 0);
}
// Return the EN pin high to signal chip that it
// no longer needs to listen for data
digitalWrite(EN_PIN, 1);
// Stop shifting
digitalWrite(CLK_PIN, 0);
}

核心控制代码:

void NixieDisplay(byte digit1, byte digit2)
{
// Convert the desired numbers to the bit numbers for the nixieDisplayArray[]
digit1 = nixie1[digit1];
digit2 = nixie2[digit2];
// Clear bit array except dot1 and dot2 bits
for (int i = 23; i >= 0; i--)
{
if(i != dot1 || i != dot2) nixieDisplayArray[i] = 0;
}
// Set the bits corresponding to the nixie tubes cathodes
nixieDisplayArray[digit1] = 1;
nixieDisplayArray[digit2] = 1;
ShiftOutData();
}

nixieDisplayArray[] - 这是一个存储所有 nixie 控制器输出当前状态的位数组。如果要独立控制管和点,则需要存储输出的当前状态。

// SetDot (dotNumber = 1/2, dotState = 0/1)
void SetDot(byte dotNumber, boolean dotState)
{
if(dotNumber == 1)
{
if(dotState == HIGH) nixieDisplayArray[dot1] = 1;
else nixieDisplayArray[dot1] = 0;
}
if(dotNumber == 2)
{
if(dotState == HIGH) nixieDisplayArray[dot2] = 1;
else nixieDisplayArray[dot2] = 0;
}
ShiftOutData();
}

如何显示“2.0”

现在最后一步是最简单的部分:

void loop ()
{
// NixieDisplay(digit1, digit2);
NixieDisplay(2, 0);
// SetDot (dotNumber = 1/2, dotState = 0/1)
SetDot(1, HIGH);
delay(1000);
}
poYBAGOYcxaAOrdIAAeJIGh3itk983.jpg
 
 
 
 
pYYBAGOYc9OAE8LeAA8JgxkR03Y642.jpg
 
1 / 2
 

有关 Nixie Tube Driver V2 的更多信息,请访问项目网站


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'如何驱动数码管',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);