极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12929|回复: 8

用按键控制数码管怎么弄哇

[复制链接]
发表于 2013-9-8 12:16:11 | 显示全部楼层 |阅读模式
来到这里对单片机产生了兴趣,用人家的程序弄进去弄出来挺好玩的。这两天想用两个按键来控制数码管上的数字,可怜啊从哪里开始写程序都不懂,这里有高人上来问问怎么开始?或者谁帮我放上来给我玩下。谢谢你啦!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-9-8 12:34:17 | 显示全部楼层
既然有兴趣,而且还摆弄了两下,想动手不错啊。分成两部分吧,先解决显示,在解决输入,把他们的例子看懂了就好,最后拼接下就能实现你的愿望。
回复 支持 反对

使用道具 举报

发表于 2013-9-8 12:54:01 | 显示全部楼层
好吧,你用一下我的数码管驱动程序:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-8 16:36:25 | 显示全部楼层
我现在这水平看程序是半懂不懂加胆大瞎弄,把4位数码管显示直接用一位数码管显示,结果没有显示,就把数码管4位阴脚删除了这样一位能显示了,可我的是阳脚就出现8了,这下就只能慢慢来改HIGH和LOW了。这按键怎么去控制我还没搞定??

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-9-8 18:05:36 | 显示全部楼层
请到arduino精华中入门教材第四课和十八课。
回复 支持 反对

使用道具 举报

发表于 2013-9-9 11:44:07 | 显示全部楼层
把数码管当做八个灯,用八个数字端口控制输出信号。
开关接另外一个数字端口,控制输入信号
-----------------------------------------------------------------
int i=0;

void loop(){
switch (i){
case 0:某6个端口输出高电平,其他的端口输出低电平;break;
case 1:某两个端口输出高电平,其他的端口输出低电平;break;
case 2:某5个端口输出高电平,其他的端口输出低电平;break;
........}

如果连接开关的端口有输入信号,则则执行后边的语句,否则等待。
i=i+1;
if (i=10)
  {i=0;}
}
以上思路可以完成:按钮每按一次,数码管数值+1,且不断的在0-9之间循环。
----------------------------------
代码可能复杂了些,不过容易理解!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-9 12:53:17 | 显示全部楼层
哈哈,谢谢 楼上思路简洁明了,要去弄弄看。有意思的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-10 14:05:38 | 显示全部楼层
这个要命的嘞,太难搞了。最后还是抄到了一段出来实现了,要是减小数字估计把<改成>就能实现了。
int a=2;
int b=3;
int c=4;
int d=5;
int e=6;
int f=7;
int g=8;
int dp=9;

void digital_1(void)
{
&nbsp;&nbsp;unsigned char j;
&nbsp;&nbsp;digitalWrite(c,0);
&nbsp;&nbsp;digitalWrite(b,0);
&nbsp;&nbsp;for(j=5;j<=8;j++)
&nbsp;&nbsp;digitalWrite(j,1);
&nbsp;&nbsp;digitalWrite(a,1);
&nbsp;&nbsp;digitalWrite(dp,1);
&nbsp;&nbsp;}
&nbsp;&nbsp;void digital_2(void)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;unsigned char j;
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(b,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(a,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(g,0);
&nbsp;&nbsp;&nbsp;&nbsp;for(j=5;j<=6;j++)
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(j,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(dp,1);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(c,1);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(f,1);
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;void digital_3(void)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;unsigned char j;
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(g,0);
&nbsp;&nbsp;&nbsp;&nbsp;for(j=2;j<=5;j++)
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(j,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(dp,1);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(f,1);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(e,1);
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;void digital_4(void)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;unsigned char j;
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(c,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(b,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(f,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(g,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(dp,1);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(a,1);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(e,1);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(d,1);
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;void digital_5(void)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;unsigned char j;
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(j,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(a,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(c,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(f,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(d,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(dp,1);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(b,1);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(e,1);
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;void digital_6(void)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;unsigned char j;
&nbsp;&nbsp;&nbsp;&nbsp;for(j=4;j<=8;j++)
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(j,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(c,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(dp,1);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(b,1);
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;void digital_7(void)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;unsigned char j;
&nbsp;&nbsp;&nbsp;&nbsp;for(j=2;j<=4;j++)
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(j,0);
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(dp,1);
&nbsp;&nbsp;&nbsp;&nbsp;for(j=5;j<=8;j++)
&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(j,1);
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;void digital_8(void)
&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned char j;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=2;j<=8;j++)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;digitalWrite(dp,1);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;void setup ()
&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;int i;
&nbsp;&nbsp;&nbsp;&nbsp;for(i=2;i<=9;i++)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pinMode(i,OUTPUT);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;}
&nbsp;&nbsp;void loop()
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;digital_1();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(analogRead(0)>512);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(200);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;digital_2();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(analogRead(0)>512);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(200);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;digital_3();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(analogRead(0)>512);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(200);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;digital_4();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(analogRead(0)>512);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(200);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;digital_5();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(analogRead(0)>512);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(200);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;digital_6();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(analogRead(0)>512);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(200);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;digital_7();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(analogRead(0)>512);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(200);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;digital_8();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(analogRead(0)>512);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(200);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
回复 支持 反对

使用道具 举报

发表于 2013-9-13 11:46:21 | 显示全部楼层
楼主 的数码管和我的一模一样。。。。你可以搜索一下我的帖子,里面有代码。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 18:01 , Processed in 0.041640 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表