资源描述
1前言
在“模仿电子技术基本”与“数字电子技术基本”课程中,普通只简介单元电路设计、集成芯片特性、功能等,而一种实用电子系统普通是由各种单元电路构成。因而,进行电子系统设计时,既要考虑系统总体电路设计,还要考虑系统各某些电路选取、设计及它们之间互相连接。由于各种通用和专用模仿、数字集成电路大量涌现,因此在电子系统方案框图拟定后,除少数电子电路参数需要设计计算外,大某些只需依照电子系统框图各某些规定对的选用模仿和数字集成电路芯片。
惯用电子系统设计普通涉及:选取总体方案框图、单元电路设计与选取、电子元器件选取、单元电路之间连接、对电子系统进行电路搭试、对方案及单元电路参数进行修改、绘制总体电路,最后写出设计报告。
复杂设计课题,普通需要对设计规定进行认真分析和研究,通过收集和查阅资料,在已学模仿和数字电子技术课程理论基本上进行构思,从而提出实现设计规定也许方案,并画出相应框图。实现同一种设计规定方案不止一种,这时就应对每一种设计方案可行性及它们优缺陷进行比较,找出一种较为合理设计方案。对于核心某些电路可行性应在原理上要可行,而后需进行电路搭试,成功后才干拟定电路总体方案框图。电子课程设计是对此前学科知识综合,检查咱们掌握电子学科理论知识限度,也是学科教学中十分重要环节。通过把理论与实践相结合,提高理论水平,锻炼实践动手能力。同步,对于咱们对电子学科学习兴趣也是有极大激发作用,让同窗们在自己动手制作过程中找到乐趣,加深对学科知识理解及消化,为后来学习和工作打下良好基本。
在当今社会里,彩灯已经成为咱们生活一某些,能给咱们带来视觉上享有还能美化咱们生活。三花样彩灯控制器重要是通过电路产生有规律变化脉冲信号来实现彩灯各种变化。它重要器件是寄存器。现如今寄存器是数字系统常用重要部件,在计算机中广泛用于存储中间数据。本次实验由于触发器具备记忆功能,将移位寄存器设计成彩灯控制电路。由于电路自身实用,如果再通过计算机仿真,可以直观地看到循环彩灯控制效果。如果稍微改动控制电路,就可以变化电路不同工作状态,控制彩灯变幻出不同闪烁效果。
通过这次设计培养了咱们严肃认真工作态度和科学作风,为此后从事电路设计和研制电子产品打下初步基本,检查咱们理论实践能力,动手能力,动脑能力,分析和理解问题能力,增强了人们对电子方面学习兴趣及自学能力,懂得了自己在哪一方面局限性,为此后学习提供了方向,使人们有质提高。
1.1设计背景
此前过节时候,班上开晚会,同窗们都想用彩灯烘托一下节日氛围。通过两年来对专业课程理论学习和实践,咱们越发对彩灯设计产生了浓厚兴趣。借这次学校安排咱们课程设计,咱们决定亲手设计彩灯控制系统程序,将理论与实践相结合,把自己在学校里面学过东西应用于实际,不断深化自己在这方面理解,并提高应用能力,使自己所学更故意义。
1.2实行筹划
一方面在图书馆查询资料,在网上收集有关论文,设计出彩灯控制系统原理总图和单元电路图,再编写仿真软件,调试模块和软件,运营成功后做出电路板,加载程序,最后做出课程设计报告书。
1.3必备条件
编辑阐明书:Word
绘制原理电路:Protel、Proteus、Altium Designer
仿真:Proteus
PCB:Protel、Altium Designer
2总体方案设计
通过查阅大量有关技术资料,并结合自己实际知识,我重要提出了两种技术方案来实现系统功能。下面我将一方面对这两种方案构成框图和实现原理分别进行阐明,并分析比较它们特点,然后阐述我最后选取方案因素。
2.1设计方案
彩灯控制器大体可分为两种方案实现。一种是运用电子电路装置控制,另一种是采用单片机控制。
方案一:
依照设计任务规定简介彩灯控制电路基本构成,可以拟定彩灯控制器应由振荡电路、计数/时序分派电路、移位位寄存器和彩灯显示五某些构成。其框图如图2.1所示。
振荡电路
控制电路
计数器
译码器
LED显示电路
图2.1 彩灯循环控制器硬件框图
方案二:
本方案重要是通过对基于单片机多控制、多闪烁方式LED彩灯循环系统设计,来达到本设计规定。其硬件构成框图如图2.2所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED发光二极管和5V直流电源电路构成。
此设计方案中单片机P0口接一按键控制电路,实现彩灯花型切换功能;单片机P0.1引脚接上一种按钮开关以实现对彩灯闪烁频率控制,即实现了快中慢三种节拍实现花型变换;单片机上P1口接八路LED发光二极管构成彩灯电路,显示彩灯循环状况。
时钟电路
复位电路
AT89C52单片机
按键控制电路
LED彩灯
直流5V电源电路
图2.2 单片机彩灯循环控制系统硬件框图
2.2方案选取
结合设计任务书比较以上两种方案可知:运用电子电路装置控制,其电路不很复杂,制作相对较容易点,成本也相对较低,但可调性差,亮灯模式少并且样式单调,达不到设计任务规定或实现困难。采用单片机控制其长处是电路集成度高,工作原理简朴,清晰明了,自定义编程,控制图案花样多,移植性好等。
综上,显然方案二各方面优越于方案一,以及为了体现专业优势,本次设计采用第二种方案。
3单元模块设计
本节重要简介系统各单元模块详细功能、电路构造、工作原理、以及各个单元模块之间联接关系;同步本节也会对有关电路中参数计算、元器件选取、以及核心器件进行必要阐明。
3.1直流稳压电源电路
对于一种完整电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源电路稳定可靠是系统平稳运营前提和基本。电子设备除用电池供电外,还采用市电(交流电网)供电。通过变压、整流、滤波和稳压后,得到稳定直流电。直流稳压电源是电子设备重要构成某些!本项目直流稳压电源为+5V。如下图3.1所示:
直流稳压电源制作普通有3种制作形式,分别是分立元件构成稳压电源、线性集成稳压电源和开关稳压电源。下图稳压电源采用是三端集成稳压器7805构成正5V直流电源。
图3.1 三端固定式集成稳压电源电路图
AT89C52单片机工作电压范畴:4.0V—5.5V,因此普通给单片机外接5V直流电源。
3.2单片机最小系统
要使单片机工作起来,最基本电路构成由单片机、时钟电路、复位电路等构成。单片机最小系统如下图3.2所示。
图3.2 单片机最小系统
时钟电路:本系统采用单片机内部方式产生时钟信号,用于外接一种12MHz石英晶体振荡器和2个22pF微调电容,构成稳定自激振荡器,其发出脉冲直接送入内部时钟电路。
图3.3 时钟电路
复位电路:拟定单片机工作起始状态,完毕单片机启动过程。单片机系统复位方式有上电自动复位和手动按键复位。本设计采用手动按键复位,该复位方式同样具备上电自动复位功能。电路如图3.4所示。
图3.4 复位电路
3.3 LED彩灯显示电路
LED彩灯显示电路(如图所示)事实上是由8个发光二极管和8个电阻构成电路。发光二极管与电阻相应串联,然后接在与之相相应P1口上。通过软件编程对P1口输出高低电平来实现不同闪烁花型。由于发光二极管导通电压普通为1.7V以上,此外,其工作电流依照型号不同,普通为1mA到30mA,电阻选取范畴100欧姆~3千欧姆在此咱们这里选用510欧姆电阻。
图3.5 LED彩灯显示电路
3.4按键控制电路
按键控制电路(如图3.6所示)是由2个按键开关构成。她们分别接在单片机AT89C52P0.0接口和P0.1口,S1接在P0.0,S2接在P0.1上。为了一对一控制LED灯闪烁方式。当按下开关S1时, LED彩灯系统闪烁第一种彩灯花型。当再次按下开关S1时, LED灯系统闪烁第二种闪烁方式……。
当闭合S2时,彩灯闪烁节拍变快。
图3.6 键盘控制电路
3.5串口电路
串口电路为单片提供与PC机连接端口,为单片机提供下载程序到单片机程序存储器中。串口原理图如图3.7所示。
串口也称串行通信接口,RS-232是当前最惯用一种串行通讯接口,由于其形状和
针脚数量因素,其接头又被称为DB9接头。RS-232针脚定义:2 RXD ← Receive Data 接受数据、3 TXD → Transmit Data发送数据、5GND - System Ground 系统接地,普通就用到这几种引脚。
图3.7 串口原理图
MAX232芯片是专门为电脑RS-232原则串口设计单电源电平转换芯片,使用+5v单电源供电。
MAX23内部构造基本可分三个某些:
第一某些是电荷泵电路:由1、2、3、4、5、6脚和4只电容构成,功能是产生+12v和-12v两个电源,提供应RS-232串口电平需要。
第二某些是数据转换通道:由7、8、9、10、11、12、13、14脚构成两个数据通道,其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道,8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三某些是供电:15脚DNG、16脚VCC(+5v)。
在此,本系统硬件电路已经所有设计完毕。
4软件设计
单片机应用系统由硬件和软件构成,上述硬件原理图搭建完毕上电之后,咱们还不能看到多控制、多闪烁方式LED灯系统循环点亮现象,咱们还需要告诉单片机怎么样进行控制,即编写程序控制单片机管脚电平高低变化,来实现发光二极管明灭。软件编程是多控制、多闪烁方式LED灯系统中一种重要构成某些,是本设计重点和难点。下面,我将阐述多控制、多闪烁方式LED灯系统是如何实现8个LED灯循环点亮,来简介实现流水灯控制软件编程办法。
C语言仿真如图4.1。详细C语言程序见附录。
图4.1 Keil μVision4调试
本设计使用是2月发布Keil μVision4软件来进行编程。Keil μVision4提供了涉及C编译器、宏汇编、连接器、库管理和一种功能强大仿真调试器等在内完整开发方案,通过一种集成开发环境(uVision)将这些部份组合在一起。Keil μVision4引入灵活窗口管理系统,使开发人员可以使用多台监视器,并提供了视觉上表面对窗口位置完全控制任何地方。新顾客界面可以更好地运用屏幕空间和更有效地组织各种窗口,提供一种整洁,高效环境来开发应用程序。新版本支持更多最新ARM芯片,还添加了某些其她新功能。主程序流程图如下图4.2所示。
主程序
程序初始化
模式一
模式二
模式三
调用亮灯模式
调用亮灯频率
频率一
频率二
频率三
图4.2 主程序流程图
本设计是以单片机AT89C52为核心控制8个发光二极管3种闪烁方式变换。硬件电路如图附录1所示,八个发光二极管D1-D8分别接在单片机P1.0-P1.7接口上,当给P1.0口输出“0”时,发光二极管点亮,当输出“1”时,发光二极管熄灭。同理,接在P1.1~P1.7口其她7个LED点亮和熄灭办法同LED1。因而,要实现流水灯功能,咱们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗成流水灯了。在此咱们还应注意一点,由于人眼视觉暂留效应以及单片机执行每条指令时间很短,咱们在控制二极管亮灭时候应当延时一段时间,否则咱们就看不到闪烁效果。
程序设计流程如图4.3。
开始
判断有无按键按下
当S1按下时
当S2按下时
调用彩灯循环程序
设定相应间隔时间
调用延时程序
图4.3 程序设计流程图
程序启动时跳转到键盘判断模块程序中,此程序里面包括S1按键状况判断,循环检测直到有按键按下时候,程序转去按键相相应彩灯显示花型模块,与此同步,当按键S2有闭合时,程序中调用延时程序程序时,给延时参数赋值上另一种值,是延时程序延时时间发生变化,以达到不同快慢节奏闪烁彩灯。
5系统调试
5.1系统仿真
Proteus软件是英国Labcenter electronics公司出版EDA工具软件件中华人民共和国。它不但具备其他EDA工具软件仿真功能,还能仿真单片机及外围器件。它是当前最佳仿真单片机及外围器件工具。虽然当前国内推广刚起步,但已受到单片机兴趣者、从事单片机教学教师、致力于单片机开发应用科技工作者青睐。Proteus是世界上知名EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品完整设计。是当前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一设计平台,其解决器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,即将增长Cortex和DSP系列解决器,并持续增长其她系列解决器模型。在编译方面,它也支持IAR、Keil等各种编译器。
Proteus可仿真各种电路和IC,并支持单片机,元件库齐全,使用以便,是不可多得专业单片机软件仿真系统。本次实验咱们采用Proteus软件进行仿真。仿真电路图如图5.1所示。
图5.1 仿真电路图
5.2仿真调试
本系统调试是把在Keil里面写好程序通过编译不浮现任何错误后将生成后缀名为.HEX文献加载到AT89C52单片机中。接下来咱们将在Proteus软件进行软硬件结合调试。
如下是Proteus仿真时状况。
图5.2 程序仿真
6系统功能、指标参数
依照课程设计规定,系统应实现如下功能:
彩灯需3种演示花型:
1、8路彩灯同步亮灭,此周期每次重复10次。
2、依次循环放光(每次只有一路亮,持续循环10次)。
3、8路彩灯每次4路亮,4路灭,且亮灭相间,交替亮灭,此周期每次重复10次。
其他规定:
1、三种花型轮流显示,但显示顺序可设立;
2、灯亮灭时间间隔从25ms~2S可调。
下面是在实验室电路板实物上调试成果,如表6.1所示。
表6.1 测试成果及状态分析
序号
测试项目
测试办法
测试成果
行状态分析
1
与否能正常工作
打开仿真电路图,加载程序,点击开始运营。
无任何错误提示
仿真电路正常
2
彩灯花型控制
运营仿真,按下模式选取按键,观测彩灯显示效果。
相应按键按下,彩灯浮现不同花型。
本设计实现了多控制LED彩灯循环。
3
节奏快慢控制
运营仿真,按下频率选取按键。
相应按键按下,彩灯浮现不同闪烁频率。
本设计实现了多闪烁LED彩灯循环。
经以上实验测试证明,能实现本设计系统规定预期功能。
7结论
本次课程设计对八路彩灯控制系统运营成果感觉比较满意,它实现了咱们规定达到目的,例如能按一定期间进行彩灯变换。并且变换不是很单一,并且能变换闪烁频率。让身处其中群众有一种酣畅淋漓感觉。但是在设计中也浮现了某些问题。例如控制开关电路无法控制3种输出模式;无法顺利实现频率转换等等。电压控制不是很稳定,导致灯泡亮度不明显。这些都需要后来工作当中需要注意并解决问题。
通过这次课程设计,使我更加夯实地掌握了关于数电方面知识。在设计过程中,虽然遇到了许多问题,但是通过查资料,思考,和同窗一起讨论,找林教师解惑答疑,找出理解决办法。从中也充分暴露了咱们所学方面知识欠缺和经验局限性。
在课程设计过程中,咱们不断地发现错误,改正错误,从中学到了许多东西,更详细地掌握了各种芯片作用及连接办法,从中不断领悟、获取。在此后社会发展和学习实践过程中,咱们也要不懈努力,遇到问题不能退缩,而是发现问题所在,然后逐个解决问题。只有这样,才干在往后道路上披荆斩棘,获得成功,得到社会和人们承认。
8总结与体会
在设计过程中,咱们不但培养了独立思考、动手操作能力,还学会了许多学习办法,真是受益匪浅。同步也学到了许多课本上没有东西。我深深地体会到只有理论知识是远远不够,只有把所学理论知识与实践相结合起来,才干地理解所学知识,做到融会贯通,从而提高自己能力。
团结就是力量。在实验过程中,和同窗一起思考、讨论,让咱们合伙更有默契。在后来工作中,团队协作精神十分重要,人们一起合伙,获得成功,然后一起分享成功喜悦!
同步,在此感谢咱们林教师,感谢你对咱们耐心辅导,每次都是你在咱们众多错误中精准地找出核心问题,从而使错误迎刃而解,咱们小小成功背后是你大爱。
9参照文献
[1]徐学彬.《电子技术实验指引书》.成都:西华大学电工电子实验实习中心,
[2]康华光.《电子技术基本 数字某些》第五版.高等教诲出版社,
[3]彭军.《数字电路设计与制作》.科学出版社
[4]黄培根.《multsim 7 &电子技术实验》.浙江大学出版社
[5]陈永强.《模仿电子技术》.人民邮电出版社,
[6]陈正义.单片机控制实习[M].北京:人民邮电出版社,
附录1:有关设计图
原理图
PCB板图
附录2:程序代码
#include <reg52.h>
#include <intrins.h>
sbit key1=P0^0;
sbit key2=P0^1;
//--声明全局函数--//
void Delay10ms(unsigned int c);
void delayms(unsigned int x);
//延时10ms
/*******************************************************************************
* 函 数 名 :main
* 函数功能 :主函数
* 输 入 :无
* 输 出 :无
*******************************************************************************/
void main(void)
{
unsigned char LED;
int i;
int j=0;
int k;
int d;
int x;
int m;
while(1)
{
x=100-m;
P1=0xff;
if(key1==0) //用作彩灯模式选取
Delay10ms(10);
if(key1==0)
{
j++;
switch(j)
{ case 1:
{
LED= 0xfe;
for(i=0;i<10;i++)
{
P1 = LED;
delayms(x);
// LED=LED<<1;
LED= _crol_(P1,1);
}
break;
}
case 2:
{
for(k=0;k<=9;k++)
{
P1=0xff;
delayms(x);
P1 =0x00;
delayms(x);
}
break;
}
case 3:
{
for(d=0;d<=4;d++)
{
P1=0xaa;
delayms(x);
P1=0x55;
delayms(x);
}
}
j=0;
break;
}
}
if(key2==0) //用作彩灯亮灭时间设立
Delay10ms(15);
if(key2==0)
{
m=m+40;
if(m>80) m=0;
}
}
}
/*******************************************************************************
* 函 数 名 :Delay10ms
* 函数功能 :延时函数,延时10ms
* 输 入 :无
* 输 出 :无
*******************************************************************************/
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a,b;
//--c已经在传递过来时候已经赋值了,因此在for语句第一句就不用赋值了--//
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
void delayms(unsigned int x) //误差 0us
{
unsigned char a,b;
for (;x>0;x--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
展开阅读全文