
专业版
51核心板改版
497
0
0
0
简介
基于51核心板,集成STC89C52RC单片机,含Type-C供电、CH340N串口、AT24C02存储、AMS1117-3.3V稳压。外设包括4LED流水灯、独立按键、蜂鸣器、4位7共阳数码管。
简介:基于51核心板,集成STC89C52RC单片机,含Type-C供电、CH340N串口、AT24C02存储、AMS1117-3.3V稳压。外设包括4LED流水灯、独立按键、蜂鸣器、4位7共阳数码管。开源协议
:GPL 3.0
(未经作者授权,禁止转载)创建时间:2025-01-28 09:27:21更新时间:2025-04-13 00:58:09
描述
项目简介
本项目是基于STC89C52RC单片机的开源51核心板,集成常用外设模块,适用于嵌入式开发学习及项目原型验证。
项目功能
- 基础功能:Type-C供电、CH340N串口通信、AMS1117-3.3V稳压
- 外设模块:4路LED流水灯、独立按键、蜂鸣器、4位共阳数码管
- 扩展接口:4x11P排针引出芯片所有引脚、1x3P排针提供电源和接地(GND/5V/3.3V)
- 存储与时钟:AT24C02 EEPROM存储、12MHz晶振
项目参数
- MCU:STC89C52RC-40I(LQFP44封装)
- 通信:CH340N实现USB转TTL,支持一键下载
- 供电:Type-C输入,AMS1117输出3.3V/500mA
- 显示:4位7段数码管(共阳)、4LED流水灯
- 输入:4独立按键、复位按键
原理解析(硬件说明)
1. 电源电路
说明:Type-C接口输入5V,经AMS1117-3.3V稳压输出,CC1/CC2引脚配置5.1K下拉电阻兼容不同电源协议。


2. MCU最小系统
说明:STC89C52RC外接12MHz晶振,复位电路采用10μF电容+10K电阻+100电阻组合,保证稳定启动。

3. 外设电路
- 数码管驱动:STC89C52引脚P2.0-P2.3控制段选,一个增强型P沟道管理位选。
- 蜂鸣器:PNP三极管驱动,低电平触发。
软件代码
以下代码为测试代码,将两个2P排针短接后写入单片机后流水灯全亮,数码管显示1234,蜂鸣器响。
/*********************************************************************************************************
* 模块名称: Main.c
* 摘 要: 主文件,包含初始化函数和main函数
* 当前版本: 1.0.0
* 作 者:
* 完成日期: 2025年4月8日
* 内 容:
* 注 意:
**********************************************************************************************************
* 取代版本:
* 作 者:
* 完成日期:
* 修改内容:
* 修改文件:
*********************************************************************************************************/
/*********************************************************************************************************
* 包含头文件
*********************************************************************************************************/
#include
/*********************************************************************************************************
* 宏定义
*********************************************************************************************************/
sbit SegmentG1=P2^3;
sbit SegmentG2=P2^2;
sbit SegmentG3=P2^1;
sbit SegmentG4=P2^0;
sbit LED1=P2^4;
sbit LED2=P2^5;
sbit LED3=P2^6;
sbit LED4=P2^7;
sbit BEEP=P1^0;
sbit KEY1 = P3^2; //定义按键KEY1
sbit KEY2 = P3^3; //定义按键KEY2
sbit KEY3=P3^4;
sbit Beep=P1^0;
/*********************************************************************************************************
* 枚举结构体定义
*********************************************************************************************************/
/*********************************************************************************************************
* 内部变量
*********************************************************************************************************/
static unsigned char s_arrNumber[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//定义数码管显示数字0-9
/*********************************************************************************************************
* 内部函数声明
*********************************************************************************************************/
static void Delayms(int nms);
static void InitInterrupt(void);
static void SegmentDisplay(char a, char b, char c, char d);
/*********************************************************************************************************
* 内部函数实现
*********************************************************************************************************/
/*********************************************************************************************************
* 函数名称: DelayNms
* 函数功能: 软件延迟函数,用于延迟一段时间
* 输入参数: xms-延迟时间(毫秒)
* 输出参数: void
* 返 回 值: void
* 创建日期: 2025年4月8日
* 注 意:
*********************************************************************************************************/
static void DelayNms(int nms)
{
unsigned int i,j;
for(i = 0; i < nms; i++)
{
for(j = 0; j < 123; j++);
}
}
/*********************************************************************************************************
* 函数名称: SegmentDisplay
* 函数功能: 数码管显示
* 输入参数: a-数码管1显示数字 b-数码管2显示数字 c-数码管3显示数字 d-数码管4显示数字
* 输出参数: void
* 返 回 值: void
* 创建日期: 2025年4月8日
* 注 意:
*********************************************************************************************************/
static void SegmentDisplay(char a, char b, char c, char d)
{
P0 = s_arrNumber[a]; //数码管显示数字
SegmentG1 = 0; //打开数码管1
DelayNms(1); //延迟1ms
SegmentG1 = 1; //关闭数码管1
P0 = s_arrNumber[b]; //数码管显示数字
SegmentG2 = 0; //打开数码管2
DelayNms(1); //延迟1ms
SegmentG2 = 1; //关闭数码管2
P0 = s_arrNumber[c]; //数码管显示数字
SegmentG3 = 0; //打开数码管3
DelayNms(1); //延迟1ms
SegmentG3 = 1; //关闭数码管3
P0 = s_arrNumber[d]; //数码管显示数字
SegmentG4 = 0; //打开数码管4
DelayNms(1); //延迟1ms
SegmentG4 = 1; //关闭数码管4
}
/*********************************************************************************************************
* 函数名称: main
* 函数功能: 主函数
* 输入参数: void
* 输出参数: void
* 返 回 值: void
* 创建日期: 2025年4月8日
* 注 意:
*********************************************************************************************************/
void main()
{
LED1=0;
LED2=0;
LED3=0;
LED4=0;
SegmentG1=0;
SegmentG2=0;
SegmentG3=0;
SegmentG4=0;
Beep=0;
while (1)
{
SegmentDisplay(1,2,3,4);
}
}
注意事项
- 焊接顺序:优先焊接AMS1117和Type-C接口,确保供电正常。
- 数码管共阳:需匹配共阳驱动代码,避免烧毁段选。
3D仿真图

图1:核心板正面布局

图2:PCB背面走线及焊点
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。









![[精品毕设]分布式设备的物联网控制系统设计|星火计划](http://image.lceda.cn/pullimage/cEBnmqeIIiBzBJIfQEj82mgxXZoi3X7MC0W69LV2.jpeg?x-oss-process=image/resize,w_122,h_85,m_lfit/format,webp)