8*8点阵屏怎样实现0~9,字母,汉字三者进行切换(C语言程序)

8*8点阵屏怎样实现0~9,字母,汉字三者进行切换(C语言程序),第1张

你这个问题信息量太大,只能给你提个思路:

1) 88的点阵屏要显示0-9,字母以及汉字需要使用点整显示的方法。对于0-9以及字母都没有问题,点阵用的的很少,在程序里直接写就可以啦。对于汉字你需要找88的汉字点阵字库,能不能找到都是个问题,除非只是显示几个有限的简单汉字。而且88的屏显示汉字太小,比如必要显示汉字“真”,用88的点阵是很难显示的。一般显示汉字最小的也要1212,正常情况是1616的点阵,个别有窄体汉字用1216的。

2)你要弄明白点阵显示汉字的逻辑,视觉暂留是LED显示屏得以广泛应用的基础,目前广为采用的扫描驱动方式。你需要一个通用函数,就是根据要显示的数字,字母或汉字,找到对应的点阵码值,然后用行扫描的方法依次给对点阵进行行地址选定,再对列电平置位。

3)比如数字0的88点阵就是(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)你的88显示屏显示数字和英文还勉强,显示中文太小啦。

6)你现在的首要难题是去找88的中文点阵字库,并弄清楚存放汉字点阵数据的逻辑,这样才能根据汉字的区位码找到对应的点阵数据。如果只显示数据和英文字母,可以在88的坐标纸上自己去写上数字或字母后,在转化成10101111类似的二进制,去做一个自己的字库。显示数字的时候,把每个数字的ASCII码值减去数字0的ASCII码值,去定位点阵数组的序号。英文字母同理进行处理。

你用取模软件先点个心形,然后用字节左右移来实现就可以了

我有1616点阵的各种动态效果程序

给你看下总共有12种动态效果,你改成88就可以了

/呈现各种显示效果的函数集/

void flash_bai(uchar flash_word,uchar flash_heard,uchar number,uchar sdu,uchar state)//百叶窗效果

{register uchar i,j,k,l;

for(i=0;i<number;i++)

{

for(j=0;j<16;j++)

{

for(l=0;l<8;l++)

{

if(j<8)

{

dispram[l4+1]=dispram[l4+1]&0xff<<j|(flash_word[(flash_heard+i)32+l4]>>(7-j));

dispram[l4+2]=dispram[l4+2]&0xff>>j|(flash_word[(flash_heard+i)32+l4+3]<<(7-j)&0x10);

}

else

{

dispram[l4] =dispram[l4]&0xff<<(j-7)|flash_word[(flash_heard+i)32+l4]>>(15-j);

dispram[l4+1]=flash_word[(flash_heard+i)32+l4]<<(j-7)|(flash_word[(flash_heard+i)32+l4+1]>>(15-j));

dispram[l4+2]=flash_word[(flash_heard+i)32+l4+2]<<(15-j)|(flash_word[(flash_heard+i)32+l4+3]>>(j-7));

dispram[l4+3]=(dispram[l4+3]&0xff>>(j-7))|flash_word[(flash_heard+i)32+l4+3]<<(15-j);

}

}

delay(sduSPEED);

}

delay(stateSPEED);

}

}

/霓虹灯效果/

void flash(uchar flash_word,uchar flash_heard,uchar number,uchar sdu,uchar state)

{register uchar i,j,k,l;

for(i=0;i<number;i++)

{

for(j=0;j<=16;j++)

{

for(k=17;k>j;k--)

{

for(l=0;l<16;l++)

{

if(j>8)

{

dispram[l2] =1<<(8-k+j)|(flash_word[(flash_heard+i)32+l2]&0xff>>(16-j));

dispram[l2+1]=flash_word[(flash_heard+i)32+l2+1];

}

else

{

dispram[l2]=1<<(8-k+j);

dispram[l2+1]=1<<(16-k+j)|(flash_word[(flash_heard+i)32+l2+1]&0xff>>(8-j));

}

}

delay(sduSPEED);

}

for(k=17;k>j;k--)

{

for(l=0;l<16;l++)

{

if(j>8)

{

dispram[l2]=1<<(k-8)|(flash_word[(flash_heard+i)32+l2]&0xff>>(16-j));

}

else

{

dispram[l2]=1<<(k-8);

dispram[l2+1]=1<<k|(flash_word[(flash_heard+i)32+l2+1]&0xff>>(8-j));

}

}

delay(sduSPEED);

}

}

delay(stateSPEED);

}

}

