LED灯循环显示速度的遥控器控制设计课程设计论文.docx
《LED灯循环显示速度的遥控器控制设计课程设计论文.docx》由会员分享,可在线阅读,更多相关《LED灯循环显示速度的遥控器控制设计课程设计论文.docx(23页珍藏版)》请在冰豆网上搜索。
LED灯循环显示速度的遥控器控制设计课程设计论文
单片机原理及接口技术
设计说明书
LED灯循环显示速度的遥控器控制设计
一.课程设计的目的
1.进一步熟悉和掌握单片机的结构及工作原理。
2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术。
4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
5.通过完成一个包括电路设计和程序开发的完整过程,了解开发一单片机应用系统的全过程,为今后从事相应开发打下基础。
二.课程设计的基本要求
1.认真认识设计的意义,掌握设计工作程序,学会使用工具书和技术参考资料,并培养科学的设计思想和良好的设计作风。
2.提高模型建立和设计能力,学会应用相关设计资料进行设计计算的方法。
3.提高独立分析、解决问题的能力,逐步增强实际应用训练。
4.课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。
5.课程设计说明书封面格式要求见《天津城市建设学院课程设计教学工作规范》附表1。
三.课程设计具体要求
a)要求每位同学独立完成设计任务。
b)原理图设计
1.原理图设计要符合项目的工作原理,连线要正确。
2.图中所使用的元器件要合理选用,电阻、电容等器件的参数要正确标明。
3.原理图要完整,CPU、外围器件、外扩接口、输入/输出装置要一应俱全。
c)程序调计
1.根据要求,将总体功能分解成若干个子功能模块,每个功能模块完成一个特定的功能。
2.根据总体要求及分解的功能模块,确定各功能模块之间的关系,设计出完整的程序流程图。
d)程序调试
1.编写相关程序,并进行仿真。
2.将程序下载到单片机,进行运行调试。
e)设计说明书
1.原理图设计说明
简要说明设计目的,原理图中所使用的元器件功能及在图中的作用,各器件的工作过程及顺序。
2.程序设计说明
对程序设计总体功能及结构进行说明,对各子模块的功能以及各子模块之间的关系作较详细的描述。
3.画出工作原理图,程序流程图并给出相应的程序清单。
四.设计任务
STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计LED灯循环显示速度的控制电路。
一是设计74LS273扩展8个LED显示;二是设计遥控接收电路,作为LED循环显示速度的参数输入;三是设计根据不同的输入参数改变LED循环显示速度的程序;四是扩展MAX7219或LCD1602作为相关输入参数的显示。
目录
第1章.总体设计方案1
1.1主要设计模块概述1
1.1.1关于AT89C51的介绍1
1.1.2关于遥控器工作方式的介绍1
1.1.3LED灯循环及速度值的显示2
1.2设计实现原理3
1.2.1实现设计的大体思路3
1.2.2总体思路流程框图4
第2章硬件电路设计5
2.1LED小灯点亮模块5
2.2LCD1602显示数据模块5
2.3完整电路图设计6
第3章软件编程设计7
3.1各模块程序设计7
3.1.1LED小灯的循环点亮编程7
3.1.2遥控器编程8
3.2总的整合程序9
第4章实际应用结果10
4.1模块仿真10
4.1.1LED小灯循环显示仿真图:
10
4.1.2LCD1602仿真显示10
4.2总图仿真结果11
第5章课设心得体会12
附录Ⅰ13
附录Ⅱ14
附录Ⅲ18
附录Ⅳ19
参考文献21
第1章.总体设计方案
1.1主要设计模块概述
本次课程设计要求以AT89C51作为主控芯片,以LCD1602液晶为显示,通过遥控器控制来达到使LED流水灯的流动速度改变。
1.1.1关于AT89C51的介绍
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
在本次课程设计里,主要用到了两个I/O端口,分别是P0口和P1口。
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
根据本次课设的需求,我们让P0做主控芯片的输出端口和LCD的输入端口,通过这个端口,将数据传送到LCD1602液晶上,使该液晶显示当前速度直。
至于LED流水灯的显示效果,我们就通过P1口来达到数据传送的目的。
我们通过软件编程来实现LED小灯的循环和显示。
1.1.2关于遥控器工作方式的介绍
针对课程设计的要求,我们采用红外遥控器,通过给外部中断一个开中断信号并且经过红外接收模块处理后使外部信息以不均匀的时序码形式传输给主控芯片,已达到对LED等亮度的控制.红外遥控器的发送数据要依据规定的数据格式。
具体的发送格式如下图:
图1.1遥控数据发送格式
遥控器的接收数据部分是将从遥控器接收到的数据信号进行放大之后在传输到主控芯片里进行下一步的操作。
1.1.3LED灯循环及速度值的显示
(1)根据课设要求,我们用IED灯来客观的反映在不同的档位下小灯的不同的循环速度。
LED(LightEmittingDiode)即发光二极管,它是一种固态的半导体器件,可以直接把电转化为光。
LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。
它通过将电压加在LED的PN结两端,使PN结本身形成一个能级(实际上,是一系列的能级),然后电子在这个能级上跃变并产生光子来发光的。
所以我们通过软件编程在程序中利用中断程序来控制相邻的小灯之间亮灯的交换需要等待的时间来达到不同的循环点亮速度的效果
(2)针对小灯不同循环速度显示不同数值的要求,我们应用LCD1602来显示。
LCD1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值.它与AT89C51主控芯片链接如图1.2所示:
图1.2LCD1602连接主控芯片
LCD1602的程序写入需要遵守一系列的时许规律,具体如图1.3:
图1.3LCD1602写操作时序
根据图1.3对需要显示的数据(8位二进制代码)进行写程序和命令程序的编写就可以顺利的在显示屏上的看到想要显示的数据。
1.2设计实现原理
1.2.1实现设计的大体思路
首先,我们用红外遥控器发出一段NEC格式的信号,将信号发送给接收端,接收端将信号放大并将信号传送至外部中断INT0口,通过软件编程对时序信号进行解码,然后将解码后的数据送入循环程序,编程使这个数据能控制循环程序中进入中断的次数,中断在程序中循环的次数不同,那么小灯的循环点亮的时间间隔也发生变化,例如:
当遥控器送入程序一个”2”时,程序中的中断会循环两次下一个小灯亮,让每次循环的时间固定为50ms的话,那么两次循环就是100ms,也就是说上一个小灯两100MS后会熄灭,紧接着下一个小灯就点亮。
当遥控器送入程序一个”3”时,程序中的中断会循环三次下一个小灯才会亮,那么上一个小灯和下一个小灯熄灭和点亮交换的时间就会变成150ms。
通过这种对中断次数控制的方法,我们就可以是小灯的循环快慢发生明显的变化,最后,通过编程,将两个小灯高低电平反转的时间间隔并依据LCD时序图进行软件编程是这个时间能显示在LCD1602液晶屏上。
1.2.2总体思路流程框图
图1.4设计原理框图
第2章硬件电路设计
2.1LED小灯点亮模块
对与LED小灯点亮部分,我们采用灌电流法将小灯连接在P1口,灌电流法就是从外部被动的将电流灌入小灯使小灯发亮,这种方法对硬件的条件需求低,而且工作更加稳定。
作图方法是在每个小灯后面加一个300欧的电阻,在导通方向加一个电压源。
具体电路图如2.1图:
图2.1LED小灯点亮电路图
2.2LCD1602显示数据模块
LCD1602的显示受”CLK”和”DIN”两个功能拐脚控制,CLK是时钟信号,DIN是写数据和写命令信号,但是输入命令还是数据,要根据时钟信号和写操作时序(见图1.3)来确定.在本课程设计中,LCD1602的显示电路图如图2.2:
图2.2LCD1602显示电路图
2.3完整电路图设计
我们将以上所有模块的设计思路综合起来就可以得到完整的设计电路图,总的电路图如图2.3:
图2.3设计电路图总图
第3章软件编程设计
3.1各模块程序设计
3.1.1LED小灯的循环点亮编程
(1)程序编写大体思路框图:
图3.1编程设计框图
(2)程序如下:
#include
#include
#defineucharunsignedchar
ucharclockNum,flag;
ucharfixTime;
voidinit()
{
clockNum=flag=0;
fixTime=6;
P1=0xfe;
TMOD=0x01;
TH0=0x4c;
TL0=0x00;
ET0=1;
TR0=1;
EA=1;
}
voidmain()
{init();
while
(1)
{if(flag==1)
{P1=_cror_(P1,1);//循环移位
flag=0;
}
}
}
voidT0_Interrupt_Process()interrupt1
{TH0=0x4c;
TL0=0x00;
if(clockNum++==fixTime)
{flag=1;
clockNum=0;
}
}
3.1.2遥控器编程
(1)遥控器编程思路框图:
图3.2遥控器编程框图
(2)遥控器编程
程序编写量较大,见附录Ⅱ
3.2总的整合程序
程序如下:
#include
#include"1836.h"
#defineucharunsignedchar
#defineuintunsignedint
voiddelayms(ucharmax)
{
uchari,j;
for(i=max;i!
=0;--i)
for(j=110;j!
=0;--j);
}
voidinit()
{
init_1836();
}
voidmain()
{
init();
while
(1);
}
主程序中的子程序见附录Ⅰ到Ⅳ。
第4章实际应用结果
4.1模块仿真
4.1.1LED小灯循环显示仿真图:
如下图所见,此时LED小灯在自右至左无限循环,小灯的循环速度是经过30