74HC595 驱动88点阵.docx

上传人:b****5 文档编号:3377353 上传时间:2022-11-22 格式:DOCX 页数:10 大小:741.56KB
下载 相关 举报
74HC595 驱动88点阵.docx_第1页
第1页 / 共10页
74HC595 驱动88点阵.docx_第2页
第2页 / 共10页
74HC595 驱动88点阵.docx_第3页
第3页 / 共10页
74HC595 驱动88点阵.docx_第4页
第4页 / 共10页
74HC595 驱动88点阵.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

74HC595 驱动88点阵.docx

《74HC595 驱动88点阵.docx》由会员分享,可在线阅读,更多相关《74HC595 驱动88点阵.docx(10页珍藏版)》请在冰豆网上搜索。

74HC595 驱动88点阵.docx

74HC595驱动88点阵

开始课程设计的题外话+74HC595驱动8*8点阵

这学期要做单片机的课程设计我这个不靠谱的小组长折腾着我们组的成员把开始定好的题目换成了做俄罗斯方块

元件是专业统一买现在东西还没回来先把原理和软件这一部分搞清楚

【外观】

用6个8*8的LED点阵做显示屏

1个开关按钮;1个复位按钮

有左右下翻转4个控制按钮

用小喇叭加入音效,1个开/关音效按

两层设计上面层放点阵屏幕和7个按钮下面层放芯片喇叭等等其他所有元件←希望放得下

【功能】

初步——

俄罗斯方块的基本功能:

1能随机落下6种方块;2操作按钮能控制方块移动;3触底判断是否满屏,满屏则结束游戏,未满屏判断是否满行,满行则消除行,进入下一次循环;

次之——

1开机加入logo与欢迎界面;2游戏中加入音效;3保存最高分值;4可选择游戏难度

嗯………………想到再加

74HC595驱动8*8点阵

8X8点阵共由64个发光二极管组成且每个发光二极管是放置在行线和列线的交叉点上当对应的某一行置1电平某一列置0电平则相应的二极管就亮

移位锁存器74HC595(74LS595)原理:

74HC595为8位输出锁存移位寄存器

RESET:

复位信号

shitfclock:

移位时钟

serialdatainput:

串行数据输入

outputenable:

输出使能

latchclock:

锁存时钟

595有3层结构:

第一层为移位D触发器;

第二层为锁存D触发器;

第三层为输出3态门;

当复位信号为0时,移位D触发器清0;

当移位脉冲从L->H时,第一个移位D触发器的Q=D;其它的Qn=Qn-1;

当锁存脉冲从0->1时,第二层为锁存D触发器的输出=/输入;

当OE=1时,595的输出为高阻态;

当OE=0时,595的输出为第二层为锁存D触发器的输出的反相;

74595的数据端:

QA--QH(15,1,2,3,4,5,6,7):

八位并行输出端可以接点阵的8列

QH'(9):

级联输出端将它接下一个595的SI端

SI(14):

串行数据输入端

74595的控制端说明:

SCLR(10脚):

低电平时将移位寄存器的数据清零通常将它接Vcc

SHCP(11脚):

上升沿时数据寄存器的数据移位QA-->QB-->QC-->...-->QH下降沿移位寄存器数据不变(脉冲宽度:

5V时大于几十纳秒就行了通常都选微秒级)

STHCP(12脚):

上升沿时移位寄存器的数据进入数据存储寄存器下降沿时存储寄存器数据不变通常将RCK置为低电平当移位结束后在RCK端产生一个正脉冲(5V时大于几十纳秒就行了通常都选微秒级)更新显示数据

G(13脚):

高电平时禁止输出(高阻态)如果单片机的引脚不紧张用一个引脚控制它可以方便地产生闪烁和熄灭效果比通过数据端移位控制要省时省力

74HC595是一个串入并出的芯片通过一个for(i=0;i<8;i++)来存储数据

具体来说就是第一个时钟信号来到时低位的数据向高位挪动一位

在这个程序中是SH_CK信号当SH_CLK是一个上跳沿时传入的形参dat与0x80相与得到的数为1则通过SDATA置1否则通过SDATA置0并存储在SDATA的相应位置(最低位)上DS内部也自动左移一位数据然后dat向左移一位使次高位变为最高位与0x80相与并存储

通过8次后就可以得到数据并存储在SDATA中这时ST_CK一个上跳沿数据即送出去了

//串行数据输入

voidSer_IN(unsignedcharData)

{unsignedchari;

for(i=0;i<8;i++)

{SH_CK=0;//先置低

SD=Data&0x80;//取数据的最高位

Data<<=1;//将数据的次高位移到最高位为下一次取数据做准备

SH_CK=1;//再置高产生移位时钟上升沿上升沿时数据寄存器的数据移位

}

}

//并行数据输出

voidPar_OUT(void)

{ST_CK=0;//先置低

ST_CK=1;//再置高产生移位时钟上升沿

//上升沿时移位寄存器的数据进入数据存储寄存器更新显示数据

}

/************点阵扫描:

从左到右3次-从右到左3次-从上到下3次-从下到上3次循环***************/

#include

#include"74HC595.H"

unsignedcharcodetaba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsignedcharcodetabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

voiddelayms(unsignedintx)//延时约xms

{unsignedinti,j;

for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

voidmain(void)

{unsignedchari,j;

while

(1)

{for(j=0;j<3;j++)//从左到右3次

{for(i=0;i<8;i++)

{Ser_IN(taba[i]);//列扫描

Ser_IN(0xff);//行送扫描数据

Par_OUT();//74HC595输出显示

delayms(100);

}

}

for(j=0;j<3;j++)//fromrighttoleft3time

{for(i=0;i<8;i++)

{Ser_IN(taba[7-i]);//列扫描

Ser_IN(0xff);//行送扫描数据

Par_OUT();//74HC595输出显示

delayms(100);

}

}

for(j=0;j<3;j++)//从上到下3次

{for(i=0;i<8;i++)

{Ser_IN(0x00);//列扫描

Ser_IN(tabb[i]);//8行送扫描数据

Par_OUT();//74HC595输出显示

delayms(100);

}

}

for(j=0;j<3;j++)//从下到上3次

{for(i=0;i<8;i++)

{Ser_IN(0x00);//列扫描

Ser_IN(tabb[7-i]);//行送扫描数据

Par_OUT();//74HC595输出显示

delayms(100);

}

}

}

}

/******以下为目录包含文件74HC595.H*****/

//Note:

74HC595驱动

//File:

74HC595.H

//____

//Note:

MR主复位接电源正极OE使能端输出有效接电源负极

#ifndef__74HC595_H__//#ifndef判断后面的标示符是否为未定义的

#define__74HC595_H__

sbitSD=P1^4;//串行数据输入

sbitST_CK=P1^5;//存储寄存器时钟输入

sbitSH_CK=P1^6;//移位寄存器时钟输入

//函数声明

voidSer_IN(unsignedcharData);//串行数据输入

voidPar_OUT(void);//串行数据输出

//串行数据输入

voidSer_IN(unsignedcharData)

{

unsignedchari;

for(i=0;i<8;i++)

{

SH_CK=0;//CLOCK_MAX=100MHz

SD=Data&0x80;

Data<<=1;

SH_CK=1;

}

}

//并行数据输出

voidPar_OUT(void)

{

ST_CK=0;

ST_CK=1;

}

#endif//#endif用于结束条件编译编译时与前面最近的#if作为一对

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1