简介:这份文档面向备战电子设计竞赛的学生与指导教师,系统梳理了控制类赛题所需的常用硬件模块与软件程序,帮助参赛者在有限时间内搭建起完整的知识框架与器材清单。内容涵盖电源模块(12V、9V、5V、3.3V及LM337负压方案)、最小系统、键盘与液晶显示、AD/DA转换、寻迹光耦RPR220、霍尔传感器A04E、光电开关、集成运放、可编程逻辑、步进与直流电机驱动(L298、L297)、继电器及比较器信号调理等硬件要点,并配套LCD显示、键盘输入、AD数据处理、电机控制、PWM输出、延时计时、寻迹避障算法与无线通信等程序思路。资源包为1个doc文档,大小38KB,篇幅精炼便于打印随身查阅。已有3080人学习下载,适合作为赛前器材准备与模块选型的速查清单,也可用于日常训练中对照查漏补缺。
1. 电赛常用模块入门:零基础也能看懂的第一张“备赛地图”
第一次听到“电赛常用模块”这个词,很多新手的反应是:是不是要背一堆芯片型号?其实不是。你可以把它想成搭积木——电源是底座,最小系统是大脑,传感器是眼睛耳朵,电机是手脚,显示和键盘是嘴巴。电赛常用模块,说的就是这套“积木清单”里最常被反复用到的那一批硬件和配套程序。它解决的不是某一道题,而是让你在拿到题目后,能快速拼出一个能跑的原型,而不是从零焊起。适合刚进实验室、连杜邦线都插不利索,但愿意动手的人。
2. 为什么先学模块而不是先啃原理:新手最省力的入门顺序
2.1 模块化思维:把大问题拆成能上手的小块
我刚接触电赛的时候,犯过一个典型错误:抱着一本模电教材从第一章开始看,看了两周,连一个灯都没点亮。后来一位带我的学长说了一句话,我记到现在——“比赛不是考试,没人要求你从晶体管开始推导,你要做的是把现成模块连起来,让它完成一个动作。”
这句话背后的逻辑就是模块化。一个能跑的小车,拆开看无非是:电源供电、单片机发指令、传感器读路况、电机驱动轮子、屏幕显示状态。每一块都有成熟的模块和现成程序,你要学的是“怎么把它们接对、怎么让程序调用它们”,而不是“这个芯片内部 PN 结怎么工作”。
对零基础来说,这个顺序特别重要。先让一个模块单独动起来,你会有成就感;再把两三个模块串起来,你会理解接口和时序;最后才去补原理,这时候你脑子里有画面,看书才不玄学。入门的话建议先按“电源→最小系统→显示→键盘→传感器→电机”这个顺序摸一遍,每个模块只求“能通电、能看到反应”,不求深究。
2.2 先跑通一个最小闭环:电源加最小系统加一个显示
什么叫最小闭环?就是让一个系统从“有电”到“有输出”完整走一遍。对新手来说,最合适的第一个闭环是:电源模块给最小系统供电,最小系统驱动一个 LCD 或数码管显示一行字。
为什么选这个?因为它覆盖了电赛里最高频的三件事:供电、程序下载、人机反馈。你把这三步走通,后面加传感器、加电机,都只是在这个骨架上挂东西。
具体怎么做,下一节给步骤。这里先说心态:第一次接线大概率会翻车,屏幕不亮、程序下不进去、电源发热,都是正常的。我自己的血泪经验是,每次上电前先检查电源输出电平和芯片供电脚是否对应,这个习惯能救回不少芯片。
2.3 第一个可跟做的例子:点亮一块 LCD 并显示一行字
下面以常见的 51 或 MSP430 最小系统加一块字符型 LCD 为例,给一个最小可跑的流程。不同芯片引脚不同,但步骤逻辑一样。
第一步:确认电源输出。用万用表量电源模块输出,确认 5V 和 3.3V 都对。很多 LCD 是 5V 供电,最小系统可能是 3.3V,别接反。
# 上电前用万用表直流电压档测量 # 红表笔接电源输出正极,黑表笔接 GND # 确认读数在 4.9~5.1V 或 3.2~3.4V 范围内再往下走这段不是代码,是操作检查。电源不对,后面全白搭。我第一次就是没量,直接把 12V 接到 5V 模块上,冒了一股烟。
第二步:连接最小系统和下载器。把下载器的数据线、时钟线、地线对应接到最小系统。不同下载器线序不同,看模块丝印,不要凭颜色猜。
第三步:写一个只做显示的测试程序。下面是伪代码结构,具体寄存器名按你的芯片手册填。
// 初始化 LCD 为 4 位或 8 位模式 LCD_Init(); // 清屏,避免上电残留字符 LCD_Clear(); // 在第一行第一列写字符串 LCD_WriteString(0, 0, "Hello"); // 在第二行第一列写字符串 LCD_WriteString(1, 0, "DianSai"); while(1) { // 空循环,保持显示 }LCD_Init负责按 LCD 手册的时序发初始化命令;LCD_WriteString里第一个参数是行号,第二个是列号,第三个是要显示的内容。如果你用的是现成库,函数名可能不同,但“初始化→清屏→写字符串”这个顺序是通用的。
第四步:下载并观察。程序下载后,如果屏幕亮但没字,先调对比度电位器;如果完全不亮,回头查电源和背光;如果乱码,查数据线顺序和初始化时序。这三个排查方向能覆盖新手八成的问题。
把这一步跑通,你就有了一个“能显示”的底座。后面键盘输入、传感器读数,都可以先显示到这块屏上,眼见为实,调试会踏实很多。
3. 硬件模块怎么选怎么接:从电源到传感器的上手清单
3.1 电源模块:先搞定 12V、9V、5V、3.3V 和负压
电源是整套东西的地基。电赛里常见的电压等级就是 12V、9V、5V、3.3V,电机和继电器往往吃 12V,单片机和多数传感器吃 5V 或 3.3V。如果你用电池供电,还要考虑升压块,把电池电压稳到需要的档位。
有一个容易被忽略的点:有些芯片必须负电压供电,这时候就要把负压做进去,常见做法是用 LM337 这类可调负压稳压芯片搭一路。新手不用一上来就做负压,但要知道清单里有这一项,遇到运放需要双电源时不至于懵。
入门建议:先准备一个多路输出的电源模块,能把 12V 降到 5V 和 3.3V,输出端加个开关和指示灯。接线时养成“先断电接线、再上电测量”的习惯。我第一次学的时候,老师傅让我每次上电前用万用表点一下输出,当时觉得麻烦,后来发现这是最便宜的后悔药。
3.2 最小系统与 I/O 扩展:为什么还要备一块可编程逻辑
最小系统就是单片机能跑起来的最小电路:芯片、晶振、复位、下载口。它的作用是当大脑。但电赛题目经常出现 I/O 口不够的情况,比如同时接液晶、键盘、多个传感器和电机驱动,引脚一算就紧张。
这时候有两个方向:一是换引脚更多的型号,二是加一块可编程逻辑器件,比如 CPLD,把一些简单的并行逻辑分担出去。对零基础来说,先把手上的最小系统引脚列一张表,标清楚哪些被显示占用、哪些被键盘占用,心里有数。真遇到不够,再考虑扩展,不要一上来就堆复杂器件。
3.3 显示与键盘:LCD、数码管、LED、蜂鸣器各管什么
显示模块在电赛里不只是“给人看”,它本质是反馈。LCD 能显示字符和数字,适合调试信息;数码管亮度高、远看清楚,适合显示速度、分数这类关键数值;LED 做状态指示最直接;蜂鸣器则是“不看屏幕也能知道”的反馈,比如平衡点稳定了让它叫一声。
键盘是输入。矩阵键盘省引脚,独立按键接线简单。新手先把独立按键跑通:按下读到一个电平变化,再把这个变化显示到 LCD 上。这个“输入→处理→显示”的链条,就是后面所有交互程序的雏形。
3.4 传感器模块:寻迹、霍尔、光电、超声波先摸哪几个
传感器是电赛里种类最多、最容易买错的一块。按上手难度排,建议先摸这几个:
- 寻迹光耦,比如 RPR220,用来识别黑线白底,输出开关量,接线简单,适合做循迹小车的第一只“眼睛”。
- 霍尔传感器,比如 A04E 配磁钢,检测磁场有无,可以用来测转速或位置。
- 光电槽和码盘,配合起来测电机转速,输出脉冲,后面测速算法就靠它。
- 避障光电开关,检测前方有没有障碍物,输出开关量。
- 光敏电阻或光敏二极管,做趋光判断,模拟量输出,需要配合 AD 采集。
- 超声波模块,测距用,输出方式有串口或脉冲宽度,新手先跑通“读一个距离值显示到屏上”。
- 接近开关,探测金属,输出开关量。
- 角度传感器,精度好但价格偏高,入门阶段知道有这个东西即可。
这里有个血泪经验:光耦类传感器输出不一定是干净的开关量,有时候是模拟电压,这时候就要加比较器,比如 LM339 或 LM393,把模拟量整形成高低电平。所以比较器模块要备着,它和光耦是搭档。
3.5 电机与驱动:L298、L297 和 PWM 调速的关系
电机是执行机构。直流减速电机用 L298 这类驱动芯片就能正反转和调速;步进电机想要细分和稳定步进,可以考虑加 L297 做控制。继电器则用来切换大电流负载,驱动端常用 2803 或 2003 这类达林顿阵列。
调速的核心是 PWM,也就是脉冲宽度调制。你可以把它理解成“快速开关电源”,开的时间占比越大,电机平均电压越高,转得越快。程序上就是配置一个定时器输出 PWM 波,改占空比。步进电机的调速还要考虑频率和细分,这部分入门先知道概念,等直流电机跑顺了再碰。
还有一点原文提到但容易被忽略:做小车要准备联轴器,电机轴和轮子之间要靠它连接。这说明电赛不只是电子,机械件也得备一点。
4. 软件程序怎么起步:从显示键盘到 AD 采集和电机控制
4.1 显示与键盘程序:先把人机交互跑顺
软件入门的第一课,就是把第 2 章那个显示程序扩展成“按键能改显示内容”。结构大概是:主循环里扫描按键,检测到按下就改变一个变量,再把变量刷新到 LCD。
// 主循环伪代码 while(1) { key = Key_Scan(); // 扫描按键,返回键值 if(key == KEY_UP) { count++; // 按下加一 LCD_ShowNum(0, 0, count); // 刷新显示 } Delay_ms(10); // 简单消抖 }Key_Scan返回哪个键被按下,Delay_ms(10)是软件延时消抖,防止一次按下被读成多次。这个结构很土,但新手拿它跑通交互足够了。等后面学定时器,再把延时换掉。
4.2 AD 采集与数据处理:把传感器电压变成能用的数字
AD 采集是把模拟电压转成数字量。比如光敏电阻分压后的电压接到 AD 引脚,程序读回来一个 0 到满量程的数值。原始数据往往抖得厉害,所以要处理,最简单的就是多次采样取平均。
// 连续采样 8 次取平均 unsigned int AD_Read_Average() { unsigned long sum = 0; unsigned char i; for(i = 0; i < 8; i++) { sum += AD_Read(); // 读一次 AD 原始值 } return (unsigned int)(sum / 8); }AD_Read是底层读寄存器函数,sum用长整型防止累加溢出,除以 8 就是平均。这个算法不高级,但能明显压住跳动。SPI 接口的 AD/DA 芯片还要先跑通 SPI 传输,时序对了数据才可信。
4.3 电机控制与 PWM:让轮子按你的意思转
电机控制程序的核心是两件事:方向和速度。方向靠驱动芯片的两个控制脚高低电平组合,速度靠 PWM 占空比。
// 设置电机方向和占空比 void Motor_Set(int speed) { // speed 范围 -100 到 100 if(speed >= 0) { DIR1 = 1; DIR2 = 0; // 正转 PWM_SetDuty(speed); // 占空比 0~100 } else { DIR1 = 0; DIR2 = 1; // 反转 PWM_SetDuty(-speed); } }DIR1和DIR2接驱动芯片方向脚,PWM_SetDuty改定时器比较值。新手常见问题是电机不转但驱动发热,多半是方向脚同时为高,形成刹车状态,查一下电平组合就好。
4.4 延时、计时与常用算法:秒表、测速、寻迹从哪下手
软件延时和定时器计时是两回事。软件延时就是空转循环,简单但不准;定时器计时是硬件计数,准得多。测速、秒表这类功能要用定时器。
寻迹算法的入门版很直白:左右两个寻迹光耦,左边压线就往左修正,右边压线就往右修正,都没压线就直行。避障类似,前方光电开关触发就转向。这些算法不需要复杂数学,先把“读传感器→判断→调电机”这个循环写顺,再谈优化。
5. 新手避坑与常见问题:接线、供电、时序最容易翻车的地方
5.1 现象:屏幕亮但没字符。原因:对比度或初始化时序不对。解决:先调对比度电位器,再核对初始化命令顺序和延时。
LCD 上电后背光亮但看不到字,第一反应不要怀疑程序全错。先找对比度调节电位器,慢慢拧,很多屏只是对比度偏了。如果拧了没用,回头查初始化里清屏和功能设置的顺序,以及命令之间有没有给足延时。时序太急,屏还没准备好就发下一条,表现就是花屏或不显示。
5.2 现象:传感器读数乱跳。原因:电源噪声或没有滤波。解决:加去耦电容,软件上做平均或中值滤波。
传感器读数像玄学一样乱跳,先看供电。电机一启动读数就飞,多半是电源被拉低。给传感器供电脚就近加 0.1uF 去耦电容,软件上把第 4 章的多次平均用上。如果还跳,检查地线是不是和电机地共得太随意,大电流回路和小信号回路尽量分开走。
5.3 现象:电机一转单片机复位。原因:电机电流冲击导致电压跌落。解决:电机单独供电,共地但电源分开,加足滤波电容。
这是控制类作品的高频翻车点。电机启动瞬间电流很大,把单片机供电拉到复位阈值以下,程序就重启了。解决思路是电机驱动电源和逻辑电源分开,地线单点共地,驱动电源端并大电容储能。不要指望软件能救,这是供电结构问题。
5.4 现象:程序下载不进去。原因:下载线序错、芯片供电不对或复位脚被拉死。解决:对照丝印查线序,量芯片供电,检查复位电路。
下载失败先别重装软件。拿万用表量最小系统供电脚是不是在正常范围,再看下载器线序有没有插反,最后查复位脚有没有被外部电路拉住。我遇到过复位电容焊错导致一直复位,查了半天程序,其实是硬件。
5.5 现象:AD 读数满量程或为零。原因:输入电压超范围或参考电压没接。解决:量输入脚电压,确认参考电压和地连接。
AD 读出来不是最大就是最小,通常不是算法问题,是输入电压超出了允许范围,或者参考电压脚悬空。先用万用表量 AD 输入脚的实际电压,再对照芯片手册的输入范围。参考电压不稳,读数整体偏移,也要查。
6. 下一步学什么:从模块拼装到能独立做题的路径
把前面几章的模块都单独跑过一遍之后,你手里应该有一堆“能亮、能转、能读”的小程序。接下来最有效的练法不是继续收集模块,而是做一次小整合:用一块最小系统,接上电源、LCD、两个寻迹光耦和一块电机驱动,写一个“看到黑线就转向、屏幕显示当前状态”的小车程序。这个项目不大,但它把供电、显示、传感器、电机、算法串成了一条线,做完你对电赛题目的恐惧会少一大半。
再往后,按这个顺序补:
| 阶段 | 重点 | 建议投入 |
|---|---|---|
| 第一轮 | 单个模块能通电、能读、能显示 | 每个模块半天到一天 |
| 第二轮 | 两三个模块联动,比如传感器加显示加电机 | 一周左右 |
| 第三轮 | 完整小作品,比如循迹小车或简单测控装置 | 一到两周 |
| 第四轮 | 补模电数电基础,看懂芯片手册的关键参数 | 持续 |
基础这块,原文说得很实在:模电数电要懂,51 单片机要熟,有条件再碰 MSP430、C8051 这类,学有余力再看 ARM 和 FPGA。我的建议是不要被这句话吓住,它是长期方向,不是入门门槛。你完全可以在跑通小车之后,再回头补运放和比较器的原理,那时候你见过信号被比较器整形的实际效果,看书会快很多。
还有一句原文里容易被当成玩笑的话:好的身体和心态也是必不可少的。我带过的新手里,进度最快的往往不是最聪明的,而是每次翻车后愿意拿万用表从头量一遍的人。从那以后我每次上电前都强制走一遍“量电源、查线序、看地线”的流程,省下的返工时间比多背十个型号都值。希望帮到你,先从点亮一块屏开始就行。
本文还有配套的精品资源,点击获取