实习报告流水灯

  • 格式:doc
  • 大小:46.00 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机流水彩灯设计

目录

1、方案设计说明 (2)

(1)设计项目概述 (2)

(2)设计项目功能及操作介绍 (2)

(3)方案设计思路 (2)

2、硬件设计说明 (3)

(1)电路图 (3)

(2)I/O的分配 (3)

(3)电路工作原理 (4)

(4)主要器件介绍 (4)

3、软件设计说明 (5)

(1)软件设计概述 (5)

1)设计思路 (5)

2)总体功能 (6)

3)程序流程图 (7)

(2)程序总体结构及程序的执行与工作过程 (8)

(3)重要程序段说明 (8)

(4)程序清单 (9)

4、制作调试说明 (13)

(1)制作调试过程及结果 (13)

(2)所遇到的问题及解决方法 (13)

5、总结 (14)

1、方案设计说明

(1)设计项目概述

本次设计的题目是单片机流水彩灯设计通过综合掌握单片机编程的基本思想,以及中断,定时程序的基本编写方法。利用单片机设计并制作流水彩灯。该流水彩灯设置用一个AT89S51单片机来控制12LED灯产生不同的发光效果。

(2)设计项目功能及操作介绍

其中两个按键 K1 和 K2,上电后,12 个 LED 灯全亮;两个按键一个用于控制“流水灯”的启动和停止,另一个用于选择“流水”的花样。其中流水灯花样有三种:1)单个LED灯顺次点亮。2)每两个LED灯顺次点亮然后再顺次返回。3)从两端每三个LED灯顺向中间次点亮。

(3)方案设计思路

按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。流水灯实际上就是一个带有12个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。如果要让接在P0.0口的LED亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED熄灭,就要把P0.0口的电平变为高电平;同理,接在其他接口上LED灯的点亮和熄灭的方法也如此。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED12依次点亮、熄灭,12只LED灯便会一亮一暗的做流水灯了。在此我们还

应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

2、硬件设计说明

(1)电路图

(2)I/O的分配

单片机40引脚接+5V的电源,12、13引脚接开关K1、K2,20引脚接地。使用510 Ω电阻和发光二极管组成12条支路,分别对应连接单片机的8个P0口、4个P2口共12个。采用共阳极接法40段接上5V 的外加电压,通过单片机的P0、P2口控制输出高电平还是低电平。当电压为低电平的时候。二极管发光。该电路由2个30PF 的电容和一个晶震组成的,其中晶振接在18和19引脚,这个作用是为单片机提供一个正常的工作时钟频率。

(3)电路工作原理

该流水灯实际上就是一个带有十二个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。从原理图中可以看出,如果要让接在P0.0口的LED1亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED1熄灭,就要把P0.0口的电平变为高电平;同理,接在P0.1~P0.7口与P2.4~P2.7的其他11个LED的

点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED12依次点亮、熄灭,12只LED灯便会一亮一暗形成“流水灯”。

(4)主要器件介绍

AT89S51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89S51单片机时无须外扩存储器。

在MCS-51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容C1、C2形成反馈电路,可构成稳定的自激振荡器,振荡频率范围通常是1.2~12MHz。晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。

使用晶体振荡器时,C1、C2取值30±10pF。 C1、C2的取值虽然没有严格的要求,但电容的大小影响振荡电路的稳定性和快速性,通常取值20~30pF。在这里我们取值30 pF在设计印制电路板时,晶振和电容等应尽可能靠近芯片,以减少分布电容,保证振荡器振荡的稳定性。

3、软件设计说明

(1)软件设计概述

1)设计思路

单片机的应用系统由硬件和软件组成,在硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中一个重要的组成部分,我们编程实现流水灯的方法是循环移位法,即:在程序一开始就给I/O口送一个数,这个数本身就是让这个I/O口先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至I/O口,这样就实现流水效果,另外由于AT89S51系列单片机的指令中只有对累加器ACC中数据左移或右移的指令,所以我们应把需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再转送到I/O口,这样也可以实现流水效果。如果要让接在p0与p2口的发光二极管实现流水的效果,则是用程序改变p0与p2口的电平,由于我采用的为共阳极的接线方式,因此低电平为亮,高电平熄灭。

2)总体功能

这次程序总的要实现四个功能,通电后12 个 LED 灯全亮;单个LED灯顺次点亮;每两个LED灯顺次点亮然后再顺次返回;从两端每三个LED灯顺次向中间点亮。

程序的主要功能是p3.2口的按钮为控制启动与停止,p3.3口的

相关主题