您当前的位置:五五电子网电子知识单片机-工控设备51单片机51单片机16*16LED点阵滚动显示 正文
51单片机16*16LED点阵滚动显示

51单片机16*16LED点阵滚动显示

点击数:7911 次   录入时间:03-04 11:58:51   整理:http://www.55dianzi.com   51单片机

    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

    //改显示内容以下两行别改

    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF

};

/*主函数*/

void

main()

{

    uchar i,j;

     uint m=0; //m是从字模数组里向后取数据时的计数器,用以改变显示文字的内容,及滚动显示效果

     SCON=0; 

    //初始化串口为工作方式0(同步通信方式,TxD输出同步脉冲)

     lie=0x7fff; //列选标志初始化

     while(1)

    //重复循环显示

     {

        for(j=0;j<10;j++)  //j用来控制屏上1帧显示内容停留的时间,即用来控制滚动速度

         {

            for(i=1;i<=31;i+=2)

            {

                P0=0xff; //先关显示,以免164内数据移动过程中在屏上产生不良影响,大家可以把这两句去掉比较下显示效果

                P2=0xff;

                SBUF=text[i+m]; //从串口发送字模数据(为什么要先发后一个数据,看下电路应该会明白吧:)

                while(TI==0);  //等待发送完毕

                TI=0;

                SBUF=text[i+m-1]; //从串口发送数据,补全整一列数据

                while(TI==0);

                TI=0;

                P0=lie%256; //选中要显示的那列,同时等于打开了那列的显示

                P2=lie/256;

                delay();  //延时,等待一段时间,让这列显示的内容在人眼内产生“视觉暂留”现象,略知生理的人应该都知道吧。

                lie=_iror_(lie,1);  //列选标志移位,准备用来选中下一列

            }

        } //返回显示下一列,直到16列都显示完成

        m+=2; //显示内容向后移一列

        if(m>1024) //这个数据为你的字模数组的大小-32,我的是1056-32=1024

        m=0;

    }

}

/*延时子程序*/

void delay()

{

    uint n;

    for(n=0;n<90;n++)

    {;}

}

两个汉字16x16点阵显示89C51

两个汉字16x16点阵显示_显示板



上一页  [1] [2] 


本文关键字:单片机  51单片机单片机-工控设备 - 51单片机