/跳动的米奇/

void miqi_jump(void)

{uchar jump_i;

while((receive[1]&0x0f)<2)

{

switch (abc/7280)//(receive[0]&0x0f)%9

{

case 0:for(jump_i=0;jump_i<16;jump_i++)

{

dispram[jump_i2] = Bmp1[14][jump_i2]<<1|Bmp1[14][jump_i2+1]>>7;

dispram[jump_i2+1] = Bmp1[14][jump_i2+1]<<1;//左移

}break;

case 1:for(jump_i=0;jump_i<15;jump_i++)

{dispram[0] = 0;

dispram[1] = 0;

dispram[jump_i2+2] = Bmp1[14][jump_i2];

dispram[jump_i2+3] = Bmp1[14][jump_i2+1];}

break;//下移

case 2:for(jump_i=0;jump_i<16;jump_i++)

{

dispram[jump_i2+1] = Bmp1[14][jump_i2+1]>>1|Bmp1[14][jump_i2]<<7;

dispram[jump_i2] = Bmp1[14][jump_i2]>>1;

}break;//右移

case 3:for(jump_i=0;jump_i<15;jump_i++)

{dispram[30] = 0;

dispram[31] = 0;

dispram[jump_i2] = Bmp1[14][jump_i2+2];

dispram[jump_i2+1] = Bmp1[14][jump_i2+3];}

break;//上移

case 4: for(jump_i=0;jump_i<16;jump_i++)

{

dispram[jump_i2+2] = Bmp1[14][jump_i2]<<1|Bmp1[14][jump_i2+1]>>7;

dispram[jump_i2+3] = Bmp1[14][jump_i2+1]<<1;//左移

dispram[0] = 0;

dispram[1] = 0;

} break;//下移

case 5: for(jump_i=0;jump_i<16;jump_i++)

{

dispram[jump_i2+1] = Bmp1[14][jump_i2+3]>>1|Bmp1[14][jump_i2+2]<<7;

dispram[jump_i2] = Bmp1[14][jump_i2+2]>>1;

dispram[30] = 0;

dispram[31] = 0;

} break;//上移

case 6: for(jump_i=0;jump_i<16;jump_i++)

{

dispram[jump_i2+3] = Bmp1[14][jump_i2+1]>>1|Bmp1[14][jump_i2]<<7;

dispram[jump_i2+2] = Bmp1[14][jump_i2]>>1;

dispram[0] = 0;

dispram[1] = 0;

}

break;

case 7: for(jump_i=0;jump_i<16;jump_i++)

{

dispram[jump_i2] = Bmp1[14][jump_i2+2]<<1|Bmp1[14][jump_i2+3]>>7;

dispram[jump_i2+1] = Bmp1[14][jump_i2+3]<<1;//左移

dispram[30] = 0;

dispram[31] = 0;

} break;

case 8:for(jump_i=0;jump_i<32;jump_i++)

dispram[jump_i] = Bmp1[14][jump_i];break;

}

}

}

/从wordsp的第OpenDheard个字开始开门效果显示number个字/

//开门效果

void Open_door(uchar wordsp[][32],uchar OpenDheard,uchar number,uchar sdu,uchar state)

