本帖最后由 飞扬跋扈 于 2013-7-6 10:42 编辑
自己最近正在学习单片机的LED点阵,8*8的点阵已经弄懂了想扩展到16*16的,原理图大致能画出来,但是编程运行总是得不到预期结果,最主要的原因就用的取模软件生成的代码在程序中不会正确使用。。。有没有大神能帮忙解释一下,中南是用取模软件按阴码,逐列,逆序的取码方式得到的。。。。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void rxdout(uchar*d);
sbit st=P3^2;
uchar table[][32]=
{
{0x00,0x00,0x00,0x00,0xFC,0x07,0x08,0x02,0x08,0x02,0x08,0x02,0x08,0x02,0xFF,0xFF,
0x08,0x02,0x08,0x02,0x08,0x02,0x08,0x02,0xFC,0x07,0x08,0x00,0x00,0x00,0x00,0x00},/*"中",0*/
{0x04,0x00,0x04,0x00,0xE4,0x7F,0x24,0x04,0x24,0x05,0x64,0x05,0xB4,0x05,0x2F,0x7F,
0x24,0x05,0xA4,0x05,0x64,0x05,0x24,0x25,0x24,0x44,0xE6,0x3F,0x04,0x00,0x00,0x00}/*"南",1*/
void delay(uint N)
{
uint j,k;
for(k=0;k<N;k++)
for(j=100;j>0;j--);
}
void main()
{
uchar i,m,row;
for(i=0;i<2;i++)
{
for((row=0,m=0);m<32;m+=2)
{
st=0;
P1=row;
rxdout(&table[m]);
rxdout(&table[m+1]);
st=1;
row++;
delay(2);
}
delay(3000);
}
}
void rxdout(uchar*d)
{
SBUF=*d;
while(!TI);
TI=0;
}
|