ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:161.73KB ,
资源ID:3448304      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3448304.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机的流水灯系统设计.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于51单片机的流水灯系统设计.docx

1、基于51单片机的流水灯系统设计 2.1三个模块的阐述 参考文献.17 设计心得体会.18 附录19基于单片机的花样流水灯及其数码显示技术摘要:自计算机问世以来,单片机技术在社会各领域中得到了广泛的应用。在流水灯控制系统中,单片机更是取代了由齿轮调节延迟时间的旧式市发展速度,成为日后此系统中的核心部分。由于单片机具有一些突出的优点:体积小、重量轻、电源单一、功耗低;功能强、价格低;数据大都在单片机内部传送,运行速度快、抗干扰能力强、可靠性高,所以单片机被广泛的应用于测控系统、数据采集、智能仪器仪表、机电一体化产品、智能接口、计算机通信以及单片机的多级系统等领域。本文主要讲的是单片机,课题名称为多

2、按键花样流水灯,它使我们学会了如何使用单片机控制我们日常生活中的多设备设施的应用。通过本课题的设计以后,使我了解到了单片机的许多方面的应用。 关键词:花样灯 单片机 数码管1. 设计思路(1)为了使设计具有更强的针对性和实用性,使用单片机设计的控制方案,基于AT89C51的单片机设计方案。(2)确定系统控制的总体设计,包括流水灯变化方案设计以及系统应拥有的各项功能,在这里,本设计除了有流水灯状态控制能实现基本的变化功能,还增加了数码管显示提示。 (3)设计分为3个模块,分别为电源模块,数码显示模块,花样灯模块,并对3个模块进行充分的校正和完善。(4)进行软件系统的设计,对于本系统,本组采用单片

3、机C语言编写,对单片机内部结构和工作情况做了充足的研究,了解延时原理,总体上完成了软件的编写。2 花样流水灯与数码显示系统总体设计2.1三个模块的阐述 2.1.1电源模块电源提供的方案 为使模块稳定工作,须有可靠电源。因此考虑了两种电源方案:方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,我选择第二种方案。电源模块仿真效果图1-12.1.2 显示模块数码管显示方案该系统要求完成计数功能。基于上述原因,

4、我考虑了二种方案:方案一:采用数码管显示。这种方案只显示有限的符号和数码字符,简单,方便。方案二:采用点阵式LED 显示。这种方案虽然功能强大,并可方便的显示各种英文字符,汉字,图形等,但实现复杂,且须完成大量的软件工作。综上所述,我选择第一种方案。数码管显示模块仿真图1-2:2.1.3 花样灯模块:本方案采用3种变化形式,且3种方式依次按顺序变化,采用8个LED灯作为一个系统。 花样灯仿真效果图1-3:图1-1 图1-2 图1-32.2单片机花样流水灯与数码显示系统的通行方案设计1)系统采用8个LED灯,一个数码显示器,及电源。2)流水灯有3种变化方式。 第一种:LED灯由L1-L8逐个变亮

5、;第二种;L1,L8亮,接着L2,L7亮,再接下来L3,L6亮,然后L4,L5亮,再这样反循环一次。第三种;L1,L3,L5,L7,L2,L4,L6,L8依次亮。 且三种方式按顺序执行,成花样流水灯状。 3)方式1.2数码显示管是用来记录亮灯的个数,方式3是用来记录哪一个灯亮。 4)具体的数据及其显示如表2-1所示。2.3 单片机花样灯与数码显示系统的功能要求系统要满足稳定,准确,快速的三个基本要求。1)稳定:就是基本上实现了方案设计思路上的变化样式,并且不会出现错误和紊乱。2)准确; 即系统的偏差接近可允许范围之内,方可认为准确。3)快速:顾名思义,就是系统的运行速度可以调整,并且不会影响到

