节日彩灯控制器设计.docx

上传人:b****1 文档编号:14017402 上传时间:2023-06-20 格式:DOCX 页数:13 大小:185.63KB
下载 相关 举报
节日彩灯控制器设计.docx_第1页
第1页 / 共13页
节日彩灯控制器设计.docx_第2页
第2页 / 共13页
节日彩灯控制器设计.docx_第3页
第3页 / 共13页
节日彩灯控制器设计.docx_第4页
第4页 / 共13页
节日彩灯控制器设计.docx_第5页
第5页 / 共13页
节日彩灯控制器设计.docx_第6页
第6页 / 共13页
节日彩灯控制器设计.docx_第7页
第7页 / 共13页
节日彩灯控制器设计.docx_第8页
第8页 / 共13页
节日彩灯控制器设计.docx_第9页
第9页 / 共13页
节日彩灯控制器设计.docx_第10页
第10页 / 共13页
节日彩灯控制器设计.docx_第11页
第11页 / 共13页
节日彩灯控制器设计.docx_第12页
第12页 / 共13页
节日彩灯控制器设计.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

节日彩灯控制器设计.docx

《节日彩灯控制器设计.docx》由会员分享,可在线阅读,更多相关《节日彩灯控制器设计.docx(13页珍藏版)》请在冰点文库上搜索。

节日彩灯控制器设计.docx

节日彩灯控制器设计

铁道大学四方学院

集中实践报告书

 

课题名称

节日彩灯控制器设计

姓名

吴春慧

学号

20217762

系、部

电气工程系

专业班级

方1353-2

指导教师

牛晓燕

 

2021年7月6日

 

一、设计任务及要求:

设计任务:

设计一个节日彩灯控制器,通过按钮控制彩灯的各种变化。

设计要求:

1.设计4个按键S0、S1、S2、S3,

S0—开场按此键那么灯开场流动(由上而下);

S1—停顿,按此键那么停顿流动,所有灯为暗;

S2—上,按此键那么灯由上向下流动;

S3—下,按此键那么灯由下向上流动。

2.由按键控制功能的流水灯,其中的LED采取共阳极接法,通过依次向连接LED的I/O口送出低电平,可实现题目要求的功能。

3.要求做出实物。

二、指导教师评语:

 

三、成绩

 

指导教师签名:

年月日

 

第1章设计目的

1、掌握单片机实际系统的开发步骤。

2、熟悉节日彩灯控制器的工作原理。

3、加深对单片机汇编语言的认识和理解,并会编程。

第2章设计要求

1、设计4个按键S0、S1、S2、S3,

S0—开场按此键那么灯开场流动(由上而下);

S1—停顿,按此键那么停顿流动,所有灯为暗;

S2—上,按此键那么灯由上向下流动;

S3—下,按此键那么灯由下向上流动。

2、由按键控制功能的流水灯,其中的LED采取共阳极接法,通过依次向连接LED的I/O口送出低电平,可实现题目要求的功能。

3、要求做出实物。

第3章硬件电路设计

3.1系统构造框图

节日彩灯控制系统主要由单片机、LED显示器、开关及电源组成。

其构造框图如图3-1所示。

 

图3-1系统构造框图

3.2 STC89C52单片机

89C52本质是一种低耗高性能的微控制器。

它的主要特性是拥有8K字节的程序存储空间;512字节的数据存储空间;带4K字节的EEPROM存储空间和可直接使用串行口下载。

此外,它还是增强型的80C51单片机,有6时钟/机器周期和12时钟/机器周期可以任意选择,同时它的指令代码完全兼容传统80C51单片机。

89C52共有四个八位的并行双向口,即有32根输入输出口线。

各口的每一位均由锁存器、输出驱动器和输入缓冲器组成。

STC89C52芯片有40个引脚,引脚图如图3-2所示,各引脚功能介绍如下:

图3-2STC89C52引脚图

VCC(40引脚):

电源电压。

VSS(20引脚):

接地。

P1端口(P1.0~P1.7,1~8引脚):

P1口是一个带部上拉电阻的8位双向I/O口。

P1的输出缓冲器可驱动4个TTL负载。

对端口写入1时,通过部的上拉电阻把端口拉到高电位,这是可用作输入口。

P1口作输入口使用时,因为有部上拉电阻,那些被外部拉低的引脚会输出一个电流。

P1口特点是输出锁存器,输出时没有条件。

输入缓冲,输入时有条件,即需要先将该口设为输入状态,先输出1。

此外,P1.0和P1.1是多功能的。

P1.0还可以作为定时器/计数器2的外部输入端T2。

P1.1还可以作为定时器/计数器2的外部控制端T2EX。

P3端口(P3.0~P3.7,10~17引脚):

P3是一个带部上拉电阻的8位双向I/O端口。

P3的输出缓冲器可驱动4个TTL负载。

对端口写入1时,通过部的上拉电阻把端口拉到高电位,这时可用作输入口。

P3做输入口使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。

P3口除作为一般I/O口外,还有其他一些复用功能如下:

P3.0---RXD,串行输入口。

P3.1---TXD,串行输出口。

P3.2---INT0,外部中断0的请求。

P3.3---INT1,外部中断1的请求。

P3.4---T0,定时器/计数器0外部计数脉冲。

P3.5---T1,定时器/计数器,1外部计数脉冲。

P3.6---WR,外部数据存储器写选通。

P3.7---RD,外部数据存储器读选通。

RST(9引脚):

复位输入。

当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。

ALE(30引脚):

地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。

XTAL1(19引脚)〕:

振荡器反相放大器和部时钟发生电路的输入端。

