8x8点阵c语言程序 左右移,51单片机+点阵8*8上、下、左、右移显示C程序

}

void xian()

{

uchar i;

while(word24)//需要显示3个字,公式=8*N个字,比如四个字就是4*8=32

{

for(move=0;move8;move++)//要移多少位?

{

for(i=0;ishudu;i++)//一字移动的速度

{

for(line=0;line8;line++)//扫描8次,即完成一个字的移动

{

yixian();//调用一线子程序

yipai();//调用数据转换子程序

LINE=line;//打开行线,即74HC138行线端

CLKR=1;//在74HC595处锁存起来

CLKR=0;

CLKR=1;

}

}

}

word=word+8;//一个字显示完了,就显示下一个字

}

word=0;//清0重新开始

}

/********************************/

/************主程序*************/

/********************************/

void main()

{

while(1)

{

xian();

}

}

四、右移

#includereg52.h>

#define uchar unsigned char

#define uint unsigned int

#define LINE P1//定义行线IO口,即74HC154控制端

#define shudu 120//字移动的速度

sbit DATA=P3^5;//74HC595数据端

sbit CLK=P3^7;//74HC595移位脉冲端

sbit CLKR=P3^6;//74HC595数据锁存端

uchar move;//移动几位变量

uchar line;//行变量

uint word;//字节变量

uchar BUF[2];//2组缓存数组以便动态更改数据

uchar code table[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x3C,0x00,0x18,0x00,0x7E,0x00,0x00,

0x08,0x08,0x7F,0x49,0x7F,0x08,0x08,0x08,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};//字模数组

/********************************/

/**74HC595移位寄存器送数子函数***/

/********************************/

void song(uchar z)//带参数函数

{

uchar num,hang;//定义变量

hang=z;//将形参给变量

for(num=0;num8;num++)//移动8次将数据发送完毕

{

if(hang0x01==1)//将高7位屏蔽掉,保留最低位判断

DATA=1;//为1就将74HC595数据端置1

else

DATA=0;//否则给0

CLK=0;//上升沿送走数据

CLK=1;//高电平形成上升沿

hang>>=1;//将数移走一位

}

}

/********************************/

/*装一线数据子函数(即一行数据)*/

/********************************/

void yixian()

{

BUF[0]=table[word+line];//第1个字代码装入缓存数组0,line表示行数,word表示字数

BUF[1]=table[word+8+line];//第2个字代码装入缓存数组1

}

/********************************/

/*将一行数据转换出来,然后显示*/

/********************************/

void yipai()

{

uchar temp,yi;//定义两个变量

yi=move;//将要移多少位给变量yi

temp=(BUF[1](8-yi))|(BUF[0]>>yi);/*将第1个字即数组0左移yi(yi只是代号,比如1位)位

,然后将第下一个字即数组1右移8-yi位,然后或一下,这样就会得到要发送的数*/

song(~temp);//发送给74HC595

}

void xian()

{

uchar i;

while(word24)//需要显示3个字,公式=8*N个字,比如四个字就是4*8=32

{

for(move=0;move8;move++)//要移多少位?

{

for(i=0;ishudu;i++)//一字移动的速度

{

for(line=0;line8;line++)//扫描8次,即完成一个字的移动

{

yixian();//调用一线子程序

yipai();//调用数据转换子程序

LINE=line;//打开行线,即74HC138行线端

CLKR=1;//在74HC595处锁存起来

CLKR=0;

CLKR=1;

}

}

}

word=word+8;//一个字显示完了,就显示下一个字

}

word=0;//清0重新开始

}

/********************************/

/************主程序*************/

/********************************/

void main()

{

while(1)

{

xian();

}

}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值