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

该文介绍了如何在Proteus环境下,利用51单片机和74HC595芯片进行流水灯的仿真。代码基于VSMStudio,采用SDCC编译器,提供了详细的驱动代码示例,用户可以通过修改数组和移动方式来改变流水灯效果。附带了仿真资源的链接。
摘要由CSDN通过智能技术生成

【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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值