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

新手数码管0-16显示有关问题

2012-04-09 
新手数码管0-16显示问题#includereg52.h#define ui unsigned int#define uc unsigned charuc code tab[]

新手数码管0-16显示问题
#include<reg52.h>
#define ui unsigned int
#define uc unsigned char
uc code tab[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x73,0x3e,0x31,0x6e,0xff};
sbit d=P2^6;
sbit w=P2^7;
void d1()
{
  ui a = 55000;
  while(a--);
}
void main()
{ui i;
  
  w=1;
  P0=0xc0;
  w=0;//位选
  /*d=1;
  P0=0x7d;
  d=0;
  while(1);//观察是不是能显示6
  d=1;
  P0=0x7f;
  d=0;
  while(1);*///观察能不能正确显示8
  while(1)
{
for(i=0;i<16;i++)
{
d=1;
P0=tab[i];
d=0;
d1();
}
}
}小弟写的这段代码6不能显示,8显示不正常。可是我只显示6或8没问题。求大侠们帮帮我吧!灰常感谢!

[解决办法]
这个给你参考:
#include<reg52.h>
#define uint unsigned int 
#define uchar unsigned char 
sbit dula=P2^6;
sbit wela=P2^7;
sbit d1=P1^0;
uchar num,t;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void main()
{
t=0;num=0;
TMOD=0x01;
THO=(65536-5000)/256;
TLO=(65536-5000)%256;
EA=1;//开总中断
ET0=1;
TR0=1;
wela=1;//11101010
P0=0xea;
wela=0;
dula=1;
P0=0x3f;
dula=0
while(1)
{
if(t==20)
{
num++;
if(num==16)
num=0;
d1=1;
dula=1;
P0=table[num];
dula=0;
delay(1000);
}
}
}

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void exter0() interrupt 1
{
TMOD=0x01;
THO=(65536-5000)/256;
TLO=(65536-5000)%256;
t++;
}

热点排行