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

上传人:l*** 文档编号:80922312 上传时间:2023-03-23 格式:PDF 页数:26 大小:1.26MB
返回 下载 相关 举报
基于51单片机的流水灯系统设计.pdf_第1页
第1页 / 共26页
基于51单片机的流水灯系统设计.pdf_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《基于51单片机的流水灯系统设计.pdf》由会员分享,可在线阅读,更多相关《基于51单片机的流水灯系统设计.pdf(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1.设计思路.2 1.1 电源模块.3 1.2 显示模块.3 1.3 花样灯模块.3 2 单片机花样灯与数码显示系统总体设计.错误!未定义书签。2.1 三个模块的阐述 2.2 单片机花样灯与数码显示控制系统的通行方案设计.错误!未定义书签。2.3 单片机花样灯与数码显示控制系统的功能要求.错误!未定义书签。2.4 单片机花样灯与数码显示控制系统的基本构成及原理.错误!未定义书签。3 花样灯与数码显示系统的硬件设计.7 3.1 AT89C51 单片机简介.8 3.1.1 AT89C51单片机的主要特性.8 3.1.2 主要引脚功能.10 3.2 系统硬件总电路构成及原理.11 3.2.1系统硬件

2、电路构成.11 3.2.2系统工作原理.12 4 系统软件程序的设计.15 4.1 程序主体设计流程.15 4.2 理论基础知识.16 4.2.1数组及while、switch等语句.错误!未定义书签。4.2.2软件延时原理.错误!未定义书签。4.3 程序模块设计.错误!未定义书签。4.3.1花样灯的设计.错误!未定义书签。4.3.2 LED数码管显示.错误!未定义书签。4.4 系统软件调试.20 4.4.1 proteus仿真.20 4.4.2keil仿真.20 参考文献.17 设计心得体会.18 附录19 基于单片机的花样流水灯及其数码显示技术 摘要:自计算机问世以来,单片机技术在社会各领

3、域中得到了广泛的应用。在流水灯控制系统中,单片机更是取代了由齿轮调节延迟时间的旧式市发展速度,成为日后此系统中的核心部分。由于单片机具有一些突出的优点:体积小、重量轻、电源单一、功耗低;功能强、价格低;数据大都在单片机内部传送,运行速度快、抗干扰能力强、可靠性高,所以单片机被广泛的应用于测控系统、数据采集、智能仪器仪表、机电一体化产品、智能接口、计算机通信以及单片机的多级系统等领域。本文主要讲的是单片机,课题名称为多按键花样流水灯,它使我们学会了如何使用单片机控制我们日常生活中的多设备设施的应用。通过本课题的设计以后,使我了解到了单片机的许多方面的应用。关键词:花样灯 单片机 数码管 1.设计

4、思路(1)为了使设计具有更强的针对性和实用性,使用单片机设计的控制方案,基于 AT89C51 的单片机设计方案。(2)确定系统控制的总体设计,包括流水灯变化方案设计以及系统应拥有的各项功能,在这里,本设计除了有流水灯状态控制能实现基本的变化功能,还增加了数码管显示提示。(3)设计分为 3 个模块,分别为电源模块,数码显示模块,花样灯模块,并对 3 个模块进行充分的校正和完善。(4)进行软件系统的设计,对于本系统,本组采用单片机 C 语言编写,对单片机内部结构和工作情况做了充足的研究,了解延时原理,总体上完成了软件的编写。2 花样流水灯与数码显示系统总体设计 2.1 三个模块的阐述 2.1.1

5、电源模块 电源提供的方案 为使模块稳定工作,须有可靠电源。因此考虑了两种电源方案:方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟 电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,我选择第二种方案。电源模块仿真效果图 1-1 2.1.2 显示模块 数码管显示方案 该系统要求完成计数功能。基于上述原因,我考虑了二种方案:方案一:采用数码管显示。这种方案只显示有限的符号和数码字符,简单,方便。方案二:采用点阵式 LED 显示。这种方案虽然功能强大,并可

6、方便的显示各种英文字符,汉字,图形等,但实现复杂,且须完成大量的软件工作。综上所述,我选择第一种方案。数码管显示模块仿真图 1-2:2.1.3 花样灯模块:本方案采用 3 种变化形式,且 3 种方式依次按顺序变化,采用 8 个 LED灯作为一个系统。花样灯仿真效果图 1-3:图 1-1 图 1-2 图 1-3 2.2 单片机花样流水灯与数码显示系统的通行方案设计 1)系统采用 8 个 LED 灯,一个数码显示器,及电源。2)流水灯有 3 种变化方式。第一种:LED 灯由 L1-L8 逐个变亮;第二种;L1,L8 亮,接着 L2,L7 亮,再接下来 L3,L6 亮,然后 L4,L5 亮,再这样反

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