6、系统的其他性能指标即可。2.4单片机花样灯与数码显示系统的基本构成及原理单片机设计流水灯控制系统,可用单片机直接控制流水灯的状态变化,不同的程序控制不同的变化状态,本次仅仅分为3种形式变化,当然还可以有更多的变化。据此,本设计系统以单片机为控制核心,连接成最小系统,由按键设置模块产生输入,流水灯模块,数码管显示模块接受输出。系统的总体框图如上1-4所示。图1-4系统的总体框图L1L2L3L4L5L6L7L8数码管计数方式1100000001110000002111000003111100004111110005111111006111111107111111118方式2100000121100

7、00114110001116111111118111111118111001116110000114100000012方式3100000001001000003000010005000000107010000002000100004000001006000000018表2-1表2-13花样灯与数码显示系统的硬件设计3.1 AT89C51单片机简介 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字

8、节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.1.1 AT89C51单片机的主要特性 与MCS-51 兼容 ,4K字节可编程闪烁存储器 ,寿命:1000写/擦循环,数据保留时间:10年,全静态工作:0Hz-24Hz,三级程序存储器锁定,128*8位内部R

9、AM,32可编程I/O线,两个16位定时器/计数器,5个中断源(两个外部中断源和3个内部中断源) ,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。 定时器原理定时器工作的基本原理其实就是给初值,让它不断加1直至减完为模值,这个初值是送到TH和TL中的。它是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值,即所要求的计数值设定为C,把计数初值设定为TC 可得到如下计算通式:TC=M-C式中,M为计数器模值。计数值并不是目的,目的是时间值,设计1次的时间,即定时器计数脉冲的周期为T0,它是单片机系统主频周期的12倍,设要求的时间值为T

10、,则有C=TT0。计算通式变为:T=(MTC)T0模值和计数器工作方式有关。在方式0时M为8192;在方式1时M的值为65536;在方式2和3为256。就此可以算出各种方式的最大延时。如单片机的主脉冲频率为12MHZ,经过12分频后,若采用方式最大延时只有8.129毫秒,采用方式最大延时也只有65.536毫秒。这就是为什么扫描周期为50ms的原因,若使用软件则会耽搁程序流程,显然不可行。相反,时间计时方面却不可能只用计数器,因为显然秒钟已经超过了计数器的最大定时间,所以我们还必须采用定时器和软件相结合的办法才能解决这个问题。图3 AT89C51系列单片机的内部结构示意图3.1.2 主要引脚功能

11、 图4 AT89C51引脚图VCC:电源电压GND:接地P0口:P0口是一组8位双向I0口。P0口即可作地址数据总线使用,又可以作为通用的I/O口使用。当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能再作I/O口使用了。在访问期间激活要使用上拉电阻。P1口:Pl 是一个带内部上拉电阻的8准位双向IO口,P1作为通用的I/O口使用。P2 口:P2 是一个带有内部上拉电阻的8 位准双向IO 口,P2即可作为通用的I/O口使用,也可以作为片外存储器的高8位地址总线,与P0口配合,组成16位片外存储器单元地址。P3 口:P3 口是一组带有内部上拉电阻的8 位

12、准双向I0 口。P3 口除了作为通用的I/O口使用之外,每个引脚还具有第二功能,具体分配如表2表2 具有第二功能的P3口引脚端口引脚第二功能:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外中断0)P3.3/ INT1(外中断1)P3.4T0(定时计数器0外部输入)P3.5T1(定时计数器1外部输入)P3.6/ WR(外部数据存储器写选通)P3.7/ RD外部数据存储器读选通)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)可打开或关闭该功能

13、。DISRT0位缺省为RESET输出高电平打开状态。ALEPROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的16 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,

14、应设置ALE无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。EAVPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vcc。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。3

15、.2 系统硬件总电路构成及原理实现本设计要求的具体功能,可以选用AT89C51单片机及外围器件构成最小控制系统,8个发光二极管分成3种变化方式,数码显示管进行计数。3.2.1系统硬件电路构成本系统以单片机为核心,系统硬件电路由状态灯,数码管显示,按键,组成。其具体的硬件电路总图如图1-5所示。实物图如1-6所示。3.2.2系统工作原理 先对系统进行初始化,之后再调用子程序入单片机内。分别控制循环彩灯及其数码管显示模块。(以上两个模块及其工作方式都已经在上面提到)之后就是对程序的无限循环了,达到3种方式不停循环的目的,可以实现手动关闭。图1-5 基于单片机的流水灯控制系统电路图图1-6,硬件结构

