谈何无欲 2023-10-22 13:57 采纳率: 33.3%
浏览 10
已结题

单片机仿真,51外接74ls273芯片

img


51外接74ls273芯片,将数值写入74ls273芯片锁存。
利用8个LED灯显示74ls273芯片锁存的数值。
要求p1,3,5,7亮

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-22 13:58
    关注

    引自强大而免费的微信小程序:皆我百晓生

    请使用下面的C语言代码来实现单片机和74LS273芯片的连接及数值锁存、LED灯显示:

    #include <reg51.h>
    
    sbit P1_0 = P1^0;  // 定义P1.0引脚为控制74LS273锁存的引脚
    sbit P1_3 = P1^3;  // 定义P1.3引脚为控制74LS273锁存的引脚
    sbit P1_5 = P1^5;  // 定义P1.5引脚为控制74LS273锁存的引脚
    sbit P1_7 = P1^7;  // 定义P1.7引脚为控制74LS273锁存的引脚
    
    sbit LED0 = P2^0;  // 定义P2.0引脚为连接LED的引脚
    sbit LED1 = P2^1;  // 定义P2.1引脚为连接LED的引脚
    sbit LED2 = P2^2;  // 定义P2.2引脚为连接LED的引脚
    sbit LED3 = P2^3;  // 定义P2.3引脚为连接LED的引脚
    sbit LED4 = P2^4;  // 定义P2.4引脚为连接LED的引脚
    sbit LED5 = P2^5;  // 定义P2.5引脚为连接LED的引脚
    sbit LED6 = P2^6;  // 定义P2.6引脚为连接LED的引脚
    sbit LED7 = P2^7;  // 定义P2.7引脚为连接LED的引脚
    
    void main()
    {
        unsigned char value = 0;  // 要锁存的数值
        
        while(1)
        {
            // 将数值写入74LS273芯片锁存
            P1_0 = 1;  // 将P1.0引脚设置为高电平
            P1_3 = 1;  // 将P1.3引脚设置为高电平
            P1_5 = 1;  // 将P1.5引脚设置为高电平
            P1_7 = 1;  // 将P1.7引脚设置为高电平
            
            // 三个引脚同时置高电平后,需要等待一段时间以确保锁存稳定
            delay(1);
            
            // 将P1.0、P1.3、P1.5、P1.7引脚全部置低电平,以便进行下一次锁存操作
            P1_0 = 0;  // 将P1.0引脚设置为低电平
            P1_3 = 0;  // 将P1.3引脚设置为低电平
            P1_5 = 0;  // 将P1.5引脚设置为低电平
            P1_7 = 0;  // 将P1.7引脚设置为低电平
            
            // 利用8个LED灯显示74LS273芯片锁存的数值
            LED0 = value & 0x01;        // 将value的最低位与0x01进行与运算,判断结果是否为0
            LED1 = (value >> 1) & 0x01; // 将value右移1位,并与0x01进行与运算,判断结果是否为0
            LED2 = (value >> 2) & 0x01; // 将value右移2位,并与0x01进行与运算,判断结果是否为0
            LED3 = (value >> 3) & 0x01; // 将value右移3位,并与0x01进行与运算,判断结果是否为0
            LED4 = (value >> 4) & 0x01; // 将value右移4位,并与0x01进行与运算,判断结果是否为0
            LED5 = (value >> 5) & 0x01; // 将value右移5位,并与0x01进行与运算,判断结果是否为0
            LED6 = (value >> 6) & 0x01; // 将value右移6位,并与0x01进行与运算,判断结果是否为0
            LED7 = (value >> 7) & 0x01; // 将value右移7位,并与0x01进行与运算,判断结果是否为0
            
            value++;  // 数值增加
            
            delay(500);  // 延时500ms
        }
    }
    
    // 延时函数
    void delay(unsigned int ms)
    {
        unsigned int i, j;
        
        for (i = 0; i < ms; i++)
            for (j = 0; j < 120; j++);
    }
    

    请记得在代码中根据实际连接情况修改引脚名称并进行适当的更改。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 已采纳回答 10月22日
  • 创建了问题 10月22日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据