8、设计流水灯控制系统,可用单片机直接控制流水灯的状态变化,不同的程序控制不同的变化状态,本次仅仅分为 3 种形式变化,当然还可以有更多的变化。据此,本设计系统以单片机为控制核心,连接成最小系统,由按键设置模块产生输入,流水灯模块,数码管显示模块接受输出。系统的总体框图如上 1-4 所示。图 1-4 系统的总体框图 单片机 最小系统 外围接口电路 LED 数码管显示 LED 流水灯 按键 控制电路 L1 L2 L3 L4 L5 L6 L7 L8 数 码 管 计数 方 式1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 2 1 1 1 0 0 0 0 0 3 1 1 1 1 0

9、 0 0 0 4 1 1 1 1 1 0 0 0 5 1 1 1 1 1 1 0 0 6 1 1 1 1 1 1 1 0 7 1 1 1 1 1 1 1 1 8 方 式2 1 0 0 0 0 0 1 2 1 1 0 0 0 0 1 1 4 1 1 0 0 0 1 1 1 6 1 1 1 1 1 1 1 1 8 1 1 1 1 1 1 1 1 8 1 1 1 0 0 1 1 1 6 1 1 0 0 0 0 1 1 4 1 0 0 0 0 0 0 1 2 方 式3 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 3 0 0 0 0 1 0 0 0 5 0 0 0 0 0 0 1

10、 0 7 0 1 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 4 0 0 0 0 0 1 0 0 6 0 0 0 0 0 0 0 1 8 3 花样灯与数码显示系统的硬件设计 3.1 AT89C51 单片机简介 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,俗称单片机。AT89C2051 是一种带 2K 字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 100 次。该器件采用 ATME

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

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

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

14、部结构示意图 3.1.2 主要引脚功能 图 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口使用,也可以作为片外存储器的高

15、 8 位地址总线,与 P0 口配合,组成 16 位片外存储器单元地址。P3 口:P3 口是一组带有内部上拉电阻的 8 位准双向 I0 口。P3 口除了作为通用的 I/O 口使用之外,每个引脚还具有第二功能,具体分配如表2 表 2 具有第二功能的 P3 口引脚 端口引脚 第二功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2/INT0(外中断 0)P3.3/INT1(外中断 1)P3.4 T0(定时计数器 0 外部输入)P3.5 T1(定时计数器 1 外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD 外部数据存储器读选通)RST:复位输入。当振荡器工作时,R

16、ST 引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置 SFR AUXR 的 DISRT0 位(地址 8EH)可打开或关闭该功能。DISRT0 位缺省为 RESET 输出高电平打开状态。ALE PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的 16 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。对 F1ash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特

17、殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 M0VX 和 M0VC 指令 ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 无效。PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当 AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。EAVPP:外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位 LB1

18、被编程,复位时内部会锁存 EA 端状态。如 EA 端为高电平(接 VCC 端),CPU 则执行内部程序存储器中的指令。F1ash 存储器编程时,该引脚加上+12V 的编程电压 Vcc。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。3.2 系统硬件总电路构成及原理 实现本设计要求的具体功能,可以选用 AT89C51 单片机及外围器件构成最小控制系统,8 个发光二极管分成 3 种变化方式,数码显示管进行计数。3.2.1 系统硬件电路构成 本系统以单片机为核心,系统硬件电路由状态灯,数码管显示,按键,组成。其具体的硬件电路总图如图 1-5 所示。实物图如 1-6 所示。3.2.2 系统工作原

19、理 先对系统进行初始化,之后再调用子程序入单片机内。分别控制循环彩灯及其数码管显示模块。(以上两个模块及其工作方式都已经在上面提到)之后就是对程序的无限循环了,达到 3 种方式不停循环的目的,可以实现手动关闭。图 1-5 基于单片机的流水灯控制系统电路图 图 1-6,硬件结构 4 系统软件程序的设计 4.1 程序主体设计流程 全部控制程序实际上分为若干模块:键盘设置处理程序,状态灯控制程序,LED 显示程序紧停程序等。整个软件程序、流程图如图 1-7 所示。开始 初始化 调用子程序 循环彩灯 数码管显示 无限循环 手动关闭 4.2 理论基础知识 4.2.1 数组及 while,switch,等

