㈠ 51单片机控制16*16点阵显示屏
板子上所配器件清单:
74HC5952个
74HC1642个
三极管855016个
电阻1K16个
电阻200欧姆16个
点阵底座圆排母2根
弯排针1根
点阵PCB空板1个
㈡ 单片机 led点阵屏
这个很简单,但说起来有点麻烦,LED点阵它是行列共用的,有两种方式扫描显示,分别是行扫和列扫,假如是行扫,那么列上输出的就是数据要采用横向取模,反之则纵向取模。也就是当行扫的时候在同一时间只有一行是亮的,此时数据输出的是这一行的信息,等下一行亮时列中输出的是下一行的数据,所以要横向取模
不知道这么说够不够明白
㈢ 关于stc89c52点阵屏程序设计的问题
利用8X8点阵显示数字0到9的数字。
2.电路原理图
图4.25.1
3.硬件系统连线
(1).把“单片机系统”区域中的P3端口用8芯排芯连接到“点阵模块”区域中的“DR1-DR8”端口上;
(2).把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“DC1-DC8”端口上;
4.程序设计内容
(1).数字0-9点阵显示代码的形成
如下图所示,假设显示数字“0”
12345678
● ● ●
● ●
● ●
● ●
● ●
● ●
● ● ●
00003E4141413E00
因此,形成的列代码为00H,00H,3EH,41H,41H,3EH,00H,00H;只要把这些代码分别送到相应的列线上面,即可实现“0”的数字显示。
送显示代码过程如下所示
送第一列线代码到P3端口,同时置第一行线为“0”,其它行线为“1”,延时2ms左右,送第二列线代码到P3端口,同时置第二行线为“0”,其它行线为“1”,延时2ms左右,如此下去,直到送完最后一列代码,又从头开始送。
数字“1”代码建立如下图所示12345678
●
● ●
●
●
●
●
● ● ●
其显示代码为00H,00H,00H,00H,21H,7FH,01H,00H由上到下7~0,21H=00100001B
数字“2”代码建立如下图所示
12345678
● ● ●
● ●
●
●
● ● ● ●
●
● ● ● ● ●
00H,00H,27H,45H,45H,45H,39H,00H
数字“3”代码建立如下图所示
12345678
● ● ●
● ●
●
● ● ●
●
● ●
● ● ●
00H,00H,22H,49H,49H,49H,36H,00H
数字“4”代码建立如下图所示
12345678
●
● ●
● ●
● ●
● ● ● ● ●
●
●
00H,00H,0CH,14H,24H,7FH,04H,00H
数字“5”代码建立如下图所示
12345678
● ● ● ● ●
●
● ● ● ●
●
●
● ●
● ● ●
00H,00H,72H,51H,51H,51H,4EH,00H
数字“6”代码建立如下图所示
12345678
● ● ●
● ●
●
● ● ● ●
● ●
● ●
● ● ●
00H,00H,3EH,49H,49H,49H,26H,00H
数字“7”代码建立如下图所示
12345678
● ● ● ● ●
●
●
●
●
●
●
00H,00H,40H,40H,40H,4FH,70H,00H
数字“8”代码建立如下图所示
12345678
● ● ●
● ●
● ●
● ● ●
● ●
● ●
● ● ●
00H,00H,36H,49H,49H,49H,36H,00H
数字“9”代码建立如下图所示
12345678
● ● ●
● ●
● ●
● ● ● ●
●
● ●
● ● ●
00H,00H,32H,49H,49H,49H,3EH,00H
5.汇编源程序
TIM EQU30H
CNTA EQU31H
CNTB EQU32H
ORG00H
LJMPSTART
ORG0BH
LJMPT0X
ORG30H
START: MOVTIM,#00H
MOVCNTA,#00H
MOVCNTB,#00H
MOVTMOD,#01H
MOVTH0,#(65536-1000)/256//原文设定的3000太“闪”了
MOVTL0,#(65536-1000)MOD256
SETBTR0
SETBET0
SETBEA
SJMP$
T0X:
MOVTH0,#(65536-1000)/256
MOVTL0,#(65536-1000)MOD256
MOVDPTR,#TAB
MOVA,CNTA
MOVCA,@A+DPTR
MOVP3,A
MOVDPTR,#DIGIT
MOVA,CNTB
MOVB,#8
MULAB
ADDA,CNTA
MOVCA,@A+DPTR
MOVP1,A
INCCNTA
MOVA,CNTA
CJNEA,#8,NEXT
MOVCNTA,#00H
NEXT: INCTIM
MOVA,TIM
CJNEA,#250,NEX
MOVTIM,#00H
INCCNTB
MOVA,CNTB
CJNEA,#10,NEX
MOVCNTB,#00H
NEX: RETI
TAB: DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
DIGIT: DB00H,00H,3EH,41H,41H,41H,3EH,00H
DB00H,00H,00H,00H,21H,7FH,01H,00H
DB00H,00H,27H,45H,45H,45H,39H,00H
DB00H,00H,22H,49H,49H,49H,36H,00H
DB00H,00H,0CH,14H,24H,7FH,04H,00H
DB00H,00H,72H,51H,51H,51H,4EH,00H
DB00H,00H,3EH,49H,49H,49H,26H,00H
DB00H,00H,40H,40H,40H,4FH,70H,00H
DB00H,00H,36H,49H,49H,49H,36H,00H
DB00H,00H,32H,49H,49H,49H,3EH,00H
END
6.C语言源程序
#include<AT89X52.H>
unsignedcharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharcodedigittab[10][8]={ {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0
{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1
{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2
{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3
{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4
{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5
{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00} //9
};
unsignedinttimecount;
unsignedcharcnta;
unsignedcharcntb;
voidmain(void)
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{;
}
}
voidt0(void)interrupt1using0
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
P3=tab[cnta];
P1=digittab[cntb][cnta];
cnta++;
if(cnta==8)
{
cnta=0;
}
timecount++;
if(timecount==333)
{
timecount=0;
cntb++;
if(cntb==10)
{
cntb=0;
}
}
}
㈣ 我想用 51单片机控制点阵屏,可是不知道程序怎么写,也不知道如何知道8*8点阵屏的引脚~~求指点
点阵的引脚图。看懂了引脚图估计会写了吧?!
㈤ 已经购买了2块32*64的点阵屏幕,放在一起可以级联成32*128的,单片机是STC12C5A60S2
买了液晶屏,向厂家要测试程序,或向商家要,都会给的。就是C语言的。根据测试程序,改一下引脚定义就行了,编译一下测试程序,看能不能显示。如果能显示了,就可以自己根据测试程序一点点修改。
如果找不到厂家,就只好在网上找了,但不容易与你的晶屏相符。
实在不会,读一下测试程序,显示汉字的方法都是:用汉字取模软件,先取汉字点阵数据,用这些数据代替测试程序的点阵数据,看是不是能显示自己的取模的汉字了。
因液晶屏显示汉字,取模方式有多种,如果显示乱码,说明取模方式不对,再换一种,直到显示出汉字为止。这样就可以,对测试程序进行修改成自己看得懂,又实用的程序了。
㈥ 51单片机做点阵屏的问题
写完显示后,延时一下,给它一段时间表现自己,利用一下人眼的暂留效应。
这个不在于扫描的快慢,要知道你这么干,每次点亮的时间不足以够成“视觉”。
你真是太有才了,竟然能发现降低晶振频率来解决这个问题!花了不少工夫吧。
还不明白的话,给我留言。
㈦ 单片机怎样才能驱动8个8*8点阵屏
由于人眼视觉暂留效应以及LED亮度与占空比的关系决定,显示刷新一般为8线,对于8*8*8点阵,需要8条线驱动和8*8条位驱动,即72个IO口,8位机达不到,一般采用IO扩展形式,以51为例,可使用8块273或164扩展出64个IO,线驱动可使用2003。
㈧ 51单片机如何储存LED点阵屏显示的图案并且可以实现调用出来,求程序
首先你要确定点阵的大小,黑白(单色)点阵一个 点占一位二进制数据,128*128点占16*128个字节,即2K。用专门的软件将图形转化成十六进制数据,存储于表格中,显示时再一个一个读出,进行显示。
点阵显示屏有的是一个点一个点写入,有的是一行一行(或半行)写入,程序当然是不一样的。
㈨ 单片机 怎么控制点阵屏和LCD屏
LED点阵屏和LCD屏的显示原理是不同的,LCD屏是自带的驱动芯片的,可以和单片机直接连接的。
而LED屏需要加驱动电路的,而且显示时也要采用动态扫描的方式的。
LCD屏显示汉字时,有的屏是自带字库的,不带字库的屏,就要用汉字取模软件取出显示的数据,即取出汉字的字模。
LED屏显示汉字,就必须用取模软件来取模了,不是自己像画画那样,那可画不起。取模软件在网上可以下载的。
最后一个问题:LCD的集成电路去了当成点阵屏用吗?这是不可能的,一则LCD的集成电路是封装在PCB板上的,即软封装的,自己是用不了的,是不可能自己接线的。二则,假如能接线,可是,LCD和LED显示原理不同,是根本不可能通用的。
举个例子吧,你能把你家的私家车挂在高铁的车头拉着跑吗?
㈩ 单片机 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文档在我的空间里面