找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8673|回复: 5
打印 上一主题 下一主题
收起左侧

单片机点阵屏滚动 怎么做能让显示内容向左滚动,然后又从右面滚动进入点阵屏

[复制链接]
跳转到指定楼层
楼主
ID:183379 发表于 2017-5-14 19:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
4个74hc595芯片驱动16*16的点阵
请问怎么做能让显示内容向左滚动,然后又从右面滚动进入点阵屏

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:82765 发表于 2017-5-15 06:25 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

板凳
ID:146949 发表于 2017-5-15 11:00 | 只看该作者
把程序帖出来吧,右面滚动应该是在查表时把for(i=0;i<504;i++)改为for(i=504;i>504;i--)把数组内容传送顺序反过来
回复

使用道具 举报

地板
ID:148552 发表于 2017-5-15 13:52 | 只看该作者
给你个例程,你根据你的硬件修改吧
回复

使用道具 举报

5#
ID:183379 发表于 2017-5-15 19:10 | 只看该作者
#include <reg51.h>
#include <intrins.h>

sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;

unsigned char lei[]={/*--  文字:  蕾  --*/
                                        /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
                                        0x82,0x62,0x2A,0xAA,0xAF,0xAA,0x2A,0xFA,0x2A,0xAA,0xAF,0xAA,0x2A,0xA2,0x62,0x00,
                                        0x00,0x00,0xF8,0xAA,0xAA,0xAA,0xA8,0xFB,0xA8,0xAA,0xAA,0xAA,0xF8,0x00,0x00,0x00,};



unsigned char ledwei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};


void delay(unsigned int i)
{
        while(i--);
}

void delay1s(void)   //误差 -0.000000000227us
{
    unsigned char a,b,c;
    for(c=13;c>0;c--)
        for(b=247;b>0;b--)
            for(a=142;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}

void send_74hc595(unsigned char dat1,unsigned char dat2,unsigned char dat3,unsigned char dat4)
{        unsigned char i;
        SRCLK = 1;
        RCLK = 1;

       
        for(i=0;i<8;i++)   //移位
        {
                SER=dat1>>7;           //传送最高位
                dat1<<=1;
                SRCLK=0;
                _nop_();
                _nop_();
                SRCLK=1;
        }
        for(i=0;i<8;i++)   //移位
        {
                SER=dat2>>7;           //传送最高位
                dat2<<=1;
                SRCLK=0;
                _nop_();
                _nop_();
                SRCLK=1;
        }
        for(i=0;i<8;i++)   //移位
        {
                SER=dat3>>7;           //传送最高位
                dat3<<=1;
                SRCLK=0;
                _nop_();
                _nop_();
                SRCLK=1;
        }
        for(i=0;i<8;i++)   //移位
        {
                SER=dat4>>7;           //传送最高位
                dat4<<=1;
                SRCLK=0;
                _nop_();
                _nop_();
                SRCLK=1;
        }
        RCLK=0;
        _nop_();
        _nop_();
        RCLK=1;
}

void main()
{
        unsigned char i;
        unsigned int j=100;
        while(1)
        {
                for(i=0;i<16;i++)
                        {
                                send_74hc595(~ledwei[i+16],~ledwei[i],lei[i+16],lei[i]);
                                delay(10);       
                        }
                               
        }
}
回复

使用道具 举报

6#
ID:183379 发表于 2017-5-15 20:30 | 只看该作者
wosiyabo 发表于 2017-5-15 11:00
把程序帖出来吧,右面滚动应该是在查表时把for(i=0;i504;i--)把数组内容传送顺序反过来

贴在5楼了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表