首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

关于同时点亮数码管且变换的有关问题

2012-04-21 
关于同时点亮数码管且变换的问题我用的数码管是共阴的,原理图一直不显示,我用的是74HC138译码器,没有锁存

关于同时点亮数码管且变换的问题
我用的数码管是共阴的,原理图一直不显示,我用的是74HC138译码器,没有锁存器想要同时点亮4个数码管,并且同时变换显示1-F。源代码如下:
#include<at89x52.h>
sbit u8=P2^3;
sbit u9=P2^4;
sbit u10=P2^6;
sbit a=P2^0;
sbit b=P2^1;
sbit c=P2^2;
unsigned char code tab[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
//void relay();
void main()
{
unsigned char n;
unsigned char m;
u8=0;
u9=0;
u10=1;
while(1)
{
P1=0;
n=0;
if(++m>3)m=0;
switch(m)
{
case 0:a=1;b=0;c=0;
P1=tab[1];
break;
case 1:a=0;b=1;c=0;
P1=tab[1];
break;
case 2:P1=0;a=1;b=1;c=0;
P1=tab[1];
break;
case 3:P1=0;a=0;b=0;c=1;
P1=tab[1];
break;
default:
break;
}
}
}
现在只能同时显示4个1,想加个for循环,for(n=1;n<17;n++),然后把if case里面的P1=tab[n],但是之后却全部显示4个0,在线求教各位。

[解决办法]
这个相当简单,因为是你逻辑上有问题了,所以你用KEIL一步一步软仿,然后看变量值是不是你想的那样,看程序是不是按自己设计的路子在走,很快就能搞定!
[解决办法]

探讨

#include<at89x52.h>
unsigned char code tab[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
unsigned char code tab1[]={0xe4,0xe3,0xe2,0xe1};
void dela……

热点排行