# HL_1_Library **Repository Path**: cciteie/hl_1_library ## Basic Information - **Project Name**: HL_1_Library - **Description**: HL-1单片机学习板库函数 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-17 - **Last Updated**: 2026-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HL-1学习板单片机例程库 ## 项目概述 本项目是针对HL-1学习板(基于STC89C52RC单片机)的完整例程库,提供了丰富的硬件驱动和示例程序。项目采用模块化设计,便于学习和二次开发。 ## 硬件规格 - **主控芯片**: STC89C52RC - **时钟频率**: 11.0592MHz - **程序空间**: 8KB Flash - **RAM**: 256字节 - **扩展RAM**: 0字节 ## 项目结构 ``` mcs51_keil_ht-1lib/ ├── README.md # 项目说明文档 ├── README_STEPPER_MOTOR.md # 步进电机模块详细说明 ├── mcs51_keil_ht-1lib.code-workspace # VSCode工作空间配置 ├── .gitignore # Git忽略文件配置 ├── .clangd # Clangd配置 ├── inc/ # 头文件目录 ├── src/ # 源代码目录 │ ├── main.c # 主程序 │ ├── config.h # 硬件配置头文件 │ ├── STC89C5xRC.H # STC89C5xRC寄存器定义 │ ├── delay/ # 延时函数模块 │ │ ├── delay.c │ │ └── delay.h │ ├── exint/ # 外部中断模块 │ │ ├── exint.c │ │ └── exint.h │ ├── interrupt/ # 中断管理模块 │ │ ├── Interrupt.c │ │ └── Interrupt.h │ ├── stepper_motor/ # 步进电机驱动模块 │ │ ├── stepper_motor.c │ │ └── stepper_motor.h │ ├── Timers/ # 定时器模块 │ │ ├── timer.c │ │ └── timer.h │ └── UART/ # 串口通信模块 │ ├── uart.c │ └── uart.h └── tools/ # 工具目录 └── stcflash.py # STC单片机烧录工具 ``` ## 主要功能模块 ### 1. 步进电机驱动模块 (`src/stepper_motor/`) - 支持四相四拍和四相八拍工作模式 - 可控制转动方向(顺时针/逆时针) - 可调节转动速度 - 支持角度控制和步数控制 - 提供连续转动和单步转动功能 ### 2. 定时器模块 (`src/Timers/`) - 定时器0和定时器1的初始化配置 - 支持多种工作模式 - 提供精确的定时功能 ### 3. 串口通信模块 (`src/UART/`) - 串口初始化(波特率可配置) - 数据发送和接收功能 - 字符串发送功能 ### 4. 延时模块 (`src/delay/`) - 毫秒级延时函数 - 微秒级延时函数 - 基于系统时钟的精确延时 ### 5. 中断管理模块 (`src/interrupt/`) - 中断优先级管理 - 中断服务程序框架 ### 6. 外部中断模块 (`src/exint/`) - 外部中断0和外部中断1配置 - 边沿触发模式选择 ## 硬件连接 ### 步进电机连接 ``` 单片机P1口 ULN2003AN 步进电机 P1.0 (A相) -> IN1 -> OUT1 -> 线圈A P1.1 (B相) -> IN2 -> OUT2 -> 线圈B P1.2 (C相) -> IN3 -> OUT3 -> 线圈C P1.3 (D相) -> IN4 -> OUT4 -> 线圈D ``` ### 其他外设 - **LED灯**: P1口(共阳连接) - **独立按键**: P3.4-P3.7 - **矩阵按键**: P3口 - **数码管**: P0口(段选),P2.6/P2.7(位选) - **蜂鸣器**: P2.3 - **温度传感器**: P2.2 (DS18B20) - **超声波传感器**: P1.5 (TRIG), P3.2 (ECHO) - **蓝牙模块**: P3.1 (TX), P3.0 (RX) - **LCD1602**: P0口(数据),P1.0 (RS), P1.1 (RW), P2.5 (EN) - **舵机**: P2.0, P2.1 ## 快速开始 ### 1. 环境搭建 #### 开发工具 - **编译器**: keil C51 - **IDE**: Visual Studio Code + EIDE插件 - **烧录工具**: stc-isp #### VSCode扩展推荐 项目已配置推荐扩展,包括: - `cl.eide` - 嵌入式开发环境 - `keroc.hex-fmt` - HEX文件格式化 - `ms-vscode.vscode-serial-monitor` - 串口监视器 ### 2. 编译配置 SDCC编译参数(默认): ```bash --iram-size 256 --xram-size 0 --code-size 8192 ``` 对应资源: - IRAM SIZE: 256 Bytes - XRAM SIZE: 0 Bytes - FLASH SIZE: 8192 Bytes 要修改上述参数,请到 `构建器选项 -> Other Global Options` 中进行修改。 ### 3. 编译项目 使用EIDE插件编译项目: 1. 打开VSCode 2. 加载工作空间 `mcs51_keil_ht-1lib.code-workspace` 3. 使用EIDE插件进行编译 ### 4. 烧录程序 使用提供的Python烧录工具: ```bash cd tools python stcflash.py ../build/output.hex ``` 烧录参数: - 通信端口:COM3 (Windows) 或 /dev/ttyUSB0 (Linux) - 最低波特率:2400 bps - 最高波特率:115200 bps ## 使用示例 ### 步进电机基本控制 ```c #include "config.h" #include "delay.h" #include "stepper_motor/stepper_motor.h" void main(void) { // 初始化步进电机 stepperInit(); // 设置四相八拍模式 stepperSetMode(MODE_4PHASE_8STEP); // 设置速度为1000us/步(1ms) stepperSetSpeed(1000); // 顺时针转动100步 stepperSetDirection(DIRECTION_CW); stepperRotateSteps(100); // 等待1秒 delay1ms(1000); // 逆时针转动100步 stepperSetDirection(DIRECTION_CCW); stepperRotateSteps(100); while(1); } ``` ### 串口通信示例 ```c #include "config.h" #include "uart.h" void main(void) { // 初始化串口,波特率9600 uartInit(9600); // 发送欢迎信息 uartSendString("HL-1 Learning Board Ready!\r\n"); while(1) { // 处理串口数据 // ... } } ``` ## 模块详细说明 ### 步进电机模块 详细说明请参考 [README_STEPPER_MOTOR.md](README_STEPPER_MOTOR.md),包含: - 硬件连接示意图 - API函数详细说明 - 使用示例 - 技术细节和注意事项 ### 配置头文件 (`config.h`) 该文件包含了所有外设的引脚定义,用户可以根据实际硬件连接进行修改。主要配置包括: - 系统时钟频率 - 串口波特率 - 各外设的引脚分配 ## 开发指南 ### 添加新模块 1. 在 `src/` 目录下创建新的模块目录 2. 编写 `.c` 和 `.h` 文件 3. 在 `config.h` 中添加必要的引脚定义 4. 在主程序中包含头文件并调用相关函数 ### 调试技巧 1. **使用串口调试**:通过串口发送调试信息 2. **LED指示灯**:使用P1口的LED显示程序状态 3. **定时器中断**:用于精确的时间控制 ## 常见问题 ### 1. 编译错误 - **问题**:SDCC编译报错 - **解决**:检查SDCC安装是否正确,确保在PATH中 ### 2. 烧录失败 - **问题**:无法连接单片机 - **解决**: 1. 确认串口线连接正确 2. 单片机需要冷启动(先断电,点击下载后再上电) 3. 检查串口端口号是否正确 ### 3. 步进电机不转动 - **问题**:电机没有反应 - **解决**: 1. 检查ULN2003AN芯片是否发热 2. 确认电机电源电压(通常5V-12V) 3. 检查P1.0-P1.3引脚输出是否正常 ## 贡献指南 1. Fork本仓库 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启Pull Request ## 许可证 本项目采用GPL v3许可证。详情请参阅LICENSE文件。 ## 联系方式 - 项目仓库:https://gitee.com/cciteie/hl_1_library.git - 如有问题,请在仓库中提交Issue ## 更新日志 ### v1.0.0 (初始版本) - 完成基础框架搭建 - 实现步进电机驱动模块 - 添加定时器、串口、延时等基础模块 - 提供完整的示例程序 --- **注意**:使用前请仔细阅读硬件连接说明,错误的连接可能会损坏硬件设备。