预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共25页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

一.基于51的点阵屏显示: (1)点亮第一个8*8点阵: 1.首先在Proteus下选择我们需要的元件,AT89C52、74LS138、MATRIX-8*8-GREEN(在这里使用绿色的点阵)。在Proteus7.5中8*8的点阵总共有四种颜色,分别为MATRIX-8*8-GREEN, MATRIX-8*8-BLUE,MATRIX-8*8-ORANGE,MATRIX-8*8-RED。 在这里请大家牢记:红色的为上列选下行选;其它颜色的为上行选下列选!而所有的点阵都是高电平选中列,低电平选中行!也就是说如果某一个点所处的行信号为低,列信号为高,则该 点被点亮!此结论是我们编程的基础。 2.在选择完以上三个元件后,我们开始布线,具体如下图: 这里P1是列选,P0连接38译码器后作为行选。 选择38译码器的原因:38译码器每次可输出相应一个I/O口的低电平,正好与点阵屏的低电平选中行相对,并且节省了I/O口,大大方便了我们的编程和以后的扩展。 3.下面让我们把它点亮,先看一个简单的程序: (将奇数行偶数列的点点亮,效果如下图) 下面是源代码: /************8*8LED点阵屏显示*****************/ #include<reg52.h> voiddelay(intz)//延时函数 { intx,y; for(x=0;x<z;x++) for(y=0;y<110;y++); } voidmain() { while(1) { P0=0;//行选,选择第一行 P1=0x55;//列选,即该行显示的数据 delay(5);//延时 /*****下同*****/ P0=2;//第三行 P1=0x55; delay(5); P0=4;//第五行 P1=0x55; delay(5); P0=6;//第七行 P1=0x55; delay(5); } } 上面的程序实现了将此8*8点阵的奇数行偶数列的点点亮的功能。重点让我们看while循环内,首先是行选P3=0,此时38译码器的输入端为000,则输出端为01111111, 即B0端为低电平,此时选中了点阵屏的第一行,接着列选我们给P2口赋0x55,即01010101,此时又选中了偶数列,紧接着延时。然后分别对第三、五、七行进行相同的列选。 这样就点亮了此点阵屏奇数行偶数列交叉的点。 完成这个程序,我们会发现其实点阵屏的原理是如此简单,和数码管的动态显示非常相似,只不过换了一种方式而已。 4.完成了上面的点亮过程,下面我们让这个8*8的点阵屏显示一个汉字:“明” 先看效果图: 源代码如下: /************8*8LED点阵屏显示*****************/ #include<reg52.h> charcodetable[]={0x0f,0xe9,0xaf,0xe9,0xaf,0xa9,0xeb,0x11};//"明"字编码 voiddelay(intz)//延时函数 { intx,y; for(x=0;x<z;x++) for(y=0;y<110;y++); } voidmain() { intnum; while(1)//循环显示 { for(num=0;num<8;num++)//8行扫描P3行选,P2列选 { P03=num;//行选 P1=table[num];//列选 delay(5);//延时 } } } 因为要显示一个汉字,这里我们使用了一个数组table[]来存储该字的编码,重点还是来看while循环,首先在for循环内完成对8*8点阵屏的8行依次扫描。 我们来分析第一行的情况即num=0的时候,首先P3=0,选中第一行,然后P2=table[0],即P2等于table数组中第一个数据0x0f,则此时就点亮了第一行相应的点。 接着延时,其他行同理。这样我们就完成了一个最简单汉字的显示。 (2)16*16点阵的显示原理 1.虽然完成了上面8*8点阵的显示,但是由于点的数量太少以至于它的显示效果并不是很理想,事实上现在大部分点阵的汉字都是16*16显示的,下面让我们来学习16*16点阵的显示。 和上面一样我们先选择元件:AT89C52,74LS138,,MATRIX-8*8-GREEN,因为要显示16*16的汉字,我们就不能再使用一个38译码器进行行选了,这里我们用两个38译码器组合成一个 4选16的译码器(当然也可以使用74159)。而MATRIX-8*8-GREEN点阵需要4个。完成后如下图: 2.先来看看4选16的译码器是如何工作的,这里有4个输入端a、b、c、d,16个输出端H0~H15,如上图连线后即可完成类似于38译码器一样的工作。只不过扩展到了16行选。关于连线的 原理这