求助大神,我想要在8*8LED矩阵上面显示学号,程序是下面这样,但是我现在只能输出4个数字,后面的显示不出来了,求助一下

qy06007aili 2017-04-09 11:44:02
#include <reg52.h>

typedef unsigned char uint8;
typedef unsigned int uint16;

sbit acon=P1^0;
sbit bcon=P1^1;
sbit ccon=P1^2;
sbit en=P1^7;

uint8 j=0,k=0;
uint16 i=0;

code uint8 ledcode[]={ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xC3,0xBD,0xFD,0xC3,0xBF,0xBD,0xC3,
0xFF,0xC3,0xBD,0xBD,0xBD,0xBD,0xC3,0xFF,
0xFF,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFF,
0xFF,0xC3,0xBD,0xFD,0xC3,0xFD,0xC3,0xFF,
0xFF,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFF,
0xFF,0xC3,0xBD,0xFD,0xC3,0xFD,0xC3,0xFF,
0XFF,0XC3,0XBD,0XBD,0XBD,0XBD,0XC3,0XFF,
0XFF,0XC3,0XBD,0XBF,0XC3,0XBD,0XBD,0XC3,
0xFF,0xC3,0xBD,0xBD,0xBD,0xBD,0xC3,0xFF,
0xFF,0xC3,0xBD,0xBD,0xBD,0xBD,0xC3,0xFF,
0XFF,0XEB,0XCB,0XFB,0XFB,0XFB,0XFB,0XFF
};

void timer1_init()
{
TMOD|=0x10;
TMOD&=0xef;
TH1=0xfc; //1ms
TL1=0x66;
TR1=1;
}

void inter_init()
{
ET1=1;
EA=1;
}


void frush()
{
switch(j)
{
case 0:acon=0;bcon=0;ccon=0;break;
case 1:acon=1;bcon=0;ccon=0;break;
case 2:acon=0;bcon=1;ccon=0;break;
case 3:acon=1;bcon=1;ccon=0;break;
case 4:acon=0;bcon=0;ccon=1;break;
case 5:acon=1;bcon=0;ccon=1;break;
case 6:acon=0;bcon=1;ccon=1;break;
case 7:acon=1;bcon=1;ccon=1;break;
}
P2=ledcode[k+j];
if(j==7)j=0;
j++;
}

main()
{
en=1;
P2=0xff;
timer1_init();
inter_init();
while(1);
}

void timer1_interrupt() interrupt 3
{
TH1=0xfc;
TL1=0x66;
i++;
frush();
if(i==500)
{
i=0;
if(k==32)k=0;
k++;
}
}
...全文
344 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qy06007aili 2017-04-14
  • 打赏
  • 举报
回复
谢谢您,您能帮我解释一下其中k,j,i三个变量都是什么嘛,有什么作用?谢谢啦
赵4老师 2017-04-10
  • 打赏
  • 举报
回复
if(k==32)k=0; 改为 if(k==96)k=0;

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