单片机8*8点阵 利用中断控制显示0-3; 但是我只能显示一个“0” 不知道如何写下去了,求高手帮我完成!

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define DataPortA P0
uint i;
sbit sn=P3^7; //使能端
uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位码

uchar code duan0[]={0xFF,0xC7,0xBB,0xBB,0xBB,0xBB,0xBB,0xC7, //0
0xFF,0xDF,0xCF,0xDF,0xDF,0xDF,0xDF,0x8F, //1
0xFF,0xC7,0xBB,0xBF,0xBF,0xC3,0xFB,0x83, //2
0xFF,0xC7,0xBB,0xBF,0xC7,0xBF,0xBB,0xC7, //3
};
void delay(uint t);
void main()
{

TMOD=0x01;
TH0=0x0FC;;
TL0=0xe8;
EA=1;
ET0=1;
TR0=1;
while(1)
{
;

}
}

void delay(unsigned int t)
{
while(--t);
}
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];
delay(50);
}

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define DataPortA P0
uint i,i1,num;
sbit sn=P3^7;
uchar ShowNumber = 0;
uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位码
uchar code duan0[]={0xFF,0xC7,0xBB,0xBB,0xBB,0xBB,0xBB,0xC7, //0
0xFF,0xDF,0xCF,0xDF,0xDF,0xDF,0xDF,0x8F, //1
0xFF,0xC7,0xBB,0xBF,0xBF,0xC3,0xFB,0x83, //2
0xFF,0xC7,0xBB,0xBF,0xC7,0xBF,0xBB,0xC7, //3
0xFF,0xDF,0xCF,0xD7,0xDB,0x83,0xDF,0xDF, //4
0xFF,0x83,0xFB,0xC3,0xBF,0xBF,0xBB,0xC7, //5
0xFF,0xC7,0xBB,0xFB,0x83,0xBB,0xBB,0xC7, //6
0xFF,0x83,0xBF,0xBF,0xDF,0xDF,0xDF,0xDF, //7
0xFF,0xC7,0xBB,0xBB,0xC7,0xBB,0xBB,0xC7, //8
0xFF,0xC7,0xBB,0xBB,0x87,0xBF,0xBB,0xC7, //9

};
void delay(uint t);
void main()
{

TMOD=0x11;
TH0=0x0FC;;
TL0=0xe8;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
ET1=1;
TR1=1;

while(1)
{
if(num==20)
{
num=0;
ShowNumber++;
if(ShowNumber>9)
ShowNumber = 0;

}

}
}

void delay(unsigned int t)
{
while(--t);
}
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++;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-22
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define DataPortA P0
uint i;Uint number;
sbit sn=P3^7; //使能端
uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位码

uchar code duan0[]={0xFF,0xC7,0xBB,0xBB,0xBB,0xBB,0xBB,0xC7, //0
0xFF,0xDF,0xCF,0xDF,0xDF,0xDF,0xDF,0x8F, //1
0xFF,0xC7,0xBB,0xBF,0xBF,0xC3,0xFB,0x83, //2
0xFF,0xC7,0xBB,0xBF,0xC7,0xBF,0xBB,0xC7, //3
};
void delay(uint t);
void main()
{

TMOD=0x01;
TH0=0x0FC;;
TL0=0xe8;
EA=1;
ET0=1;
TR0=1;
while(1)
{
;

}
}

void delay(unsigned int t)
{
while(--t);
}
void timer0() interrupt 1
{
TH0=0x0FC;;
TL0=0xe8;for(i=0;i<8;i++)
{ DataPortA=wei[i];
sn=1; //使能端
sn=0;
DataPortA=0xff;
DataPortA=duan0[i+number*8];}
number++;If(number>=3)number=0;
delay(50);
}

...利用中断控制显示0-3; 但是我只能显示一个“0” 不知道如何写下去了...
define DataPortA P0 uint i,i1,num;sbit sn=P3^7;uchar ShowNumber = 0;uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; \/\/位码 uchar code duan0[]={0xFF,0xC7,0xBB,0xBB,0xBB,0xBB,0xBB,0xC7, \/\/0 0xFF,0xDF,0xCF,0xDF,0xDF,0xDF,0xDF,0x8F...

用51单片机驱动8*8点阵 的代码
不知道你要实现什么样的显示,不过基本方法是一样的。我这有一个现成的8*8的程序,你可以根据这个去修改:在8X8点阵LED上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。(要实现一根柱形的亮法:一根竖柱...

求个高手写个单片机控制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--);} \/*...

单片机51,LED点阵如何使点阵上显示的字会左右移动,或上下移动?
回答:液晶显示屏是不停闪烁的,而且一次只能显示一个图案。显示屏上显示12345也是每次在一个位置上显示一个数字,不停的显示五次,由于计算速度快,及人眼暂留现象,使人感觉上显示的是12345。现在,你如果需要动画效果,需要从底层做起。一,写函数,完成指定位置显示指定字符。二,写延时函数,三,写延时显示字符...

单片机汉字8x8点阵LED动态显示程序
这个程序验证过,你可以参考试试:\/\/---\/\/8*8矩阵循环显示字符和数字\/\/显示字符串在数组disstr[]中申明\/\/---#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int\/\/---uchar code Table_of_Digits[40][8]={{0x1C,0x22,0x22,0x22,0x22,0x22...

单片机共阳极8*8点阵程序看的不太明白望指教。这其中定义了全局变量a和...
比如:扫描{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, \/\/1这个不是要8次吗,所以a++;一直到下一行;;又要从1开始扫描,,所以不能超过8.。当等于8时就清0,循环扫描8次。。不知这样说你是否懂勒。。。

请问如何用51单片机实现8*8矩阵动态显示“南昌大学”四个字?求输入字...
8*8矩阵是显示不了一个汉字的,至少要16*16的点阵,而且也只能显示一个字,四个字要动态交替显示的。这要4块8*8的点阵组成16*16的点阵。你这要程序,首先得要确定,你是仿真,还是实物。还要有仿真图或实物开发板的原理图,才能写程序的。你以为那么简单吗,说写程序就写出来啦,你怎么不自己写...

我的单片机处理控制8×8LED点阵屏的显示。由于仅采用一个8×8LED点阵...
我帮你写了~~~记得给分 include <iom16v.h> include <macros.h> define uint unsigned int define uchar unsigned char void time(uint z) \/\/延时函数 { uint x,y;for(x=z;x>0;x--)for(y=10;y>0;y--);} uchar table[]= { \/\/高位到低位 0x7f,0xbf,0xdf,0xef,0xf7...

单片机汇编语言8乘8点阵从上到下显示修改成从左到右显示
1)如采用从左到右从上到下的排列结构形式,那么显示方式就如 则列(PA口)输出8位数据,而行(PC口)则仅输出与要显示行对应的位数据;2)如采用从上到下从左到右的排列结构形式,那么显示方式就如 则行(PC口)输出8位数据,而列(PA口)则仅输出与要显示行对应的位数据;如果字符的点阵数据...

怎么控制单片机8*8点阵每个点亮或不亮,每个点对应的十六进制是多少...
用单片机控制8×8点阵的每个LED的亮灭,要采用扫描方式实现。如下图的8×8点阵,用8系列线和8线条行线控制。在8条列线加高电平,逐条行线加低电平,就会逐行点亮。

相似回答
大家正在搜