20、语句 数组:所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。While 语句:while 语句格式为:while(表达式)语句;/*循环体*/这里的表达式是循环能否继续下去的条件,而语句是循环体。只要表达式为真,则执行循环体内语句。否则终止循环,执行循环体外语句。switch 语句

21、 switch 语句格式为:switch(表达式)case 常量表达式 1:语句 1 case 常量表达式 2:语句 2.case 常量表达式 n:语句 n default:语句 n+1 说明 switch 后面的括号内的表达式,ANSI 标准允许为任何类型.当表达式与某一个case后面的常量表达式相等时,就执行case后面的语句,若没有匹配,则执行default后面的语句.每一个 case 的常量表达式的值须互不相同,否则便会出现矛盾.各个 case 和 default 的出现次序不影响结果.执行完一个 case 语句,流程就转移到下一个 case 并继续执行.因此在 case 的分支后,加

22、 break 语句来跳出 switch 语句.4.2.2 软件延时原理 单片机因具有体积小、功能强、成本低以及便于实现分布式控制而有非常广泛的应用领域1。单片机开发者在编制各种应用程序时经常会遇到实现精确延时的问题,比如按键去抖、数据传输等操作都要在程序中插入一段或几段延时,时间从几十微秒到几秒。有时还要求有很高的精度,如使用单总线芯片 DS18B20 时,允许误差范围在十几微秒以内2,否则,芯片无法工作。用 51 汇编语言写程序时,这种问题很容易得到解决,而目前开发嵌入式系统软件的主流工具为 C 语言,用 C51 写延时程序时需要一些技巧3。因此,在多年单片机开发经验的基础上,介绍几种实用的

23、编制精确延时程序和计算程序执行时间的方法。实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高 CPU 的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。单片机系统一般常选用 11.059 2 MHz、12 MHz 或 6 MHz 晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为 1 s 和 2 s,便于精确延时。本程序中假设使用频率为 12 MHz 的晶振。最长的延时时间可达 216=65 536 s。若定时器工作在方式 2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2

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

25、se 1:P2=0 x20;P0=tableNUMled_point;case 2:P2=0 x40;P0=tableNUMled_point;case 3:P2=0 x80;P0=tableNUMled_point;case 4:P2=0 x10;P0=tableNUMled_point;case 5:P2=0 x20;P0=tableNUMled_point;case 6:P2=0 x40;P0=tableNUMled_point;case 7:P2=0 x80;P0=tableNUMled_point;case 8:P2=0 x10;P0=tableNUMled_point;case 9

26、:P2=0 x20;P0=tableNUMled_point;case 10:P2=0 x40;P0=tableNUMled_point;case 11:P2=0 x80;P0=tableNUMled_point;case 12:P2=0 x10;P0=tableNUMled_point;case 13:P2=0 x20;P0=tableNUMled_point;case 14:P2=0 x40;P0=tableNUMled_point;case 15:P2=0 x80;P0=tableNUMled_point;case 16:P2=0 x10;P0=tableNUMled_point;cas

27、e 17:P2=0 x20;P0=tableNUMled_point;case 18:P2=0 x40;P0=tableNUMled_point;case 19:P2=0 x80;P0=tableNUMled_point;case 20:P2=0 x10;P0=tableNUMled_point;case 21:P2=0 x20;P0=tableNUMled_point;case 22:P2=0 x40;P0=tableNUMled_point;case 23:P2=0 x80;P0=tableNUMled_point;4.3.2LED 数码管显示 case 0:P1=tableLEDled_

28、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=tableLEDled_point;break;case 9:P1=tableL

29、EDled_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_point;break;case 17:P1=tableLEDled_point;break;ca

30、se 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仿真器 仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。单片机系统开发中的仿真包括软件仿真和硬件仿真。软件仿真这

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

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

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

34、,则说明程序各个部分互相没有矛盾,反之,则说明算法子程序和其它子程序之间有影响,需要做相应的修改后重新调。4.4.2 集成开发环境 KEIL KEIL IDE Vision2 集成开发环境主要由以下部分组成:u Vision2 IDE。ision2 IDE 包括:一个工程管理器,一个功能丰富并有交互式错误提示的编辑器选项设置生成工具,以及在线帮助。使用 vision2 创建源文件并组成应用工程加以管理。vision2 可以自动完成编译汇编链接程序的操作;C51 编译器和 A51 汇编器。Vision2 IDE 创建的源文件可以被 C51 编译器或 A51 汇编器处理生成可重定位的 object

