欢迎来到天天文库
浏览记录
ID:10934909
大小:102.00 KB
页数:29页
时间:2018-07-09
《点阵屏显示原理及实验详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、标题:LED点阵屏学习攻略共享资料2010-8-138:5044LED点阵屏学习攻略在经历了将近一个学期断断续续的点阵屏学习后,最后终于在AVR平台下完成了128*32点阵屏的无闪烁显示。现把整个学习过程总结如下:无论是51单片机还是AVR单片机,点阵屏的显示原理是一样的,所以首先从51讲起。说明:以下所有试验如无特殊说明均在KeiluVision3+Proteus6.9SP5下仿真完成。一.基于51的点阵屏显示:(1)点亮第一个8*8点阵: 1.首先在Proteus下选择我们需要的元件,AT89C52、74LS138、MATRIX-8*8-GREEN(在这
2、里使用绿色的点阵)。在Proteus6.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
3、口的低电平,正好与点阵屏的低电平选中行相对,并且节省了I/O口,大大方便了我们的编程和以后的扩展。3.下面让我们把它点亮,先看一个简单的程序:(将奇数行偶数列的点点亮,效果如下图) 下面是源代码:/************8*8LED点阵屏显示*****************/#include voiddelay(intz)//延时函数{ intx,y; for(x=0;x4、 P3=0; //行选,选择第一行 P2=0x55; //列选,即该行显示的数据 delay(5); //延时 /*****下同*****/ P3=2; //第三行 P2=0x55; delay(5); P3=4; //第五行 P2=0x55; delay5、(5); P3=6; //第七行 P2=0x55; delay(5); } }上面的程序实现了将此8*8点阵的奇数行偶数列的点点亮的功能。重点让我们看while循环内,首先是行选P3=0,此时38译码器的输入端为000,则输出端为01111111,即B0端为低电平,此时选中了点阵屏的第一行,接着列选我们给P2口赋0x55,即01010101,此时又选中了偶数列,紧接着延时。然后分别对第三、五、七行进行相同的列选。这样就点亮了此点阵屏奇数行偶数列交叉的点6、。完成这个程序,我们会发现其实点阵屏的原理是如此简单,和数码管的动态显示非常相似,只不过换了一种方式而已。4.完成了上面的点亮过程,下面我们让这个8*8的点阵屏显示一个汉字:“明”先看效果图: 源代码如下:/************8*8LED点阵屏显示*****************/#include charcodetable[]={0x0f,0xe9,0xaf,0xe9,0xaf,0xa9,0xeb,0x11};//"明" 字编码 voiddelay(intz)//延时函数{ intx,y; for(x=0;x7、++) for(y=0;y<110;y++);} voidmain(){ intnum; while(1) //循环显示 { for(num=0;num<8;num++) //8行扫描P3行选,P2列选 { P3=num; //行选 P2=table[num]; //列选 delay(5); //延时 }8、
4、 P3=0; //行选,选择第一行 P2=0x55; //列选,即该行显示的数据 delay(5); //延时 /*****下同*****/ P3=2; //第三行 P2=0x55; delay(5); P3=4; //第五行 P2=0x55; delay
5、(5); P3=6; //第七行 P2=0x55; delay(5); } }上面的程序实现了将此8*8点阵的奇数行偶数列的点点亮的功能。重点让我们看while循环内,首先是行选P3=0,此时38译码器的输入端为000,则输出端为01111111,即B0端为低电平,此时选中了点阵屏的第一行,接着列选我们给P2口赋0x55,即01010101,此时又选中了偶数列,紧接着延时。然后分别对第三、五、七行进行相同的列选。这样就点亮了此点阵屏奇数行偶数列交叉的点
6、。完成这个程序,我们会发现其实点阵屏的原理是如此简单,和数码管的动态显示非常相似,只不过换了一种方式而已。4.完成了上面的点亮过程,下面我们让这个8*8的点阵屏显示一个汉字:“明”先看效果图: 源代码如下:/************8*8LED点阵屏显示*****************/#include charcodetable[]={0x0f,0xe9,0xaf,0xe9,0xaf,0xa9,0xeb,0x11};//"明" 字编码 voiddelay(intz)//延时函数{ intx,y; for(x=0;x7、++) for(y=0;y<110;y++);} voidmain(){ intnum; while(1) //循环显示 { for(num=0;num<8;num++) //8行扫描P3行选,P2列选 { P3=num; //行选 P2=table[num]; //列选 delay(5); //延时 }8、
7、++) for(y=0;y<110;y++);} voidmain(){ intnum; while(1) //循环显示 { for(num=0;num<8;num++) //8行扫描P3行选,P2列选 { P3=num; //行选 P2=table[num]; //列选 delay(5); //延时 }
8、
此文档下载收益归作者所有