单片机的高手快进啊 74HC595,关于流水灯的设计。。。

用串入并出的移位寄存器74HC595扩展单片机的串行口实现流水灯设计,每次亮一个LED,从左往右移动。74HC595的第14脚是数据输入端,第11脚是时钟输入端,第14脚是锁存输入端,锁存输入端的作用是平时应该为低电平,当一个字节的数据全部移动到位后,单片机给该脚送出一个正脉冲(不少于1微秒),数据从74HC595内部输出到其Q0-Q7这八个输出端。在P3口接有两个按钮A1和A2,用于控制流水周期,开机默认周期是一秒,按A1周期加倍,按A2周期减半,周期变化范围是0.25-4秒。(晶振频率12MHz)

最近也在玩74HC595这款芯片,以下程序验证通过。请参考!

//74HC595练习程序
//串入并出实现流水灯效果
//2009.12.28
#include"reg52.h"
sbit date1=P1^0; //串行数据输入端

sbit shcp=P1^1; //数据在上升沿进入移位寄存器

sbit clock=P1^2; //上升沿时将数据输出到并行端口

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

void delay(unsigned int delay)
{
unsigned char i;
for(;delay>0;delay--)
for(i=0;i<125;i++);
}

void send_data(unsigned char date) //发送数据
{
unsigned char i;
for(i=0;i<8;i++) //把每一位数据移入寄存器
{
shcp=0;
date=date<<1;
date1=CY; //CY是移位标志,头文件中有定义的 当date1移位后CY中装的是date1变量的最高位 状态码为 0或1
shcp=1;
}

for(i=0;i<8;i++) //把8位数据同时送出
{
clock=0;
date=date;
clock=1;
}
}

void main()
{
unsigned char k;
for(k=0;k<8;k++)
{
send_data(tab[k]);
delay(500);
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

单片机初学者,求老师写一个74hc595控制两个数码管或流水灯的简单程序...
既然要用到74hc595,那么就要写一个595的驱动程序,以便后面的操作简单化。sbit hc595_si =P2^5; \/\/数据引脚sbit hc595_sck =P2^4; \/\/移位寄存器sbit hc595_rck =P2^7; \/\/输出寄存器\/***595驱动***\/void HC595(unsigned char ch){ unsigned char i; for (i = 0; i...

【51单片机系列】74HC595实现对LED点阵的控制
实现流水灯效果时,在proteus中设计硬件,采用74HC595芯片进行控制。代码实现包含DS引脚输入串行数据、SHCP上升沿进行移位操作与STCP上升沿输出数据至并行端口。仿真结果显示了流水灯效果的实现。在另一应用中,利用74HC595控制LED点阵实现对角线灯亮的功能。proteus设计中的代码实现与仿真结果展示了对角线点亮效...

【51单片机系列】74HC595实现对LED点阵的控制
8x8LED点阵由64个发光二极管组成,通过行线和列线的控制实现点阵显示。74HC595芯片作为串转并的关键元件,它有三个输入口和八个输出口,用于控制点阵的行和列。例如,要点亮第一个LED,需将P0口设置为0x7f,D7-D0设置为0x80。通过硬件设计,如在Proteus中,可以实现流水灯效果,其工作原理基于74HC595...

用52单片机控制两个74HC595芯片使16个LED灯流水点亮,怎么设计程序?求高 ...
把两个595级联,再把控制信号按位传给595,级联后可以传16位。传完后再传送给LED,进行控制。分享个控制8个流水灯的做参考网页链接

51单片机,用级联的74HC595驱动8个数码管。程序写完了,但是延时有问题...
sbit ST_CP=P2^1;char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};char code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};unsigned char code DSB[]={2,0,1,5,0,7,2,6};void Delay(unsigned char ...

利用74HC138和74HC595驱动16*16点阵完成上下左右滚动的功能的51单片机程...
这是16X16的,自己一改就好了 \/\/74HC595练习程序 \/\/串入并出实现16流水灯效果 \/\/2009.12.28 includereg52.h sbit shcp=P2^0; \/\/数据在上升沿进入移位寄存器 sbit date1=P2^1; \/\/串行数据输入端 sbit clock=P2^2; \/\/上升沿时将数据输出到并行端口 unsigned char tab[]={0x7f,0xbf,0xdf...

单片机C语言程序设计实训100例:基于PIC+Proteus仿真的目录
1 PROTEUS操作界面简介2.2 仿真电路原理图设计2.3 元件选择2.4 仿真运行2.5 MPLAB IDE与PROTEUS的联合调试2.6 PROTEUS在PIC单片机应用系统开发中的优势第3章 基础程序设计3.1 闪烁的LED3.2 用双重循环控制LED左右来回滚动显示3.3 多花样流水灯3.4 LED模拟交通灯3.5 单只数码管循环显示0~93....

如何用89C51单片机控制74HC138译码器点亮32位LED灯? 求详细原理图。高手...
2. 32位所锁存器,如4片74HC373,及其8根数据线,4根选通\/锁存线。3. 8位串\/并移位寄存器,典型的如4片74HC595,需要数据线,移位时钟和锁存信号各一根,用接口线最少。功能简单的,32灯都可亮,但在同时只能亮一个灯,想要另一个灯亮,就要关掉这个,只能演示一个灯跑动的流水灯。4. 需4片...

单片机C语言程序设计实训100例:基于8051+Proteus仿真的目录
V3的联合调试21第3章 基础程序设计223.1 闪烁的LED 223.2 从左到右的流水灯233.3 左右来回循环的流水灯253.4 花样流水灯263.5 LED模拟交通灯283.6 单只数码管循环显示0~9 303.7 8只数码管滚动显示单个数字313.8 8只数码管显示多个不同字符333.9 数码管闪烁显示353.10 8只数码管滚动显示数...

相似回答