求个高手写个单片机控制8*8点阵的代码

我的是8*8的点阵、求高手该改、能让字流动显示的、无论是上下还是左右都行、我刚刚才学几天、代码尽量简单把、

目前代码如下:

#include <reg51.h>//定义头文件 MCS-51单片机
/*************************************************************/
#define uchar unsigned char
uchar b[8]= {0x10,0xFE,0x92,0x92,0xFE,0x92,0x10,0x10}; //字模

/*************延时******************************************/
void Delayms(unsigned int n)
{
unsigned int i,j;
for(j=n;j>0;j--)
for(i=112;i>0;i--);
}
/**************************************************************/
void main (void)
{
while(1) //无限循环以下程序
{
uchar H = 0x01;
int i;
for(i=0;i<8;i++)
{
Delayms(1);
P1=0x00; //复位、防止虚亮
P0=~H;
P1 = b[i+1];
H=H<<1;

}
}
}

第1个回答  2013-09-28
#include <reg51.h>//定义头文件 MCS-51单片机
/*************************************************************/
#define uchar unsigned char
uchar b[8]= {0x10,0xFE,0x92,0x92,0xFE,0x92,0x10,0x10}; //字模

/*************延时******************************************/
void Delayms(unsigned int n)
{
unsigned int i,j;
for(j=n;j>0;j--)
for(i=112;i>0;i--);
}
/**************************************************************/
void main (void)
{
while(1) //无限循环以下程序
{
uchar H = 0x01;
int i,j;
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
{
Delayms(1);
P1=0x00; //复位、防止虚亮
P0=~H;
P1 = (b[i+1]<<j)|(b[i+1]>>8-j);
H=H<<1;
}
delayms(50);
}
}
}追问

你的代码不行啊、就显示一个灯、线路是没接错的、i/0组也换过了。。

追答

#include //定义头文件 MCS-51单片机
/*************************************************************/
#define uchar unsigned char
uchar b[8]= {0x10,0xFE,0x92,0x92,0xFE,0x92,0x10,0x10}; //字模

/*************延时******************************************/
void Delayms(unsigned int n)
{
unsigned int i,j;
for(j=n;j>0;j--)
for(i=112;i>0;i--);
}
/**************************************************************/
void main (void)
{
while(1) //无限循环以下程序
{
uchar H = 0x01;
int i,j;
for(j=0;j>8-j);
H=(H>7);
}
delayms(50);
}
}
}

追问

我晕、、这哪里移动了、根本乱码了嘛。。

追答

#include //定义头文件 MCS-51单片机
/*************************************************************/
#define uchar unsigned char
uchar b[8]= {0x10,0xFE,0x92,0x92,0xFE,0x92,0x10,0x10}; //字模

/*************延时******************************************/
void Delayms(unsigned int n)
{
unsigned int i,j;
for(j=n;j>0;j--)
for(i=112;i>0;i--);
}
/**************************************************************/
void main (void)
{
while(1) //无限循环以下程序
{
uchar H = 0x01;
int i,j;
for(j=0;j>8-j);
H=(H>7);
}
delayms(50);
}
}
}

本回答被提问者和网友采纳
第2个回答  2013-09-28
这个自字模是什么字,横向还是纵向取模?追问

是个“中”字;
横竖不是很懂、要不你帮我取下把。。

追答

字流动显示可以分解成每隔0.5s显示一个字的一部分。

#include //定义头文件 MCS-51单片机
/*************************************************************/
#define uchar unsigned char
uchar b[8]= {0x10,0xFE,0x92,0x92,0xFE,0x92,0x10,0x10}; //字模

/*************延时******************************************/
void Delayms(unsigned int n)
{
unsigned int i,j;
for(j=n;j>0;j--)
for(i=112;i>0;i--);
}

void main (void)
{
while(1) //无限循环以下程序
{
uchar H = 0x01;
int i,j;
for(i=0;i<8;i++)
{
for(j=i;j<8;j++)
{
P1=0x00; //复位、防止虚亮
P0=~H;
P1 = b[j+1];
H=H<<1;
}
Delayms(1);
}
}
}

