当前位置:实例文章 » 其他实例» [文章]两百行代码写一个简易51单片机红绿灯系统

两百行代码写一个简易51单片机红绿灯系统

发布人:shili8 发布时间:2025-02-22 05:22 阅读次数:0

**简易51单片机红绿灯系统**

**系统概述**

本项目旨在设计并实现一个简易的51单片机红绿灯系统。该系统将使用两个LED作为红绿灯,分别表示红色和绿色信号。系统将根据程序逻辑自动切换红绿灯。

**硬件组成**

*1块51单片机*2个LED(红色和绿色)
*1个按键(用于手动控制)

**软件设计**

### **系统流程**

1. 系统启动后,红色LED亮起,表示红色信号。
2. 当按键被按下时,系统切换到绿色信号,绿色LED亮起。
3. 在绿色信号期间,如果再次按下按键,则系统切换回红色信号。

### **程序逻辑**

c#include <stdio.h>
#include <stdlib.h>

// 定义LED端口#define RED_LED P1^0#define GREEN_LED P1^1int main() {
 // 初始化LED端口 TRISB =0xFF; // 设置P1为输出 PORTB =0x00; // 清零P1 while (1) {
 // 初始红色信号 RED_LED =1;
 GREEN_LED =0;

 // 等待按键按下 if (PORTB &0x01) {
 // 手动切换到绿色信号 RED_LED =0;
 GREEN_LED =1;

 // 等待再次按键按下 while (!(PORTB &0x01));
 }

 // 等待10ms __delay_ms(10000);
 }
}


### **注释**

* `#define`语句用于定义LED端口的名称。
* `TRISB =0xFF;`语句用于设置P1为输出。
* `PORTB =0x00;`语句用于清零P1。
* `while (1)`语句用于实现无限循环。
* `if (PORTB &0x01)`语句用于检测按键是否被按下。
* `RED_LED =1; GREEN_LED =0;`语句用于设置红色信号。
* `while (!(PORTB &0x01))`语句用于等待再次按键按下。

### **总结**

本项目设计并实现了一个简易的51单片机红绿灯系统。该系统使用两个LED作为红绿灯,分别表示红色和绿色信号。系统根据程序逻辑自动切换红绿灯,并支持手动控制。

其他信息

其他资源

Top