单片机课程设计报告--心形流水灯

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功