{register uchar i,j,w;

for(w=0;w<number;w++)

{

for(j=1;j<9;j++)

{

for(i=0;i<16;i++)

{

dispram[i2]=dispram[i2]&0xff<<j|wordsp[OpenDheard+w][2i]&0xff>>(8-j);

dispram[i2+1]=dispram[i2+1]&0xff>>j|wordsp[OpenDheard+w][1+2i]&0xff<<(8-j);

}

delay(sduSPEED);

}

delay(stateTIME);

}

}

/从wordsp的第CloseDheard个字开始关门效果显示number个字/

//关门效果

void Close_door(uchar wordsp[][32],uchar CloseDheard,uchar number,uchar sdu,uchar state)

{register uchar i,j,w;

for(w=0;w<number;w++)

{

for(j=1;j<9;j++)

{

for(i=0;i<16;i++)

{

dispram[i2]=dispram[i2]&0xff>>j|wordsp[CloseDheard+w][2i]&0xff<<(8-j);

dispram[i2+1]=dispram[i2+1]&0xff<<j|wordsp[CloseDheard+w][1+2i]&0xff>>(8-j);

}

delay(sduSPEED);

}

delay(stateTIME);

}

}

/从wordsp的第Far_Awayheard个字开始两边拉开显示number个字/

//两边拉开

void Far_Away(uchar wordsp[][32],uchar Far_Awayheard,uchar number,uchar sdu,uchar state)

{register uchar i,j,w;

for(w=0;w<number;w++)

{

for(j=1;j<9;j++)

{

for(i=0;i<16;i++)

{

dispram[i2]=dispram[i2]<<j|wordsp[Far_Awayheard+w][2i]&0xff>>(8-j);

dispram[i2+1]=dispram[i2+1]>>j|wordsp[Far_Awayheard+w][1+2i]&0xff<<(8-j);

}

delay(sduSPEED);

}

delay(stateTIME);

}

}

/从wordsp的第Close_Toheard个字开始两边合拢显示number个字/

//两边合拢

void Close_To(uchar wordsp[][32],uchar Close_Toheard,uchar number,uchar sdu,uchar state)

{register uchar i,j,w;

for(w=0;w<number;w++)

{

for(j=1;j<9;j++)

{

for(i=0;i<16;i++)

{

dispram[i2]=dispram[i2]&0xff>>j|wordsp[Close_Toheard+w][2i]<<(8-j);

dispram[i2+1]=dispram[i2+1]&0xff<<j|wordsp[Close_Toheard+w][1+2i]>>(8-j);

}

delay(sduSPEED);

}

delay(stateTIME);

}

}

/卷帘出显示number个字/

//卷帘出显示

void M_Words(uchar wordsp,uchar MWheard,uchar number,uchar sdu,uchar state)

{register uchar i,w;

for(w=0;w<number;w++)

{

for(i=0;i<32;i++)

{

dispram[i]=wordsp[(MWheard+w)32+i];

if(i%2)

delay(sduSPEED);

}

delay(stateTIME);

}

}

/从UP_Pullp的第UP_Pullheard个字向上拉出number个字/

//向上拉出

void UP_Pull_Word(uchar UP_Pullp[][32],uchar UP_Pullheard,uchar number,uchar sdu,uchar state)

{register uchar i,j,k;

for(i=0;i<number;i++)

{

for(j=0;j<16;j++)

{

for(k=0;k<15-j;k++)

{

dispram[k2]=dispram[(k+1)2];

dispram[k2+1]=dispram[(k+1)2+1];

}

dispram[30-2j]=UP_Pullp[UP_Pullheard+i][(15-j)2];

dispram[31-2j]=UP_Pullp[UP_Pullheard+i][(15-j)2+1];

delay(sduSPEED);

}

delay(stateTIME);

}

}

/从UPp的第UPheard个字向上滚屏number个字/

//向上滚屏

void UP_Run_Word(uchar UPp[][32],uchar UPheard,uchar number,uchar sdu,uchar state)

