站内搜索
更多
51核心板改版
专业版

51核心板改版

工程标签

STC单片机

506
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下拉电阻兼容不同电源协议。

image.png

image.png

2. MCU最小系统

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

image.png

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);
  }
}

注意事项

  1. 焊接顺序:优先焊接AMS1117和Type-C接口,确保供电正常。
  2. 数码管共阳:需匹配共阳驱动代码,避免烧毁段选。

3D仿真图

image.png
图1:核心板正面布局

image.png
图2:PCB背面走线及焊点

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
0综合测试1234.txt
2
2
WeChat_20250412130656.mp4
2
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航