分享

51单片机学习22-88点阵动态显示

 龙之吻6iinxl8c 2018-09-06

88点阵动态显示

硬件组成:单片机最小系统+88点阵+按键

图形移动模式 切换 1 跳动 2 上移 3 下移 4 左移 5 右移

显示内容汉字 一 二 三 四。四个字

仿真图:

51单片机学习22-88点阵动态显示

程序:

51单片机学习22-88点阵动态显示

源代码

#include

#define uchar unsigned char

#define uint unsigned int

// 左右移动 取码方式 阴码逐列

uchar code TAB[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空屏

0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00,/*'一',0*/

0x00,0x40,0x44,0x44,0x44,0x44,0x40,0x00,/*'二',1*/

0x00,0x40,0x54,0x54,0x54,0x54,0x42,0x00,/*'三',2*/

0x00,0x7E,0x52,0x5E,0x42,0x5E,0x52,0x7E,/*'四',3*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //空屏, //空屏

};

// 上下移动及翻页 取模方式 阳码逐行

uchar code TAB1[]={

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏

0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFF,0xFF,/*'一',0*/

0xFF,0xFF,0xC3,0xFF,0xFF,0xFF,0x81,0xFF,/*'二',1*/

0xFF,0xBF,0xC3,0xFF,0xC3,0xFF,0x81,0xFF,/*'三',2*/

0xFF,0x81,0xA9,0xA9,0xA9,0x9D,0xBD,0x81,/*'四',3*/

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏

};

uchar idata Buffer[48]={0}; //缓存显示单元

sbit key1=P3^2; //外部中断

uchar num=0;//用于图形移动切换

char i,t;

void delay(uchar t)

{

while(t--)

{;}

}

void delay_ms(uint z) //延时子程序

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void right(void)

{

uchar N,T;

for(N=0;N<40;n++)>

{

for(T=0;T<70;t++)>

{

P1=0x7f; //0111 1111 第一列开始

for(i=0;i<>

{

P0=TAB[i+N];

delay(100);

delay_ms(1);//实物消影

P0=0X00; //实物消影

P1=P1>>1|P1<7; 0011="" 1111="" |="" 1000="" 0000="1011" 1111="">

}

}

}

}

void left(void)

{

uchar N,T;

uchar m,n;

for(m=0;m<>

for(n=0;n<>

Buffer[8*m+n]=TAB[7-n+m*8]; //将TAB数组中的数据重新排列

for(N=0;N<40;n++)>

{

for(T=0;T<60;t++)>

{

P1=0xfe;

for(i=0;i<>

{

P0=TAB[i+N];

delay(100);

delay_ms(1);//实物消影

P0=0X00; //实物消影

P1=P1<1|p1>>7; //扫描起始列为第一行

}

}

}

}

void up(void)

{

uchar N,T;

for(N=0;N<40;n++)>

for(T=0;T<60;t++)>

{

P0=0x01;

for(i=0;i<>

{

P1=TAB1[i+N];

delay(100);

delay_ms(1);//实物消影

P1=0XFF; //实物消影

P0=P0<1|p0>>7;

}

}

}

void down(void)

{

uchar N,T;

uchar m,n;

for(m=0;m<>

for(n=0;n<>

Buffer[8*m+n]=TAB1[7-n+m*8]; //将TAB数组中的数据重新排列

for(N=0;N<40;n++)>

for(T=0;T<70;t++)>

{

P0=0x80;

for(i=0;i<>

{

P1=Buffer[i+N];

delay(100);

delay_ms(1);//实物消影

P1=0XFF; //实物消影

P0=P0>>1|P0<7;>

}

}

}

void dongtai(void)

{

uchar N,T;

for(N=0;N<6;n++) 循环扫描一遍6帧="">

for(T=0;T<100;t++)>

{

P0=0x01;

for(i=0;i<>

{

P1=TAB1[i+8*N];

delay(100);

delay_ms(1);//实物消影

P1=0XFF; //实物消影

P0=P0<1|p0>>7;

}

}

}

void main(void)

{

EA=1;

EX0=1;//开启外部中断0

IT0=1;//触发方式为下降沿 按键按下就触发

while(1);

}

void wbINT0() interrupt 0

{

num++;

if(num==6)

{

num=0;

}

switch (num)

{

case 1: dongtai();break;

case 2: up();break;

case 3: down();break;

case 4: left();break;

case 5: right();break;

default: P0=0XFF; P1=0XFF;break;

}

}

仿真结果:

51单片机学习22-88点阵动态显示

51单片机学习22-88点阵动态显示

51单片机学习22-88点阵动态显示

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多