{register uchar i,j,k;

for(i=0;i<number;i++)

{

for(j=0;j<16;j++)

{

for(k=0;k<15;k++)

{

dispram[k2]=dispram[(k+1)2];

dispram[k2+1]=dispram[(k+1)2+1];

}

dispram[30]=UPp[UPheard+i][j2];

dispram[31]=UPp[UPheard+i][j2+1];

delay(sduSPEED);

}

delay(stateTIME);

}

}

/从Down_Pullp的第Down_Pullheard个字向下拉出number个字/

//向下拉出

void Down_Pull_Word(uchar Down_Pullp[][32],uchar Down_Pullheard,uchar number,uchar sdu,uchar state)

{register uchar i,j,k;

for(i=0;i<number;i++)

{

for(j=0;j<16;j++)

{

for(k=15;k>j;k--)

{

dispram[k2]=dispram[(k-1)2];

dispram[k2+1]=dispram[(k-1)2+1];

}

dispram[2j]=Down_Pullp[Down_Pullheard+i][2j];

dispram[2j+1]=Down_Pullp[Down_Pullheard+i][2j+1];

delay(sduSPEED);

}

delay(stateTIME);

}

}

/从Downp的第UPheard个字向下滚屏number个字/

//向下滚屏

void Down_Run_Word(uchar Downp,uchar UPheard,uchar number,uchar sdu,uchar state)

{register uchar i,j,k;

for(i=0;i<number;i++)

{

for(j=0;j<16;j++)

{

for(k=15;k>0;k--)

{

dispram[k2]=dispram[(k-1)2];

dispram[k2+1]=dispram[(k-1)2+1];

}

dispram[0]=Downp[(UPheard+i)32+(15-j)2];

dispram[1]=Downp[(UPheard+i)32+(15-j)2+1];

delay(sduSPEED);

}

delay(stateTIME);

}

}

/从LRp的第LRheard个字左移出显示number个字/

//用左移出显示

void L_Removeout_Word(uchar LRp,uchar LRheard,uchar number,uchar sdu,uchar state)

{register uchar i,j,k,l;

for(i=0;i<number;i++)

{

for(j=0;j<2;j++)

for(k=0;k<8;k++)

{

for(l=0;l<16;l++)

{

dispram[l2]=dispram[l2]<<1|dispram[l2+1]>>7;

dispram[l2+1]=dispram[l2+1]<<1|LRp[(i+LRheard)32+l2+j]>>(7-k);

}

delay(sduSPEED);

}

delay(stateTIME);

}

}

/从L_Pullp的第L_Pullheard个字左拉出显示number个字/

//左拉出显示

void L_Pull_Word(uchar L_Pullp,uchar L_Pullheard,uchar number,uchar sdu,uchar state)

{register uchar i,j,k,l;

for(i=0;i<number;i++)

{

for(j=0;j<2;j++)

for(k=0;k<8;k++)

{

for(l=0;l<16;l++)

{

if(j==0)

{

dispram[l2]=dispram[l2]<<1|dispram[l2+1]>>7;

dispram[l2+1]=(dispram[l2+1]&0xff<<(k+1))<<1|L_Pullp[(i+L_Pullheard)32+l2+1]&0xff>>(7-k);

}

else

{

dispram[l2]=(dispram[l2]&0xff<<(k+1))<<1|L_Pullp[(i+L_Pullheard)32+l2]&0xff>>(7-k);

dispram[l2+1]=L_Pullp[(i+L_Pullheard)32+l2+1];

}

}

delay(sduSPEED);

}

delay(stateTIME);

}

}

/卷帘出黑屏/

void M_Black(void)

{register uchar i;

for(i=0;i<32;i++)

{

dispram[i]=0x00;

if(i%2)

delay(5SPEED);

}

}

/从RRp的第RRheard个字右移出显示number个字/

//右移出显示

void R_Removeout_Word(uchar RRp,uchar RRheard,uchar number,uchar sdu,uchar state)

