1、单片机节日彩灯设计石家庄铁道大学四方学院集中实践报告书课题名称节日彩灯控制器设计姓 名学 号系、 部电气工程系专业班级指导教师2016 年 7 月 6 日 一、设计任务及要求:设计任务:设计一个节日彩灯控制器设计要求:1.设计4个按键S0、S1、S2、S3, S0开始按此键则灯开始流动(由上而下); S1停止,按此键则停止流动,所有灯为暗;S2上,按此键则灯由上向下流动; S3下,按此键则灯由下向上流动。2.由按键控制功能的流水灯,其中的LED采取共阳极接法,通过依次向连接LED的I/O口送出低电平,可实现题目要求的功能。3.要求做出实物。二、指导教师评语: 三、成绩 指导教师签名: 年 月
2、日 目 录第1章 设计目的 1第2章 设计要求 1第3章硬件电路设计 13.1系统结构框图 13.2STC89C52单片机最小系统 23.3总电路图 3第4章软件设计 34.1主程序设计 34.2 LED灯子程序设计 54.3 源程序 6第5章结论 8参考文献 9第1章 设计目的1、掌握单片机实际系统的开发步骤。2、熟悉节日彩灯控制器的工作原理。3、加深对单片机汇编语言的认识和理解,并会编程。第2章 设计要求1、设计4个按键S0、S1、S2、S3, S0开始按此键则灯开始流动(由上而下); S1停止,按此键则停止流动,所有灯为暗;S2上,按此键则灯由上向下流动; S3下,按此键则灯由下向上流动
3、。2、由按键控制功能的流水灯,其中的LED采取共阳极接法,通过依次向连接LED的I/O口送出低电平,可实现题目要求的功能。3、要求做出实物。第3章 硬件电路设计3.1 系统结构框图 节日彩灯控制系统主要由单片机、LED显示器、开关及电源组成。其结构框图如图3-1所示。 图3-1 系统结构框图3.2 STC89C52单片机最小系统单片机最小系统主要包括:单片机、复位电路、晶振电路。89C52共有四个八位的并行双向口,即有32根输入输出口线。各口的每一位均由锁存器、输出驱动器和输入缓冲器组成。STC89C52芯片有40个引脚,引脚图如图3-2所示,各引脚功能介绍如下:图3-2 STC89C52引脚
4、图VCC(40引脚):电源电压。VSS(20引脚):接地。P1端口(P1.0P1.7,18引脚):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.0P3.
5、7,1017引脚):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,外部数
6、据存储器读选通。RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。ALE(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18引脚):振荡器反相放大器的输入端3.3 总电路图节日彩灯控制器的总电路图如图3-3所示。图3-3 总电路图第4章 软件设计4.1 主程序设计没有任何按键按下时,8个LED灯均呈现灭灯的状态,并一直在等待按键。按下Key1键后,8个LED灯自上而下循环流动,检测有没有按下停止键即Key2,若按下停
7、止键则立即停止流动,否则检测是否按下Key3和Key4,若都没有按下则灯继续保持原先的状态流动。当Key3被按下,灯自下而上流动,同样也要检测是否按下Key2,按下则停止,否则继续自下而上流动。同理,当Key4被按下时,灯自上而下流动,如果按下Key2,按下则停止,否则继续自上而下流动。当既按下Key3又按下Key4则灯自上而下,后自下而上流动。主程序流程图如图4-1所示。图4-1 主程序流程图4.2 LED灯子程序设计在本设计中的LED灯的流动有两个方向,分别为自上而下和自下而上,首先赋初值,取表中的数,将数值给P1口,并延时输出,满足条件则自动加一或减一。因而得到流程图为图4-2所示。图4
8、-2 LED灯子程序流程图4.3 源程序#include#define uint unsigned int#define uchar unsigned charvoid san();void wu();void delay(uint);sbit key2=P35;/关闭彩灯的开关sbit key1=P34;/启动彩灯的开关sbit key3=P33;/控制彩灯右移的开关sbit key4=P31;/控制彩灯左移的开关uchar temp;/定义一个无符号字符型数据变量uchar temp1;/定义一个无符号字符型数据变量uchar temp2;/定义一个无符号字符型数据变量uint a;int
9、 c;void main()/主程序 while(1)/判断哪个开关被按下 if(key1=0) san(); if(key2=0) P1=0xff; if(key3=0) san(); if(key4=0) wu(); void san() uchar table=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/定义一个数组for(a=0;a0;x-) for(y=z;y0;y-); void wu() uchar table1=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/定义一个数组 for(c=7;c-1;c-) temp1=table1c;/将数组赋值给变量temp1 P1=temp1; delay(300);/延时 第5章 结论参考文献1 高峰.单片微型计算机原理与接口技术M.科学出版社,20072 张志良.单片机原理与控制技术M.机械工业出版社,2007
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1