m0_62022535 2021-09-17 19:53 采纳率: 0%
浏览 25

试设计Proteus仿真电路图并编写程序实现相应控制功能。

单片机的主程序实现P3口控制一个共阳极数码管的各段依次点亮,不断循环,当外部中断1有效时,使数码管显示8,闪烁4次后,返回原断点处继续执行程序,外部中断1的触发方式采用边沿触发方式。试设计Proteus仿真电路图并编写程序实现相应控制功能。

  • 写回答

1条回答 默认 最新

  • andy2hao 2023-02-12 23:08
    关注

    以下是单片机主程序的实现,可以实现P3口控制一个共阳极数码管的各段依次点亮,不断循环,并且当外部中断1有效时,使数码管显示8,闪烁4次后,返回原断点处继续执行程序。

    #include <reg52.h>
    
    sbit dula = P2^6;
    sbit wela = P2^7;
    unsigned char code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
    
    void delay(int i) {
        while (i--);
    }
    
    void display(unsigned char num) {
        dula = 1;
        P0 = table[num];
        dula = 0;
    }
    
    void main() {
        int i, j;
    
        while (1) {
            for (i = 0; i < 10; i++) {
                display(i);
                for (j = 0; j < 200; j++) {
                    delay(100);
                }
            }
        }
    }
    
    void key() interrupt 0 {
        int i;
    
        if (P3 & 0x02) {
            for (i = 0; i < 4; i++) {
                display(8);
                delay(500);
                display(0xff);
                delay(500);
            }
        }
    }
    
    
    

    在程序中,首先定义了共阳极数码管的段选和位选引脚dula和wela。通过定义一个数码管显示的字符表table,实现了通过传入数字来在数码管上显示相应数字的函数display。在主函数中,使用for循环不断让数码管依次显示0~9,实现了数码管的循环显示功能。

    在中断函数中,当P3口的第2个引脚被触发时,将数码管的显示设置为8,并且循环闪烁4次,每次闪烁500ms。中断触发方式采用了边沿触发方式。

    需要在Proteus中设计仿真电路图,将单片机与数码管、外部中断电路连接在一起,以实现完整的仿真测试。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月17日

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