基于51单片机的花样流水灯设计Word格式.docx

上传人:b****2 文档编号:5795313 上传时间:2023-05-05 格式:DOCX 页数:35 大小:474.16KB
下载 相关 举报
基于51单片机的花样流水灯设计Word格式.docx_第1页
第1页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第2页
第2页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第3页
第3页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第4页
第4页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第5页
第5页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第6页
第6页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第7页
第7页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第8页
第8页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第9页
第9页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第10页
第10页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第11页
第11页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第12页
第12页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第13页
第13页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第14页
第14页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第15页
第15页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第16页
第16页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第17页
第17页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第18页
第18页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第19页
第19页 / 共35页
基于51单片机的花样流水灯设计Word格式.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的花样流水灯设计Word格式.docx

《基于51单片机的花样流水灯设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于51单片机的花样流水灯设计Word格式.docx(35页珍藏版)》请在冰点文库上搜索。

基于51单片机的花样流水灯设计Word格式.docx

智能化仪表中的万用表,示波器,逻辑分析仪;

工厂流水线的智能化管理系统,成套设备中关键工作点的分布式监控系统;

导弹的导航装置,飞机上的各种仪表等等。

有资料表明:

2007年全球单片机的产值达到151亿美元,我国单片机的销售额达到400亿元人民币,我国每年单片机的需求量达50至60亿片,是全球单片机的最大市场。

可以说单片机已经渗透到了我们生活的各个领域。

1.2国内外研究现状以及本系统的重点问题

单片机自从问世以来便得到了广泛的应用,单片机以其体积小、重量轻、功耗低、功能强、数据在芯片内部传输速度较快、可靠性高、程序运行速度快、抗干扰能力强等优势迅速得到了人们的青睐,被广泛应用于测控系统、数据采集、智能仪器仪表、机电一体化产品、智能接口电路、计算机通信和单片机多级系统等领域。

而在流水灯的控制系统中,单片机更是取代了传统流水灯的分立元件设计,成为该系统的核心部件。

传统设计的流水灯,电路复杂,且可靠性较差,并且花样单一;

而单片机控制的流水灯,花样纷繁多样,且易于修改;

硬件电路比分立元件的设计简单很多,成本也极为低廉。

因此,单片机控制的流水灯必将在流水灯领域掀起一场大革命。

本文中所设计的系统为基于51单片机的花样流水灯控制系统。

该系统由一块单片机通过C语言编程来实现控制功能。

可靠且灵活性高、适用范围广、且变换的花样繁多,同时也适用于霓虹灯以及交通灯等领域。

本文将详细介绍该对该系统的设计。

1.3本文章节安排

第1章介绍了论文的研究背景及意义,对主要研究的技术指标和章节安排进行了说明。

第2章对本系统的设计方案的各个设计模块进行比较论证,得到了适合本文的设计方案。

第3章提出了系统设计框图以AT89S52单片机为主控制器,通过键盘来设控制流水灯的模式与流水灯的快慢。

第4章根据设计方案,设计了软件设计框图,并对各个模块的主要算法进行说明。

第5章利用protues进行软硬件设计仿真,并进行实物制作,验证实物的性能指标。

第6章对本文研究的内容和工作进行总结,查找不足并作出展望。

第2章系统设计方案论证

2.1控制器模块方案论证

方案一:

使用FPGA,让第一个灯先亮,然后通过移位,依次点亮其他的灯,便形成了流水灯。

初始状态时,所有灯都不亮,每来一个时钟脉冲CLK,计数器就加1.每当判断出计数器中的数值达到25000000时,就会点亮一个灯,并进行移位,FPGA输出的数据就应该先是10000000,隔一秒就编程110000000......一直变化到11111111,这样就依次点亮所有的灯,也就形成了流水灯。

而当当8个灯都被点亮时,需要一个操作使得所有的灯都恢复为初始状态,即:

灯都不亮,然后再一次流水即可。

如果是右移位,就会出现右流水现象。

反之就是左流水。

方案二:

使用单片机,将LED的正极接电源,负极接单片机的I/O,然后当单片机的I/O口输出低电平时,即点亮LED灯,然后通过移位指令让其他LED依次点亮,即形成流水效果。

