㈠ 单片机点阵屏滚动方法
摘要 显示
㈡ 怎么使单片机的led点阵亮
单片机驱动LED点阵。首先,需要清除,驱动点阵是利用人眼的视觉暂留效应,不断的给点阵送数据,已达到显示效果。
以8*8LED点阵举例,其行和列分别有8个LED灯珠,可以直接占用16个io口,或者用译码器和锁存器拓展。
点亮时,都是分别送需要显示的数据,不断刷新,从而实现静止或滚动效果。
㈢ 单片机点阵
16*16的点阵么?单片机控制点阵方法是根据硬件电路来设计的。一般来说,点阵会连一个译码器(比如74HC138等),通过控制138译码器,完成列扫描功能。还有一部分直接接到单片机上,由单片机负责输出。完成行扫描功能。网上这种例子一搜一大堆的。
㈣ 单片机LED16×16点阵,主要参数有哪
摘要 您好。我帮您查询了,点阵 LED 显示屏作为一种现代电子媒体,具有灵活的显示面积(可任意分割和拼装)、高亮度、长寿命、数字化、实时性等特点,应用非常广泛。
㈤ LED点阵用单片机是怎么控制的
原理上和数码管是一样的控制方法,一个数码管就相当于一排8个灯
㈥ 单片机 8*8点阵C51程序
一.基于51的点阵屏显示:(1)点亮第一个8*8点阵:
1.首先在Proteus下选择我们需要的元件,AT89C51、74LS138、MATRIX-8*8-GREEN(在这里使用绿色的点阵)。在Proteus
6.9中8*8的点阵总共有四种颜色,分别为MATRIX-8*8-GREEN,MATRIX-8*8-BLUE,MATRIX-8*8-ORANGE
,MATRIX-8*8-RED。
在这里请牢记:红色的为上列选下行选;其它颜色的为上行选下列选!而所有的点阵都是高电平选中列,低电平选中行!也就是说如果某一个点所处的行信号为低,列信号为高,则该点被点亮!此结论是我们编程的基础。
2.在选择完以上三个元件后,我们开始布线,具体如下图:
这里P2是列选,P3连接38译码器后作为行选。
选择38译码器的原因:38译码器每次可输出相应一个I/O口的低电平,正好与点阵屏的低电平选中行相对,并且节省了I/O口,大大方便了我们的编程和以后的扩展。
3.下面让我们把它点亮,先看一个简单的程序:
(将奇数行偶数列的点点亮,效果如下图)
下面是源代码:
/************8*8LED点阵屏显示*****************/
#include<reg51.h>
void
delay(int
z)
//延时函数
{
int
x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}
void
main()
{
while(1)
{
P3=0;
//行选,选择第一行
P2=0x55;
//列选,即该行显示的数据
delay(5);
//延时
/*****下同*****/
P3=2;
//第三行
P2=0x55;
delay(5);
P3=4;
//第五行
P2=0x55;
delay(5);
P3=6;
//第七行
P2=0x55;
delay(5);
}
}
上面的程序实现了将此8*8点阵的奇数行偶数列的点点亮的功能。重点让我们看while循环内,首先是行选P3=0,此时38译码器的输入端为000,则输出端为01111111,即B0端为低电平,此时选中了点阵屏的第一行,接着列选我们给P2口赋0x55,即01010101,此时又选中了偶数列,紧接着延时。然后分别对第三、五、七行进行相同的列选。这样就点亮了此点阵屏奇数行偶数列交叉的点。
完成这个程序,我们会发现其实点阵屏的原理是如此简单,和数码管的动态显示非常相似,只不过换了一种方式而已。
对不起啦,我传了三次图片都没传上,郁闷哪!希望你能理解哈!
不过我有传一份WORD文档在我的空间里面
㈦ 单片机点阵移动怎么编
试试如下修改:
#include<reg51.h>
unsigned char code tab[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//列选通控制
unsigned char code digittab[9][8] = {
{0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,0x00}, //0 8行,
{0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00},
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},
{0x00,0x00,0x00,0x3e,0x41,0x41,0x41,0x3e},
{0x00,0x00,0x00,0x00,0x3e,0x41,0x41,0x41},
{0x00,0x00,0x00,0x00,0x00,0x3e,0x41,0x41},
{0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x41},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}};
unsigned char tt=0;
void delay()
{
int m, n;
for(m = 20; m > 0; m--) for(n = 15; n > 0; n--);
}
void Disp(unsigned char j)
{
unsigned char i; //i定义列,j定义行
for(i = 0; i < 8; i++) {
P0 = digittab[j][i]; // 行线
P2 = tab[i]; delay(); P2 = 0xff; // 列线, 扫描时间
}
}
void main(void)
{
unsigned char i, j;
while(1) {
for(i = 0; i < 10; i++) Disp(j);
j++;
if(j == 9) j = 0;
}
}
㈧ 单片机的点阵显示规律及原理
怎样的扫描显示,要说清楚还真要费些事,看看这么说你能否弄懂;假设一片8*8点阵的两组引脚分别为H1、H2、H3、H4、H5、H6、H7、H8和L1、L2、L3、L4、L5、L6、L7、L8;而且H1-H8分别是8行LED的A极公共端,L1-L8分别为是8行LED的K极公共端(即8列公共端);此时如果H1接V+,L1接V-,那么第一行的左起第一个LED被点亮,依此顺序,如果我们在L1-L8这组引脚上送入数据0111 1111(0x7F),而将H1-H8全部连接V+,那么会点亮整个8*8点阵的第一列LED,但这样只能按列或全屏点亮,如果我们送一组列数据并点亮一行,如此逐行分别点亮,就能显示完整的图形了,只要所有行的每行在1秒内显示超过24次,就能看到完整的画面。
㈨ 单片机简单的点阵问题
在for里面不停的给数据,扫描一行给一行的数据。但是,在扫描下一行的时候,你那IO口还保持者上溢行的数据,这就会和当前要给的数据出现重叠情况。显示就会乱。。。所以在在扫描下一行之前先关掉数据输出,就是把传输数据的IO口清零一下(灯全灭)。。
for(k=0;k<8;k++)
{
hangkong=hangkongxianshi[k];
red=redxianshi[k];
yanshi(1);
red=0x00;
}