{register uchar i,j,k,l;

for(i=0;i<number;i++)

{

for(j=2;j>0;j--)

for(k=0;k<8;k++)

{

for(l=0;l<16;l++)

{

dispram[l2+1]=dispram[l2+1]>>1|dispram[l2]<<7;

dispram[l2]=dispram[l2]>>1|RRp[(i+RRheard)32+l2+j-1]<<(7-k);

}

delay(sduSPEED);

}

delay(stateTIME);

}

}

/随机跑动函数/

void radom_flash(uchar Radom_p,uchar Radom_heard,uchar number,uchar sdu,uchar state)

{

switch ((receive[1]&0x0f)+(receive[0]&0x70)/16)

{

case 0: Open_door(Radom_p,Radom_heard,number,sdu,state);M_Black();break;//开门

case 1: Close_door(Radom_p,Radom_heard,number,sdu,state);M_Black();break;//关门

case 2: Far_Away(Radom_p,Radom_heard,number,sdu,state);M_Black();break;//分开

case 3: Close_To(Radom_p,Radom_heard,number,sdu,state);M_Black();break;//合拢

case 4: miqi_jump();

case 5: M_Words(Radom_p,Radom_heard,number,sdu,state);M_Black(); break;//卷帘

case 6: UP_Pull_Word(Radom_p,Radom_heard,number,sdu,state);break;//上拉出

case 7: UP_Run_Word(Radom_p,Radom_heard,number,sdu,state);break;//上滚屏

case 8: Down_Pull_Word(Radom_p,Radom_heard,number,sdu,state);break;//下拉出

case 9: Down_Run_Word(Radom_p,Radom_heard,number,sdu,state);break;

case 10: L_Removeout_Word(Radom_p,Radom_heard,number,sdu,state);break;//左滚屏

case 11: L_Pull_Word(Radom_p,Radom_heard,number,sdu,state);break;//左拉出

case 12: R_Removeout_Word(Radom_p,Radom_heard,number,sdu,state);break;//右滚屏

case 13: flash(Radom_p,Radom_heard,number,3,state);break;

case 14: flash_bai(Radom_p,Radom_heard,number,sdu,state);break;

}

}

#include<reg52h>

unsigned char code taba[]={0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7};

unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

void delay1(void)

{

unsigned char i,j,k;

for(k=8;k>0;k--)

for(i=10;i>0;i--)

for(j=15;j>0;j--);

}

main()

{

unsigned int i;

while(1)

{

for(i=0;i<8;i++)

{

P2=taba[i];

P0=tabb[i];

delay1();}

}

}

首先调出一个8×8点阵,在点阵的管脚上接上VCC,另一端的管脚就接GND,运行仿真,看看点阵是不是能亮,亮了哪几个点,如果不亮就调换VCC和GND,这样测出点阵的行和列,共阴或共阳等引脚信息。

然后接上网络标识,行和行接同一个网络标志,列和列接在一起。多个8×8拼在一起就好了。

单片机88点阵(0~F十六进制数字,可做成88图形)仿真实例。

)

LED EQU P3;;;;;LED灯显示定义

KEY EQU P1;;;;;键盘接口定义

TIME   EQU 30H

CNTA  EQU 31H

CNTB  EQU 32H

;--------------------程序入口定义

ORG 0000H

JMP START;;;;;;;;芯片复位后的程序执行处

ORG 000BH

JMP T0LED;;;;;;;;8x8 点阵扫描显示,T0 中断

ORG 0030H

;--------------------初始化处理

START:

MOV TIME, #00H

MOV CNTA, #00H

MOV CNTB, #00H

MOV TMOD, #01H

MOV TH0, #0F0H

MOV TL0, #60H

SETB TR0

SETB ET0

SETB EA

MOV LED,#00H;;;;LED灯初始化全灭

;--------------------扫描循环体

LOOP:

MOV KEY,#0FH;;;;;装入键盘首次的扫描值

MOV A,KEY;;;;;;;;读出键盘值放入累加器A