若是左移指令,即为左流水;

右移指令则为右流水。

在数控方面,单片机会优于CPLD或FPGA器件,因为此处只是用于流水灯控制,不需要太高的速度以及精确度,且上述两种期间控制起来也比单片机麻烦,因此没有必要选用价格昂贵的CPLD和FPGA器件。

而单片机则不同,因为单片机在技术领域已经相当成熟,市面上流通有型号与品牌繁多的单片机,各种参考文献也非常多,且价格低廉,只需要几元人民币,因此用单片机控制会较为划算。

其次,单片机的编程方式较为多样,可选用普及度很高的C语言或汇编语言进行编程,在这一点上也优于CPLD和FPGA器件。

因此,最终决定采取单片机控制的方案。

由于单片机的高电平的电位为大于2V,低电平电位为小于0.8V,而供电的电源为5V,且一般的LED的耐压为3-4V,因此,若直接将I/O口与LED相连,有可能会烧坏LED,因此需要串联分压电阻。

阻值大约为220-300Ω。

考虑到PCB的布局布线,因此打算采用P0口和P2口来驱动LED灯。

但因为P0口的驱动能力较弱,因此需要在P0口外部提供的强上拉。

因此采取接阻值为10kΩ的排阻的方法来提供这个强上拉。

2.2键盘模块方案

采用独立式按键电路,每个按键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。

缺点为当按键较多时占用单片机的I/O口数目较多。

采用标准4×

4键盘,此类键盘采用矩阵式行列扫描方式,优点是当按键较多时可降低占用单片机的I/O口数目。

本系统只需要三个按键,分别为控制模式按键,流水灯变换速度加,流水灯变换速度减,因此本系统采用独立式按键即可满足系统要求,降低开发难度和硬件成本。

2.3电源模块方案

由于系统的单片机和LED灯的电压都只需要5V,不需要多种电压,因此直接采用市场上现有的220V转5V的电源,通过DC线连接系统的火牛头为系统供电。

第3章系统硬件设计方案

3.1系统设计框图

根据系统设计方案的论证,设计出如图3-1所示的系统设计框图,下面依次介绍各个模块的具体设计实现细节。

图3-1系统设计框图

3.2硬件电路设计

3.2.1电源电路

本设计需要用到5V供电,考虑采用USB转DC电源线接5V,1A开关电源以提供稳定的电压,加入一个6脚自锁开关控制电路通断。

单片机的40脚接至VCC,20脚接至GND,电路图如图3-2所示,图中J1为DC火牛头。

图3-2电源电路图

3.2.2单片机89C52最小系统

本系统采用的核心控制模块是常用的单片机型号:

89C52。

下面简要介绍该单片机的特点和使用方法。

3.2.2.1单片机简介

1.单片机内部结构

MCS-51结构的单片机内部采用模块式结构,其结构组成框图如图3-3所示。

由图可见,该系列单片机主要由随机数据存储器(RAM)、程序存储器(ROM)、中央处理器(CPU)、输入输出口、串行口、内置的定时器/计数器、中断控制、总线控制、以及时钟电路通过总线连接而成。

CPU是单片机内部的核心器件,分为运算器和控制器两大部分,此外还有面向控制的未处理功能。

STC89C52中有512字节的随机数据存储器(RAM),可通过片外扩展来提升RAM容量。

存储器(ROM),是用来存储程序的存储器,在STC89C52中集成了8K字节的FLASH存储器,如果片内的容量不够,还可扩展至64KB。

中断系统:

具有5个中断源,2级中断优先权。

定时器/计数器:

片内集成了3个16位的定时器/计数器T0、T1、T2,具有四种工作方式

串行口:

一个全双工异步串行口,具有四种工作方式,可进行串口通信,扩展并行I/O口,还可以与多个单片机相连以构成多级系统。

特殊功能寄存器(SFR):

共有26个特殊功能寄存器,用于CPU对片内各功能部件进行管理和监视。

特殊功能寄存器实际上是片内各个功能部件的控制寄存器和状态寄存器,这些特殊功能寄存器映射在片内RAM区80H-FFH的地址区内。

