找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18305|回复: 6
打印 上一主题 下一主题
收起左侧

51单片机LED流水灯课程设计任务书+论文

  [复制链接]
跳转到指定楼层
楼主
ID:268497 发表于 2017-12-28 18:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
郑州工程技术学院课程设计

设计题目:LED流水灯设计

学    院:机电与车辆工程学院

专    业:16电气自动化技术专业班 级普招二班

姓    名:王*&刘*

指导教师:李*

日    期:20171219


诚信声明

本论文是我个人在老师指导下,按任务书要求,自己撰写的论文。该论文凡引用他人的文章或成果之处都在论文中注明,并表示了谢意。除此之外都是自己的工作成果。

若本论文及资料与以上声明不符,本人承担一切责任。

本人签名:

日    期: 20161219


课程设计任务书

设计题目:LED流水灯设计

摘要:采用DS18B20做温度传感器,3位共阳数码管做显示,AT89C2051单片机做处理控制,设计一个温度控制器,要求设计三个按键:S1作为设置键,按一下S1电路显示当前的温度值,再按一下S1进入温度设定状态;S2或S3按键为调整设置温度按键,按S2按键为加温度,按S3按键为减温度。工作过程是:按一下S1电路显示当前的温度值,再按一下S1进入温度设定状态,这时可以按S2或S3调整设定温度值,再次按下S1时返回当前温度显示。电路中要求设计一路控制输出,当当前温度超出设定温度时LED1被点亮,同时输出5V电压,可驱动5V继电器。
设计内容及要求:

1. 用protues画出电路原理图;

2. 画出程序流程图;

3. 用keilc软件编程

4.联合仿真结果是否正确;

5. 焊接调试硬件电路,使设计满足要求。            

6焊接调试硬件电路,使设计满足要求。
7. 整理并认真书写课程设计报告,不得抄袭别人作品。

指导老师(签字):                                          年   月   日

前   言
当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。当单片机运用于彩灯装饰的控制上时,更是为我们的日常生活增添了一份绚丽的光彩。单片机课程设计是单片机教学的主要内容,是培养设计能力的重要实践内容。(1)通过课程设计巩固、深化单片机知识。(2)通过课程设计实践,培养分析解决工程实际问题的能力。(3)掌握一般设计方法和步骤。
本设计采用STC89C52单片机,运用循环移位法实现了32只LED
灯依次点亮,熄灭的“流水”效果。流水灯应用在夜景、舞台、建筑物、广告牌等装饰上都能达到出色的效果。

学生签名
                                  年月日

摘   要
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,
还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。我们周围有许多广告牌。通过单片机的控制,我们可以把城市的夜晚装饰的更漂亮。
通过对单片机的系统学习,对一些广告灯的设计做了一些必要的改进。同时对自己的改进也做了真实的仿真。达到了预期的目的。但是在改进的过程里也发现了自己的很多的不足。这会在以后的学习生活里不断提高。逐步完善自己。

关键词:广告灯、单片机、程序设计三至八个关键词)

目录

1 引言
1.1设计任务
1.2设计要求
2 课题综述
2.1 课题的来源
2.2 面对的问题
3 系统分析
3.1 STC 89C52单片机引脚图及引脚功能介绍
4系统设计
4.1硬件设计
4.1.1.硬件框图
4.1.2.硬件详细设计
4.2 软件设计
4.3 硬件原理图
4.4 元件清单
4.5 效果实物图
4.6代码编写
5.心得体会
6.致谢
参考文献
1 引言
单片机课程设计主要是为了让我们增进对STC89C52单片机电路的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。
1.1设计任务
设计一个单片机控制的流水灯系统
1.2设计要求
(1)32个LED灯;
(2)可实现多种的亮灯(如左循环,右循环,间隔闪,90度交叉闪等)。
2 课题综述
2.1 课题的来源
当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。
2.2 面对的问题

这次课程设计是通过STC89C52位单片机实现。但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。而更为严峻的就是设计的最后还要将软硬件相结合。

3 系统分析
3.1 STC 89C52单片机引脚图及引脚功能介绍

本次设计的目的在于加深STC89C52单片机的理解,首先来简单认识一下,它的引脚如图3-1所示:

图3.1 STC89C52

STC89C52引脚可以分为四个部分,各个引脚功能如下:

