标题:
单片机点阵屏滚动 怎么做能让显示内容向左滚动,然后又从右面滚动进入点阵屏
[打印本页]
作者:
Rorikon
时间:
2017-5-14 19:32
标题:
单片机点阵屏滚动 怎么做能让显示内容向左滚动,然后又从右面滚动进入点阵屏
4个74hc595芯片驱动16*16的点阵
请问怎么做能让显示内容向左滚动,然后又从右面滚动进入点阵屏
作者:
cjjcjj1
时间:
2017-5-15 06:25
提示:
作者被禁止或删除 内容自动屏蔽
作者:
wosiyabo
时间:
2017-5-15 11:00
把程序帖出来吧,右面滚动应该是在查表时把for(i=0;i<504;i++)改为for(i=504;i>504;i--)把数组内容传送顺序反过来
作者:
你像风儿来了
时间:
2017-5-15 13:52
给你个例程,你根据你的硬件修改吧
作者:
Rorikon
时间:
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);
}
}
}
作者:
Rorikon
时间:
2017-5-15 20:30
wosiyabo 发表于 2017-5-15 11:00
把程序帖出来吧,右面滚动应该是在查表时把for(i=0;i504;i--)把数组内容传送顺序反过来
贴在5楼了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1