资源描述:
《74HC595 驱动88点阵》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、开始课程设计的题外话+74HC595驱动8*8点阵这学期要做单片机的课程设计我这个不靠谱的小组长折腾着我们组的成员把开始定好的题目换成了做俄罗斯方块元件是专业统一买现在东西还没回来先把原理和软件这一部分搞清楚【外观】用6个8*8的LED点阵做显示屏1个开关按钮;1个复位按钮有左右下翻转4个控制按钮用小喇叭加入音效,1个开/关音效按两层设计上面层放点阵屏幕和7个按钮下面层放芯片喇叭等等其他所有元件←希望放得下【功能】初步——俄罗斯方块的基本功能:1能随机落下6种方块;2操作按钮能控制方块移动;3触底判断是否满屏,满屏则结束游戏,未满屏判断是否满行,满行则消除行,进入下一次循环;次之——1开机加入
2、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时,移位
3、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脚):低电平时将移位寄存器的数据清零通常将它接VccSHCP(11脚):上升沿时数据寄存器的数据移位QA-->QB-->QC-->...-
4、->QH下降沿移位寄存器数据不变(脉冲宽度:5V时大于几十纳秒就行了通常都选微秒级)STHCP(12脚):上升沿时移位寄存器的数据进入数据存储寄存器下降沿时存储寄存器数据不变通常将RCK置为低电平当移位结束后在RCK端产生一个正脉冲(5V时大于几十纳秒就行了通常都选微秒级)更新显示数据G(13脚):高电平时禁止输出(高阻态)如果单片机的引脚不紧张用一个引脚控制它可以方便地产生闪烁和熄灭效果比通过数据端移位控制要省时省力74HC595是一个串入并出的芯片通过一个for(i=0;i<8;i++)来存储数据具体来说就是第一个时钟信号来到时低位的数据向高位挪动一位在这个程序中是SH_CK信号当SH_C
5、LK是一个上跳沿时传入的形参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;//
6、再置高产生移位时钟上升沿上升沿时数据寄存器的数据移位}}//并行数据输出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};unsignedcharcod
7、etabb[]={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次{