主电源引脚(2根)

  • Vcc:电源输入,接+5V电源

GND:接地线

  • 外接晶振引脚(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.硬件框图
     

按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。STC89C52单片机是本次课程设计运用的主要原件。流水灯控制设计是用一个带有32个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。从原理图中可以看出,如果要让接在P1、P2、P3、P0口的LED亮起来,那么只要把P2、P1、P3、P0口的电平变为低电平就可以了;因此,要实现流水灯功能,我们只要将发光二极管LED1~LED32依次点亮、熄灭,32只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

4.1.2.硬件详细设计
(1)复位电路部分
当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。


(2)晶振部分



4.2 软件设计         

单片机的应用系统由硬件和软件组成,在硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。







4.3 硬件原理图


4.4 元件清单
表4-1 元件清单
元件名称
型号
数量(个)
单片机
STC89C52
1
单片机芯片底座
DIP40
1
晶振
12MHz
1
瓷片电容
30pF
2
电解电容
10uF
2
电源开关
自锁开关
1
普通电阻
10kΩ
1
电池盒
三节5号
1+
发光二级管
七彩LED
32
电源
+5V(VCC)
1
PCB板
/80*90mm
1
万能板
9*15
1
4.5 效果实物图
(1)背面实物图                                                                 



(2)正面实物图

4.6代码编写
5.
心得体会
由于本次课程设计含括了软件和硬件知识,所以在完成课程设计的同时也让我们了解到了我们在软硬件设计和制作方面的不足。在这次的设计过程中我所担任的工作是对电路板各元器件的连接和焊接工作,虽然看似简单,但做起来却是一个细致的工作,尤其是对于一些引脚的焊接工作,更是要细中再细,因为这些元器件的引脚距离都是比较近的,一旦将不该连接的引脚焊接到了一起,该元器件就会失它原来的工作效果,还很有可能将整个电路短路。对于软件方面,是由我们小组的崔鹏飞编辑完成的,负责硬件焊接的我在最初看到代码的时候还是一头雾水,经过我俩的一起讨论,最后还是理解的如何运用循环实现流水灯亮灯的工作原理。并对如何使用程序调用也有了一定的了解。
通过这次课程设计,我知道了团队的力量,只有互相团结,才能把事情做好,组员分工合作,每个人根据自己的能力范围负责不同的工作,达到事半功倍的效果。而在这次的设计过程中让我深深的了解了我在软件、硬件方面的许多不足之处,对于今后的学习和工作都有了一次很好的借鉴经验。
6.致谢
首先我要感谢的是机电与车辆工程学院,机电与车辆工程学院能够给我提供如此好的实践机会。更要感谢指导老师,在我们的学习过程中他给了很大的帮助,帮助我们理解不懂的地方,使我们最终能够完成这个课程设计。我还要感谢参考文献的原作者。在此对给予我帮助的老师表示深深地感谢!同时对给予我帮助的同学表示深深地感谢。我想说的是,在指导老师和同学们的帮助下我学到了很多东西,也发现了自己的很多不足之处,促使我在以后的学习中更加努力的学习。我们回顾这过去时间,我们会发现自己收获了很多,也成长了很多,懂得了如何去学习以前未曾学过的新思维新方法,懂得了如何去多方位地查找资料,完善和创新一些旧的思维方式,懂得了如何同老师和同学交流和协作,尤其要说的是,王佑湖老师在此过程中对我们悉心的辅导,认真的讲解,帮助我们解决问题,循循善诱,使我门受益匪浅。还有同学们的帮助,互相推荐好的资料。相信这次课程设计的体验将成为今后我们更多更广学习中的奠基石。课程设计的过程,是学习的过程,也是锻炼的过程,更是教会我们同学之间相互帮助,共同克服困难的过程,这将是人生中一笔宝贵的财富,使我受用不尽的同时,我一定将之好好珍惜。参考文献
[1]康华光,陈大钦. 电子技术基础—模拟部分(第五版)[M]. 北京:高等教育出版社,2005
[2]姜志海、赵艳雷、陈松 .单片机的C语言程序设计与应用——基于Proteus仿真(第二版) 电子工业出版社
[3]张毅刚,彭喜元。 单片机原理与应用设计   电子工业出版社

单片机源程序如下:
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
  6. // 逐个点亮0~7
  7. uchar code table1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; // 逐个点亮7~0
  8. uchar code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; // 逐个灭0~7
  9. uchar codetable3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};// 逐个灭7~0
  10. /***********************************************************/
  11. void delay(uint t); //延时
  12. void zg(uint t,uchar a);//两边逐个亮
  13. void qs(uint t,uchar a);//全部闪烁
  14. void zgxh(uint t,uchar a); // 逆时针逐个点亮
  15. //void zgxh1(uint t,uchar a); // 顺时针逐个点亮
  16. void djs(uint t,uchar a); //对角闪
  17. void lbzgm(uint t,uchar a);//两边逐个灭
  18. //void sszgm(uint t,uchar a); // 顺时针逐个灭
  19. void nszgm(uint t,uchar a); // 逆时针逐个灭
  20. void sztl(uint t,uchar a);//顺时逐个同步亮
  21. void nztl(uint t,uchar a);//逆时逐个同步亮
  22. void sztm(uint t,uchar a);//顺时逐个同步灭
  23. void nztm(uint t,uchar a);//逆时逐个同步灭
  24. void hwzjl(uint t,uchar a); //横往中间亮
  25. void hwzjm(uint t,uchar a); //横往中间灭
  26. //void swzjl(uint t,uchar a); //竖往中间亮
  27. //void swzjm(uint t,uchar a); //竖往中间灭
  28. void nzdl(uint t,uchar a); //逆时逐段亮
  29. void nzdgl(uint t,uchar a); //逆时逐段一个点亮
  30. void jgs(uint t,uchar a); //间隔闪
  31. /**********************************************************/
  32. void zg(uint t,uchar a)//两边逐个亮
  33. {
  34. uchar i,j;
  35. for(j=0;j<a;j++)
  36. {
  37. P0=P1=P2=P3=0xff;
  38. P0=0x7f;delay(t);
  39. for(i=0;i<7;i++)
  40. {
  41. P0=table1[i+1];
  42. P2=table1[i];
  43. delay(t);
  44. }
  45. P2=0x00;P1=0xfe;
  46. delay(t);
  47. for(i=0;i<7;i++)
  48. {
  49. P1=table[i+1];
  50. P3=table1[i];
  51. delay(t);
  52. }
  53. P3=0x00;delay(t);
  54. }
  55. }
  56. void qs(uint t,uchar a) //全部闪烁
  57. {
  58. uchar j;
  59. for(j=0;j<a;j++)
  60. {
  61. P0=P1=P2=P3=0xff;
  62. delay(t);
  63. P0=P1=P2=P3=0x00;
  64. delay(t);
  65. }
  66. }
  67. void zgxh(uint t,uchar a) // 逆时针逐个点亮
  68. {
  69. uchar i,j;
  70. for (j=0;j<a;j++)
  71. {
  72. P0=P1=P2=P3=0xff;
  73. for (i=0;i<8;i++)
  74. {
  75. P0=table1[i];
  76. delay(t);
  77. }
  78. for(i=0;i<8;i++)
  79. {
  80. P1=table[i];
  81. delay(t);
  82. {
  83. uchar i,j;
  84. for (j=0;j<a;j++)
  85. {
  86. P0=P1=P2=P3=0x00;
  87. for(i=0;i<8;i++)
  88. {
  89. P0=P2=P1=table3[i];
  90. P3=table2[i];delay(t);
  91. }
  92. }
  93. }
  94. /*
  95. void swzjl(uint t,uchar a) //竖往中间亮
  96. {
  97. uchar i,j;
  98. for (j=0;j<a;j++)
  99. {
  100. P0=P1=P2=P3=0xff;
  101. for(i=0;i<8;i++)
  102. {
  103. P0=P2=P1=table[i];
  104. P3=table1[i];delay(t);
  105. }
  106. }
  107. }
  108. void swzjm(uint t,uchar a) //竖往中间灭
  109. {
  110. uchar i,j;
  111. for (j=0;j<a;j++)
  112. {
  113. P0=P1=P2=P3=0x00;
  114. for(i=0;i<8;i++)
  115. {
  116. P0=P2=P1=table2[i];
  117. P3=table3[i];delay(t);
  118. }
  119. }
  120. }
  121. */
  122. void nzdl(uint t,uchar a) //逆时逐段亮
  123. {
  124. uchar i,j;
  125. for (j=0;j<a;j++)
  126. {
  127. P0=P1=P2=P3=0xff;
  128. for(i=0;i<8;i++)
  129. {
  130. P0=table1[i];
  131. delay(t);
  132. }
  133. P0=0xff;
  134. for(i=0;i<8;i++)
  135. {
  136. P1=table[i];
  137. delay(t);
  138. }
  139. P1=0xff;
  140. for(i=0;i<8;i++)
  141. {
  142. P3=table[i];
  143. delay(t);
  144. }
  145. P3=0xff;
  146. for(i=0;i<8;i++)
  147. {
  148. P2=table[i];
  149. delay(t);
  150. }
  151. P2=0xff;
  152. }
  153. }
  154. void nzdgl(uint t,uchar a) //逆时逐段一个点亮
  155. {
  156. zgxh(100,1);
  157. nszgm(100,1);
  158. }
  159. /*
  160. for(i=0;i<5;i++)
  161. {
  162. zgxh1(100,1);
  163. sszgm(100,1);
  164. }
  165. */
  166. nzdl(200,3); //逆时逐段亮
  167. jgs(50,100); //间隔闪
  168. /*/////////////////////////////////////////////////////
  169. P0=P1=P2=P3=0xff;
  170. for (i=0;i<8;i++)
  171. {
  172. P0=table1[i];
  173. delay(200);
  174. }
  175. for (i=0;i<8;i++)
  176. {
  177. P1=table[i];
  178. delay(200);
  179. }
  180. for(i=0;i<3;i++)
  181. {
  182. P0=P1=0x00;delay(200);
  183. P0=P1=0xff;delay(200);
  184. }
  185. for (i=0;i<8;i++)
  186. {
  187. P2=table1[i];
  188. delay(200);
  189. }
  190. for (i=0;i<8;i++)
  191. {
  192. P3=table1[i];
  193. delay(200);
  194. }
  195. for(i=0;i<3;i++)
  196. {
  197. P2=P3=0x00;delay(200);
  198. P2=P3=0xff;delay(200);
  199. }
  200. *///////////////////////////////////////////////////
  201. nzdgl(50,40);
  202. //逆时逐段一个点亮
  203. for(i=0;i<4;i++)
  204. {
  205. zg(100,1);qs(100,10);
  206. lbzgm(100,1);
  207. }
  208. // djs(50,100); //对角闪
  209. for(i=0;i<3;i++)
  210. {
  211. zgxh(100,1);
  212. nszgm(100,1);
  213. }
  214. djs(1000,10);
  215. for(i=0;i<10;i++)
  216. {
  217. hwzjl(200,1); //横往中间亮
  218. hwzjm(200,1); //横往中间灭
  219. }
  220. djs(300,10); //对角闪
  221. /*
  222. for(i=0;i<10;i++)
  223. {
  224. swzjl(200,1); //竖往中间亮
  225. swzjm(200,1); //竖往中间灭
  226. }
  227. */
  228. for(i=0;i<5;i++)
  229. {
  230. zgxh(100,1);
  231. nszgm(100,1);
  232. }
  233. djs(100,20); //对角闪
  234. zg(300,1);
  235. lbzgm(300,1);
  236. ……………………

  237. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
LED流水灯课程设计.rar (2.45 MB, 下载次数: 88)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:293461 发表于 2018-3-31 17:26 来自手机 | 只看该作者
感谢大佬,十分需要这篇文字的
回复

使用道具 举报

板凳
ID:479065 发表于 2019-2-21 21:30 | 只看该作者
谢谢大佬
回复

使用道具 举报

地板
ID:488949 发表于 2019-3-17 13:59 | 只看该作者
下载试试看,谢谢分享!
回复

使用道具 举报

5#
ID:432880 发表于 2019-6-15 17:49 | 只看该作者
感谢大佬分享
回复

使用道具 举报

6#
ID:560577 发表于 2019-6-15 20:26 | 只看该作者
感谢分享,正在认真学习中的老年人!
回复

使用道具 举报

7#
ID:560577 发表于 2019-6-15 20:36 | 只看该作者
void zgxh(uint t,uchar a); // 逆时针逐个点亮
//void zgxh1(uint t,uchar a); // 顺时针逐个点亮
看程序,逐个点亮是分4组的,不是单个点亮的,请问单个点亮 程序应该怎么写呢??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表