用按键控制数码管怎么弄哇
来到这里对单片机产生了兴趣,用人家的程序弄进去弄出来挺好玩的。这两天想用两个按键来控制数码管上的数字,可怜啊从哪里开始写程序都不懂,这里有高人上来问问怎么开始?或者谁帮我放上来给我玩下。谢谢你啦! 既然有兴趣,而且还摆弄了两下,想动手不错啊。分成两部分吧,先解决显示,在解决输入,把他们的例子看懂了就好,最后拼接下就能实现你的愿望。 好吧,你用一下我的数码管驱动程序: 我现在这水平看程序是半懂不懂加胆大瞎弄,把4位数码管显示直接用一位数码管显示,结果没有显示,就把数码管4位阴脚删除了这样一位能显示了,可我的是阳脚就出现8了,这下就只能慢慢来改HIGH和LOW了。这按键怎么去控制我还没搞定?? 请到arduino精华中入门教材第四课和十八课。 把数码管当做八个灯,用八个数字端口控制输出信号。开关接另外一个数字端口,控制输入信号
-----------------------------------------------------------------
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之间循环。
----------------------------------
代码可能复杂了些,不过容易理解!
哈哈,谢谢 楼上思路简洁明了,要去弄弄看。有意思的 这个要命的嘞,太难搞了。最后还是抄到了一段出来实现了,要是减小数字估计把<改成>就能实现了。
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)
{
unsigned char j;
digitalWrite(c,0);
digitalWrite(b,0);
for(j=5;j<=8;j++)
digitalWrite(j,1);
digitalWrite(a,1);
digitalWrite(dp,1);
}
void digital_2(void)
{
unsigned char j;
digitalWrite(b,0);
digitalWrite(a,0);
digitalWrite(g,0);
for(j=5;j<=6;j++)
digitalWrite(j,0);
digitalWrite(dp,1);
digitalWrite(c,1);
digitalWrite(f,1);
}
void digital_3(void)
{
unsigned char j;
digitalWrite(g,0);
for(j=2;j<=5;j++)
digitalWrite(j,0);
digitalWrite(dp,1);
digitalWrite(f,1);
digitalWrite(e,1);
}
void digital_4(void)
{
unsigned char j;
digitalWrite(c,0);
digitalWrite(b,0);
digitalWrite(f,0);
digitalWrite(g,0);
digitalWrite(dp,1);
digitalWrite(a,1);
digitalWrite(e,1);
digitalWrite(d,1);
}
void digital_5(void)
{
unsigned char j;
digitalWrite(j,0);
digitalWrite(a,0);
digitalWrite(c,0);
digitalWrite(f,0);
digitalWrite(d,0);
digitalWrite(dp,1);
digitalWrite(b,1);
digitalWrite(e,1);
}
void digital_6(void)
{
unsigned char j;
for(j=4;j<=8;j++)
digitalWrite(j,0);
digitalWrite(c,0);
digitalWrite(dp,1);
digitalWrite(b,1);
}
void digital_7(void)
{
unsigned char j;
for(j=2;j<=4;j++)
digitalWrite(j,0);
digitalWrite(dp,1);
for(j=5;j<=8;j++)
digitalWrite(j,1);
}
void digital_8(void)
{
unsigned char j;
for(j=2;j<=8;j++)
digitalWrite(dp,1);
}
void setup ()
{
int i;
for(i=2;i<=9;i++)
{
pinMode(i,OUTPUT);
}
}
void loop()
{
while(1)
{
digital_1();
while(analogRead(0)>512);
delay(200);
digital_2();
while(analogRead(0)>512);
delay(200);
digital_3();
while(analogRead(0)>512);
delay(200);
digital_4();
while(analogRead(0)>512);
delay(200);
digital_5();
while(analogRead(0)>512);
delay(200);
digital_6();
while(analogRead(0)>512);
delay(200);
digital_7();
while(analogRead(0)>512);
delay(200);
digital_8();
while(analogRead(0)>512);
delay(200);
}
}
楼主 的数码管和我的一模一样。。。。你可以搜索一下我的帖子,里面有代码。
页:
[1]