XTAL2(18引脚):

振荡器反相放大器的输入端。

3.3 总电路图

在总电路图中,复位电路与晶振电路是单片机最小系统中包括的电路,复位连在AT89C52的9引脚,而晶振电路的两条接线分别与18、19引脚相连。

对于本次设计,还需要将8个LED灯接入电阻中,并且分别与8个限流电阻相连保护发光二极管,与单片机的P1口相连。

4个按键S0、S1、S2、S3分别连单片机的P3.4、P3.5、P3.3和P3.1由这四个按键来控制灯的启动、停顿、由上而下、由下而上。

由按键控制功能的LED工作的方式,其中的LED采取共阳极接法,通过依次向连接LED的I/O口送出低电平,可实现题目要求的功能。

 

节日彩灯控制器的总电路图如图3-5所示。

 

图3-3总电路图

第4章 软件设计

4.1主程序设计

节日彩灯控制器设计的功能是:

当在没有任何按键按下时,8个LED灯均呈现灭灯的状态,并一直在等待按键的按下。

当按下开场键S0键后,8个LED灯自上而下循环流动,检测有没有按下停顿键即S1,假设按下停顿键S1那么立即停顿流动,否那么检测是否按下按键S2或者按键S3,假设都没有按下那么灯继续保持原先的状态流动。

当按键S3被按下,灯自下而上流动,同样也要检测是否按下停顿键S1,按下那么停顿,否那么灯将继续自下而上流动。

同理,当按键S2被按下时,灯自上而下流动,如果按下停顿键S1,按下那么停顿,否那么灯将继续自上而下流动。

当既按下S2又按下S3时,灯将先自上而下流动,后自下而上流动。

通过四个键S1、S2、S3、S4的控制,实现彩灯的亮、灭和彩灯的流动显示,以及在不同情况下的彩灯的流动变换。

这是整个节日彩灯的完整控制与流动过程。

节日彩灯控制器的主程序流程图如图4-1所示

 

图4-1主程序流程图

4.2 LED灯子程序设计

在本设计中的LED灯的流动有两个方向,分别为自上而下和自下而上,无论是哪种方式,其LED灯的子程序都是一样的过程。

首先赋初值,取表中的数,将数值给P1口,然后判断LED灯是否循环完了8次。

如果循环完8次那么对应LED灯亮,并延时输出。

如果没有循环完8次,将返回原处重新开场。

因而得到流程图为图4-2所示。

 

图4-2LED灯子程序流程图

4.2 延时子程序设计

对于LED灯循环显示程序来说,由于单片机运行速度非常快,以至于当灯亮时人眼看不见,不方便检测与监控,因此在程序中需要添加延时子程序。

同时延时子程序还可以有效的防止抖动。

延时子程序运用了两个for循环嵌套,外循环执行一次,循环执行z次,因此延时时间为100z。

延时子程序的流程图如图4-3所示。

 

图4-3子程序流程图

4.3 源程序

#include

#defineuintunsignedint

#defineucharunsignedchar

voidsan();

voidwu();

voiddelay(uint);

sbitkey2=P3^5;//关闭彩灯的开关

sbitkey1=P3^4;//启动彩灯的开关

sbitkey3=P3^3;//控制彩灯右移的开关

sbitkey4=P3^1;//控制彩灯左移的开关

uchartemp;//定义一个无符号字符型数据变量

uchartemp1;//定义一个无符号字符型数据变量

uchartemp2;/定义一个无符号字符型数据变量

uinta;

intc;

voidmain()//主程序

{

while

(1)//判断哪个开关被按下

{

if(key1==0)

{

san();

}

if(key2==0)

{

P1=0xff;

}

if(key3==0)

{

san();

}

if(key4==0)

{

wu();

}

}

 

}

voidsan()

{

uchartable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//定义一个数组

for(a=0;a<8;a++)

{

temp=table[a];//将数组赋值给变量temp

P1=temp;

delay(300);//延时

}

 

}

voiddelay(uintz)//延时程序

{

uintx,y;

for(x=100;x>0;x--)

for(y=z;y>0;y--);

}

 

voidwu()

{

uchartable1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//定义一个数组

for(c=7;c>-1;c--)

{

temp1=table1[c];//将数组赋值给变量temp1

P1=temp1;

delay(300);//延时

}

}

第5章 结论

在本次课程设计中,我们用的是Multisim软件画图,然后经过不断地仿真、调试成功。

最后根据本设计做出实物并与计算机相连,完成整个设计。

本设计做的是实物,我主要负责软件局部,但是我也参与了硬件局部,利用我们编好的程序成功写入到了单片机当中,然后实现了LED灯的从上往下,从下往上,以及反复往返流动。

本次设计主要运用C语言对单片机进展编程控制。

只需要节日彩灯的程序分为三局部即可:

主程序、LED灯的程序,延时程序。

主程序要根据题目要求画出主程序框图,依据主电路图及主流程图编程。

LED灯的程序分两个流动方向,设置不同的初值及移动的方向就可以获得。

而延时程序根据延时时间利用for循环来实现。

编程之后,修改错误,进展调试。

这次设计灯的流动方式是可以有好多种的,但是时间有限,我们只完成了教师给的任务。

在这次课程设计的过程中,我们既锻炼了自己的思考能力,又加强了我们思考问题的完整性和与实际生活联系的可行性。

参考文献

[1]顶峰.单片微型计算机原理与接口技术[M].科学,2007

[2]志良.单片机原理与控制技术[M].机械工业,2007

[3]谭浩强.C程序设计.清华大学,1991

 

教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。

教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2