ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:600.66KB ,
资源ID:5792115      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5792115.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计报告心形流水灯.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、单片机课程设计报告心形流水灯井冈山大学机电工程学院单片机课程设计报告 课程名称:单片机 设计题目:心形流水灯 姓 名: 彭玉红 专 业:生物医学工程 班 级:11级医工本一班 学 号:110615017 指导教师:王佑湖2013年11月27日1引言.2 1.1设计任务.2 1.2设计要求 .22 课题综述.22.1课题的来源. 2 2.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 代

2、码编写.75心得体会.76致谢.8参考文献.81 引言单片机课程设计主要是为了让我们增进对STC89C51单片机电路的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。1.1设计任务设计一个单片机控制的流水灯系统1.2设计要求(1)32个LED灯;(2)可实现多种的亮灯(如左循环,右循环,间隔闪,90度交叉闪等)。2 课题综述2.1 课题的来源当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并

3、普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。2.2 面对的问题这次课程设计是通过STC89C52位单片机实现。但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。而更为严峻的就是设计的最后还要将软硬件相结合。3 系统分析3.1 STC 89C52单片机引脚图及引脚功能介绍本次设计的目的在于加深STC89C52单片机的理解,首先

4、来简单认识一下,它的引脚如图3-1所示:图3.1 STC89C52STC89C52引脚可以分为四个部分,各个引脚功能如下:主电源引脚(2根) Vcc:电源输入,接+5V电源GND:接地线外接晶振引脚(2根)XTAL1:片内振荡电路的输入端XTAL2:片内振荡电路的输出端控制引脚(4根)RST/PROG:复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/VPP:地址锁存允许信号PESN:外部存储器选通信号EA/VPP:程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。可编程输入/输出引脚(32根)STC89C52单片机有4组8位的可编程I

5、/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.硬件框图 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。STC89C52单片机是本次课程设计运用的主要原件。流水灯控制设计是用一个带有32个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。从原理图中可以看出,如果要让接在P1、P2、P3、P0口的LED亮

6、起来,那么只要把P2、P1、P3、P0口的电平变为低电平就可以了;因此,要实现流水灯功能,我们只要将发光二极管LED1LED32依次点亮、熄灭,32只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。4.1.2.硬件详细设计(1)复位电路部分 当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。(2)晶振部分4.2 软件设计 单片机的应用系统由硬件和软件组成,在硬件

7、原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。4.3 硬件原理图 4.4 元件清单表4-1 元件清单元件名称型号数量(个)单片机STC89C521单片机芯片底座DIP401晶振12MHz1瓷介电容30pF2电解电容10uF1按钮开关/2普通电阻10k1贴片电阻47032发光二级管红色32电源+5V(VCC)1USB连接线/1万能板9*1514.5 效果实物图(1)背面实物图 (2)正面实物图4.6代码编写#include #define uint unsigned int#define uchar uns

8、igned charuchar 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,0xe0,0xc0,0x80,0x00;/LED从1个亮到8个都点亮(从低位往高位)uchar code table3=0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00;/LED从1个亮到8个都点亮

9、(从高位往低位)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个全亮到一个都不亮(从高位往低位)uchar code table6=0xfe,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e;/LED从低位往高位移(最低位始终为0)uchar code table7=0x7f,0x3f,0x5f,0x6f,0x77

10、,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顺时针转一圈 f

11、or(i=0;i8;i+) P2=table1i; delay(100); P2=0xff; for(i=0;i8;i+) P3=table1i; delay(100); P3=0xff; for(i=0;i8;i+) P1=table1i; delay(100); P1=0xff; for(i=0;i8;i+) P0=table0i; delay(100); P0=0xff;void disp2() /状态2 LED逆时针转一圈 for(i=0;i8;i+) P0=table1i; delay(100); P0=0xff; for(i=0;i8;i+) P1=table0i; delay(1

12、00); P1=0xff; for(i=0;i8;i+) P3=table0i; delay(100); P3=0xff; for(i=0;i8;i+) P2=table0i; delay(100); P2=0xff;void disp3() /状态3 4个LED同时顺时、逆时针移动1/4圈 for(i=0;i8;i+) P0=table1i; P1=table1i; P2=table1i; P3=table0i; delay(100); for(i=0;i8;i+) P0=table0i; P1=table0i; P2=table0i; P3=table1i; delay(100); P3=

13、0xff; P0=0xff; void disp4() /状态4 2个LED同时顺时针移动半圈 for(i=0;i8;i+) P2=table1i; P1=table1i; delay(100); P2=0xff; P1=0xff; for(i=0;i8;i+) P3=table1i; P0=table0i; delay(100); P3=0xff; P0=0xff;void disp5() /状态5 2个LED同时逆时针移动半圈 for(i=0;i8;i+) P0=table1i; P3=table0i; delay(100); P0=0xff; P3=0xff; for(i=0;i8;i+

14、) P1=table0i; P2=table0i; delay(100); P1=0xff; P2=0xff;void disp6() /状态6 LED自上而下逐渐点亮(一半点亮一半不亮) for(i=0;i8;i+) P0=table3i; P2=table3i; delay(100); P0=0xff; P2=0xff; for(i=0;i8;i+) P1=table2i; P3=table3i; delay(100); P1=0xff; P3=0xff;void disp7() /状态7 LED自下而上逐渐点亮(直到全部点亮) for(i=0;i8;i+) P1=table3i; P3=

