【Proteus仿真】51单片机+74HC595流水灯

【Proteus仿真】51单片机+74HC595流水灯


  • 🔖Proteus仿真基础实验 - 使用74HC595制作流水灯
  • 🌿Proteus8.12平台
  • 🌿本实验代码基于VSM Studio,采用SDCC编译器。
  • 🎬仿真演示:
    在这里插入图片描述

在这里插入图片描述

📝示例驱动代码

  • ✨如果想改变流水灯的效果,可以修改对应的数组和移动方式。
/* Main.c file generated by New Project wizard
 *
 * Created:   2023-5-23
 * Processor: 80C52
 * Compiler:  SDCC for 8051
 */
#include <mcs51reg.h>
#include <compiler.h>		//NOP();
typedef unsigned char uchar;
typedef unsigned int uint;

#define LED  P2_1

#define ST_CP   P2_2	//串行寄存器时钟,上升沿有效
#define DS   P2_3	//串行数据输入
#define SH_CP   P2_4		//串行输入时钟,上升沿有效

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

//发送一个字节数据给595再并行输出
void SendTo595(uchar Data)
{
   uchar i=0;
   for(i;i<8;i++)
   {
        SH_CP = 0;               
        DS=0x80&Data;//&为按位运算符,即全1为1,有0为0,上式也就是 (1000 0000)&(1111 1111)=1000 0000,若高位为1则是1高位为0则这个式子为0               
        Data <<=1; //左移一位 将高位补给低位,如果二进制数为01010101 那么左移1位为10101010
        SH_CP = 1;          //上升沿让串行输入时钟变成高电平 并延时一个时钟周期
       NOP();
   }  

   /*位移寄存器完毕,转移到存储寄存器*/
   ST_CP = 1;         //上升沿,存储寄存器变为高电平 延迟两个时钟周期
   NOP();
   NOP();

}
void delayms(unsigned int ms)
{
        unsigned int x, y;
        for (y = ms; y > 0; y--) {
                for (x = 123; x > 0; x--);
        }
}

void main(void)
 { 
	uchar i;
   while (1)
  {
	  for(i=0;i<8;i++)
                {
                   ST_CP = 0;
                   SendTo595(LED_BIT[ i]);  //二进制数
                   delayms(500);
                }

  }
 }

📚仿真资源


链接: https://pan.baidu.com/s/1Jf0K97r5hul3xSzK4RaOzQ
提取码: dcum
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值