CJNE A,#0FH,GO1;;;读出的键值是否有变化,有变则跳到有键按下处理程序

JMP LOOP;;;;;;;;;无键按下跳回主循环

GO1:

CALL DL20MS;;;;;;;有键按下延时20毫秒去抖

MOV A,KEY;;;;;;;;将键值给累加器

CJNE A,#0FH,GO2;;;重新判断键盘现状

JMP LOOP;;;;;;;;;是抖动则跳回主循环

GO2:

MOV KEY,#0F0H;;;;确定有键按下之后装入二次的扫描值

MOV B,KEY;;;;;;;;将二次扫描值放入寄存器B中

ORL A,B;;;;;;;;;;A与B相或,得到一个字节的数据在A中

;-----------------------键值对比处理

NE1:

CJNE A,#0EEH,NE2;;;将A中的数据与键值表对比,不同则跳到下一个对比

MOV  A,#0;;;;;;;;;将输出显示数据送到寄存器

JMP  KEYEND;;;;;;;;跳出对比程序

NE2:

CJNE A,#0EDH,NE3;;;1

MOV  A,#1

JMP  KEYEND

NE3:

CJNE A,#0EBH,NE4;;;2

MOV  A,#2

JMP  KEYEND

NE4:

CJNE A,#0E7H,NE5;;;3

MOV  A,#3

JMP  KEYEND

NE5:

CJNE A,#0DEH,NE6;;;4

MOV  A,#4

JMP  KEYEND

NE6:

CJNE A,#0DDH,NE7;;;5

MOV  A,#5

JMP  KEYEND

NE7:

CJNE A,#0DBH,NE8;;;6

MOV  A,#6

JMP  KEYEND

NE8:

CJNE A,#0D7H,NE9;;;7

MOV  A,#7

JMP  KEYEND

NE9:

CJNE A,#0BEH,NE10;;;8

MOV  A,#8

JMP  KEYEND

NE10:

CJNE A,#0BDH,NE11;;;9

MOV  A,#9

JMP KEYEND

NE11:

CJNE A,#0BBH,NE12;;;A

MOV  A,#10

JMP  KEYEND

NE12:

CJNE A,#0B7H,NE13;;;B

MOV  A,#11

JMP  KEYEND

NE13:

CJNE A,#07EH,NE14;;;C

MOV  A,#12

JMP  KEYEND

NE14:

CJNE A,#07DH,NE15;;;D

MOV  A,#13

JMP  KEYEND

NE15:

CJNE A,#07BH,NE16;;;E

MOV  A,#14

JMP  KEYEND

NE16:

CJNE A,#077H,KEYEND;;;F

MOV  A,#15

KEYEND: MOV CNTB, A

MOV  DPTR, #PDATA

MOVC A, @A+DPTR

MOV  LED,A;;;;;;;;;;;;;;;;;;将输出显示数据送出显示

JMP LOOP;;;;;;;;;;;;;;;;;;;跳回主循环

PDATA:  DB  80H,0F9H, 24H, 30H, 59H, 12H, 02H,0F8H   ; 显示码数据表

DB  00H, 10H, 08H, 03H, 86H, 21H, 06H, 0EH

;-------------------20毫秒延时,主要用于去抖动。(100,100)

DL20MS:

MOV R6,#100;;;;;;;;;

DL20MS_1:

MOV R7,#100;;;;;;;;;

DJNZ R7,$;;;;;;;;;;;;

DJNZ R6,DL20MS_1;;;;;

RET

T0LED:                              ; 8x8 点阵扫描显示,T0 中断

MOV TH0, #0F0H      ;

MOV TL0, #60H

MOV DPTR, #TAB      ; X

MOV A, CNTA

MOVC A, @A+DPTR

MOV P0, A                ; P3

MOV DPTR, #DIGIT   ; Y

MOV A, CNTB

MOV B, #8

MUL AB

ADD A, CNTA

MOVC A, @A+DPTR

MOV P2, A                ; P1

INC CNTA