16、4系统软件程序的设计 4.1 程序主体设计流程全部控制程序实际上分为若干模块:键盘设置处理程序,状态灯控制程序,LED显示程序紧停程序等。整个软件程序、流程图如图1-7所示。 4.2 理论基础知识4.2.1数组及while,switch,等语句数组:所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元

17、素的集合称为数组。While语句:while语句格式为:while(表达式)语句;/*循环体*/这里的表达式是循环能否继续下去的条件,而语句是循环体。只要表达式为真,则执行循环体内语句。否则终止循环,执行循环体外语句。switch语句switch语句格式为:switch(表达式)case 常量表达式1: 语句1case常量表达式2: 语句2.case常量表达式n: 语句ndefault: 语句n+1说明switch后面的括号内的表达式,ANSI标准允许为任何类型.当表达式与某一个case后面的常量表达式相等时,就执行case后面的语句,若没有匹配,则执行default后面的语句.每一个case

18、的常量表达式的值须互不相同,否则便会出现矛盾.各个case和default的出现次序不影响结果.执行完一个case语句,流程就转移到下一个case并继续执行.因此在case的分支后,加break语句来跳出switch语句.4.2.2软件延时原理单片机因具有体积小、功能强、成本低以及便于实现分布式控制而有非常广泛的应用领域1。单片机开发者在编制各种应用程序时经常会遇到实现精确延时的问题,比如按键去抖、数据传输等操作都要在程序中插入一段或几段延时,时间从几十微秒到几秒。有时还要求有很高的精度,如使用单总线芯片DS18B20时,允许误差范围在十几微秒以内2,否则,芯片无法工作。用51汇编语言写程序时

19、,这种问题很容易得到解决,而目前开发嵌入式系统软件的主流工具为C语言,用C51写延时程序时需要一些技巧3。因此,在多年单片机开发经验的基础上,介绍几种实用的编制精确延时程序和计算程序执行时间的方法。实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。 单片机系统一般常选用11.0592MHz、12MHz或6MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1s和2s,便于精确延时。本程序中假设使用频率为12MHz的晶振。最长的延时时间可达216=65536s。若定时

20、器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。 在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。但应该注意,C51编写的中断服务程序编译后会自动加上PUSH ACC、PUSH PSW、POP PSW和POP ACC语句,执行时占用了4个机器周期;如程序中还有计数值加1语句,则又会占用1个机器周期。这些语句所消耗的时间在计算定时初值时要考虑进去,从初值中减去以达到最小误差的目的。 4.3程序模块的设计4.3.1花样

21、灯的设计 case 0:P2=0x10;P0=tableNUMled_point; case 1:P2=0x20;P0=tableNUMled_point; case 2:P2=0x40;P0=tableNUMled_point; case 3:P2=0x80;P0=tableNUMled_point; case 4:P2=0x10;P0=tableNUMled_point; case 5:P2=0x20;P0=tableNUMled_point;case 6:P2=0x40;P0=tableNUMled_point;case 7:P2=0x80;P0=tableNUMled_point; c

22、ase 8:P2=0x10;P0=tableNUMled_point;case 9:P2=0x20;P0=tableNUMled_point;case 10:P2=0x40;P0=tableNUMled_point; case 11:P2=0x80;P0=tableNUMled_point; case 12:P2=0x10;P0=tableNUMled_point;case 13:P2=0x20;P0=tableNUMled_point;case 14:P2=0x40;P0=tableNUMled_point;case 15:P2=0x80;P0=tableNUMled_point;case

