51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > 51单片机 > 详细内容
LED点阵显示与C语言编程
发布时间:2009/6/29  阅读次数:2460  字体大小: 【】 【】【
  
三、行扫描上下移动显示。
如果是逐行取字模时,第一次从字码数组中取出第1~8个数据置于列上,行扫描顺序为1~8行,显示一帧,第二次取第2~9个数据,行扫描顺序仍为1~8行,显示第二帧,……如此便是向上移动。如果将上述的行扫描顺序改为8~1行,就是向下移动,但显示的图像是倒立的了,为了使得它不倒立,详细请看程序。另外取模方式不同,就有不同的编程方式。
上移效果的程序如下:
/*8X8行扫描,上移显示*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,               //空屏
                                                             0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF,         //L
                                                             0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF,         //O
                                                             0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF,         //V
                                                             0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF,         //E
                                                             0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,           //空屏
                                                           };
uchar i,t;
delay(uchar t)
{
while (t--)
{;}
}
void main(void)
{ uchar N,T;
while(1)
     {
         for(N=0;N<40;N++)             //循环扫描一遍40帧
               for(T=0;T<60;T++)       //移动速度
                       {
                             P2=0x01;
                             for(i=0;i<8;i++)
                                   {
                                       P1=TAB[i+N];
                                       delay(100);
                                     P2=P2<<1|P2>>7;    
                                   }
                       }
         }
}
下移效果的程序如下:
/*8X8行扫描,下移显示*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,           //空屏
                                                           0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF,           //L
                                                             0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF,         //O
                                                             0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF,         //V
                                                           0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF,           //E
                                                           0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,             //空屏
                                                             };
uchar idata Buffer[48]={0};     //缓存显示单元
uchar i,t;
delay(uchar t)
{
while (t--)
{;}
}
void main(void)
{
uchar N,T,m,n;
for(m=0;m<6;m++)
     for(n=0;n<8;n++)
         Buffer[8*m+n]=TAB[7-n+m*8];     //将TAB数组中的数据重新排列
                     //使得下移字母顺序不变
while(1)
     {
for(N=0;N<40;N++)                               //循环扫描一遍6帧
       for(T=0;T<70;T++)                         //速度
           {
       P2=0x80;
                   for(i=0;i<8;i++)
                 {
       P1=Buffer[i+N];
                   delay(100);
             P2=P2>>1|P2<<7;              //扫描起始行为第一行
             }
       }
}
}
四、行扫描左右移动显示。      
如果将扫描方式改为列扫描,那么左右移动的程序就容易写了,但当点阵比较巨大并且硬件已经定下时,改变扫描方式不是好方法,甚至不可能实现。这里是以行扫描为例(逐行取字模),第一次取字码数组中的第1~8个数据到点阵列输入端,行码 扫描1~8行。第二次将第一次的 1~8个数据都循环左(右)移一位,并且将第9个数据的最高位移到第二次数据的最低处,再输入到列端口,行扫描1~8行。即每次扫描都要把前一次扫描的列码左移一位。
                                                                    
  
左移效果,程序如下:
/*8X8行扫描,左移显示*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0xFF,0xF7,0xFB,0x81,0xFB,0xF7,0xFF,0xFF};
uchar i,t,j=0;
delay(uchar t)
{
while (t--)
{;}
}
void main(void)
{ uchar T,Y,Q;
while(1)
     {
     for(Q=0;Q<8;Q++)
       for(T=0;T<100;T++)       //速度
           {
       P2=0x01;
                   for(i=0;i<8;i++)
                 {
             Y=TAB[i+1]*256+TAB[i];
       Y=Y<<(7-Q)|Y>>Q;
       P1=Y%256;
       delay(60);
       P2=P2<<1|P2>>7;
             }
       }
}
  
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号