点阵屏滚动显示

上传人:z****2 文档编号:108863879 上传时间:2022-06-16 格式:DOC 页数:6 大小:211.50KB
返回 下载 相关 举报
点阵屏滚动显示_第1页
第1页 / 共6页
点阵屏滚动显示_第2页
第2页 / 共6页
点阵屏滚动显示_第3页
第3页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
LED点阵显示与C语言编程(基础篇)(2010-04-0323:18:25)转载标签:分类:单片机杂谈点阵的接法有共阴和共阳两种(共阳指的是对每一行LED来讲是共阳)。由于51单片机驱动能力有限,亮度不够,所以一般需要三极管驱动,下图为一个8X8点阵原理图,仅仅是仿真,如果需要接实的话,加上三极管才足够亮。显示的方法有两种:1、逐列扫描方式。如下图所示,P1口输出列码决定哪一列能亮(相当于位码),P2口输出行码(列数据)决定列上哪些LED(相当于段码),能亮的列从左向右扫描完8列(相当于位码循环移位8次)即显示岀一帧完整的图像。2、逐行扫描方式,与逐列扫描调换,即P2口输出位码,P1口输出段码,扫描完8行显示出一帧图像。M心1KTAL2RBTFW心畀心FWADHP0.7/AD?尸SENP5.O/A0P22IA10ALEP2.J1JA12EAP2J5JA13pinP2.EJA1JP27M15PCURKDP11P3L1/TXDP1.2P33INTDPtsRJF1.4尸amPl5Pi5/TlF1.fira.ffWRPl?P3L7/ADATS5C51O0OODODD0DQOOOD口OODOOOOOOCDOOOOOOOOODODOOOO-ODODDODQODODO图1以逐行扫描为例,从图2可以很明了的知道点阵的显示原理了(红色表示高电平,绿色表示低电平),当把扫描速度加快,人的视觉停留,看见的就是一幅图或一个字了,如图3所示。图2图3一、行扫描静态显示,用51单片机实现图3静态显示的程序如下:#include#defineucharunsignedchar#defineuintunsignedintucharcodeTAB=0x81,0xFD,0xFD,0xC1,0xBF,0xBF,0xBD,0xC3;uchari,t;delay(uchart)while(t-);voidmain(void)while(1)P2=0x01;for(i=0;i7;二、行扫描翻页显示字码取模方式为逐行第一次从字码数组中取岀第18个数据置于列上,行扫描顺序为18行,显示一帧,第二次取第916个数据,行扫描顺序仍为18行,显示第二帧,第三次取第1724个数据,实现图4显示效果的程序如下:#include#defineucharunsignedchar#defineuintunsignedintucharcodeTAB=0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/空屏0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF,L0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF,O0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF,V0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF,E0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/空屏;uchari,t;delay(uchart)while(t-);voidmain(void)ucharN,T;while(1)for(N=0;N6;N+)/for(T=0;T100;T+)/P2=0x01;for(i=0;i7;循环扫描一遍6帧速度三、行扫描上下移动显示图5如果是逐行取字模时,第一次从字码数组中取出第18个数据置于列上,行扫描顺序为18行,显示一帧,第二次取第29数据,行扫描顺序仍为18行,显示第二帧,如此便是向上移动。如果将上述的行扫描顺序改为81行,就是向下移动,显示的图像是倒立的了,为了使得它不倒立,详细请看程序。另外取模方式不同,就有不同的编程方式。显示图5上移效果的程序如下:#include#defineucharunsignedchar#defineuintunsignedintucharcodeTAB=0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF,/L0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF,/O0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF,/V0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF,/E0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/;uchari,t;delay(uchart)while(t-);voidmain(void)ucharN,T;while(1)for(N=0;N40;N+)/循环扫描一遍40帧for(T=0;T60;T+)/移动速度P2=0x01;for(i=0;i8;i+)P1=TABi+N;delay(100);P2=P27;显示图6下移效果的程序如下:#include#defineucharunsignedchar#defineuintunsignedintucharcodeTAB=0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF,/L0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF,/O0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF,/V0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF,/E空屏空屏空屏0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/空屏;ucharidataBuffer48=0;/uchari,t;缓存显示单元delay(uchart)while(t-);voidmain(void)ucharN,T,m,n;for(m=0;m6;m+)for(n=0;n8;n+)Buffer8*m+n=TAB7-n+m*8;/使得下移字母顺序不变将TAB数组中的数据重新排列while(1)for(N=0;N40;N+)/for(T=0;T70;T+)/P2=0x80;for(i=0;i8;i+)P仁Bufferi+N;delay(100);P2=P21|P27;/四、行扫描左右移动显示。循环扫描一遍6帧速度扫描起始行为第一行如果将扫描方式改为列扫描,那么左右移动的程序就容易写了,但当点阵比较巨大并且硬件已经定下时,改变扫描方式不是好方法甚至不可能实现。这里是以行扫描为例(逐行取字模),第一次取字码数组中的第18个数据到点阵列输入端,行码扫描1行。第二次将第一次的18个数据都循环左(右)移一位,并且将第口,行扫描18行。即每次扫描都要把前一次扫描的列码左移一位。9个数据的最高位移到第二次数据的最低处,再输入到列图7为左移效果,程序如下:#include#defineucharunsignedchar#defineuintunsignedintucharcodeTAB=0xFF,0xF7,0xFB,0x81,0xFB,0xF7,0xFF,0xFF;uchari,t,j=0;delay(uchart)while(t-);voidmain(void)ucharT,Y,Q;while(1)for(Q=0;Q8;Q+)for(T=0;T100;T+)/速度P2=0x01;for(i=0;i8;i+)Y=TABi+1*256+TABi;Y=YQ;P1=Y%256;delay(60);P2=P27;
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!