单片机的主程序实现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中设计仿真电路图,将单片机与数码管、外部中断电路连接在一起,以实现完整的仿真测试。
解决 无用评论 打赏 举报
悬赏问题
- ¥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代码,帮调试,帮帮忙吧