《32个心形流水灯单片机课程设计.docx》由会员分享,可在线阅读,更多相关《32个心形流水灯单片机课程设计.docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 32 个心形流水灯单片机课程设计题目:心形流水灯系 别:计算机信息与技术系专 业: 计算机科学与技术班 级: B120601学 号: B120601学生姓名:指导教师: 郭2015 年 06 月目录绪论 . 3 一.题目分析 . 4 二.硬件 . 42.1 MCS-51 系列单片机的内部结构框图. 42.2 系统框图. 5 2.3 电路原理图. 5 三.系统软件设计 . 73.1 Keil_c 软件界面图. 73.2 程序流程图 . 8 四 仿真调试 . 104.1 仿真采用 proteus 仿真图 . 104.2 导入代码图 . 10 五 系统调试及结果分析 . 115.1 软件调试. 1
2、1 5.2 遇到问题. 12 六 总结 . 13绪论由于单片机技术在各个领域正得到越来越广泛的应用,世界上许多集成电路生产厂家相继推出了各种类型的单片机,在单片机家族的众多成员中 MCS-52 系列单片机以其优越的性能、成熟的技术及高可靠性和高性能价格比,迅速占领了工业测控和自动化工程应用的主要市场,成为国内单片机应用领域中的主流。目前,可用于 MCS-52 系列单片机开发的硬件越来越多,与其配套的各类开发系统、各种软件也日趋完善,因此,可以极方便地利用现有资源,开发出用于不同目的的各类应用系统。本文主要讲的是单片机,课题名称为单片机流水灯控制,它使我们学会了如何使用单片机控制我们日常生活中的
3、多设备设施的应用。通过本课题的设计以后,使我了解到了单片机的许多方面的应用。本课题详细地介绍了一种由 MCS-89C51 集成块编程实现的控制电路,它完成了单片机流水灯控制功能,并给出了具体的硬件电路和相应的程序。这种控制电路可靠性,灵活性高,使用范围广,特别适合中小城市的交通灯、霓虹灯等的应用。而且,它对其他类似系统的开发具有一定的借鉴意义。我所设计的该产品是根据自身的兴趣和爱好所设计的,通过单片机的 32 个双向 IO 口的高低电平控制接在 IO 口上的 LED 的亮灭,来达到 LED 的闪烁和流水等效果,编写程序使花样尽量多,用六种颜色的 LED 穿插焊接,闪烁时更漂亮。一 题目分析 1
4、.1 采用单片机 STC89C51RC 做成最小系统来控制。1.2 利用最小系统做出心形流水灯,其 LED 灯的闪烁间隔时间采用延时程序控制,每种模式可采用不同的延时,灵活多变。程序编写过程当中采用数组、取余、循环移位、移位运算、延时等方式来达成想要的效果。编程内容以九种模式为核心,控制 LED 跑马灯和数码管进行九种变化方式,从而达到设计方案最终预期的效果。1.3 本设计选用以 AT89C51 单片机为主控单元。此最小系统提供了 32 个独立LED,由 IO 口控制,采用共阳级接法所以只有当 IO 口输出低电平时 LED 才会点亮。 二 硬件2.1 MCS-51 系列单片机的内部结构框图从上
5、图可知,它主要由 8 个部件通过片内总线连接而成。部件有中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行输入/输出口、串行口、定时/计数器、中断系统及特殊功能寄存器。8051 单片机有四个 8 位的双向输入/输出端口,每个端口均可按字节输入、输出,也可按位进行输入、输出,一个端口占 8 个引脚,共占 32 个引脚。在每个端口中都包括有一个锁存器、一个输出驱动器和输入缓冲器。因此,本流水灯实际上就是一个带有 32 个发光二极管的单片机最小应用系统,即为由 AT89C51 单片机、电阻、发光二极管、晶振、复位、电源等 电路和必要的软件组成的单个单片机。单片机最小系
6、统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对 51 系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路、按键输入、显示输出等。单片机接口电路主要用来连接计算机和其它外部设备。2.2 系统框图复位电单限流 彩色路 片电阻 ,机晶振电路 , 2.3 电路原理图D30D41KR30R4LED 绿 LED 红 P12P03D31LED 兰 R3 暖白LEDP11P021KR29R5P13P04D32D32.2K470R31P10D29D52.2K2.2KLED 黄1KR32D28D2D6R28R2R6LED 暖白 P14P01P05LEDLED 白白 1K1K
7、1KR1P00LEDLED 红绿D12.2KVCCD27D7R27R7 兰 LEDP15P064702.2KLEDLED 黄兰VCCVCCD26D8R26R8P16P07U1P101401K1KP1.0VCCC1P11239P00P1.1(AD0)P0.0LEDLED白白P12338P01P1.2(AD1)P0.1P13437P02D25D9R25R9P1.3(AD2)P0.2P17P2010uFP14536P03P1.4(AD3)P0.3P15635P042.2K470P1.5(AD4)P0.4P16734P05P1.6(AD5)P0.5LEDLED兰黄833P06P17P1.7(AD6)P
8、0.6932P07D24D10R24R10RST(AD7)P0.7P30P21R4P301031P3.0(RXD)EA/VPP10KP3111301K1KP3.1(TXD)ALE/PROGC2P321229P3.2(INT0)PSENLEDLED绿红P331328P27P3.3(INT1)(A15)P2.7P341427P26D23D11R23R11P3.4(T0)(A14)P2.6P31P 22Y130pFP351526P25P3.5(T1)(A13)P2.5P361625P242.2K2.2KP3.6(WR)(A12)P2.4P371724P2312MHzP3.7(RD)(A11)P2.3
9、LEDLED 暖白暖白C31823P22XTAL2(A10)P2.21922P21D22D12R22R12XTAL1(A9)P2.1P32P2330pF2021P20GND(A8)P2.01K1K89C51LEDLED 红绿 D21D13R21R13P33P244702.2KLEDLED 黄兰D20D14R20R14P34P25P121VCC1K1KLEDLED 白白D19D15POWERR19R15P35P263S12.2K470212143LEDLED 兰黄43D18D16R18R1665P36P27651K1KLEDLED 绿红 D17R17P372.2K LED 暖白图 2-3-1从原
10、理图中可以看出,如果要让接在 P1.0 口的 LED1 亮起来,那么只要把 P1.0口的电平变为低电平就可以了;相反,如果要接在 P1.0 口的 LED1 熄灭,就要把P1.0 口的电平变为高电平;同理,其他 LED 的点亮和熄灭的方法同 LED1。因此,要实现流水灯功能,我们只要将发光二极管依次点亮、熄灭。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管灯亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。 2.4各功能模块的选择及论证如下:复位电路:由电容和电阻构成,由电路图并结合电容电压不能突变的性质,可以知道,当系统一上电,RST
11、脚将会出现高电平,并且,这个高电平持续的时间由电路的 RC 值来决定.典型的 51 单片机当 RST 脚的高电平持续两个机器周期以上就将复位,所以,适当组合 RC 的取值就可以保证可靠的复位。本设计中 R=10K,C=10uF。所以采用上电复位:STC89C51RC 系列单片机为高电平复位,通常在复位引脚 RST 上连接一个电容到 VCC,再连接一个电阻到 GND,由此形成一个 RC 充放电回路保证单片机在上电时 RST 脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为 10K 和 10uF。如图 3.3.1 所示: 图 2-4-1 上电复位电路图晶振
12、电路:典型的晶振取 11.0592MHz(因为可以准确地得到 9600 波特率和19200 波特率,用于有串口通讯的场合)同时也可取 12MHz(产生精确的微秒级时歇,方便定时操作),因设计需要,本设计采用 12M 晶振。图 2-4-2 晶振电路图. LED 电路:由于发光二极管具有最大正向电流、最大反向电压的限制,使用时,应保证不超过此值。根据不同材料发光二极管的发光颜色有:红色光、黄色光、绿色光、红外光等。LED 有共阴极和共阳极两种。在此设计中我们采用共阳极,共阳极将发光二极管的阳极连接在一起,接入+5V 的电压。普通发光二级管的工作电流是 5-20 毫安,本设计中采用的是 3mm 发光
13、二级管,所以采用 470 电阻限流,使其正常工作,工作电流约为 10 毫安(一般有色发光二极管工作电流约为10 毫安,透明发光二极管工作电流为 20 毫安)。主要元件有不同阻值的电阻、LED。电阻为每个 LED 的限流电阻。三 系统软件设计 3.1 Keil_c 软件界面图Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用 C 来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全 Window
14、s 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到 Keil C51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍 Keil C51 开发系统各部分功能和使用。 Keil_c 软件界面如图 3-1 所示:图 3-1 Keil_c 软件界面3.2 程序流程图 此设计主要是采用控制系统的延时来完成的,此设计中是将流水灯,包含九种模式,每种模式都有一种流水灯样式,每次对 P0、P1、P2、P3 口赋予相应的值,即可达到预期的效果,再和不同的延时相配合,就能达到不同的流水效果了。具体程序见附录。在程序编写方面
15、,本设计采用相对简单的 C 语言进行编程,采用 C 语言进行编程的原因是它具有简单紧凑、灵活方便、可移植性好等特点。程序编写过程当中采用数组、取余、循环移位、移位运算、延时等方式来达成想要的效果。编程内容以九种模式为核心,控制 LED 流水灯进行九种变化方式,从而达到设计方案最终预期的效果。程序流程图如下: 图 3-2四 仿真调试4.1 仿真采用 proteus 仿真图仿真截图如下:图 4-1 4.2 导入代码图图 4-2-1 图 4-2-2五 系统调试及结果分析5.1 软件调试本次设计整体采用电阻阻值有有四种,每个阻值对应一个或两个不同颜色的LED 灯,如果对应不对会出现灯的亮度会发生一些变
16、化,但是不影响整体效果,线路有点多,焊接有点复杂,在安装元件时,我们应该对元件进行检测使它能达到电路所需的要求,应尽量避免装错元件,不然调试时会出现很多麻烦,然后仔细对照原理图进行安装。再进行元器件的安装焊接,在安装焊接时应注意避免虚焊、假焊现象,并且要注意掌握焊接时间。如果焊接时间过长就有可能将元器件损坏。软件调试一般分为以下四个阶段:1、 编写程序并查错;2、在汇编语言的编译系统中编译源程序 3、对程序进行编译连接,并及时发现程序中存在的错误;4、改正错误。在软件调试过程中,对出现的错误进行了认真的分析和修改,多次调试成功后,能够很好的达到既定的设计效果。 应用 Keil C51 根据设计
17、要求编写出程序后,调试中出现符号错误及无用编码,根据提示改进后最终成功编写出所要求的程序,并用仿真程序调用后得到预期效果。采用 STC-ISP 烧写软件进行程序烧写,开始不能下载,经检查串口出现问题,经安装驱动并检查插口序号后,成功下载软件到单片机。运行结果:成功下载软件,接通外部电源,LED 灯亮起,但是有部分并未按照预期完成,经调试程序后,与预期相同,总体效果比较好。5.2 遇到问题:1 LED 虚亮,经检查发现时电源部分跳线断了,补好后正常工作。2 所亮的灯不是所预想的,经过仔细检查发现程序赋值问题并解决。3 由于每个电阻的阻值不同,外表白色的 LED 灯不好对应阻值的大小,浪费了我好多
18、时间去排版,最好用纸画好电路图标清每个序号,写清灯的颜色才能更好地实现我想要的效果。4 LED 灯不亮,经用电表测量发现有个别灯坏了,或者对 LED 灯阳极和阴极焊接错误。5 焊接的过程也是困难重重,焊接的效果不是很理想,但是运行还是不错的。六 总结经过一周时间的努力,我们顺利的完成了这次单片机课设。这是一个磨练意志的过程。从课题的选择开始,硬件和软件系统的设计,到最后的 Proteus 软件仿真完成,这其中经历了很多困难,但是更重要的是在这个过程中我得到了很大的锻炼。此次编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭一方面,通过 IO 口引脚的电平高低来实现亮灭,低电平亮,
19、高电平灭来实现流水灯多彩的效果。通过 C51 单片机等一些器件的设计让我学习和掌握了单片机技术的基础知识和技术要点,也使以前学的很多知识都得到了运用,由过本次课设,我不 仅学到了关于单片机技术方面的许多专业知识,同时也让我感觉到团队合作的重要性。其实如何有效和快速的找到资料也是课设给我的启发,利用好图书馆和网络,是资源的到最好的利用。与他人交流思想是取得成功的关键,在交流中,不仅强化了自己原有的知识体系,也扩展了自己的思维。课设是一个通过思考、发问、自己解惑并动手、提高的过程。我会在以后的学习中不断学习,积累经验,完善自己。对于这次单片机课程设计中我不仅编写了代码,还自己亲手焊接了实物虽然忙活了两天但是收获还是很大的,通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。同时在设计的过程中发现了自己的不足之处,例如对以前所学过的知识理解得不够深刻,掌握得不够牢固,学习了单片机 C 语言。这里我要感谢郭老师指导,没有老师的细致讲解和耐心的讲解也不可能完成,非常感谢
限制150内