单片机多功能花样流水灯设计.docx

上传人:b****7 文档编号:23595239 上传时间:2023-05-18 格式:DOCX 页数:22 大小:264.68KB
下载 相关 举报
单片机多功能花样流水灯设计.docx_第1页
第1页 / 共22页
单片机多功能花样流水灯设计.docx_第2页
第2页 / 共22页
单片机多功能花样流水灯设计.docx_第3页
第3页 / 共22页
单片机多功能花样流水灯设计.docx_第4页
第4页 / 共22页
单片机多功能花样流水灯设计.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

单片机多功能花样流水灯设计.docx

《单片机多功能花样流水灯设计.docx》由会员分享,可在线阅读,更多相关《单片机多功能花样流水灯设计.docx(22页珍藏版)》请在冰豆网上搜索。

单片机多功能花样流水灯设计.docx

单片机多功能花样流水灯设计

长江学院

 

花样流水灯设计报告

 

课题:

多功能花样流水灯

院系:

机械与电子工程系

专业:

自动化

班级:

学号:

姓名:

指导老师:

2016年12月20日

 

1、设计思路………………………………………………………………………3

2、流程图……………………………………………………………………………………..4

四、硬件设计思路和电路图7

1、设计思路7

2、电路图分析8

六、心得与体会13

附录:

…………………………………………………………………………………………..14

 

摘要

随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯不断变化闪烁。

LED灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。

但目前市场上各式样的LED灯控制器大多数用全硬件电路实现。

电路结构复杂、功能单一这样一旦制作成品只能按照固定的模式闪亮不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。

这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。

此外从功能效果上看,亮灯模式少而且样式单调缺乏用户可操作性影响亮灯效果。

因此有必要对现有的灯控制器进行改进。

流水灯是一串按一定的规律像流水一样连续闪亮。

