1、井冈山大学机电工程学院单片机课程设计报告课程名称:单片机设计题目:心形流水灯姓 名: 彭玉红专 业:生物医学工程班 级:11 级医工本一班学 号:110615017 指导教师:王佑湖2013 年 11 月 27 日1目录1 引言.21.1 设计任务.21.2 设计要求 .22 课题综述.22.1 课题的来源. 22.2 面对的问题 23 系统分析.23.1 STC89C52 单片机引脚图及引脚功能介绍24 系统设计.44.1 硬件设计.44.1.1 硬件框图.44.1.2 硬件详细设计.54.2 软件设计.5 4.3 硬件原理图.64.4 元件清单.64.5 硬件焊接图.64.6 代码编写.7
2、5 心得体会.76 致谢.8参考文献.821 引言单片机课程设计主要是为了让我们增进对 STC89C51 单片机电路的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。1.1 设计任务设计一个单片机控制的流水灯系统1.2 设计要求(1)32 个 LED 灯;(2)可实现多种的亮灯( 如左循环,右循环,间隔闪,90 度交叉闪等) 。2 课题综述2.1 课题的来源当今社会,这种由单片机芯片控制各种硬件工作的技
3、术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。32.2 面对的问题这次课程设计是通过 STC89C52 位单片机实现。但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。而更为严峻的就是设计的最后还要将软硬件相结合。3 系统分析3.1 STC 89C52 单片机引脚图及引脚功能介绍本次设计的目的在于加深 STC8
4、9C52 单片机的理解,首先来简单认识一下,它的引脚如图 3-1 所示:图 3.1 STC89C52STC89C52 引脚可以分为四个部分,各个引脚功能如下:4主电源引脚(2 根) Vcc:电源输入,接 +5V 电源GND:接地线 外接晶振引脚(2 根)XTAL1:片内振荡电路的输入端XTAL2:片内振荡电路的输出端 控制引脚(4 根)RST/PROG:复位引脚,引脚上出现 2 个机器周期的高电平将使单片机复位。ALE/VPP:地址锁存允许信号PESN:外部存储器选通信号EA/VPP:程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。 可编程输入/输
5、出引脚(32 根)STC89C52 单片机有 4 组 8 位的可编程 I/O 口,分别为P0、 P1、P2 、P3 口,每个口有 8 位(8 根引脚) ,共 32 根。P0 口:8 位双向 I/O 口线P1 口:8 位准双向 I/O 口线P1 口:8 位双向 I/O 口线P2 口:8 位准双向 I/O 口线P3 口:8 位准双向 I/O 口线4 系统设计54.1 硬件设计4.1.1.硬件框图按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。STC89C52 单片机是本次课程设计运用的主要原件。流水灯控制设计是用一个带有 32 个发光二极管的单片机最小应用
6、系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。从原理图中可以看出,如果要让接在 P1、P2、P3、P0 口的 LED 亮起来,那么只要把P2、P1、P3、P0 口的电平变为低电平就可以了;因此,要实现流水灯功能,我们只要将发光二极管 LED1LED32 依次点亮、熄灭,32只 LED 灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。4.1.2.硬件详细设计6(1)复位电路部分当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及
7、其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。(2)晶振部分4.2 软件设计 单片机的应用系统由硬件和软件组成,在硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。4.3 硬件原理图74.4 元件清单表 4-1 元件清单元件名称 型号 数量(个)单片机 STC89C52 1单片机芯片底座 DIP40 1晶振 12MHz 1瓷介电容 30pF 2电解电容 10uF 1按钮开关 / 2普通电阻 10k 1贴片电阻 470 32发光二级管 红色 32电源 +5V(VCC
8、 ) 1USB 连接线 / 1万能板 9*15 14.5 效果实物图(1)背面实物图 (2)正面实物图4.6 代码编写#include #define uint unsigned int#define uchar unsigned char1uchar code table0=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/LED 从低位往高位移uchar code table1=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;/LED 从高位往低位移uchar code table2=0xfe,0xfc,0xf8,0xf0,0
9、xe0,0xc0,0x80,0x00;/LED 从 1 个亮到8 个都点亮(从低位往高位)uchar code table3=0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00;/LED 从 1 个亮到8 个都点亮(从高位往低位)uchar code table4=0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff;/LED 从 8 个全亮到一个都不亮(从低位往高位)uchar code table5=0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff;/LED 从 8 个全亮到一个都不亮(
10、从高位往低位)uchar code table6=0xfe,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e;/LED 从低位往高位移(最低位始终为 0)uchar code table7=0x7f,0x3f,0x5f,0x6f,0x77,0x7b,0x7d,0x7e;/LED 从高位往低位移(最高位始终为 0)uchar i,j;uint tt=70;void delay(uint time) /延时函数uint x,y;for(x=time;x0;x-)for(y=110;y0;y-);void disp0() /状态 0 所有 LED 闪烁 3 次for(i=0;i3;i+)P0=0x00; P2=0x00; P3=0x00; P1=0x00;delay(300);P0=0xff; P2=0xff; P3=0xff; P1=0xff;delay(300);void disp1() /状态 1 LED 顺时针转一圈for(i=0;i8;i+)P2=table1i;delay(100);P2=0xff;for(i=0;i8;i+)