15、table2i; delay(100); for(i=0;i8;i+) P0=table2i; P2=table2i; delay(100); void disp8() /状态8 间断8格的4个LED亮并逆时针旋转 for(j=0;j2;j+) for(i=0;i8;i+) P0=table1i; P2=table0i; P1=table0i; P3=table0i; delay(100); P0=0xff; P2=0xff; P1=0xff; P3=0xff; for(i=0;i8;i+) P0=table1i; P2=table0i; P1=table0i; P3=table0i; del

16、ay(100); P0=0xff; P2=0xff; P1=0xff; P3=0xff; void disp9() /状态9 间断8格的4个LED亮,然后逆时针逐渐点亮(直到全部点亮) for(i=0;i8;i+) P0=table3i; P2=table2i; P1=table2i; P3=table2i; delay(100); delay(500); void disp10() /状态10 从LED全部亮到全不亮(间断8格的4个LED开始逆时针熄灭) for(i=0;i9;i+) P0=table5i; P2=table4i; P1=table4i; P3=table4i; delay(

17、100); delay(300);void disp11() /状态11 间断8格的4个LED亮并顺时针旋转 for(j=0;j2;j+) for(i=0;i8;i+) P0=table0i; P2=table1i; P1=table1i; P3=table1i; delay(100); P0=0xff; P2=0xff; P1=0xff; P3=0xff; for(i=0;i8;i+) P0=table0i; P2=table1i; P1=table1i; P3=table1i; delay(100); P0=0xff; P2=0xff; P1=0xff; P3=0xff; void dis

18、p12() /间断8格的4个LED亮,然后顺时针逐渐点亮(直到全部点亮) for(i=0;i8;i+) P0=table2i; P2=table3i; P1=table3i; P3=table3i; delay(100); delay(1000);void disp13() /状态13 从LED全部亮到全不亮(间断8格的4个LED开始顺时针熄灭) for(i=0;i9;i+) P0=table4i; P2=table5i; P1=table5i; P3=table5i; delay(100); delay(300);void disp14() /状态14 从LED不亮到全亮(从P0.0、P1.

19、0、P2.0、P3.7开始逐步点亮) for(i=0;i8;i+) P0=table2i; P1=table2i; P2=table2i; P3=table3i; delay(100); void disp15() /状态15 从LED全亮到全不亮(P0.7、P1.7、P2.7、P3.0逐步熄灭) for(i=0;i9;i+) P0=table5i; P1=table5i; P2=table5i; P3=table4i; delay(100); delay(300);void disp16() /状态16 LED灯交替闪烁(频率有慢变快) for(i=0;i5;i+) P0=0xaa; P1=

20、0xaa; P2=0xaa; P3=0xaa; delay(100); P0=P0; P1=P1; P2=P2; P3=P3; delay(100); for(i=0;i5;i+) P0=0xaa; P1=0xaa; P2=0xaa; P3=0xaa; delay(200); P0=P0; P1=P1; P2=P2; P3=P3; delay(200); for(i=0;i5;i+) P0=0xaa; P1=0xaa; P2=0xaa; P3=0xaa; delay(300); P0=P0; P1=P1; P2=P2; P3=P3; delay(300); P0=0xff; P2=0xff;

21、P1=0xff; P3=0xff; delay(300);void disp17() /状态17从P0.7开始逆时针逐步点亮,(循环2次)并且速度会逐步提高 for(i=0;i8;i+) P0=table3i; delay(100); for(i=0;i8;i+) P1=table2i; delay(100); for(i=0;i8;i+) P3=table2i; delay(100); for(i=0;i8;i+) P2=table2i; delay(100); P0=0xff; P1=0xff; P3=0xff; P2=0xff; for(i=0;i8;i+) P0=table3i; de

22、lay(50); for(i=0;i8;i+) P1=table2i; delay(50); for(i=0;i8;i+) P3=table2i; delay(50); for(i=0;i8;i+) P2=table2i; delay(50); P0=0xff; P1=0xff; P3=0xff; P2=0xff; void disp18() /状态18 LED从P0.7开始逆时针逐步点亮(每亮8位后就熄灭) for(i=0;i8;i+) P0=table3i; delay(100); P0=0xff; for(i=0;i8;i+) P1=table2i; delay(100); P1=0xf

23、f; for(i=0;i8;i+) P3=table2i; delay(100); P3=0xff; for(i=0;i8;i+) P2=table2i; delay(100); P2=0xff; void disp19() /状态19 LED从P2.7开始顺时针逐步点亮,(循环2次)并且速度会逐步提高 for(i=0;i8;i+) P2=table3i; delay(100); for(i=0;i8;i+) P3=table3i; delay(100); for(i=0;i8;i+) P1=table3i; delay(100); for(i=0;i8;i+) P0=table2i; del

24、ay(100); P0=0xff; P1=0xff; P3=0xff; P2=0xff; for(i=0;i8;i+) P2=table3i; delay(50); for(i=0;i8;i+) P3=table3i; delay(50); for(i=0;i8;i+) P1=table3i; delay(50); for(i=0;i8;i+) P0=table2i; delay(50); P0=0xff; P1=0xff; P3=0xff; P2=0xff; void disp20() /状态20 LED从P2.7开始顺时针逐步点亮(每亮8位后就熄灭) for(i=0;i8;i+) P2=table3i; delay(100); P2=0xff; for(i=0;i8;i+) P3=table3i; delay(100); P3=0xff; for(i=0;i8;i+) P1=table3i; delay(100); P1=0xff; for(i=0;i8;i+) P0=table2i; delay(100); P0=0xff; void disp21() /状态21 2个LED开始上下移动半圈 for(i=0;i8;i+) P0=table1i; P2=table1i; delay(100); P0=0xff;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1