流水灯控制是可编程控制器的一个应用(其控制思想在工业控制技术领域也同样适用。

流水灯控制可用多种方法实现(但对现代可编程控制器而言(利用移位寄存器实现最为便利。

通常用左移寄存器实现灯的单方向移动,用双向移位寄存器实现灯的双向移动。

本案例利用价格低廉的STC89C52RC系列单片机控制基色LED灯泡从而实现丰富的变化。

关键词:

STC89C52RCLED灯单片机花样流水灯

一、课程设计的要求

使用单片机设计一个流水灯控制系统,该控制系统可以实现以下要求LED灯按不同的花样和速度流动点亮,速度分九个等级,通过按键控制速度的加减,花样分五个种类,用按键控制加减,速度等级和花样种类通过数码管显示。

二、总体方案分析

依照课程设计要求,分析设计方案。

1、硬件方案分析

1,系统电源电路设计方案

A,使用LM317可调电压三段稳压芯片制作电源,但是我们系统供电电压为5V且LM317外围期间较多,生产成本变大。

故不选择此方案

B,使用7805三端稳压芯片制作电源,7805价格低廉外围器件少,稳压效果好输出电流最大可达1.5A,符合我们的需求,故使用此方案

2,单片机最小系统设计方案

A,使用STC89C52RC单片机,使用12Mhz晶振,设计按键复位电路,STC89C52RC单片机虽然也是51内核,但是片上资源有限

B,使用STC89C52RC单片机,使用12Mhz晶振,设计按键复位电路,STC89C52RC单片机为增强型单片机,相同价格下更具优势,使用12Mhz晶振是为了精确计算延时。

3,显示电路设计方案

A,使用单片机引脚直接控制,这个方案比较占用单片机引脚,且驱动电流直接通过单片机,容易损坏或缩减单片机寿命。

B,使用74LS164芯片以静态方式驱动数码管,此方案直接外部芯片驱动,单片机只需要两个引脚节约引脚,而且需要添加数码管不需要消耗新的引脚。

4,流水灯显示方案设计

A,使用专业LED灯驱动芯片,驱动LED,此方案成本高,不适合

B,使用74LS164芯片以静态方式驱动数码管,此方案直接外部芯片驱动,单片机只需要两个引脚节约引脚,而且需要添加数码管不需要消耗新的引脚。

 

2、软件方案分析

1,显示子程序设计思路

A,使用普通引脚模拟串口驱动164显示数码管,缺点是代码量较大,不方便

B,使用单片机自带串行口驱动164显示数码管,使用引脚单独控制数码管公共端这样可以起消隐作用,防止数据传输时显示乱跳

2,流水灯显示子程序设计思路

A,使用算法移位等操作实现流水灯花样,缺点是移植性不好代码量较大,每一个花样都需要新的代码

B,使用查表法实现流水灯,此方法只需一个查表程序,流水灯数组存在程序代码空间,可移植性好,方便编程,故选择这套方案。

3,延时方式设计思路

A,使用使用循环语句延时,此方法缺点是延时的时候无法检测到按键按下

B,使用中断计数的方式延时,此方法灵活多变,不影响单片机主程序运行

4,按键检测设计思路

A,在主循环里检测按键,当检测到按键按下延时10MS消抖,此方案堵塞单片机

B,在中断检测按键,利用10ms定时中断检测按键,此方法灵活多变故选择此方案

 

三、软件设计思路和流程图

1:

软件设计思路

整个系统工作由软件程序控制运行,根据需要可以上电后系统经过初始化,进入用户设定模式状态。

基于STC89C52RC单片机的灯控制方案实现对LED灯的控制。

本方案以STC89C52RC单片机作为主控核心,与驱动等模块组成核心主控制模块。

在主控模块上设有晶振电路和16个LED显示二极管,4个按键控制电路,及稳压控制电路。

P0口和P2口控制流水灯,P1口控制按键,通过改变表头地址查表来根据需要编写若干种花样亮灯模式,并采用中断方式,运用简单的数学逻辑法来改变各种亮灯时间的长短,达到在不同时刻输出灯亮或灯灭的控制信号。

通过单片机的串行口来控制74HC164芯片控制数码管静态显示。

 

软件资源分配:

Key_Speed_UpBITP1.0;速度按键加

Key_Speed_DownBITP1.1;速度按键减

Key_Pattern_UPBITP1.2;花样按键加

Key_Pattern_DownBITP1.3;花样按键减

Display_SelBITP1.7;数码管公共端控制引脚

Flag_DisplayBIT20H.0;数码管显示更新标志位

Flag_Speed_SetBIT20H.1;流水灯中断计数标志位

SpeedEQU30H;速度等级变量

PatternEQU31H;花样类型变量

Ms100EQU32H;100毫秒中断计数变量

MsXEQU33H;用于计算有多少个100毫秒

2:

流程图

主循环流程图

 

 

按键检测流程图

 

更新显示程序流程图

 

速度花样溢出处理程序流程图

 

传送数码管段码到74LS164芯片子程序流程图

 

 

中断计数程序流程图

 

中断程序框架

 

四、硬件设计思路和电路图

1、硬件设计思路

实验使用STC89C52RC单片机,电源供电使用以7805为核心的线性稳压电源供电,为了计算方便,使用12Mh晶振搭建起振电路,其次四个控制按键从P1.0、P1.1、P1.2、P1.3口输入,分别用来控制速度加减,花样加减。

然后使用P0、P2口作为16个流水灯的输出口。

TXD、RXD作为显示串行输出。

P1.7作为数码管公共端控制脚,作用是为了防止数码管数据更新时串行移位导致数码管短时间显示乱码,在送显之前先关掉公共脚,送显完毕再打开。

驱动数码管的芯片选择74ls16芯片,根据相应的连好线路图,其中单片机输出信号接74ls164的接收信号端,输出信号端接下一个驱动芯片的输入端,最后将所有的电源和地连接完毕,硬件设计部分就完成了。

 

2、原理图

流水灯模块电路

电源电路

震荡电路

五、实验过程步骤

1、编程

在打开KEIL建立一个工程,建立一个以.ASM为后缀的文本并追加到新建工程,编完程序进行编译组建成HEX文件。

2、仿真调试

(1)新建设计文档。

在进入原理图设计之前首先要构思好原理图(即必须知道所设计的项目需要哪些电路来完成(用何种模板,然后在ProteusISIS编辑环境中画出。

(2)设置工作环境。

根据实际电路的复杂程度来设置图纸的大小等。

在电路图设计的整个过程中图纸的大小可以不断地调整。

设置合适的图纸大小是完成原理图设计的第一步。

(3)放置元器件。

首先从添加元器件对话框中选取需要添加的元器件将其布置到

图纸的合适位置并对元器件的名称、标注进行设定,再根据元器件之间的走线等联系对元器件在工作平面上的位置进行调整和修改使得原理图美观、易懂。

(4)对原理图进行布线。

根据实际电路的需要利用ProteusISIS编辑环境所提供的各种工具、命令进行布线(将工作平面上的元器件用导线连接起来(构成一幅完整的电路原理图

仿真过程

Proteus仿真时单片机需要加载程序(加载程序为.HEX文件。

本设计利用Keil在新建Keil项目时选择AT89C51单片机作为CPU程序导入在“OptionsForTarget”对话窗口中选中“Output”选项中的“CreateHEXFile”编译链接后就可以生成.HEX文件。

在ProteusISIS中选中AT89C52并单击鼠标左键对AT89C52进行设置设置单片机时钟频率为12MHz按照正确的文件路径加载.HEX文件。

对单片机设置完毕后就可以开始仿真了。

六、心得与体会

此次单片机课程设计我学到了许多,第一次学会了软硬结合做一个项目出来,自我感觉非常自豪,但是由于自我能力的不足,我更加体会到理论知识与动手能力相结合的重要性,而且设计过程中使我懂得在设计程序之前,务必要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源?

懂得设计的关键是要有一个清晰的思路和一个完整的软件流程图。

在设计程序时,不能妄想一次就将整个程序设计好,反复修改,不断改进是程序设计的必经之路。

比如在设计显示程序时,一开始数码管的显示不全,然后就不断地调试延时程序,结果数字缺定在0不动,经过反复的调试终于将程序调试成功。

而且要学会拓展自己思路,一开始只做了一个速度显示,后来感觉挺好玩的,就做了花样显示。

同时要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你思路,这样也为资料的保存和交流提供了方便。

整个设计的过程中(还是碰到了一些问题。

比如对于键盘的延时防抖问题不能较好的解决,对于编程的顺序及各模块程序调用掌握得还不够好,对于一些相关的应用软件没能熟练掌握。

通过这几天的反复思考,以及参考网上的程序最终还是完成了设计。

设计中我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,在动手的过程中,不仅能增强实践能力而且在理论上可以有更深的认识。

 

近年来随着科技的发展,单片机的应用正在不断走向深入,同时带动传统控制检测日新月异更新,在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象点的软件结合加以完善。

流水灯可以更简单、方便的使用。

通过本课程设计使学生进一步巩固单片机原理及应用的基本概念、基本理论分析问题的基本方法,增强系统地运用已学的理论知识解决实际问题的能力和查阅资料的能力。

培养一定的自学能力和独立分析问题、解决问题的能力(能通过独立思考、查阅工具书、参考文献等寻找解决方案。

 

附录1程序清单

Key_Speed_UpBITP1.0

Key_Speed_DownBITP1.1

Key_Pattern_UPBITP1.2

Key_Pattern_DownBITP1.3

Display_SelBITP1.7;数码管的公共端控制脚,因为使用74LS164驱动,所以要控制公共端消隐

;当速度或花样变化时,就会把这个位置1,数码管更新显示

Flag_DisplayBIT20H.0;当定时器设定的计数时点到了,这个位就会置1,用来控制流水灯速度

Flag_Speed_SetBIT20H.1

SpeedEQU30H;存储速度

PatternEQU31H;存储花样

Ms100EQU32H;存储0.1秒

MsXEQU33H

ORG0000H

AJMPZhaoying_Initialize

ORG001BH;定时器1的中断地址

AJMPTime_1_Interrupt_Service_Routine

ORG0030H

Zhaoying_Initialize:

MOVTMOD,#10H;使用方式1来定时

;使用12MHZ的晶振

MOVTH1,#0ECH

MOVTL1,#78H

MOVIE,#88H;enableTTimer1Interrupt

SETBTR1;启动定时器1

MOVSpeed,#00H

MOVPattern,#00H

MOVMs100,#00H

MOVMsX,#00H

MOVA,#03H;对数码管零

MOVSBUF,A

JNBTI,$

CLRTI

MOVSBUF,A

JNBTI,$

CLRTI

SETBDisplay_Sel;Turnonthedigitaltubepowersupply

MOVR1,#00H;初始化元素

MOVR4,#16

MOVR2,#00H

Zhaoying_Main_Loop:

MOVA,Pattern

Pattern0:

CJNEA,#00,Pattern1;当按下花样按键时,Pattern这个变量就会从0到4变化,这里通过比较Pattern的值选着对应花样

MOVDPTR,#TAB1

Pattern1:

CJNEA,#01,Pattern2

MOVDPTR,#TAB2

Pattern2:

CJNEA,#02,Pattern3

MOVDPTR,#TAB3

Pattern3:

CJNEA,#03,Pattern4

MOVDPTR,#TAB4

Pattern4:

CJNEA,#04,PNext

MOVDPTR,#TAB5

PNext:

;使用查表法来更新流水灯状态

MOVA,R1

MOVCA,@A+DPTR

MOVP2,A

INCR1

MOVA,R1

MOVCA,@A+DPTR

MOVP0,A

INCR1

DJNZR4,del

MOVR1,#00

MOVR4,#16

del:

JNBFlag_Speed_Set,$;延时等待时间到达

CLRFlag_Speed_Set;这里是计时标志位,只有对应的延时时间到了才会继续执行,这里的作用是延时

LJMPZhaoying_Main_Loop;回到新的一轮循环

Time_1_Interrupt_Service_Routine:

;定时器1中断函数,当定时器计数到溢出时就会自动来执行这段子程序

PUSHDPH;因为是中断子程序,打个比方就好像你在背单词,这时候快递小哥给你打电话,这时候你需要先记住你背到了那个单词

PUSHDPL;等一下回来就可以接着背

PUSHACC;这三句PUSH是一样的道理,这是为了保存之前的寄存器状态,为了执行完中断函数后(取完快递),继续执行原来的程序(背单词)

CLREA;先关闭中断防止再次进入

Speed_U:

JBKey_Speed_Up,Speed_D

JNBKey_Speed_Up,$

INCSpeed

SETBFlag_Display

Speed_D:

JBKey_Speed_Down,Pattern_U

JNBKey_Speed_Down,$

DECSpeed

SETBFlag_Display

Pattern_U:

JBKey_Pattern_Up,Pattern_D

JNBKey_Pattern_Up,$

INCPattern

SETBFlag_Display

Pattern_D:

JBKey_Pattern_Down,C_Speed_10

JNBKey_Pattern_Down,$

DECPattern

SETBFlag_Display

C_Speed_10:

MOVA,Speed;速度如果数字比10大则转到0

CJNEA,#10,C_Speed_0

MOVSpeed,#0

C_Speed_0:

CJNEA,#255,C_Pattern_5;速度如果数字比0小,则转到10

MOVSpeed,#9

C_Pattern_5:

MOVA,Pattern

CJNEA,#5,C_Pattern_0;花样如果数字比5大转到0

MOVPattern,#0

C_Pattern_0:

CJNEA,#255,Next;花样如果速度比0小,转到4

MOVPattern,#4

Next:

JNBFlag_Display,EXT;频率

CLRFlag_Display

CLRDisplay_Sel

LCALLDisplay

SETBDisplay_Sel

EXT:

;0单独处理

MOVA,Speed

CJNEA,#0,NextA

INCMs100

MOVA,Ms100

CJNEA,#5,INTEND

MOVMs100,#00H

SETBFlag_Speed_Set

LJMPINTEND

NextA:

INCMs100;计数按键的数字,能达到延时的目的

MOVA,Ms100

CNT_A:

CJNEA,#10,INTEND

MOVMs100,#00H

INCMsX

MOVA,MsX

CNT_B:

CJNEA,Speed,INTEND

MOVMsX,#00H

SETBFlag_Speed_Set

INTEND:

MOVTH0,#0ECH;重置定时器的初值

MOVTL0,#78H

POPACC

POPDPL

POPDPH

SETBEA

RETI;中断返回

Display:

MOVA,Speed;显示速度

MOVDPTR,#Digital_Tube_Code_Address

MOVCA,@A+DPTR

MOVSBUF,A

JNBTI,$

CLRTI

MOVA,Pattern;Displaypattern

MOVCA,@A+DPTR

MOVSBUF,A

JNBTI,$

CLRTI

RET

Digital_Tube_Code_Address:

DB03H,9FH,25H,0DH,99H

DB49H,41H,1FH,01H,09H

TAB1:

DB0FEH,0FFH,0FDH,0FFH

DB0FBH,0FFH,0F7H,0FFH;向右的流水灯

DB0EFH,0FFH,0DFH,0FFH

DB0BFH,0FFH,7FH,0FFH

DB0FFH,0FEH,0FFH,0FDH

DB0FFH,0FBH,0FFH,0F7H

DB0FFH,0EFH,0FFH,0DFH

DB0FFH,0BFH,0FFH,7FH

TAB2:

DB0FFH,7FH,0FFH,0BFH

DB0FFH,0DFH,0FFH,0EFH;向左的流水灯

DB0FFH,0F7H,0FFH,0FBH

DB0FFH,0FDH,0FFH,0FEH

DB7FH,0FFH,0BFH,0FFH

DB0DFH,0FFH,0EFH,0FFH

DB0F7H,0FFH,0FBH,0FFH

DB0FDH,0FFH,0FEH,0FFH

TAB3:

DB0FEH,0FFH,0FBH,0FFH

DB0EFH,0FFH,0BFH,0FFH;向右间隔流水灯

DB0FFH,0FEH,0FFH,0FBH

DB0FFH,0EFH,0FFH,0BFH

TAB4:

DB0FFH,7FH,0FFH,0BFH

DB0FFH,0F7H,0FFH,0FBH;向左间隔流水灯

DB7FH,0FFH,0BFH,0FFH

DB0F7H,0FFH,0FBH,0FFH

TAB6:

DB0FEH,7FH,0FDH,0BFH

DB0FBH,0DFH,0F7H,0EFH;聚拢的流水灯

DB0EFH,0F7H,0DFH,0FBH

DB0BFH,0FDH,7FH,0FEH

TAB5:

DB55H,55H,0AAH,0AAH

DB55H,55H,0AAH,0AAH;花样表五,交替闪

DB55H,55H,0AAH,0AAH

DB55H,55H,0AAH,0AAH

END

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 演讲主持

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

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