高手帮帮忙,请问一下16*16的点阵用74hc595驱动,74hc138接列,顺便说明一下程序,谢了

 我来答
坏坏的爱5
2011-11-14 · 超过18用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:41万
展开全部
用2个138级联控制列,2个595,每个595控制2个8x8的点阵 我感觉这个程序就是最简单的滚动显示的程序 了
#include <reg52.h>

sbit STR=P3^2; //锁存
sbit SRCLK=P3^3; //时钟
sbit SDI= P3^5;
//16×16汉?
unsigned char code hanzi1[][32]={
/*-- 文字: 要 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFF,0xFF,0x80,0x03,0xFB,0xBF,0xFB,0xBF,0xC0,0x07,0xDB,0xB7,0xDB,0xB7,0xC0,0x07,
0xFD,0xFF,0x80,0x03,0xFB,0xDF,0xF7,0xBF,0xE3,0x7F,0xFC,0x7F,0xF9,0x8F,0xC7,0xF7,/*-- 文字: 一 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x01,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
/*-- 文字: 定 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFD,0xFF,0xFE,0xFF,0x80,0x01,0xBF,0xFD,0x7F,0xFB,0xFF,0xFF,0xC0,0x07,0xFE,0xFF,
0xFE,0xFF,0xEE,0xFF,0xEE,0x07,0xEE,0xFF,0xEE,0xFF,0xD6,0xFF,0xB8,0x01,0x7F,0xFF,
/*-- 文字: 好 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xEF,0xFF,0xEF,0x03,0xEF,0xFB,0xEF,0xF7,0x03,0xEF,0xDB,0xDF,0xDB,0xDF,0xDA,0x01,
0xDB,0xDF,0xB7,0xDF,0xD7,0xDF,0xEF,0xDF,0xD7,0xDF,0xBB,0xDF,0x7B,0x5F,0xFF,0xBF,

/*-- 文字: 好 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xEF,0xFF,0xEF,0x03,0xEF,0xFB,0xEF,0xF7,0x03,0xEF,0xDB,0xDF,0xDB,0xDF,0xDA,0x01,
0xDB,0xDF,0xB7,0xDF,0xD7,0xDF,0xEF,0xDF,0xD7,0xDF,0xBB,0xDF,0x7B,0x5F,0xFF,0xBF,
}
void delay()
{
unsigned int a;
for(a=400;a>0;a--); /*延时程序*/
}

void SendByteR(char dat) //74HC595驱动程序,发送一个字节到移位寄存器
{
char i,ddat=~dat;
for (i=0;i<8;i++)
{

ddat<<=1;
SDI=CY;
SRCLK=1;
SRCLK=0;
}

}

void main(void)
{

unsigned int i,j,b;
while(1)
{

P1=0xff;
for(j=0;j<256;j++) //移动多少次
{
for(b=0;b<3;b++) //控制速度
{
for(i=0;i<16;i++)
{
SendByteR(hanzi1[0][(i+j)*2]);
SendByteR(hanzi1[0][(i+j)*2+1]);
P1=i;
STR=0;STR=1;
delay();
}
}
}
delay(); delay();
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式