打印

数码管显示重叠啦

[复制链接]
1656|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 白沙漠之鹰 于 2012-3-31 15:46 编辑

显示中有两位数码管显示重叠了,不知怎么才能正常显示。望各位大侠帮帮忙..电路中使用3个74ls374锁存器,两个锁存位码,前八和后六。一个锁存断码,用138进行锁存器位选。
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned char
sbit C1=P2^7;
sbit B1=P2^6;
sbit A1=P2^5;
sbit To=P3^4;
sbit KEY=P3^5;
sbit W=P3^6;
sbit SCL=P3^2;
sbit SDA=P3^3;
uchar code DSY_CODE[]=  //断码   
{
0xc0,
0xf9,
0xa4,
0xb0,
0x99,
0x92,
0x82,
0xf8,
0x80,
0x90,
0x88,
0x83,
0xC6,
0xA1,
0x86,  
0x8E,
};
void Delay() //延时0.5ms
{
uchar a,b,c;
for(a=0;a<5;a++)
for(b=0;b<1;b++)
for(c=0;c<63;c++);
}
void main()
{
uchar i,wei;
P0=0xff;
P1=0xff;
P2=0x00;
P3=0xff;
IE=0x00;
while(1)
{
SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
SDA=1;
To=0;
for(i=0;i<16;i++)
{
switch(i)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
              //选通锁存器2给断码
W=0;
C1=0;   
B1=1;
A1=1;
P0=DSY_CODE[5];
              //选通锁存器1给位码
C1=0;
B1=1;
A1=0;
wei=DSY_IDX;
wei=_crol_(wei,1);
P0=wei;
Delay();
break;            

case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
W=0;
               //选通锁存器2给段码
C1=0;
B1=1;
A1=1;
P0=DSY_CODE[1+Keynum2];
               

             //选通锁存器3给位码  
C1=0;   
B1=0;
A1=1;
wei=DSY_IDX[i-8];
wei=_crol_(wei,1);
P0=wei;
Delay();
break;
}
}
}
}

相关帖子

沙发
ayb_ice| | 2012-3-31 16:03 | 只看该作者
这种东西简单
多半扫描问题

使用特权

评论回复
板凳
白沙漠之鹰|  楼主 | 2012-3-31 16:35 | 只看该作者
2# ayb_ice 那具体怎么改呢?刚开始学,不怎么懂。。。请指教

使用特权

评论回复
地板
9535hzy| | 2012-3-31 16:37 | 只看该作者
我也新手刚开始

使用特权

评论回复
5
joyme| | 2012-4-1 17:23 | 只看该作者
只有14个数码管,你为什么要扫16次呢?不知道你硬件怎么接的,也许就是这个导致的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

3

帖子

0

粉丝