单片机节日彩灯设计Word文件下载.docx
《单片机节日彩灯设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机节日彩灯设计Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
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章 软件设计3
4.1 主程序设计3
4.2LED灯子程序设计5
4.3源程序6
第5章 结论8
参考文献9
第1章设计目的
1、掌握单片机实际系统的开发步骤。
2、熟悉节日彩灯控制器的工作原理。
3、加深对单片机汇编语言的认识和理解,并会编程。
第2章设计要求
1、设计4个按键S0、S1、S2、S3,
2、由按键控制功能的流水灯,其中的LED采取共阳极接法,通过依次向连接LED的I/O口送出低电平,可实现题目要求的功能。
3、要求做出实物。
第3章硬件电路设计
3.1系统结构框图
节日彩灯控制系统主要由单片机、LED显示器、开关及电源组成。
其结构框图如图3-1所示。
图3-1系统结构框图
3.2STC89C52单片机最小系统
单片机最小系统主要包括:
单片机、复位电路、晶振电路。
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总电路图
节日彩灯控制器的总电路图如图3-3所示。
图3-3总电路图
第4章软件设计
4.1主程序设计
没有任何按键按下时,8个LED灯均呈现灭灯的状态,并一直在等待按键。
按下Key1键后,8个LED灯自上而下循环流动,检测有没有按下停止键即Key2,若按下停止键则立即停止流动,否则检测是否按下Key3和Key4,若都没有按下则灯继续保持原先的状态流动。
当Key3被按下,灯自下而上流动,同样也要检测是否按下Key2,按下则停止,否则继续自下而上流动。
同理,当Key4被按下时,灯自上而下流动,如果按下Key2,按下则停止,否则继续自上而下流动。
当既按下Key3又按下Key4则灯自上而下,后自下而上流动。
主程序流程图如图4-1所示。
图4-1主程序流程图
4.2LED灯子程序设计
在本设计中的LED灯的流动有两个方向,分别为自上而下和自下而上,首先赋初值,取表中的数,将数值给P1口,并延时输出,满足条件则自动加一或减一。
因而得到流程图为图4-2所示。
图4-2LED灯子程序流程图
4.3源程序
#include<
reg52.h>
#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)
}
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>
y--);
voidwu()
uchartable1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
for(c=7;
c>
-1;
c--)
temp1=table1[c];
//将数组赋值给变量temp1
P1=temp1;
第5章结论
参考文献
[1]高峰.单片微型计算机原理与接口技术[M].科学出版社,2007
[2]张志良.单片机原理与控制技术[M].机械工业出版社,2007