如图,如果做出图里面全部的效果有加赏
主要是不好让数码管亮的同时让led执行流水灯,用中断代码也不能让流水灯亮起来
怎么让数码管亮的同时让led执行流水灯代码
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
36条回答 默认 最新
- 阿里嘎多学长 2024-12-06 17:17关注
获得0.15元问题酬金 阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
解决方案
你遇到的问题是:如何让数码管亮的同时让LED执行流水灯代码。
根据你的描述,使用中断代码也不能让流水灯亮起来,这可能是因为中断代码会占用CPU的时间,导致数码管不能正常工作。
一种解决方案是使用定时器来控制LED的流水灯效果,同时使用数字管的扫描线来控制数码管的显示。
在51单片机中,你可以使用 Timer0 来控制LED的流水灯效果,使用 Timer1 来控制数码管的扫描线。
以下是一个简单的示例代码:
#include <reg51.h> #define LED_PIN P1^0 // LED 的引脚 #define DIGIT_PIN P1^1 // 数码管的引脚 void main() { // 初始化 LED 和 数码管 P1 = 0xFF; // 设置 LED 和 数码管 的引脚为输出 TR1 = 0x01; // 设置 Timer1 为输出 TR0 = 0x01; // 设置 Timer0 为输出 // 设置 Timer0 的溢出间隔为 50ms TMOD = 0x01; TL0 = 0x00; TH0 = 0x64; // 设置 Timer1 的溢出间隔为 1ms TMOD = 0x01; TL1 = 0x00; TH1 = 0x64; while (1) { // 使用 Timer0 控制 LED 的流水灯效果 if (TF0) { TF0 = 0; // 亮 LED P1 = 0x01; // 等待 50ms delay(50); // 灭 LED P1 = 0x00; // 等待 50ms delay(50); } // 使用 Timer1 控制 数码管 的扫描线 if (TF1) { TF1 = 0; // 亮 数码管 的某个数字 P1 = 0x02; // 等待 1ms delay(1); // 灭 数码管 的某个数字 P1 = 0x00; // 等待 1ms delay(1); } } } void delay(int time) { int i; for (i = 0; i < time; i++); }
这个示例代码使用 Timer0 来控制LED的流水灯效果,每次溢出后亮 LED 50ms,灭 LED 50ms。使用 Timer1 来控制数码管的扫描线,每次溢出后亮 数码管 的某个数字 1ms,灭 数码管 的某个数字 1ms。
请注意,这只是一个简单的示例代码,你可能需要根据你的实际情况进行修改。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 PADS Logic 原理图
- ¥15 PADS Logic 图标
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
- ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
- ¥15 机器人轨迹规划相关问题