图3-3MCS-51内部结构

2.STC89C52引脚结构

目前,STC89C52多采用DIP-40封装,即双列直插,共40个引脚的封装方式。

此外,还有44引脚的PLCC和LQFP封装(都为表贴元件)。

其中40个引脚根据功能的不能可分为3类:

(1)、电源及时钟引脚——VCC、GND;

XTAL1、XTAL2。

(2)、控制引脚——PSEN非、ALE/PROG非、EA非/Vpp、RST(即复位)。

(3)、I/O口引脚——P0、P1、P2、P3,为4个8为I/O口的外部引脚。

3.单片机时钟介绍

单片机执行的指令均是在CPU控制的时序控制电路的控制下进行的,各种时序均与时钟周期有关。

(1)、时钟周期

时钟周期是单片机时钟控制信号的基本时间单位。

若时钟晶体的振荡频率为fosc,则时钟周期Tosc=1/fosc.如fosc=12MHz,Tosc=83.3ns。

(2)、机器周期

CPU完成一个基本操作所需要的时间称为机器周期。

单片机中通常把执行一条指令的过程分为几个机器周期。

每个机器周期完成一个基本操作,如取指令、读或写数据等。

STC89C52单片机每12个时钟周期为一个机器周期。

即Tcy=12/fosc.若fosc=12MHz,Tcy=1us。

STC89C52单片机的一个机器周期包括12个时钟周期,分为6个状态,S1-S6。

每个状态又分为两拍:

P1和P2。

因此,一个机器周期中的12个时钟周期表示为S1P1、S1P2、S2P1、S2P2、...、S6P2。

(3)、指令周期

指令周期是执行一条指令所需的时间。

STC89C52单片机中指令按字节来分,可分为单字节、双字节、三字节指令,因此执行一条指令的时间也有所不同。

对于简单的单字节指令,取出指令立即执行,只需要一个机器周期的时间。

而有些复杂的指令则需要两个或多个指令周期。

从指令的执行时间看,单字节和双字节指令一般为单机器周期和双机器周期,三字节指令是双机器周期,只有乘除法指令占用4个机器周期。

3.2.2.2复位电路设计

(1)、复位操作

当STC89C52单片机进行复位操作时,PC寄存器初始化为0000H,使STC89C52单片机从程序存储器的0000H单元开始执行程序。

除了进入系统的正常初始化之外,当程序运行出错或者操作错误使得系统处于“死锁”状态时,按复位键使得RST脚为高电平,使STC89C52单片机拜托当前状态而重启程序。

出PC寄存器外,复位操作还对其他一些寄存器有影响,例如SP、Acc、PSW、DPTR等。

(2)、复位电路

复位电路就是把电路恢复到起始状态的电路。

能够在系统上电时给予复位信号,并且会一直等到系统的电源不再改变为止才会撤离所给的复位信号,这就是复位电路的功能所在。

复位后的CPU的主要特征是各IO口呈现高电平。

对于单片机而言基本的复位操作是将单片机的复位引脚RST上给定一个高电平信号并让该信号维持在2个机器周期以上,便可触发系统复位中断从而将系统复位。

单片机系统的复位方式有:

按键复位和上电复位。

首先是按键复位:

复位电路最简单的方式就是通过按键复位直接在单片机复位引脚RST上加入高电平。

单片机的复位引脚接至电阻R1一端,电阻R1另外一端接地。

电路如下所示。

常用的途径是在复位引脚端和正电压之间安装复位按键。

当给一个力使按键被压迫向下,单片机的复位方位就会保持VCC。

假如保持按下10ms即可让系统实现复位,如图3-4所示。

图3-4按键复位图3-5上电复位图3-6混合模式

第二个是上电复位:

上电复位的电路图如图3-5所示,具体实现方式如下:

系统上电瞬间单片机复位引脚RST电压时间变化曲线如图3-7所示。

从曲线上易得当系统在一刹那完成上电,根据电容工作原理特性,它两端的Uc1不可能实现迅猛的变化,故电源电压全部加到R1上,然后电容C1开始充电,时间常数T=R1*C1,此时电容电压逐渐增加,R1两端电压逐渐降低,如果R1两端电压从高电平到低电平持续时间达到2个机器周期,即可实现单片机复位。