追问

不对不对、就显示一个灯、蛋疼、、
代码没错、线也没接错、但是代码不是我要的那种流动显示的。。

求个高手写个单片机控制8*8点阵的代码
P1 = (b[i+1]<<j)|(b[i+1]>>8-j);H=H<<1;} delayms(50);} } }

我的单片机处理控制8×8LED点阵屏的显示。由于仅采用一个8×8LED点阵...
for(i=0;i<8;i++){ PORTB=0x00; \/\/消隐 PORTD=0xff; \/\/消隐 PORTB=table1[i+t]; \/\/高低平有效 PORTD=table[i]; \/\/\/低电平扫描 time(1);} bb++;if(bb==200){ bb=0;t++;if(t==100){ t=0;} } } }

单片机汉字8x8点阵LED动态显示程序
0x08},\/\/4 {0x3E,0x20,0x20,0x3E,0x02,0x02,0x22,0x1C},\/\/5 {0x1C,0x22,0x20,

用51单片机以及8*8点阵显示英文字母或者数字(最好是全部数字和字母都说...
unsigned char code b[]={0x00,0x7F,0x40,0x40,0x40,0x00,0x00,0x00};\/*"L",0*\/ void main(void){ unsigned char i;while (1) \/\/如果没有while循环,将出现闪烁现象 { for(i=0;i<8;i++){ Ser_IN(a[i]);\/\/8X8点阵列扫描 Ser_IN(b[i]);\/\/8X8点阵行扫描 Par_OUT();\/...

求一个8*8LED点阵汉字显示C语言程序(C52)
void main(){ unsigned char w,i;while(1){ \/\/显示0 w=0x01; \/\/行变量为第一行 for(i=0;i<8;i++){ P1=w;\/\/行数据送P1口 P0=led0[i];delayms(1);\/\/列数据送P0口 w<<=1;\/\/向下移动一行 } } } void delay1ms(unsigned int ms){ unsigned int i,j;for(i=0;i<ms;...

求51单片机 4*4矩阵键盘 控制8*8点阵 显示 的语音 程序。
void Delay_1ms(uchar i)\/\/1ms延时 { uchar x,j;for(j=0;j<i;j++)for(x=0;x<=148;x++);} \/ 名称 : Main()功能 : 主函数 输入 : 无 输出 : 无 \/ void main(){ int i;while(1){ for(i=0;i<8;i++){ P0=0;P2=tabP2[i];P0=tabP0[i];Delay_1ms(2);} } } ...

单片机8*8点阵 利用中断控制显示0-3; 但是我只能显示一个“0” 不知道...
void timer0() interrupt 1 { TH0=0x0FC;TL0=0xe8;i++;if(i==8){i=0;} DataPortA=wei[i];sn=1; \/\/使能端 sn=0;DataPortA=0xff;DataPortA=duan0[i+ShowNumber*8];delay(50);} void timer1() interrupt 3 { TH1=(65536-50000)\/256;TL1=(65536-50000)%256;num++;} ...

...数字从0到9 的程序 急急急!!! 单片机、、、
何必一定用汇编

单片机什么代码能88点阵动态显示
龙之吻6iinxl8c >《单片机及控制系统》阅464转62018.09.06关注 88点阵动态显示 硬件组成:单片机最小系统+88点阵+按键 图形移动模式 切换 1 跳动 2 上移 3 下移 4 左移 5 右移 显示内容汉字 一 二 三 四。四个字 仿真图:打开APP查看高清大图 程序:打开APP查看高清...

51单片机 8*8点阵26个英文字母怎么样显示
你真厉害,一位数组显示点阵实验,点阵最好是用二位数组,基本思路也就是单片机两个IO口控制点阵的行和列,定义一个二位数组控制点阵每一行要亮拿几个灯,然后下一行亮那几个灯,以此类推,快速刷出没一个亮的灯就能让人感觉是一个字了,好啦,给你程序你自己看吧 unsigned char code table[]={...

相似回答