1. 51单片机8×8led点阵逐个点亮的c语言程序
这个点阵就是逐个移动点亮显示的,不知你要实现什么效果
2. 8*8点阵0~9显示程序(C语言)
#include <reg51.h>
unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
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-1000)/256;
TL0=(65536-1000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{;
}
}
void t0(void) interrupt 1 using 0
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
P3=tab[cnta];
P1=digittab[cntb][cnta];
cnta++;
if(cnta==8)
{
cnta=0;
}
timecount++;
if(timecount==333)
{
timecount=0;
cntb++;
if(cntb==10)
{
cntb=0;
}
}
}
3. 哪位大哥知道怎么用c语言编写:8*8点阵实现0-9数字的滚动
#include <AT89X52.H>
unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
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-1000)/256;
TL0=(65536-1000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{;
}
}
void t0(void) interrupt 1 using 0
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
P3=tab[cnta];
P1=digittab[cntb][cnta];
cnta++;
if(cnta==8)
{
cnta=0;
}
timecount++;
if(timecount==333)
{
timecount=0;
cntb++;
if(cntb==10)
{
cntb=0;
}
}
}
4. 单片机C语言8*8点阵的附值方法
#include<reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
uinti,j,num,aa;
ucharcodetable12[]={
0x04,0x82,0xff,0x80,
0xe2,0x91,0x89,0xc6};
ucharcodetable13[]={
0x18,0x3c,0x7c,0xf8,
0x7c,0x3c,0x18,0x00};
voiddelay(uint);
voidmain()
{
while(1)
{for(aa=100;aa>0;aa--)
{for(num=0;num<8;num++)
{
P2=num;
P0=table12[num];
delay(2);
}
//delay(300);
};
for(aa=100;aa>0;aa--)
{for(num=0;num<8;num++)
{
P2=num;
P0=table13[num];
delay(2);
}
//delay(300);
}
}
}
voiddelay(uintz)
{
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
5. 怎样用c语言实现8*8点阵数字、字母的显示及移动
显示很简单,就是屏幕打印printf就可以,
点阵这个需要字模库,
移动其实也不难,就是个思路的问题,就是打印,等待,清屏,再打印的过程
6. 89C51控制8*8点阵显示程序
proteus的仿真行不?只是ABCD的其他的你可以自己弄一下这样自己才能得到提高
#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineulunsignedlong
ucharcodetable[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//0
0x80,0xe0,0x9c,0x13,0x9c,0xe0,0x80,0x00,//A
0x00,0x81,0xff,0x89,0x89,0x89,0x76,0x00,//B
0x00,0x3c,0x42,0x81,0x81,0x81,0x67,0x00,//C
0x00,0x81,0xff,0x81,0x81,0x42,0x3c,0x00,//D
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//0
};
uchari,temp,num,j;
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidinit()
{
TMOD=0x01;//方式1,16位模式,不会自动清零。
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
EA=1;
ET0=1;
num=0;
j=0;
}
voidmain(void)
{
init();
while(1)
{
P2=0;
temp=0xfe;
for(i=0;i<8;i++)
{
P3=temp;
P2=table[i+j];
delay(3);
temp=0x1|(temp<<1);
}
}
}
voidtimer0()interrupt1
{
num++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(num==10)
{
num=0;
j++;
if(j==40)
j=0;
}
}
7. 8*8点阵汉字显示程序(C语言)
点阵汉字没有8X8的,或者说8X8不足以显示常用汉字,一般最小的点阵汉字都是12X12的,常用16X16
8. 8*8点阵屏怎样实现0~9,字母,汉字三者进行切换(C语言程序)
你这个问题信息量太大,只能给你提个思路:
1) 8*8的点阵屏要显示0-9,字母以及汉字需要使用点整显示的方法。对于0-9以及字母都没有问题,点阵用的的很少,在程序里直接写就可以啦。对于汉字你需要找8*8的汉字点阵字库,能不能找到都是个问题,除非只是显示几个有限的简单汉字。而且8*8的屏显示汉字太小,比如必要显示汉字“真”,用8*8的点阵是很难显示的。一般显示汉字最小的也要12*12,正常情况是16*16的点阵,个别有窄体汉字用12*16的。
2)你要弄明白点阵显示汉字的逻辑,视觉暂留是LED显示屏得以广泛应用的基础,目前广为采用的扫描驱动方式。你需要一个通用函数,就是根据要显示的数字,字母或汉字,找到对应的点阵码值,然后用行扫描的方法依次给对点阵进行行地址选定,再对列电平置位。
3)比如数字0的8*8点阵就是(0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xE7,0xFF,/* 0 */ ),你需要先选b0,将c0到c7,设置为0xff(即8位全1),接着选b1,将c0到c7设置为0xE7(即两段为0,中间全1,01111110 ),接着选b2,将 c0到c7设置为0xBD(即两段为1,中间全0,10000001 ),依次类推,就显示了数字0。可以根据同样的逻辑,把十个数字,26个字母的大小写都点阵化,写成数组放在代码里直接用就可以。
4)当你要显示汉字的时候,汉字其实是两个字节都成的,第一个字节的最高位是1,表示区码,后面跟着的是位码。根据这两个字节的信息可以定位你的汉字在字库里对应的点阵数据。然后和上面显示数字一样的处理方法把汉字点阵数据显示即可。
5)你的8*8显示屏显示数字和英文还勉强,显示中文太小啦。
6)你现在的首要难题是去找8*8的中文点阵字库,并弄清楚存放汉字点阵数据的逻辑,这样才能根据汉字的区位码找到对应的点阵数据。如果只显示数据和英文字母,可以在8*8的坐标纸上自己去写上数字或字母后,在转化成10101111类似的二进制,去做一个自己的字库。显示数字的时候,把每个数字的ASCII码值减去数字0的ASCII码值,去定位点阵数组的序号。英文字母同理进行处理。
9. 8*8点阵显示程序C语言 大神把这个程序指导一下 想不明白进入中断怎么执行
程序是错的。
TMOD=0x00;---方式0,定时初值最大是8192
TH0=(65536-20000)/256; --65536 !明显是错误
TL0=(65536-20000)%256;