图3-7Urst电压时间曲线

在本设计中采用了按键复位和上电复位的两种模式(如图3-6所示)上电复位完成系统初始化,同时增加的手动按键复位可以方便调试使用。

3.2.2.3时钟电路设计

时钟电路用于产生单片机工作时所必需的控制信号,STC89C52单片机的内部电路正是在时钟电路的控制下严格按时序执行指令进行工作的。

在执行指令时,CPU首先到程序存储器中取出需要执行的指令操作码,然后译码,并由时钟电路产生一系列控制信号完成指令所规定的操作。

CPU发出的时序信号有两类,一类用于对片内各个功能部件的控制;

另一类用于对片外存储器或I/O口的控制。

(1)、内部时钟方式

STC89C52内部有一个用于构成振荡器的高增益反向放大器,它的输入端为芯片的XTAL1脚,输出端为XTAL2脚。

这两个引脚跨界石英晶体和微调电容,构成一个稳定的自激振荡器。

电路的电容C1和C2通常选择30pF。

该电容的大小会影响振荡器频率的高低,振荡器的稳定性和起振的快速性。

晶体振荡频率的范围通常是1.2-12MHz。

STC89C52通常采用12MHz的石英晶体。

晶体的频率越高,系统的时钟频率越高,单片机的运行速度也就越快。

但运行速度快对存储器的速度要求就越高,对PCB电路板的工艺要求也就越高,即要求线间的寄生电容要小。

晶体和电容应尽可能安装得离单片机近一些以减少寄生电容,更好地保证振荡器稳定、可靠地工作。

为了提高温度稳定性,应采用温度稳定性好的电容。

(2)、外部时钟方式

外部时钟方式使用现成的外部振荡器产生脉冲信号,通常用于多片STC89C52单片机同时工作,以便于多片单片机之间的同步,一般为地狱12MHz的方波。

外部时钟源直接接到XTAL1端,XTAL2端悬空。

(3)、时钟信号的输出

当使用片内振荡器时,XTAL1、XTAL2引脚还能为应用系统中的其他芯片提供时钟,但需要增加驱动能力。

(4)、晶振电路

在单片机最小系统晶振的作用是给单片机输入时钟信号,这个时钟信号就是单片机的工作速度。

单片机工作的最小时间计量单位就是由晶振决定的。

电路图如图3-4所示。

晶振电路电容选择的原则为:

(1)、C1,C2,因为每一种晶振都有各自的特性,所以最好按制造厂商所提供的数值选择外部元器件。

(2)、在误差允许的区域内,C1和C2值都是越小,实现的功能就越精确,如果C1和C2值比正常数值大时,可能会使振荡器更加稳定,可是也会增加响应的时间。

图3-8晶振电路

本系统的单片机最小系统的时钟电路采用图3.8所示的晶振电路,其中晶振选用12MHz石英晶体振荡器,接至单片机的XTAL1和XTAL2脚,两个电容选用30p瓷片电容。

通过上述具体方案的设计论证,本系统设计了如图3-9所示的最小系统。

图3-9单片机最小系统

3.2.2.4程序下载电路

在实际制作实物的还需要增加一个下载电路模块,方便调试下载。

程序下载电路中包含一个4pin排针,分别接至Vcc、单片机的10脚(RXD/P3.0)、单片机的11脚(TXD/P3.1)、GND。

在下载程序时,需采用STC公司的USB下载器,下载器的VCC脚接排针VCC脚;

下载器的RXD脚接排针的TXD脚;

下载器的TXD脚连接排针的RXD脚;

下载器的GND脚接排针的GND脚,然后用STC公司的ISP软件选择keil编译生成的hex文件,即可将程序烧写到单片机中。

电路如图3-10所示。

图中P2即为4pin排针。

图3-10下载接口电路

3.2.3按键电路

按键选择弹片开关,电路由3个弹片开关组成。

3个弹片开关的一段依次接至单片机的1(P1.0)、2(P1.1)、3(P1.3)脚;

另一端共地。

功能依次为模式切换、加快运行速度、减慢运行速度,电路如图3-11所示。

