节日彩灯控制器设计.docx

上传人:b****2 文档编号:14003853 上传时间:2023-06-19 格式:DOCX 页数:13 大小:172.10KB
下载 相关 举报
节日彩灯控制器设计.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

节日彩灯控制器设计

铁道大学四方学院

集中实践报告书

 

课题名称

节日彩灯控制器设计

姓名

吴春慧

学号

20137762

系、部

电气工程系

专业班级

方1353-2

指导教师

牛晓燕

 

2016年7月6日

一、设计任务及要求:

设计任务:

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

设计要求:

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

S0—开始按此键则灯开始流动(由上而下);

S1—停止,按此键则停止流动,所有灯为暗;

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

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

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

3.要求做出实物。

二、指导教师评语:

 

三、成绩

 

指导教师签名:

年月日

第1章 设计目的1

第2章 设计要求1

第3章 硬件电路设计1

3.1 系统结构框图1

3.2 STC89C52单片机2

3.3 总电路图3

第4章 软件设计4

4.1 主程序设计4

4.2 LED灯子程序设计6

4.2 延时子程序设计6

4.3 源程序7

第5章 结论9

参考文献10

第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所示。

给y赋初值为z

y>0?

y自减一

x自减一

结束

开始

定义无符号整型数x、y

给x赋初值

为100

x>0?

 

图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