[求助] led点阵程序求教 万分感谢 请赐教

钱钱正太   2012-9-19 16:39 楼主
#include
unsigned char code tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
unsigned char code digittab[10][8]={{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0
{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1
{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2
{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3
{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4
{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5
{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00} //9
};
unsigned int timecount;
unsigned char cnta;
unsigned char cntb;
void main(void)
{
TMOD=0x01;
TH0=(65536-3000)/256;
TL0=(65536-3000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{;
}
}
void t0(void) interrupt 1 using 0
{
TH0=(65536-3000)/256;
TL0=(65536-3000)%256;
P0=tab[cnta];
P1=digittab[cntb][cnta];
cnta++;
if(cnta==8)
{
cnta=0;
}
timecount++;
if(timecount==333)
{
timecount=0;
cntb++;
if(cntb==10)
{
cntb=0;
}
}
请教下 第二行程序 有什么作用本人不是很理解 万分感谢  另求教下 点阵原理  万分感谢

回复评论 (11)

回复 楼主 钱钱正太 的帖子

哪个第二行?
TL0=(65536-3000)%256;
这个?
点赞  2012-9-19 18:20

回复 沙发 upc_arm 的帖子

感谢您抽空给我回复,unsigned char code tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
这句 不明白才程序当中的意思 希望您能给与解答 谢谢
点赞  2012-9-19 20:16

回复 板凳 钱钱正太 的帖子

你先好好看看书再说。
这个跟你的硬件电路有关系,这几个数就是让某一位为低,使得某一行货某一列选通。
点赞  2012-9-19 20:53

回复 4楼 upc_arm 的帖子

感谢 指教 在下只有 一本51单片机c语言教程 这个程序 是我买的设备 带的教程 唯一一本单片机书 没有关于点阵这一节 所以对原理 不是很明白 请您指教的地方有很多 如果您方便的话 请教一下点阵的工作原理 万分感谢
点赞  2012-9-19 21:04
看原理图就明白了
点赞  2012-9-20 07:51
点阵模块有手册
点赞  2012-9-20 07:51
感谢您百忙之中的回复 本人书籍只有新概念51那本 没有别的书  书里没有讲到点阵的知识 所以本人求教 请问下 去哪找点阵手册 谢谢
点赞  2012-9-21 20:49
其中unsigned char code   tab  []={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
对应P0=tab[cnta];
P1=digittab[cntb][cnta];
cnta++;
当cnta=1时P0=0x7f;对应二进制数0111 1111
当cnta=2时P0=0xbf;对应二进制数1011 1111
当cnta=3时P0=0xdf;对应二进制数1101 1111
当cnta=4时P0=0xef;对应二进制数1110 1111
当cnta=5时P0=0xf7;对应二进制数1111 0111
当cnta=6时P0=0xfb;对应二进制数1111 1011
当cnta=7时P0=0xfd;对应二进制数1111 1101
当cnta=8时P0=0xfe;对应二进制数1111 1110
也就是分别点亮相应的列。
点赞  2012-9-29 11:21
你就搜索模块的型号百度下能找到
点赞  2012-10-6 19:35

路过看看

这是个数组(常量),所以放在了code里面了,它的作用是依次选通P0口,从高至低。
点赞  2012-12-4 16:31

code 是放在rom里,这个完全可以放在ram里,用循环依次赋值就行

把原理图放出来才能解释啊
点赞  2012-12-4 21:17
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复