51单片机8*8点阵,字幕移动十分缓慢,程序如下

#include<reg52.h>#include<intrins.h>#defineucharunsignedcharucharcodeshulie[]={0x00,0... #include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
uchar code shulie[]={0x00,0x4A,0x2A,0x1E,0x2A,0x4A,0x00,0x00,0x4A,0x2A,0x1E,0x2A,0x4A,0x00,0x40,0x2A,0x1E,0x0A,0x7E,0x0A,0x00,0x0C,0x1E,0x3E,0x7C,0xF8,0x7C,0x3E,0x1E,0x0C,0x00,0x00};//列字母编码“天天开心”
sbit lie=P2^5;
sbit hang=P2^6;
uchar num=0,i,a,b;
delay(uchar x)
{
uchar y,z;
for(y=0;y<5;y++)
for(z=0;z<x;z++);
}
void main()
{
lie=0;
hang=0;
EA=1;
ET1=1;
TMOD=0x10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
while(1)
{
a=0xfe;
for(i=0;i<8;i++)
{
hang=1;
P0=0xff;
hang=0;
lie=1;
P0=shulie[num+i];
lie=0;
hang=1;
P0=a;
hang=0;
a=_crol_(a,1);
delay(3);
}
}

}
void time() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
b++;
if(b==10)
{
num++;
}
if(num==24)
{
num=0;
}
}
点阵阳极阴极都接P0口,分别是hang,lie来控制,
行 ,列为2个锁存器
展开
 我来答
wufa1986
2011-07-22
知道答主
回答量:15
采纳率:0%
帮助的人:14.8万
展开全部
从程序上看是一个定时器1定时累加移动变量,没有硬件看不出什么问题,可能时操作太快了,试试把显示循环延迟调大点或修改定时器1中断值。
追问
b==10后,没归0,不过还是谢谢你的回答,小小5分送给你了,呵呵!!
lycdl
高粉答主

2017-10-31 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4928万
展开全部
你是实物开发板,还是仿真,如果是仿真,这程序得改成

P0=shulie[num+i];
lie=1; //后高

lie=0; //先低
P0=a;
hang=1; //后高

hang=0; //先低
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式