35、 文件。KEIL C51 编译器遵照 ANSI C 语言标准支持 C 语言的所有标准特性,另外还增加了几个可以直接支持 80C51 结构的特性。KEIL A51 宏汇编器支持 80C51 及其派生系列的所有指令集;LIB51 库管理器。B51 库管理器可以从由汇编器和编译器创建的目标文件建立目标库,这些库是按规定格式排列的目标模块,可在以后被链接器所使用当链接器处理一个库时仅仅使用了库中程序使用了的目标模块而不是全部加以引用;BL51 链接器定位器。L51 链接器使用从库中提取出来的目标模块和由编译器汇编器生成的目标模块创建一个绝对地址目标模块,绝对地址目标文件或模块包括不可重定位的代码和数据

36、所有的代码和数据都被固定在具体的存储器单元中。利用 KEIL 开发和调试系统软件流程大致如下:启动 Vision2,进入 KEIL 软件的集成开发环境;利用 KEIL 内置的文本编辑器进行程序源文件的编辑,因为 KEIL 集成的文本编辑器对中文支持不是很好,可以选择其他的编辑器(本文使用的文本编辑器是 Ultraedit32),Vision2 能够自动识别外部改变了的源文件;建立工程,指定针对哪种单片机进行开发,指定对源程序的编译、链接参数,指定调试方式(本文采用外部硬件仿真器仿真调试的方式,即使 TKS 仿真器仿真),然后对工程进行相关设置;设置好工程后即可进行编译、链接。连接仿真器对软件进

37、行调试。也可以生成下载到单片机存储器上的 HEX 文件。系统软件调试 系统的软件调试借助于 proteus 仿真器,在进行系统软件的连续调试之前要先进行软件的初调,就是要使各个子程序模块运行正确,程序的运行流程正确。软件调试主要分以下几个步骤进行:功能子程序的调试。能子程序的调试包括运算、采样、数字滤波以及 PID 运算等子程序的调试。在调试功能子程序时,许多参数都是未知的,要根据其所需的条件,给出假定的数据,使其运行,如果能完成预定的处理功能或与手工计算的结果相符,就说明该子程序己调试通过。调试时由小到大,由里到外。例如,调试 PID 算法子程序时,先调通其包含的各个运算子程序和参数处理子程

38、序,然后将它们连起来进行通调。通调时,也是假定一些数据、参数和初始条件,然后运行程序。当运算结果与手工计算的结果相同时,该算法子程序则调试完成,反之,就要进行相应的修改。其它子程序的调试同理;程序流程的调试。序流程的调试主要是查看程序运行的步骤是否正确,在某时刻程序运行所处的位置是否正确,是否能正确运行各个中断服务程序。在调试过程中,先将 PID算法子程序屏蔽,输出可控硅导通时间用一个固定的常数代替,在各个中断服务子程序设置断点,然后运行程序,查看程序是否能运行到所有的断点,若所有断点都能运行到,则程序流程基本正确。去掉所有断点,再一次运行程序,查看可控硅状态,从而判断程序流程正确,反之,若程

39、序流程不正确,做相应的修改后,重新调试;功能程序与算法程序的通调。完成整个程序流程的调试后,将 PID 等算法子程序加入,在算法子程序前或后设置断点,运行整个程序。当程序在断点处暂停时,查看 PID 计算的控制量与手工计算的值是否相同。多运行几次,若每次的结果都正确,则说明程序各个部分互相没有矛盾,反之,则说明算法子程序和其它子程序之间有影响,需要做相应的修改后重新调。参考文献:l边海龙,孙永奎.单片机开发与典型工程项目实例详解J.电子工业出版社,2008,(10):143-160.2张鑫,华臻,陈书谦.单片机原理及应用J.电子工业出版社,2008(5).3黄智伟.凌阳单片机课程设计指导J.北

