单片机c51让8个灯从下往上,再从上往下依次点亮,用p2口


```c #include <reg52.h> void delay(unsigned int time) { unsigned int i, j; for (i = 0; i < time; i++) for (j = 0; j < 125; j++); } void main() { unsigned char led = 0xFE; // 1111 1110 int i; while (1) { for (i = 0; i < 7; i++) { P2 = led; delay(1000); led = (led << 1) | 0x01; } for (i = 0; i < 7; i++) { P2 = led; delay(1000); led = (led >> 1) | 0x80; } } } ``` 这段代码可以让8个灯从下往上,再从上往下依次点亮,使用P2口连接灯。其中,通过将led从左往右(或者从右往左)进行移位,整体达到灯渐亮(或灯渐灭)的效果。delay函数用于实现延时,让灯的变化更加明显。 [2024-10-11 17:03:14 | AI写代码神器 | 483点数解答]
相关提问
- 循环点亮 led 灯: (1) 使用定时器to 的方式 1,实现 8个 led 由上至下间隔 1s 流动,其中每个 led 亮 0.5s,灭0.5s,一直重复。。 (2) 使用定时器 to 的方式 1,实现 8个 led 逐个点亮,间隔 1s,一直重复。。(1193点数解答 | 2024-12-27 15:10:29)174
- 外部中断 0 由边沿触发,控制 P2 口的 8 个发光二极管依次点亮。C51 程序如下: #include <reg51.h> void ex0_isr() interrupt 0 { static unsigned char led = 0x01; P2 = led; led = (led << 1) | (led >> 7); } void main() { IT0 = 1; EX0 = 1; EA = 1; P2 = 0x01; while(1); } (228点数解答 | 2025-06-22 23:18:42)61
- 外部中断 0 由边沿触发,控制 P2 口的 8 个发光二极管依次点亮。C51 程序如下:(41点数解答 | 2025-06-22 11:25:54)78
- 外部中断 0 由边沿触发,控制 P2 口的 8 个发光二极管依次点亮。C51 程序如下(400点数解答 | 2025-06-22 21:21:28)51
- 如下图,p1口(p1.0~p1.7)接了8个开关,p2口(p2.0~p2.7)接了8个发光二极管led,p3.3(/int1)外接消抖电路用于产生中断请求信号,当消抖电路的开关来回拔动一次将产生一个下降沿信号,通过p3.3(/int1)向cpu申请中断。要求:初始时发光二极管全黑,每中断一次,p1.0~p1.7所接的开关状态反映到p2.0~p2.7所接的8个发光二极管上,且要求开关合上的对应发光二极管闪烁5次后常亮(约1秒闪一次),开关断开的对应发光二极管熄灭。试编程实现之。(421点数解答 | 2024-11-11 12:43:19)135
- 如下图,p1口(p1.0~p1.7)接了8个开关,p2口(p2.0~p2.7)接了8个发光二极管led,p3.3(/int1)外接消抖电路用于产生中断请求信号,当消抖电路的开关来回拔动一次将产生一个下降沿信号,通过p3.3(/int1)向cpu申请中断。要求:初始时发光二极管全黑,每中断一次,p1.0~p1.7所接的开关状态反映到p2.0~p2.7所接的8个发光二极管上,且要求开关合上的对应发光二极管闪烁5次后常亮(约1秒闪一次),开关断开的对应发光二极管熄灭。(1343点数解答 | 2024-11-11 19:35:36)229
- p1口(p1.0~p1.7)接了8个开关,p2口(p2.0~p2.7)接了8个发光二极管led,p3.3(/int1)外接消抖电路用于产生中断请求信号,当消抖电路的开关来回拔动一次将产生一个下降沿信号,通过p3.3(/int1)向cpu申请中断。要求:初始时发光二极管全黑,每中断一次,p1.0~p1.7所接的开关状态反映到p2.0~p2.7所接的8个发光二极管上,且要求开关合上的对应发光二极管闪烁5次后常亮(约1秒闪一次),开关断开的对应发光二极管熄灭。使用c52编程(1029点数解答 | 2024-11-11 19:37:19)192
- p1口(p1.0~p1.7)接了8个开关,p2口(p2.0~p2.7)接了8个发光二极管led,p3.3(/int1)外接消抖电路用于产生中断请求信号,当消抖电路的开关来回拔动一次将产生一个下降沿信号,通过p3.3(/int1)向cpu申请中断。要求:初始时发光二极管全黑,每中断一次,p1.0~p1.7所接的开关状态反映到p2.0~p2.7所接的8个发光二极管上,且要求开关合上的对应发光二极管闪烁5次后常亮(约1秒闪一次),开关断开的对应发光二极管熄灭。使用c51编程(1077点数解答 | 2024-11-11 19:37:27)220
- 输入电路由外接在p3口的8只拨动开关组成;输出电路由外接在p2口的8只低电平驱动的发光二极管组成,两者通过总线和分支导线连接。图中还包括时钟电路和复位电路。 编程做法为: (1)8只发光二极管𤨣体闪烁3次 亮灯 mov p2,#0;灭灯一mov p2,#offh:闪烁3次一djnzr5,loop1(r5中为#3,loop1为循环1的起始标号) 闪烁间隔一acall del100(del100为延时子程序的入口标号)(2) 根据开关状态控制灯亮或灯灭 开关控制灯一mov p2,p3;无限循坏:sjmp loop2 ( loop2 为循环2的起始标号)(377点数解答 | 2024-11-26 18:19:50)107
- 。matlab实现 已知多项式₁₂²₃²p₁(x)=3x+2,p₂(x)=5x²−x+2,p₃(x)=x²−0.5,求₁₂₃。(1)p(x)=p₁(x)p₂(x)p₃(x)。(2)p(x)=0的全部根。(3) 计算xi=0.2i(i=0,1,2,…,10)各点上的p(xᵢ)。(661点数解答 | 2024-11-08 08:39:04)168
- matlab已知多项式p₁(x)=3x+2,p₂(x)=5x²−x+2,p₃(x)=x²−0.5,求(1)p(x)=p₁(x)p₂(x)p₃(x)。(2)p(x)=0的全部根。(3) 计算xi=0.2i(i=0,1,2,…,10)各点上的p(xᵢ)。包括运行结果(824点数解答 | 2024-11-08 08:44:22)226
- #include <reg51.h> void ex0_isr() interrupt 0 { static unsigned char led = 0x01; P2 = led; led = (led << 1) | (led >> 7); } void main() { IT0 = 1; EX0 = 1; EA = 1; P2 = 0x01; while(1); }(214点数解答 | 2025-06-22 23:19:09)65