微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机C编程(九、8X8点阵显示)

51单片机C编程(九、8X8点阵显示)

时间:11-27 来源:互联网 点击:
//-------------------8X8点阵显示程序----------------------

//-------------------2009年4月23日------------------------

显示‘0’从右向左移动,proteus仿真电路如下:

#include
#define uchar unsigned char
#define HANG P1//P1口为每一列中的位选
#define LIE P0//P0为列选
void delay(uchar);

void main()
{
int i=0;
while(1)
{
//----------------循环扫描点阵(状态1)---------------------------
P0=0x01;//P0初始为第一列
for(i=0;i<8;i++)//循环扫描8列
{

switch(P0)
{
case 0x01:P1=0xff;break;
case 0x02:P1=0xff;break;
case 0x04:P1=0xff;break;
case 0x08:P1=0xff;break;
case 0x10:P1=0xff;break;
case 0x20:P1=0xff;break;
case 0x40:P1=0xff;break;
case 0x80:P1=0xc3;break;
default:break;
}
P0=P0<1;//扫描完一列左移一列
delay(2);
}

delay(100);
//----------------循环扫描点阵(状态2)---------------------------
P0=0x01;
for(i=0;i<8;i++)
{

switch(P0)
{
case 0x01:P1=0xff;break;
case 0x02:P1=0xff;break;
case 0x04:P1=0xff;break;
case 0x08:P1=0xff;break;
case 0x10:P1=0xff;break;
case 0x20:P1=0xff;break;
case 0x40:P1=0xc3;break;
case 0x80:P1=0xbd;break;
default:break;
}
P0=P0<1;
delay(2);
}

delay(100);
//----------------循环扫描点阵(状态3)---------------------------
P0=0x01;
for(i=0;i<8;i++)
{

switch(P0)
{
case 0x01:P1=0xff;break;
case 0x02:P1=0xff;break;
case 0x04:P1=0xff;break;
case 0x08:P1=0xff;break;
case 0x10:P1=0xff;break;
case 0x20:P1=0xc3;break;
case 0x40:P1=0xbd;break;
case 0x80:P1=0xbd;break;
default:break;
}
P0=P0<1;
delay(2);
}

delay(100);
//----------------循环扫描点阵(状态4)---------------------------
P0=0x01;
for(i=0;i<8;i++)
{

switch(P0)
{
case 0x01:P1=0xff;break;
case 0x02:P1=0xff;break;
case 0x04:P1=0xff;break;
case 0x08:P1=0xff;break;
case 0x10:P1=0xc3;break;
case 0x20:P1=0xbd;break;
case 0x40:P1=0xbd;break;
case 0x80:P1=0xc3;break;
default:break;
}
P0=P0<1;
delay(2);
}

delay(100);
//----------------循环扫描点阵(状态5)---------------------------

P0=0x01;
for(i=0;i<8;i++)
{

switch(P0)
{
case 0x01:P1=0xff;break;
case 0x02:P1=0xff;break;
case 0x04:P1=0xff;break;
case 0x08:P1=0xc3;break;
case 0x10:P1=0xbd;break;
case 0x20:P1=0xbd;break;
case 0x40:P1=0xc3;break;
case 0x80:P1=0xff;break;
default:break;
}
P0=P0<1;
delay(2);
}

delay(100);
//----------------循环扫描点阵(状态6)---------------------------
P0=0x01;
for(i=0;i<8;i++)
{

switch(P0)
{
case 0x01:P1=0xff;break;
case 0x02:P1=0xff;break;
case 0x04:P1=0xc3;break;
case 0x08:P1=0xbd;break;
case 0x10:P1=0xbd;break;
case 0x20:P1=0xc3;break;
case 0x40:P1=0xff;break;
case 0x80:P1=0xff;break;
default:break;
}
P0=P0<1;
delay(2);
}

delay(100);
//----------------循环扫描点阵(状态7)---------------------------
P0=0x01;
for(i=0;i<8;i++)
{

switch(P0)
{
case 0x01:P1=0xff;break;
case 0x02:P1=0xc3;break;
case 0x04:P1=0xbd;break;
case 0x08:P1=0xbd;break;
case 0x10:P1=0xc3;break;
case 0x20:P1=0xff;break;
case 0x40:P1=0xff;break;
case 0x80:P1=0xff;break;
default:break;
}
P0=P0<1;
delay(2);
}
delay(100);
//----------------循环扫描点阵(状态8)---------------------------
P0=0x01;
for(i=0;i<8;i++)
{

switch(P0)
{
case 0x01:P1=0xc3;break;
case 0x02:P1=0xbd;break;
case 0x04:P1=0xbd;break;
case 0x08:P1=0xc3;break;
case 0x10:P1=0xff;break;
case 0x20:P1=0xff;break;
case 0x40:P1=0xff;break;
case 0x80:P1=0xff;break;
default:break;
}
P0=P0<1;
delay(2);
}
delay(100);
//----------------循环扫描点阵(状态9)---------------------------
P0=0x01;
for(i=0;i<8;i++)
{

switch(P0)
{
case 0x01:P1=0xbd;break;
case 0x02:P1=0xbd;break;
case 0x04:P1=0xc3;break;
case 0x08:P1=0xff;break;
case 0x10:P1=0xff;break;
case 0x20:P1=0xff;break;
case 0x40:P1=0xff;break;
case 0x80:P1=0xff;break;
default:break;
}
P0=P0<1;
delay(2);
}
delay(100);
}
}
//------------------延时子函数 ----------------------
void delay(uchar x)
{
int i,j;
for(i=x;i>0;i--)
for(j=500;j>0;j--);
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top