资源描述
单片机LED灯设计说明书
31
2020年4月19日
文档仅供参考,不当之处,请联系改正。
《单片机原理及应用》
课程设计说明书
设计题目:基于单片机的LED灯控制器的设计
学 院:xxx
专 业:车辆工程
设 计 者:xxx
学 号:xxxxxxx
指导老师:xxx
设计时间: 11月9日~ 11月28日
《单片机系统课程设计》任务书
一、 目的意义
《单片机原理及应用》是高校工程专业的一门专业基础课,该门课程具有很强的实践性。经过课程的学习,使学习掌握基本概念、基本理论和基础技能,为今后从事相应的生产设计和科研工作打下一定的基础。因此,除课程的理论教学和试验教学外,课程设计也是一个必要和重要的实践教学环节。经过单片机系统课程设计,进一步培养学生理论联系实际的能力,学会正确地分析工程实际问题,善于查阅参考文献,准确地选择相应的数据、参数,具备全面地解决实际问题的素质,同时课程设计也为今后毕业设计打下基础。
二、 设计时间、地点、班级
时间:第12、13周(二周)
地点: 三教433、426
班级: 13车辆3班 30人
三、 设计内容
(9)基于单片机的LED灯控制器的设计
1、功能描述
以单片机为核心,设计一个LED灯控制器:(P1口可选,也可用其它I/O口,16灯)
P1.2——开始,按此键则灯开始流动(由上而下);
P1.3——停止,按此键则停止流动,所有灯为暗;
P1.4——闪烁,按此键则全部灯闪烁;
P1.5——下,按此键则灯由下向上流动。
本题目本质上是由按键控制功能的流水灯,LED工作的方式经过键盘的扫描实现。其中的LED可采取共阳极接法,经过依次向连接LED的 I/O口送出低电平,可实现题目要求的功能。
目 录
《单片机系统课程设计》任务书…………………………………………………………1
摘要…………………………………………………………………………………………………3
1总体设计方案……………………………………………………………………………………3
1.1 设计原理及相关说明………………………………………………………………………3
1.2 总体设计框图………………………………………………………………………………3
2 各芯片设计及对其的调用………………………………………………………………………3
2.1 AT90C51单片机主控模块………………………………………………………………3
2.2 LED灯模块…………………………………………………………………………………5
2.3 键盘接口…………………………………………………………………………………6
3 系统软件程序………………………………………………………………………………6
3.1 LED灯控制器程序……………………………………………………………………………64 调试……………………………………………………………………………………………9
4.1 调试步骤…………………………………………………………………………………9
4.2 性能分析…………………………………………………………………………………9
4.2.1 按下P1.2开始,灯开始流动(从上到下)………………………………………9
4.2.2 按下P1.3开始,灯全灭………………………………………10
4.2.1 按下P1.4开始,灯全亮,开始闪烁………………………………………11
4.2.1 按下P1.4开始,灯开始流动(从下到上)………………………………………12
结论………………………………………………………………………………………………13
附录1……………………………………………………………………………………………14
附录2……………………………………………………………………………………………15
附录3……………………………………………………………………………………………18
附录4……………………………………………………………………………………………19
附录5……………………………………………………………………………………………22
基于单片机的LED灯控制器的设计
作者:邢浩男 指导老师:吴敏
(安徽农业大学工学院 车辆工程 )
摘要:该设计是基于AT89C51单片机系统,采用共阳极接法,经过一依次向连接LED的I/O口输出低电平,能实现流水灯开始或停止的功能,具有调压,稳压,检测故障等特点。
关键词:单片机 LED灯 控制器
1.总体设计方案
1.1设计原理及相关说明
1.2总体设计框图
LED灯控制器设计框图如图1所示:
电源电路
一、
单片机
多路LED灯
复位电路
晶振电路
控制按键
图1 LED灯控制器设计框图
2.各芯片的设计及其调用
2.1 AT90C51单片机主控模块
单片机(SCM)是单片微型计算机(Single Chip Microcomputer)的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。随着SCM在技术上、体系上不断扩展其控制功能,国际上已经采用MCU(MicroControllerUnit)代替单片机的名词。它的最大优点是体积小,可放在仪表内部。但存储量小,输入输出适配器简单,功能较低。当前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。近年来,AT89C51在中国非常流行,它最大的特点是内部有能够多次重复编程的闪烁ROM,而且闪烁ROM能够直接用编程器来擦写(电擦写),使用起来比较方便。
一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM﹑RAM﹑I/O口﹑定时/记数器﹑中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统配置,既要按照系统功能要求配置外围设备,如键盘显示器﹑打印机﹑A/D﹑D/A转换器等,又要设计合适的接口电路。具体连接图如图1.
图1 主控模块
2.2 LED灯模块
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器能够配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要经过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。具体LED灯接图如图2。
2.2.1 AT89C51最小系统
AT89C51最小系统中XTAL1、XTAL2端接上晶振及两个谐振电容,在RESET端接上相应的电阻、电容,如需要按键复位,加上按键即可组成一个最小系统,按要求通电后,系统就能够工作了。
图2 LED灯模块
2.3 键盘接口
键盘接口电路如图3,本次设计中,按键有4个,每个按键各占用一根I/O线,各按键相互独立,彼此的工作状态互不影响,STC单片机自带上拉电阻因此无需外接上拉电阻,用查询法完成按键功能。
图3 键盘接口电路
3.系统软件设计
3.1 LED灯控制器程序
在单片机控制系统中,大致上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。
为了完成上述任务,在进行软件设计时,一般把整个过程分成若干个部分,每一部分叫做一个模块。把一个程序分成具有多个明确任务的程序模块,分别编制、调试后再把它们连接在一起形成一个完整的程序,这样的程序设计方法称为模块化程序设计。所谓“模块”,实质上就是能完成一定功能,并相对独立的程序段,这种程序设计方法称为模块程序设计法。
模块程序设计法的主要优点是:
(1)单个模块比起一个完整的程序易编写、调试及修改。
(2)程序的易读性好。
(3)程序的修改可局部化。
(4)模块能够共存,一个模块能够被多个任务在不同条件下调用。
(5)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。
本系统软件采用模块化结构,由主程序,正向流动、反向流动和延时等子程序构成具体见图4.
N
N
N
N
Y
开 始
长跳转到Start
P1.0=0?
Y
Y
Y
P1.0=0?
P1.0=0?
P1.0=0?
灯开始流动(至上而下)
停止
灯由下而上流动
灯由上而下流动
图4 LED灯程序流程图
4 调试
4.1 调试步骤
调试分为硬件调试和软件调试。硬件调试主要是检查硬件电路是否有短路、断路和虚焊等,首先接上电源,电源的指示灯亮了之后,检测一下单片机的电源脚有没有电源输入,如果有这说明焊接无误,然后能够用万用表检查各个元器件的管脚之间的焊接,检查过程中需要细心和耐心。硬件调试无误后,进行软件调试。软件调试能够针对子程序调试,测试其是否正常工作,例如流水灯,LED灯闪烁等,最后把所有的程序作为一个整体来测试。
4.2 性能分析
将程序烧入单片机后,在proteus软件中进行仿真。在这次LED灯控制器的设计中,LED灯能够按照按键的控制进行从上到下,停止,闪烁,从下到上,在程序。
4.2.1按下P1.2开始灯开始流动(从上到下)
4.2.2按下P1.3灯全灭
4.2.2按下P1.4灯全亮,开始闪烁
4.2.2按下P1.5灯开始流动(从下到上)
结 论
在做这次课程设计的整个过程中,我明白了很多东西。可能我们理论知识学的还不错,但真正的动起手来,却常常力不从心,这就是我们常犯的眼高手低的毛病,但还是需要良好的理论知识做基础。从刚开始的搜集资料,我就有点慌了,总觉得自己准备的不够好,无法顺利完成任务,但在老师和同学的帮助下,慢慢的步入轨道。虽然毕业设计将要接近尾声,我也尽力的想要去做好毕业之前的最后一次实践课,但由于某些原因,有些元器件没能经过软件正常工作,这次设计的电子万年历没能达到我们预想的效果,只能显示部分功能。这也证明了我以后要学习的东西还有很多,要继续努力,不断地汲取新的知识并运用到实际中,在实践中锻炼自己,全方位的提高自己。
附录1 系统电路原理图
附录2 系统程序清单
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit Key1=P1^2; //按键1~4
sbit Key2=P1^3;
sbit Key3=P1^4;
sbit Key4=P1^5;
uchar flag; //标号
uchar num[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //开第1~8个灯
/*
**************************
* 延时 z 毫秒ms
**************************
*/
void Delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*
**************************
* 亮第 n 个灯
**************************
*/
void LED(uchar n)
{
uchar x,y;
n--; //n减1
x=n/8; //第几个锁存器
y=n%8; //第那个灯
switch(x) // 打开第一个锁存器 关锁存器
{ //开锁存器 关所有灯 关锁存器 亮第num【y】个灯
case 0: P2=0xff; P0=0xff; P2=0x00; P2=0x01; P0=num[y]; P2=0x00; break; //第0-个锁存器
case 1: P2=0xff; P0=0xff; P2=0x00; P2=0x02; P0=num[y]; P2=0x00;P0=0xff; break; //第1个锁存器
}
}
/*
**************************
* 按键检测
**************************
*/
void Key_Detection(void)
{
if(Key3==0 |Key4==0 |Key1==0 | Key2==0) //按键1按下或者 按键2或者按键3或按键4
{
Delay_ms(5); //消抖
if(Key1==0) //按键1按下
{
while(!Key1); //松手检测
flag=1; //标号至1
}
if(Key2==0) //按键2按下
{
while(!Key2); //松手检测
flag=2; //标号至2
}
if(Key3==0) //按键3按下
{
while(!Key3); //松手检测
flag=3; //标号至3
}
if(Key4==0) //按键按下
{
while(!Key4); //松手检测
flag=4; //标号至4
}
}
}
/*
**************************
* 主函数
**************************
*/
void main(void)
{
uchar i;
while(1)
{
Key_Detection(); //按键检测
if(flag==1) //第一个键按下 正循环亮
{
LED(i); //亮第i个灯
i++; //i加1
if(i==17) i=0; //如果 i等于17 清零
Delay_ms(200); //延时200毫秒
}
if(flag==2) //第二个键按下 停止
{
P2=0xff; //开锁存器
P0=0xff; //把灯全灭
P2=0x00; //关锁存器
}
if(flag==3) //第三个键按下 闪烁
{
P2=0xff; //开锁存器
P0=0x00; //所有灯全亮
P2=0x00; //关锁存器
Delay_ms(100);//延时100毫秒
P2=0xff; //开锁存器
P0=0xff; //所有灯全灭
P2=0x00; //关锁存器
Delay_ms(100);//延时100毫秒
}
if(flag==4) //第四个键按下 反循环亮
{
LED(i); //亮第i个灯
i--; //i减1
if(i==0) i=17; //如果i=0把i=17
Delay_ms(200); //延时200 毫秒
}
}
}
附录3 仿真效果图
附录4 实物演示效果图
附录5 元件清单
器件名称
型号
个数
单片机
AS89C51
1个
按键
5个
电阻
5.1K
1个
电阻
1K
1个
电解电容
10uf
1个
晶振
12MHZ
1个
发光二级管
16个
IP座
40管脚
1个
万能板
1个
+5V电源
1个
导线
若干
展开阅读全文