从头到尾做一个LED跑马灯

本文介绍了一种利用EM78P156LIC单片机和NPN三极管制作跑马灯的方法。详细解释了三极管的工作原理及如何通过控制基极电流实现对LED灯的开关控制。

在公司尾牙(年终聚餐)上为了让那张活动记分表不那么单调,我想把它的旁边加一些跑马灯了美化一下.于是乎就来自己动手来自己做一个.毕竟自己是搞这行的嘛.

先看看效果图

因为自己是偏软的所以有很多工作都是请教公司的前辈来协助的.

再来看看电路图[保留下次上传]:

嗯,因为说了要从头到尾做一个跑马灯嘛,所以先一些元器件吧.

其实就只有易隆的EM78P156LIC一块.和一些LED,三极管和电阻.

1.CPU. EM78P156EL是锴哥友情赞助的,说实话我也不知道具体要选择什么样的IC才合适.

具体的CPU Datasheet 请参考:

http://www.zymcu.com/datasheet/em_MCU/em78p156e.pdf那里有非常详细的说明.

2.三极管:

三极管是电流放大器件,有三个极,分别叫做集电极C,基极 B ,发射极 E 。分成 NPN PNP 两种。我们仅以 NPN 三极管的共发射极放大电路为例来说明一下三极管放大电路的基本原理。
 

下面的分析仅对于NPN型硅三极管。如上图所示,我们把从基极B流至发射极E的电流叫做基极电流Ib;把从集电极C流至发射极E的电流叫做集电极电流Ic。这两个电流的方向都是流出发射极的,所以发射极E上就用了一个箭头来表示电流的方向。三极管的放大作用就是:集电极电流基极电流的控制(假设电源能够提供给集电极足够大的电流的话),并且基极电流很小的变化,会引起集电极电流很大的变化,且变化满足一定的比例关系:集电极电流的变化量基极电流变化量的β倍,即电流变化被放大了β倍,所以我们把β叫做三极管的放大倍数(β一般远大于1,例如几十,几百)。如果我们将一个变化的小信号加到基极跟发射极之间,这就会引起基极电流Ib的变化,Ib的变化被放大后,导致了Ic很大的变化。如果集电极电流Ic是流过一个电阻R的,那么根据电压计算公式U=R*I可以算得,这电阻上电压就会发生很大的变化。我们将这个电阻上的电压取出来,就得到了放大后的电压信号了。

 

三极管在实际的放大电路中使用时,还需要加合适的偏置电路。这有几个原因。首先是由于三极管BE结的非线性(相当于一个二极管),基极电流必须在输入电压大到一定程度后才能产生(对于硅管,常取0.7V)。当基极与发射极之间的电压小于0.7V时,基极电流就可以认为是0。但实际中要放大的信号往往远比0.7V要小,如果不加偏置的话,这么小的信号就不足以引起基极电流的改变(因为小于0.7V时,基极电流都是0)。如果我们事先在三极管的基极上加上一个合适的电流(叫做偏置电流,上图中那个电阻Rb就是用来提供这个电流的,所以它被叫做基极偏置电阻),那么当一个小信号跟这个偏置电流叠加在一起时,小信号就会导致基极电流的变化,而基极电流的变化,就会被放大并在集电极上输出。另一个原因就是输出信号范围的要求,如果没有加偏置,那么只有对那些增加的信号放大,而对减小的信号无效(因为没有偏置时集电极电流为0,不能再减小了)。而加上偏置,事先让集电极有一定的电流,当输入的基极电流变小时,集电极电流就可以减小;当输入的基极电流增大时,集电极电流就增大。这样减小的信号和增大的信号都可以被放大了。

 

下面说说三极管的饱和情况。像上面那样的图,因为受到电阻Rc的限制(Rc是固定值,那么最大电流为U/Rc,其中U为电源电压),集电极电流是不能无限增加下去的。当基极电流的增大,不能使集电极电流继续增大时,三极管就进入了饱和状态。一般判断三极管是否饱和的准则是:Ib*β〉Ic。进入饱和状态之后,三极管的集电极跟发射极之间的电压将很小,可以理解为一个开关闭合了。这样我们就可以拿三极管来当作开关使用:当基极电流为0时,三极管集电极电流为0(这叫做三极管截止),相当于开关断开;当基极电流很大,以至于三极管饱和时,相当于开关闭合。如果三极管主要工作在截止和饱和状态,那么这样的三极管我们一般把它叫做开关管。

 

