74HC595 驱动88点阵.docx
- 文档编号:3377353
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:10
- 大小:741.56KB
74HC595 驱动88点阵.docx
《74HC595 驱动88点阵.docx》由会员分享,可在线阅读,更多相关《74HC595 驱动88点阵.docx(10页珍藏版)》请在冰豆网上搜索。
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作为一对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 74HC595 驱动88点阵 74 HC595 驱动 88 点阵