51单片机+3片74HC595联级流水灯+Proteus仿真
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机+3片74HC595联级流水灯+Proteus仿真相关的知识,希望对你有一定的参考价值。
51单片机+3片74HC595联级流水灯+Proteus仿真
- Proteus仿真
实例代码
#include <reg52.h>
#include <intrins.h>
#define nop() _nop_()
sbit shcp = P2^0;
sbit ds = P2^1;
sbit stcp = P2^2;
void delayxms(unsigned int c) //延时函数
{
unsigned char a,b;
for(;c>0;c--){
for(b=199;b>0;b--){
for(a=1;a>0;a--);
}
}
}
void led595(unsigned char date);
unsigned char i,j,z,k;
void main() //主函数
{
unsigned long dat=1;
while(1)
{
for(j=24;j>0;j--)
{
led595(dat/65536); //第三块74HC595
led595(dat/256); //第二块74HC595
led595(dat%256); //第一块74HC595
delayxms(200);
dat<<=1;
}
dat=1;
}
}
void led595(unsigned char date) //往595输送数据函数
{
for(k=0;k<8;k++)
{
if((date<<k)&0x80)
ds=1;
else
ds=0;
shcp=0;
nop();
nop();
shcp=1;
}
stcp=0;
nop();
nop();
stcp=1;
}
74HC595做到三片串联后,如果想要继续添加那就需要另外增添IO口来实现,因为串联到4个联级的话,数据移位将超出无符号长整型数据范围(
unsigned long
=4,294,967,295
),1左移32位数字是4,294,967,296
,超出了1,说以不能这样实现。
以上是关于51单片机+3片74HC595联级流水灯+Proteus仿真的主要内容,如果未能解决你的问题,请参考以下文章
51单片机+74HC595联级+DS1302简易时钟+Proteus仿真
Arduino UNO + 74HC595联级+数码管实现000-999循环计数显示+ Proteus仿真
Arduino UNO + 74HC595联级+数码管实现00-99循环计数显示+ Proteus仿真
Arduino UNO + 74HC595联级+数码管实现0000-9999循环计数显示+ Proteus仿真