23、16:P2=0x10;P0=tableNUMled_point;case 17:P2=0x20;P0=tableNUMled_point;case 18:P2=0x40;P0=tableNUMled_point; case 19:P2=0x80;P0=tableNUMled_point; case 20:P2=0x10;P0=tableNUMled_point;case 21:P2=0x20;P0=tableNUMled_point;case 22:P2=0x40;P0=tableNUMled_point; case 23:P2=0x80;P0=tableNUMled_point;4.3.2L

24、ED数码管显示 case 0:P1=tableLEDled_point;break; case 1:P1=tableLEDled_point;break; case 2:P1=tableLEDled_point;break; case 3:P1=tableLEDled_point;break; case 4:P1=tableLEDled_point;break; case 5:P1=tableLEDled_point;break; case 6:P1=tableLEDled_point;break; case 7:P1=tableLEDled_point;break; case 8:P1=ta

25、bleLEDled_point;break; case 9:P1=tableLEDled_point;break; case 10:P1=tableLEDled_point;break; case 11:P1=tableLEDled_point;break; case 12:P1=tableLEDled_point;break; case 13:P1=tableLEDled_point;break; case 14:P1=tableLEDled_point;break; case 15:P1=tableLEDled_point;break; case 16:P1=tableLEDled_poi

26、nt;break; case 17:P1=tableLEDled_point;break; case 18:P1=tableLEDled_point;break; case 19:P1=tableLEDled_point;break; case 20:P1=tableLEDled_point;break; case 21:P1=tableLEDled_point;break; case 22:P1=tableLEDled_point;break; case 23:P1=tableLEDled_point;break; 4.4 系统软件调试4.4.1 proteus仿真器仿真的概念其实使用非常广

27、,最终的含义就是使用可控的手段来模仿真实的情况。单片机系统开发中的仿真包括软件仿真和硬件仿真。软件仿真这种方法主要是使用计算机软件来模拟实际的单片机运行,因此仿真与硬件无关的系统具有一定的优点。用户不需要搭建硬件电路就可以对程序进行验证,特别适合于偏重算法的程序。软件仿真的缺点是无法完全仿真与硬件相关的部分,因此最终还要通过硬件仿真来完成最后的设计;硬件仿真使用附加的硬件来替代用户系统的单片机并完成单片机全部或大部分的功能。使用了附加硬件后用户就可以对程序的运行进行控制,例如单步、全速、查看资源断点等。系统的软件调试借助于proteus仿真器,在进行系统软件的连续调试之前要先进行软件的初调,就

28、是要使各个子程序模块运行正确,程序的运行流程正确。软件调试主要分以下几个步骤进行:功能子程序的调试。能子程序的调试包括运算、采样、数字滤波以及PID运算等子程序的调试。在调试功能子程序时,许多参数都是未知的,要根据其所需的条件,给出假定的数据,使其运行,如果能完成预定的处理功能或与手工计算的结果相符,就说明该子程序己调试通过。调试时由小到大,由里到外。例如,调试PID算法子程序时,先调通其包含的各个运算子程序和参数处理子程序,然后将它们连起来进行通调。通调时,也是假定一些数据、参数和初始条件,然后运行程序。当运算结果与手工计算的结果相同时,该算法子程序则调试完成,反之,就要进行相应的修改。其它

29、子程序的调试同理;程序流程的调试。序流程的调试主要是查看程序运行的步骤是否正确,在某时刻程序运行所处的位置是否正确,是否能正确运行各个中断服务程序。在调试过程中,先将PID算法子程序屏蔽,输出可控硅导通时间用一个固定的常数代替,在各个中断服务子程序设置断点,然后运行程序,查看程序是否能运行到所有的断点,若所有断点都能运行到,则程序流程基本正确。去掉所有断点,再一次运行程序,查看可控硅状态,从而判断程序流程正确,反之,若程序流程不正确,做相应的修改后,重新调试;功能程序与算法程序的通调。完成整个程序流程的调试后,将PID等算法子程序加入,在算法子程序前或后设置断点,运行整个程序。当程序在断点处暂停时,查看PI

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

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