新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 51单片机+点阵8*8上、下、左、右移显示C程序

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

作者:时间:2012-07-10来源:网络收藏
最近在研究,这东西看起来简单,但是要完全掌握它,可是要花一定时间的!我现在做得8*8硬件电路是这样的,行采用+三极管8550驱动,列采用74HC595驱动,这种电路是非常用的,其次的扫描原理就是,先打开第一行,然后送代码给列,即595端,像这样扫描8次行,一个字就完成了,具体原理图如下图:
点击浏览下一页

下面我将我写得代码下载地址分享下:

一、上移:
#includereg52.h>
#define uchar unsigned char
#define uint unsigned int
#define LINE P1//定义行线IO口,即74HC154控制端
#define shudu 50//字移动的速度
sbit DATA=P3^5;//74HC595数据端
sbit CLK=P3^7;//74HC595移位脉冲端
sbit CLKR=P3^6;//74HC595数据锁存端
uint word;//字节变量
uchar line;//字节变量
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,
};//字模数组
void delay(uchar z)
{
uchar x,y;
for(x=8;x>0;x--)
for(y=z;y>0;y--);
}
/********************************/
/**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 xian()
{
uchar i,f;
for(i=0;ishudu;i++)//一字移动的速度
{
word=f;//将字暂存器给计数器
for(line=0;line8;line++)//扫描8次,即完成一个字的移动
{
song(~table[word]);
CLKR=1;//在74HC595处锁存起来
CLKR=0;
CLKR=1;
word++;//将计数器加1
LINE=line;//打开行线,即行线端
P3=0xff;
delay(20);
}
}
f+=2;//显示完一个字后加2形成上移
if(word>=32)
{
word=0;//清0重新开始
f=0;
}
}
/********************************/
/************主程序*************/
/********************************/
void main()
{
while(1)
{
xian();
}
}


上一页 1 2 3 下一页

关键词: 51单片机 点阵 74HC138

评论


相关推荐

技术专区

关闭