C语言彩灯闪亮实训论文.docx
《C语言彩灯闪亮实训论文.docx》由会员分享,可在线阅读,更多相关《C语言彩灯闪亮实训论文.docx(16页珍藏版)》请在冰豆网上搜索。
C语言彩灯闪亮实训论文
机电工程学院
课程设计报告书
题目:
多控制多闪烁LED彩灯
专业:
机电一体化
班级:
12306班
学号:
12022758
学生姓名:
熊洁
指导教师:
魏光
2012年12月6日
摘要
功能简介:
本文介绍了一种简易LED彩灯控制系统的软硬件设计过程,本方案以AT89C51单片机作为主控核心,按键控制电路、彩灯显示电路以及单片机最小系统等模块组成的核心主控制电路。
利用软件编程烧录程序到单片机来实现对LED彩灯进行控制,本系统亮灯模式多,用户根据操作提示可以随意变换想要的闪烁方式和控制彩灯的闪烁频率。
本系统具有电路结构简单、易操作、硬件少、体积小、成本低、低能耗等优点,具有一定的实用和参考价值。
ABSTRACT:
目录
摘要I
AbstractII
1前言
1.1课题开发背景
1.2课题研究的目的和意义
1.3课题的主要研究工作
2系统硬件设计及说明
2.1部分硬件方案论述
2.2硬件电路图
2.3元件清单
2.4AT89C51
3系统软件设计
3.1程序
3.2程序描述
4总结与展望
5参考文献……………………………………………………………………………
1.前言
1.1课题开发背景
随着人们生活水平的提高,环境的不断改善和美化,在许多场合可以看到很多彩色的霓虹灯。
特别是当今充满竞争的时代,各地政府为吸引游客和投资者,在城市的沿街、沿道、沿河、沿线等地用霓虹灯造景,实施"亮化工程",以美化环境、树立城市形象。
但是目前市场上各种式样的LED彩灯多半是采用全硬件电路实现,电路结构复杂、功能单一,这样一旦制成成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。
同时这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。
此外从功能上来看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。
因此有必要对现有的彩灯控制器进行改进
1.2课题研究的目的和意义
1.设计目的
1)了解单片机的基本原理以及基本应用;
2)提高动手制作单片机开发板的能力;
3)掌握基本I/O口的输入输出方法;
4)掌握中断的处理方法以及编程方法;
5)掌握焊接单片机开发板所需要的最基本的最小系统电路。
2.立题意义
通过这个实验,能够对同学们的动手能力有所提高和培养,提高同学对单片机的基本原理的理解,学会一些单片机的简单应用。
1.3课题的主要研究工作
本设计以AT89C52单片机为核心并用它来控制发光二极管双灯点亮循环的实验装置,用AT89C52单片机控制16个发光二极管发光,实现亮点的循环移动。
通过Proteus软件设计、仿真、PCB制版,并能掌握通过软件控制发光二极管的思路和技巧。
这次设计重点就在于利用单片机的知识去控制系统的运行。
彩灯控制器大致可分为两种方案实现。
一种是利用电子电路装置控制,另一种是采用单片机控制。
方案一:
根据设计任务要求介绍的彩灯控制电路的基本组成,可以确定彩灯控制器应由振荡电路、计数/时序分配电路、移位位寄存器和彩灯显示五部分组成。
其框图如图1-1所示。
方案二:
本方案主要是通过对基于单片机的多控制、多闪烁方式的LED彩灯循环系统的设计,来达到本设计的要求。
其硬件构成框图如图1-2所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED发光二极管和5V直流电源电路组成。
图1-2 单片机彩灯循环控制系统硬件框图
此设计方案中单片机的P1口接5路按键控制电路,实现彩灯花型的切换功能;单片机的P3.7引脚接上一个按钮开关以实现对彩灯闪烁频率的控制,即实现了快慢两种节拍实现花型的变换;单片机上的P2口接八路LED发光二极管组成彩灯电路,显示彩灯循环情况。
结合设计任务书比较以上两种方案可知:
利用电子电路装置控制,其电路不很复杂,制作相对较容易点,成本也相对较低,但可调性差,亮灯模式少而且样式单调,达不到设计任务要求或实现困难。
采用单片机控制其优点是电路集成度高,工作原理简单,清晰明了,自定义编程,控制的图案花样多,移植性好等。
综上,显然方案二各方面优越于方案一,以及为了体现专业优势,本次设计采用第二种方案。
2.系统硬件设计及说明
2.1部分硬件方案论述
直流稳压电源电路
对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源电路的稳定可靠是系统平稳运行的前提和基础。
电子设备除用电池供电外,还采用市电(交流电网)供电。
通过变压、整流、滤波和稳压后,得到稳定的直流电。
直流稳压电源是电子设备的重要组成部分!
本项目直流稳压电源为+5V。
如下图所示:
直流稳压电源的制作一般有3种制作形式,分别是分立元件构成的稳压电源、线性集成稳压电源和开关稳压电源。
下图稳压电源采用的是三端集成稳压器7805构成的正5V直流电源。
2-1三端固定式集成稳压电源电路图
AT89C51单片机的工作电压范围:
4.0V—5.5V,所以通常给单片机外接5V直流电源。
由于时间关系,此处用3节1.5V的干电池供电,在此不在赘述此稳压电源电路图原理。
单片机最小系统
要使单片机工作起来,最基本的电路的构成由单片机、时钟电路、复位电路等组成。
单片机最小系统如下图2-2所示。
时钟电路:
本系统采用单片机内部方式产生时钟信号,用于外接一个12MHz石英晶体振荡器和2个30pF微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入内部的时钟电路。
复位电路:
确定单片机工作的起始状态,完成单片机的启动过程。
单片机系统的复位方式有上电自动复位和手动按键复位。
本设计采用手动按键复位,该复位方式同样具有上电自动复位功能。
电路如下图所示。
2-2单片机最小系统
LED彩灯显示电路
LED彩灯显示电路(如图所示)实际上是由8个发光二极管和8个电阻构成的电路。
发光二极管与电阻对应串联,然后接在与之相对应的P2口上。
通过软件编程对P2口输出高低电平来实现不同的闪烁花型。
由于发光二极管的导通电压一般为1.7V以上,另外,他的工作电流根据型号不同一般为1mA到30mA,电阻选择范围100欧姆~3千欧姆在此我们这里选用560欧姆的电阻。
2-3LED彩灯显示电路
2.2硬件电路图
按键控制电路
按键控制电路(如图2-4所示)是由6个按键开关构成的。
他们分别接在单片机AT89C51的P1接口和P3.0口,Key1﹍Key5接在P1.0﹍P1.4,Key6接在P3.7上。
为了一对一的控制LED灯的闪烁方式。
当按下开关Key1时,LED彩灯系统闪烁第一种彩灯花型。
当按下开关Key2时,LED灯系统闪烁第二种闪烁方式……
当闭合Key6时,彩灯闪烁节拍变慢。
2-4键盘控制电路
串口电路
串口电路为单片提供与PC机连接端口,为单片机提供下载程序到单片机程序存储器中。
串口原理图如图2-5所示。
串口也称串行通信接口,RS-232是目前最常用的一种串行通讯接口,由于其形状和针脚数量的原因,其接头又被称为DB9接头。
RS-232针脚定义:
2RXD←ReceiveData接收数据、3TXD→TransmitData发送数据、5GND—SystemGround系统接地,一般就用到这几个引脚。
2-5串口电路
2.3 元件清单
1.φ3(红绿各8个)16
2.1/4W470Ω16
3.排针1
4.排线1
5.电路板1
4 at89c51单片机简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
3.系统软件设计
3.1 程 序
#include
inti=0,j=0,g=0;
LEDIndex=0;
unsignedchartable[16]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff};
unsignedchardisp_data;
sbitdisp=P3^1;
voiddelay(intms)
{
inti1,j1;
for(i1=0;i1{
for(j1=0;j1<1141;j1++);
}
}
voiddip(inti)
{
PCON=0x00;
SCON=0x00;
ES=0;
disp_data=table[i];
SBUF=disp_data;
while(TI==0)
TI=0;
for(j=0;j<3;j++)
{disp_data=0xff;
SBUF=disp_data;
while(TI==0)
TI=0;
}
delay(10);
}
voidLEDShow(unsignedintLEDStatus)
{
P0=(LEDStatus&0x00FF);
P1=((LEDStatus>>8)&0x00FF);
}
voidMode_1(void)
{
LEDShow(0xfffff<LEDIndex=(LEDIndex+1)%17;
delay(10);
}
voidMode_2(void)
{
unsignedinta=0x77,b,c;
for(i=0;i<4;i++)
{
b=a>>7;
c=a<<1;
a=c|b;
P0=a;
P1=a;
delay(15);
}
}
voidMode_3(void)
{unsignedinta;
P0=0xFF;
P1=0x00;
a=0xff;
for(j=0;j<9;j++)
{
P0=a;
a=a<<1;
delay(15);
}
a=0xff;
for(j=0;j<9;j++)
{
P1=~a;
a=a<<1;
delay(15);
}
}
voidMode_4(void)
{unsignedinta;
P1=0xFF;
P0=0x00;
a=0xff;
for(j=0;j<9;j++)
{
P0=~a;
a=a<<1;
delay(15);
}
a=0xff;
for(j=0;j<9;j++)
{
P1=a;
a=a<<1;
delay(15);
}
}
voidMode_5(void)
{unsignedinta,b;
P0=0xfe;
delay(10);
a=0x02;
b=0x80;
P0=~a;
P1=~b;
delay(10);
for(j=0;j<7;j++)
{a=a<<1;
b=b>>1;
P0=~a;
P1=~b;
delay(10);
}
}
voidISR0(void)interrupt0
{g++;
if(g==6)
g=1;
dip(g);
}
voidmain(void)
{
IT0=1;
EX0=1;
EA=1;
dip
(1);
while
(1)
{
switch(g)
{
case1:
Mode_1();break;
case2:
Mode_2();break;
case3:
Mode_3();break;
case4:
Mode_4();break;
case5:
Mode_5();break;
default:
{g=1;Mode_1();}break;
}
}
}
3.2 程序叙述
程序流程图:
中断程序:
主程序:
四、项目设计结果分析(分析试验过程中获得的数据、波形、现象或问题的正确性和必然性,分析产生不正确结果的原因和处理方法)
开始时编写的程序思想是在主程序不停等待中断,在中断中执行彩灯模式的死循环模式,再来中断后响应中断跳出循环执行下一个模式,这样不断的通过中断进入死循环,不停的中断套中断。
后把程序烧到单片机后发现不能切换模式。
最后反观程序才明白一个中断时不能不停嵌套的。
4.总结与展望
在经过一周的不懈努力中,终于完成了论文设计任务。
通过本设计锻炼了我们的实践能力,也是对以后我们实际工作能力的训练和考察过程。
现在是一个高科技的时代,单片机的应用无处不在,这更坚定了我要学好单片机的决心。
本设计本身就比较简单,整个设计的过程中每一步都是自己亲自做过的,在经过遇到问题,思索问题到解决问题的过程中,收获是最多的。
以往没有注意到的问题,都在这一次的毕业设计中得以体现,这培养了我的细心,耐心和专心。
我觉得能够在这次的毕业设计中学到很多的东西,以往不注意的细节,在这一次中是必须让自己去注意的。
也是我这三年来所学到知识的一个体现。
我深深知道,每一次的学习实践环节都是那么的来之不易,都是通过老师的深思熟虑后,才给我们定下目标。
然后让我们在知识的海洋里翱翔,让我们随着年龄的增长不断的扩充自己的知识领域,也逐渐成熟,逐渐长大,老师同时也教导我们逐渐成为一个能够为身边的人,为家庭,为国家做出点点贡献的人,教导我们学会感恩。
所以,我在这次的论文设计中,认真对待每一个过程,希望自己的认真,自己最后的毕业设计的成果能够回报老师这么多年来的教导,这么多年的奉献。
感谢教导我们的所有老师。
最后,由于毕业期间,时间仓促,错误与不妥之处在所难免,敬请老师批评指正。
5.参考文献
[1] 周国运.单片机原理及应用.北京:
中国水利水电出版社,2009
[2] 陈梓城.模拟电子技术基础.北京:
高等教育出版社,2007
[3] 陈正义.单片机控制实习[M].北京:
人民邮电出版社,2006
[4] 李朝青.单片机原理及接口技术.北京:
人民邮电出版社,2006