# 单片机 **Repository Path**: da_ben/microcontroller ## Basic Information - **Project Name**: 单片机 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-06 - **Last Updated**: 2026-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 单片机课程实践项目集 (89C51) > 本项目是基于 AT89C51 单片机的系列课程实践作业与实验汇总。旨在通过一系列由浅入深的实训任务,帮助学生掌握嵌入式开发基础、外设驱动编写及系统仿真调试能力。 ## 📖 介绍 本仓库包含了一系列针对 **AT89C51** 芯片的经典实训案例,涵盖了从基础的 GPIO 控制到复杂的定时器中断应用。所有代码均经过验证,并提供了对应的 Proteus 仿真电路设计思路。 ### 软件架构说明 - **核心芯片**:AT89C51 / STC89C52RC (兼容) - **开发工具**:Keil uVision 5 (C51 编译器) - **仿真工具**:Proteus 7.9 Professional - **编程语言**:C 语言 (Embedded C) - **主要功能模块**: - LED 流水灯控制 - 数码管动态/静态显示 - 独立按键与矩阵键盘检测 - 外部中断与定时器中断应用 - 电机驱动控制 - 综合逻辑控制系统(交通灯、供水系统) --- ## ⚙️ 安装教程 为了顺利运行本项目中的代码与仿真,请确保您的电脑已配置好以下环境: 1. **安装 Keil uVision 5** - 下载并安装 Keil uVision 5 IDE。 - 务必安装 **C51 支持包** (Legacy 8051 Support),否则无法编译 51 单片机代码。 - 新建工程时选择 Atmel -> AT89C51 或 AT89C52 芯片。 2. **安装 Proteus 7.9** - 下载并安装 Proteus 7.9 SP2 或更高版本。 - 用于绘制电路图并进行虚拟仿真测试。 - *注意:高版本 Proteus 可能不兼容部分旧版元件库,建议使用 7.x 或 8.x 早期版本。* 3. **获取源码** - 克隆本仓库到本地: ```bash git clone https://gitee.com/da_ben/microcontroller.git ``` - 每个子文件夹对应一个独立的实训任务,包含 `.c` 源文件和 `.hex` 烧录文件(如有)。 --- ## 📘 使用说明 本项目按照学习进度分为多个阶段,请按照左侧目录顺序进行练习: 1. **基础 IO 口控制 ([0] - [2])** - **[0] LED+静态数码管8路**:学习 P0/P1/P2 口的输出控制,理解高低电平点亮 LED 的原理,以及共阴/共阳数码管的段选与位选。 - **[1] 流水灯显示大全**:利用位移操作符 (`<<`, `>>`) 或数组查表法实现花样流水灯。 - **[2] EF显示**:进阶数码管显示练习,可能涉及特定字符(如 E, F)的编码显示。 2. **输入与计数 ([3] - [4])** - **[3] 计数器**:结合外部中断或按键扫描,实现按下按键数字加 1 并在数码管显示的功能(消抖处理是关键)。 - **[4] 电机控制**:使用 ULN2003 等驱动芯片控制步进电机或直流电机的正反转与调速(PWM 原理)。 3. **定时器与综合应用 ([5] - [8])** - **[5] 自动供水程序及仿真**:模拟液位传感器(开关量),利用逻辑判断控制水泵启停,实现自动补水功能。 - **[6] 秒钟读秒**:**重点难点**。配置 Timer0 或 Timer1 产生 50ms 中断,累计 20 次为 1 秒,实现精准计时并在数码管显示。 - **[7] 学号操作汇总**:个性化定制任务。 - `[7-1]` 学号后六位滚动显示。 - `[7-2]` 12位数码管复杂显示。 - `[7-3]` 生日与学号组合显示。 - **[8] 交通灯**:经典综合题。利用状态机思想,配合定时器,控制红黄绿 LED 的时序切换,通常包含倒计时功能。 --- ## 🤝 参与贡献 欢迎同学们 Fork 本仓库,提交更优化的代码或修复 Bug! 1. Fork 本仓库 3. 提交代码 4. 新建 Pull Request 5. 等待合并 --- ## 📄 许可证 本项目仅供教学交流使用,遵循 MIT 协议。