|
新手写了个16行32列的LED显示屏的51程序,但是在实现LED显示屏每隔1秒循环亮灭过程中只有中间2行能实现,第一行和最后一行不能实现,什么原因?各位大神帮帮忙啊
#include "reg51.h"
#define uchar unsigned char
uchar time;
sbit A1 = P0^0;
sbit B1 = P0^1;
void LineScan(char line)
{
switch(line)
{
case 0: A1=0;B1=0;
break;
case 1: A1=1;B1=0;
break;
case 2: A1=0;B1=1;
break;
case 3: A1=1;B1=1;
break;
default:
break;
}
}
void initTimer(void)
{
TMOD=0x1;
TH0=0xd8;
TL0=0xf0;
}
void timer0(void) interrupt 1
{
TH0=0xd8;
TL0=0xf0;
//add your code here.
time++;
}
void main(void)
{
initTimer();
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(time==50) //中断50次,0.5s
{
time=0;
LineScan(0);
}
if(time==50) //中断100次,1s
{
time=0;
LineScan(1);
}
if(time==50) //中断150次,1.5s
{
time=0;
LineScan(2);
}
if(time==50) //中断200次,2s
{
time=0;
LineScan(3);
}
}
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|