# Digital-Interactive-Command-Konsole **Repository Path**: nachn_admin/DICK-Project ## Basic Information - **Project Name**: Digital-Interactive-Command-Konsole - **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-04-05 - **Last Updated**: 2026-04-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Based on the code map provided, I can see this is an embedded C project for an 8051 microcontroller (IAP15W4K61S4) that implements a keyboard-driven display system. Let me create a comprehensive README. # DICK-Project 基于 IAP15W4K61S4 单片机的键盘显示控制系统 ## 项目简介 DICK-Project 是一个基于 8051 内核单片机(IAP15W4K61S4)的嵌入式项目,实现了键盘输入处理、VFD/LCD 屏幕显示和串口通信功能。该系统可广泛应用于工业控制设备、测试仪器等人机交互场合。 ## 硬件功能 ### 核心组件 - **主控芯片**: IAP15W4K61S4 (8051架构) - **显示模块**: VFD (Vacuum Fluorescent Display) 荧光显示 - **输入设备**: PS/2 键盘接口 - **通信接口**: UART 串口通信 ### 外设接口 | 外设 | 引脚说明 | |------|----------| | LCD_Data_Bus | 数据总线 | | LCD_CS | 片选信号 | | LCD_RST | 复位信号 | | LCD_RS | 寄存器选择 | | LCD_RW | 读写控制 | | LCD_E | 使能信号 | | KB_C | 键盘时钟 | | KB_D | 键盘数据 | ## 软件结构 ### 核心模块 #### `keyboard.c` / `keyboard.h` - PS/2 键盘通信协议实现 - 键盘状态管理(Caps Lock, Shift) - 中断驱动的键盘扫描 - 支持Break Code检测 #### `LCD.c` / `LCD.h` - VFD 显示屏驱动 - 屏幕清除与地址设置 - 5x7 点阵字符显示 - 内置 ASCII 字库 (95个字符) #### `uart.c` / `uart.h` - UART1 串口初始化 - 字节/字符串发送 - 接收缓冲区管理 - 中断接收处理 #### `utils.c` / `utils.h` - GPIO 初始化 - 毫秒级延时 - 微秒级延时 #### `man.c` - 系统状态机管理 - 键盘输入处理 - 屏幕绘制显示 ### 系统状态 ```c typedef enum { STATE_IDLE, // 空闲状态 STATE_SERIAL_SHOW, // 串口显示状态 STATE_KEYBOARD_TYPE // 键盘输入状态 } SystemState_t; ``` ## 使用说明 ### 编译环境 - Keil C51 或 SDCC - IAP15W4K61S4 支持包 ### 硬件连接 1. VFD 显示屏连接至 LCD 引脚 2. PS/2 键盘连接至 KB_C, KB_D 3. UART 接口连接至 PC 串口 ### 功能操作 1. **键盘输入模式**: 按下键盘按键,字符显示在 VFD 屏幕上 2. **串口显示模式**: 通过串口发送数据至上位机 3. **状态切换**: 系统根据当前状态处理不同输入 ## API 参考 ### LCD 操作 ```c void LCD_Init(void); // 初始化显示屏 void LCD_Clear_Screen(void); // 清屏 void LCD_Set_Address(page, column); // 设置显示地址 void LCD_Display_String_5x7(page, col, str); // 显示字符串 ``` ### 键盘操作 ```c void Keyboard_Init(void); // 初始化键盘 void KB_SendCmd(cmd); // 发送键盘命令 void KB_UpdateStatus(code, is_break); // 更新键盘状态 ``` ### UART 操作 ```c void Uart1_Init(void); // 初始化串口 void UART_SendByte(dat); // 发送单字节 void UART_SendString(s); // 发送字符串 ``` ## 项目文件 ``` ├── .clang-format # 代码格式配置 ├── .eide/ # 开发环境配置 ├── .vscode/ # VSCode 配置 ├── IAP15W4K61S4.cfg # 芯片配置文件 ├── DICK.uvopt # 工程配置 ├── DICK.uvproj # 项目文件 ├── LCD.c / LCD.h # LCD驱动 ├── keyboard.c / keyboard.h # 键盘驱动 ├── uart.c / uart.h # 串口通信 ├── utils.c / utils.h # 工具函数 └── man.c # 主程序 ``` ## 注意事项 1. 本项目使用 5x7 点阵字库,仅支持可显示 ASCII 字符 2. 键盘采用中断方式扫描,需保证中断服务程序执行时间小于 500μs 3. 串口波特率需根据实际晶振频率配置 ## 技术支持 如有问题,请提交 Issue 或联系项目维护者。