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;