MOV A, CNTA

CJNE A, #8, NEXT

MOV CNTA, #00H

NEXT:

RETI

TAB:

DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH

DIGIT:

DB 00H,00H,3EH,41H,41H,41H,3EH,00H  ;0

DB 00H,00H,00H,00H,21H,7FH,01H,00H  ;1

DB 00H,00H,21H,43H,45H,49H,31H,00H  ;2

DB 00H,00H,42H,49H,49H,59H,66H,00H  ;3

DB 00H,00H,0CH,14H,24H,7FH,04H,00H  ;4

DB 00H,00H,72H,51H,51H,51H,4EH,00H  ;5

DB 00H,00H,3EH,49H,49H,49H,26H,00H  ;6

DB 00H,00H,40H,40H,40H,4FH,70H,00H  ;7

DB 00H,00H,36H,49H,49H,49H,36H,00H  ;8

DB 00H,00H,32H,49H,49H,49H,3EH,00H  ;9

DB 00H,00H,07H,38H,48H,38H,07H,00H  ;A

DB 00H,00H,7FH,49H,49H,49H,36H,00H  ;B

DB 00H,00H,3EH,41H,41H,41H,22H,00H  ;C

DB 00H,00H,7FH,41H,41H,41H,3EH,00H  ;D

DB 00H,00H,7FH,49H,49H,49H,41H,00H  ;E

DB 00H,00H,7FH,48H,48H,48H,40H,00H  ;F

END

刚敲完,测试过,没有任何问题,放心使用

#include <reg51h>

#include <intrinsh>

#define uchar unsigned char

#define uint unsigned int

sbit K1=P2^4;

sbit K2=P2^3;

sbit K3=P2^2;

sbit K4=P2^1;

sbit K5=P2^0;

sbit BE=P2^7;

uchar code NUM[]=

{0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,

0x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00,

0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,

0x00,0x22,0x49,0x49,0x49,0x26,0x00,0x00,

0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00,

0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00,

0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,

0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00};

uint r;

char offset=0;

uchar Current_Level=1,Dest_Level=1,x=0,t=0;

void delay(uint x)

{

uchar i;

while(x--)

for(i=0;i<120;i++);

}

void main()

{

P3=0x80;

Current_Level=1;

Dest_Level=1;

TMOD=0x01;

TH0=-4000/256;

TL0=-4000%256;

TR0=1;

IE=0x82;

while(1);

}

void LED_Screen_Display() interrupt 1

{

uchar i;

if(P1!=0xff&&Current_Level==Dest_Level)

{

if(P1==0xfe) {Dest_Level=5;K5=0;}

if(P1==0xfd) {Dest_Level=4;K4=0;}

if(P1==0xfb) {Dest_Level=3;K3=0;}

if(P1==0xf7) {Dest_Level=2;K2=0;}

if(P1==0xef) {Dest_Level=1;K1=0;}

}

TH0=-4000/256;

TL0=-4000%256;

P3=_crol_(P3,1);

i=Current_Level8+r+offset;

P0=~NUM[i];

if(Current_Level<Dest_Level)

{

if(++r==8)

{

r=0;

if(++x==4)

{

x=0;

if(++offset==8)

{

offset=0;

Current_Level++;

}

}

}

}

else

if(Current_Level>Dest_Level)

{

if(++r==8)

{

r=0;

if(++x==4)

{

x=0;

if(--offset==-8)

{

offset=0;

Current_Level--;

}

}

}

}

else

{

if(++r==8) {r=0;}

}

}

以上就是关于8*8点阵屏怎样实现0~9,字母,汉字三者进行切换(C语言程序)全部的内容,包括:8*8点阵屏怎样实现0~9,字母,汉字三者进行切换(C语言程序)、单片机程序8x8led点阵显示心形并实现左移右移的程序、设计一个用于51单片机的8x8的单色点阵LED驱动程序使,显示一个心形,在Proteus上仿真 求大神等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9811409.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存