节日彩灯控制器设计说明.docx
- 文档编号:2063679
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:10
- 大小:82.11KB
节日彩灯控制器设计说明.docx
《节日彩灯控制器设计说明.docx》由会员分享,可在线阅读,更多相关《节日彩灯控制器设计说明.docx(10页珍藏版)》请在冰豆网上搜索。
节日彩灯控制器设计说明
铁道大学四方学院
集中实践报告书
课题名称
节日彩灯控制器设计
姓名
吴春慧
学号
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、熟悉节日彩灯控制器的工作原理。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 节日 彩灯 控制器 设计 说明