图3-11按键电路

3.3.4LED灯电路

将16个LED的负极依次与单片机的P1口和P2口的16个I/O口相接,正极则与5V电源相接。

但由于直接相接可能会烧坏发光二极管,因此需要串联电阻。

限流电阻的阻值根据设计经验及现有电阻取值为220Ω.由于为了便于设计PCB电路板时布局布线,故此处的电阻采用贴片0805封装。

此外,由于P0口的驱动能力较弱,无法直接驱动8个发光二极管,故选择在P0口的I/O和发光二极管的负极之间接入10kΩ的共阳排阻以提供一个强上拉。

电路图如图3-12中P1即为10kΩ共阳排阻。

图3-12LED电路

第4章程序设计及软件仿真

4.1软件设计框图

如图4-1所示为本系统的软件实现流程图。

图4-1软件流程

4.2软件开发平台选择

软件设计的开发平台采用美国keilSoftware公司出品的Keiluvision4。

Keiluvision4是美国keilsoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编语言相比,C语言在功能上、结构性、可读性、可维护性上有明显的又是,因而易学易用。

keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部分组合在一起。

运行keil软件需要win98、NT、win2000、winXP等操作系统。

若使用C语言进行编程,keil将是不二之选,即使是使用汇编语言编程,keil方便易用的集成环境以及强大的软件仿真调试工具也能让开发者事半功倍。

4.3软件系统功能模块

本系统采用结构化模块程序设计,所谓“模块”,实质上就是具有一定功能、相对独立的程序段。

在编程过程中首先将所要完成的各个功能分别按模块编写和调试,所有模块调试成功以后,再将各个模块连接整合在一起形成系统。

模块化程序设计的主要特点是:

单个模块比一个完整的程序更容易编写、查错和测试;

模块化程序可以实现共享,一个模块化程序可被多个任务在不同的条件下调用;

把输入/输出封装起来,可以使程序减少不必要的修改;

这样的设计有利于程序代码的优化和共享,而且便于设计、调试和维护,可以增强系统的可靠性。

本系统的主要模块有:

初始化模块、延时模块、定时器控制模块、键盘扫描模式、LED灯输出控制模块,下面依次简要介绍。

4.3.1初始化模块

根据本系统的设计要求,当系统上电之后,LED灯并不亮,只有进入模式切换之后才有变换,因此需要对系统的控制参数,比如模式标志位、速度变量进行初始化,其代码如下:

voidInitialCPU(void)

{RunMode=0x00;

TimerCount=0;

SystemSpeedIndex=10;

Delay1ms(500);

SetSpeed(SystemSpeedIndex);

}

4.3.2延时函数

系统控制流水灯的变换主要是通过延时函数的延时时间长短来做出相应的反映,因此设置一个延时函数是控制速度的关键,其代码如下:

voidDelay1ms(unsignedintcount)

{

unsignedinti,j;

for(i=0;

i<

count;

i++)

for(j=0;

j<

120;

j++);

其中,count为时间控制参数。

4.3.3定时器控制模块

由于单片机资源有限,通过利用中断来检测按键,提高单片机的时钟利用率,其代码如下:

voidInitialTimer2(void)

{T2CON=0x00;

//16BitAuto-ReloadMode

TH2=RCAP2H=0xFC;

//重装值,初始值TL2=RCAP2L=0x18;

ET2=1;

//定时器2中断允许

TR2=1;

//定时器2启动

EA=1;

4.3.4键盘扫描模式

键盘扫描主要是利用IO口读取的参数与0相与,然后进行比较,判断是哪个键输入了控制信号,比较之后返回相应的值,返回值被另一个键盘反应函数得到相应的控制信号。

其代码分为两部分,一部分为扫描部分,一部分为输出控制信号,扫描部分如下:

unsignedcharKeyTemp,CheckValue,Key=0x00;

CheckValue=P1&

0x07;

if(CheckValue==0x07)return0x00;

Delay1ms(10);

KeyTemp=P1&

if(KeyTemp==CheckValue)return0x00;

if(!

(CheckValue&

0x01))Key|=0x10;

0x02))Key|=0x20;

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2