40、京航空航天大学出版社,2007,4余 锡 存 曹 国华.单 片 机 原理 及接 口 技 术 M.陕 西:西安 电子科技大学 出版社,2000.7 5雷丽文 等.微机原理与接口技术M.北京:电子工业出版社,1997.2 6柴钰.单片机原理和应用M.西安电子科技大学出版社.7张靖武.单片机系统的 PROTUSE 设计和仿真M.电子工业出版社.2007.8唐 工.51 单片机工程应用实例M.设计心得体会 经过两周的努力工作,终于完成了自己的单片机课程设计。虽说忙碌了点,但我觉得这样的生活充实且有成就感,当然,也获益匪浅。在焊接过程中,我学会应先合理的布局,并认真检查每个元器件,确保无误后再焊接。还有

41、,不能急于求成,要焊接一个模块,检查一个模块,免得整个版子焊完后再在一大堆线中检查,这样不仅效率低且耗时。自然,我也学会如何去发现问题与解决问题的一些方法。至于软件设计与调试,我觉得它主要考验你的思维逻辑能力及你对指令的熟悉程度。可以说再整个软件设计过程中,我不仅学会了延时的两种方法,即软件延时和硬件延时,还掌握数码管的两种显示方式(即动态显示与静态显示)及其如何选择。当然,通过几次反复调试过程,使得我对汇编指令有了更深刻的理解。在整个课程设计过程我还掌握了一下几点:(1)掌握了电子系统设计的流程,熟悉了各种硬件电路以及软件编程方法。(2)理解了最单片机的各部分组成及特性。(3)熟练使用了各种

42、计算机辅助设计工具完成设计,充分掌握了这些工具的使用。(4)学会了利用Keil uVision3对汇编语言进行编译过程.更进一步加深了对PROTEUS软件的学习。还有,我还发现自身一些毛病。一,前期准备工作做的不够好,想的还算多,可就是没落实。先说选题,就表现自己有畏难情绪,其实当时找到好几个题目,但交通灯最熟悉,所以就选了它。就这,还没做的很理想,还有好些功能可以加上去,像通过测流量来自动调整通行时间,加个监控电路,看门狗电路等。二,行动起来不是很卖力,虽说动手还算早,但每天的进展却不大,可以说做与玩相伴而行。通过本次的课程设计,充分意识到自己所学的东西还是非常有限的,不过通过设计,还是学到

43、了一些书本上没有学到的东西,为自己以后的学习起了很大的帮助。就我个人而言,很深刻地体会到一点,那就是我们在设计过程中一定要有一个整体的清晰的思路,知道自己的设计的对象的基本功能和核心器件的适用及其作用,只要把握住这些主要方面,一些小问题都将围绕着这些主要问题而逐步得到解决。同时我也懂得,在整个设计过程中,生活中也一样,一定要意志坚定,克服自己的畏难情绪,这样才能将事情做好,才能干出一番成就。我觉得类似这种课程设计的实践真的不错,通过这些项目练习,我自学能力,解决实际问题的能力得到提高,可以说是对综合素质全面提升,我想这也是我们上大学应真正学到的。附录 附录一:系统总体原理图 附录二:系统程序清

44、单#include#define uchar unsigned char#define unit unsigned int uchar num8051=0 x80,0 xc0,0 x92,0 xf9;uchar tableNUM=0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 xa4,0 x99,0 x82,0 x80,0 x80,0 x82,0 x99,0 xa4,0 xf9,0 xb0,0 x92,0 xf8,0 xa4,0 x99,0 x82,0 x80;uchar tableLED=0 xfe,0 xfc,0 xf8,0 xf0,0

45、xe0,0 xc0,0 x80,0 x00,0 x7e,0 x3c,0 x18,0 x00,0 x00,0 x18,0 x3c,0 x7e,0 xfe,0 xfb,0 xef,0 xbf,0 xfd,0 xf7,0 xdf,0 x7f;void delayms(unit);void main()char num_8051=0;char led_point=0;int i=0;while(i0;i-)for(j=110;j0;j-);附录三:元器件清单 序号 名称 型号 数量 1 万用板 9*15cm 1 2 USB 插座 单扁口母头 1 3 单片机 AT89C51 1 4 40p 锁紧卡座 40 脚 1 5 晶振 12MHz 1 6 电容 30pF 2 7 电解电容 10F/25V 1 8 电阻 10k 1/8W 1 9 电阻 1k 1/8W 5 10 排阻 81k 1 11 按键开关 自锁 1 12 拨动开关(8 位)8 联排 1 13 发光二极管(LED)红 3mm 3 14 发光二极管(LED)绿 3mm 2 15 发光二极管(LED)黄 3mm 4 16 数码管(四联,共阳)DZF-3461BS 1 17 PNP 三极管 C9012 4 18 二极管 1N4148 2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