如果我们在上面这个图中,将电阻Rc换成一个灯泡,那么当基极电流为0时,集电极电流为0,灯泡灭。如果基极电流比较大时(大于流过灯泡的电流除以三极管的放大倍数β),三极管就饱和,相当于开关闭合,灯泡就亮了。由于控制电流只需要比灯泡电流的β分之一大一点就行了,所以就可以用一个小电流来控制一个大电流的通断。如果基极电流从0慢慢增加,那么灯泡的亮度也会随着增加(在三极管未饱和之前)。

 

对于PNP型三极管,分析方法类似,不同的地方就是电流方向跟NPN的刚好相反,因此发射极上面那个箭头方向也反了过来——变成朝里的了。

 

完成一个毕业设计项目需要系统性地规划和执行多个关键步骤。以下是基于毕业设计的基本要求和实践方法,总结出的从头到尾完成毕业设计项目的步骤和方法。 ### 3.1 项目选题与背景分析 毕业设计的第一步是选题。选题应结合自身兴趣、专业方向以及实际应用价值。在确定选题后,需进行项目背景分析,明确项目的意义、目标以及预期解决的问题。这一阶段应查阅相关文献和技术资料,了解行业现状和发展趋势,为后续设计提供理论支持[^1]。 ### 3.2 需求分析与可行性研究 在选题确定后,需进行详细的需求分析。包括功能需求、性能需求、用户需求以及系统运行环境等。同时,应评估项目的可行性,包括技术可行性、经济可行性和操作可行性。此阶段可采用需求规格说明书(SRS)进行文档化描述,为后续系统设计提供依据[^1]。 ### 3.3 系统设计与平台选型 系统设计阶段包括总体架构设计和模块划分。总体架构设计需明确系统的核心功能模块及其交互方式。模块划分应遵循高内聚、低耦合的原则,便于后续开发与维护。平台选型包括开发语言、数据库、开发框架、硬件平台(如单片机型号)等的选择,需结合项目需求和开发资源进行合理配置。 例如,若为嵌入式系统设计,可能选择 STM32 系列单片机作为主控芯片,并使用 Keil uVision 作为开发环境: ```c #include "stm32f10x.h" void Delay(__IO uint32_t nCount) { while(nCount--) { } } int main(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); while (1) { GPIO_ResetBits(GPIOC, GPIO_Pin_13); Delay(0xFFFFF); GPIO_SetBits(GPIOC, GPIO_Pin_13); Delay(0xFFFFF); } } ``` ### 3.4 模块开发与系统实现 在系统设计完成后,进入具体模块的开发阶段。开发过程中应采用模块化编程思想,逐步实现各功能模块,并进行单元测试。数据库设计应遵循规范化原则,确保数据一致性与完整性。开发过程中应记录关键问题及其解决方案,为论文撰写提供素材。 ### 3.5 系统集成与测试 模块开发完成后,需进行系统集成,将各模块整合为一个完整的系统,并进行全面测试。测试包括功能测试、性能测试、稳定性测试等,确保系统满足需求规格说明中的各项指标。测试过程中应记录测试结果与优化建议。 ### 3.6 文档撰写与论文整理 毕业设计的最终成果不仅包括系统本身,还包括完整的文档资料。论文结构通常包括: - 引言:项目背景、开发意义、工作难度等 - 系统分析与设计:整体架构、功能模块、开发工具介绍 - 系统实现:数据库设计、核心代码实现、关键技术解析 - 测试与优化:测试方法、结果分析、系统改进方向 - 结束语:项目总结、心得体会、未来展望 论文撰写应条理清晰、图文并茂,体现完整的开发过程与技术深度。 ### 3.7 答辩准备与成果展示 在论文完成后,需准备答辩材料,包括PPT演示文稿、系统演示视频、答辩讲稿等。答辩内容应突出项目亮点、技术难点与个人贡献,回答评委提问时应逻辑清晰、表述准确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值