基于51单片机的流水灯系统设计.doc_第1页
基于51单片机的流水灯系统设计.doc_第2页
基于51单片机的流水灯系统设计.doc_第3页
基于51单片机的流水灯系统设计.doc_第4页
基于51单片机的流水灯系统设计.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的交通控制系统模拟设计 1 0 1 1 设计思路设计思路 2 1 1 电源模块 2 1 2 显示模块 3 1 3 花样灯模块 3 2 单片机花样灯与数码显示系统总体设计单片机花样灯与数码显示系统总体设计 3 2 1 三个模块的阐述 2 2 单片机花样灯与数码显示控制系统的通行方案设计 3 2 3 单片机花样灯与数码显示控制系统的功能要求 4 2 4 单片机花样灯与数码显示控制系统的基本构成及原理 5 3 3 花样灯与数码显示系统的硬件设计花样灯与数码显示系统的硬件设计 5 3 1 AT89C51AT89C51 单片机简介 5 3 1 1 AT89C51单片机的主要特性 6 3 1 2 主要引脚功能 6 3 2 系统硬件总电路构成及原理 9 3 2 1系统硬件电路构成 9 3 2 2系统工作原理 9 4 系统软件程序的设计系统软件程序的设计 12 4 1 程序主体设计流程 12 4 2 理论基础知识 13 4 2 1数组及while switch等语句 13 4 2 2软件延时原理 14 4 3 程序模块设计 14 4 3 1花样灯的设计 14 4 3 2 LED数码管显示 15 4 4 系统软件调试 18 4 4 1 proteus仿真 18 4 4 2keil 仿真 18 参考文献参考文献 17 设计心得体会设计心得体会 18 附录附录 19 基于单片机的交通控制系统模拟设计 1 基于单片机的花样流水灯及其数码显示技术 摘要 自计算机问世以来 单片机技术在社会各领域中得到了广泛的应 用 在流水灯控制系统中 单片机更是取代了由齿轮调节延迟时间的旧式市 发展速度 成为日后此系统中的核心部分 由于单片机具有一些突出的优点 体积小 重量轻 电源单一 功耗低 功能强 价格低 数据大都在单片机 内部传送 运行速度快 抗干扰能力强 可靠性高 所以单片机被广泛的应 用于测控系统 数据采集 智能仪器仪表 机电一体化产品 智能接口 计 算机通信以及单片机的多级系统等领域 本文主要讲的是单片机 课题名称 为多按键花样流水灯 它使我们学会了如何使用单片机控制我们日常生活中 的多设备设施的应用 通过本课题的设计以后 使我了解到了单片机的许多 方面的应用 关键词 花样灯 单片机 数码管 1 1 设计思路设计思路 1 为了使设计具有更强的针对性和实用性 使用单片机设计的控制 方案 基于 AT89C51 的单片机设计方案 2 确定系统控制的总体设计 包括流水灯变化方案设计以及系统应 拥有的各项功能 在这里 本设计除了有流水灯状态控制能实现基本的变化 功能 还增加了数码管显示提示 3 设计分为 3 个模块 分别为电源模块 数码显示模块 花样灯模 块 并对 3 个模块进行充分的校正和完善 4 进行软件系统的设计 对于本系统 本组采用单片机 C 语言编写 基于单片机的交通控制系统模拟设计 2 对单片机内部结构和工作情况做了充足的研究 了解延时原理 总体上完成 了软件的编写 2 花样流水灯与数码显示系统总体设计花样流水灯与数码显示系统总体设计 2 12 1 三个模块的阐述三个模块的阐述 2 1 1 电源模块 电源提供的方案 为使模块稳定工作 须有可靠电源 因此考虑了两种电源方案 方案一 采用独立的稳压电源 此方案的优点是稳定可靠 且有各种成熟 电路可供选用 缺点是各模块都采用独立电源 会使系统复杂 且可能影响 电路电平 方案二 采用单片机控制模块提供电源 改方案的优点是系统简明扼要 节约成本 缺点是输出功率不高 综上所述 我选择第二种方案 电源模块仿真效果图 1 1 2 1 2 显示模块 数码管显示方案 该系统要求完成计数功能 基于上述原因 我考虑了二种方案 基于单片机的交通控制系统模拟设计 3 方案一 采用数码管显示 这种方案只显示有限的符号和数码字符 简单 方便 方案二 采用点阵式 LED 显示 这种方案虽然功能强大 并可方便的显示各 种英文字符 汉字 图形等 但实现复杂 且须完成大量的软件工作 综上所述 我选择第一种方案 数码管显示模块仿真图 1 2 2 1 3 花样灯模块 本方案采用 3 种变化形式 且 3 种方式依次按顺序变化 采用 8 个 LED 灯作为一个系统 花样灯仿真效果图 1 3 图 1 1 基于单片机的交通控制系统模拟设计 4 图 1 2 图 1 3 2 22 2 单片机花样流水灯与数码显示系统的通行方案设计单片机花样流水灯与数码显示系统的通行方案设计 1 系统采用 8 个 LED 灯 一个数码显示器 及电源 2 流水灯有 3 种变化方式 第一种 LED 灯由 L1 L8 逐个变亮 第二种 L1 L8 亮 接着 L2 L7 亮 再接下来 L3 L6 亮 然后 L4 L5 亮 再这样反循环一次 第三种 L1 L3 L5 L7 L2 L4 L6 L8 依次亮 且三种方式按顺序执行 成花样流水灯状 3 方式 1 2 数码显示管是用来记录亮灯的个数 方式 3 是用来记录哪 一个灯亮 4 具体的数据及其显示如表 2 1 所示 2 32 3 单片机花样灯与数码显示系统的功能要求单片机花样灯与数码显示系统的功能要求 系统要满足稳定 准确 快速的三个基本要求 1 稳定 就是基本上实现了方案设计思路上的变化样式 并且不会出现错 基于单片机的交通控制系统模拟设计 5 误和紊乱 2 准确 即系统的偏差接近可允许范围之内 方可认为准确 3 快速 顾名思义 就是系统的运行速度可以调整 并且不会影响到系统 的其他性能指标即可 2 42 4 单片机花样灯与数码显示系统的基本构成及原理单片机花样灯与数码显示系统的基本构成及原理 单片机设计流水灯控制系统 可用单片机直接控制流水灯的状态变化 不同 的程序控制不同的变化状态 本次仅仅分为 3 种形式变化 当然还可以有更 多的变化 据此 本设计系统以单片机为控制核心 连接成最小系统 由按键设置 模块产生输入 流水灯模块 数码管显示模块接受输出 系统的总体框图如 上 1 4 所示 单片机最小系统 外围接口电路 LED 数码管显示 LED 流水灯 按键 控制电路 图 1 4 系统的总体框图 基于单片机的交通控制系统模拟设计 6 L1L2L3L4L5L6L7L8数码管计数码管计 数数 100000001 110000002 111000003 111100004 111110005 111111006 111111107 方式方式 1 111111118 10000012 110000114 110001116 111111118 111111118 111001116 110000114 方式方式 2 100000012 100000001 001000003 000010005 000000107 010000002 000100004 000001006 000000018 方式方式 3 表表 2 1 表表 2 1 基于单片机的交通控制系统模拟设计 7 3 3 花样灯与数码显示系统的硬件设计花样灯与数码显示系统的硬件设计 3 13 1 AT89C51AT89C51 单片机简介单片机简介 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器 FPEROM Falsh Programmable and Erasable Read Only Memory 的低电压 高性能 CMOS8 位微处理器 俗称单片机 AT89C2051 是一种带 2K 字节闪烁可编程可 擦除只读存储器的单片机 单片机的可擦除只读存储器可以反复擦除 100 次 该器件采用 ATMEL 高密度非易失存储器制造技术制造 与工业标准的 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 个中断 源 两个外部中断源和 3 个内部中断源 可编程串行通道 低功耗的闲 置和掉电模式 片内振荡器和时钟电路 定时器原理 定时器工作的基本原理其实就是给初值 让它不断加 1 直至减完为模值 这个初值是送到 TH 和 TL 中的 它是以加法记数的 并能从全 1 到全 0 时 自动产生溢出中断请求 因此 我们可以把计数器记满为零所需的计数值 即所要求的计数值设定为 C 把计数初值设定为 TC 可得到如下计算通式 基于单片机的交通控制系统模拟设计 8 TC M C 式中 M 为计数器模值 计数值并不是目的 目的是时间值 设计 1 次 的时间 即定时器计数脉冲的周期为 T0 它是单片机系统主频周期的 12 倍 设要求的时间值为 T 则有 C T T0 计算通式变为 T M TC T0 模值和计数器工作方式有关 在方式 0 时 M 为 8192 在方式 1 时 M 的 值为 65536 在方式 2 和 3 为 256 就此可以算出各种方式的最大延时 如 单片机的主脉冲频率为 12MHZ 经过 12 分频后 若采用方式 最大延时只 有 8 129 毫秒 采用方式 最大延时也只有 65 536 毫秒 这就是为什么扫描 周期为 50ms 的原因 若使用软件则会耽搁程序流程 显然不可行 相反 时间计时方面却不 可能只用计数器 因为显然 秒钟已经超过了计数器的最大定时间 所以我 们还必须采用定时器和软件相结合的办法才能解决这个问题 基于单片机的交通控制系统模拟设计 9 图 3 AT89C51 系列单片机的内部结构示意图 3 1 2 主要引脚功能 图 4 AT89C51 引脚图 VCC 电源电压 GND 接地 P0 口 P0 口是一组 8 位双向 I 0 口 P0 口即可作地址 数据总线使用 又可以作 为通用的 I O 口使用 当 CPU 访问片外存储器时 P0 口分时先作低 8 位地址总线 后作 双向数据总线 此时 P0 口就不能再作 I O 口使用了 在访问期间激活要使用上拉电阻 P1 口 Pl 是一个带内部上拉电阻的 8 准位双向 I O 口 P1 作为通用的 I O 口使 用 基于单片机的交通控制系统模拟设计 10 P2 口 P2 是一个带有内部上拉电阻的 8 位准双向 I O 口 P2 即可作为通用的 I O 口使用 也可以作为片外存储器的高 8 位地址总线 与 P0 口配合 组成 16 位片外存 储器单元地址 P3 口 P3 口是一组带有内部上拉电阻的 8 位准双向 I 0 口 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 复位输入 当振荡器工作时 RST 引脚出现两个机器周期以上高电平将使单 片机复位 WDT 溢出将使该引脚输出高电平 设置 SFR AUXR 的 DISRT0 位 地址 8EH 可打开或关闭该功能 DISRT0 位缺省为 RESET 输出高电平打开状态 ALE Error 当访问外部程序存储器或数据存储器时 ALE 地址锁存允许 输 出脉冲用于锁存地址的低 8 位字节 即使不访问外部存储器 ALE 仍以时钟振荡频率的 1 6 输出固定的正脉冲信号 因此它可对外输出时钟或用于定时目的 要注意的是 每 当访问外部数据存储器时将跳过一个 ALE 脉冲 对 F1ash 存储器编程期间 该引脚还用 于输入编程脉冲 PROG 如有必要 可通过对特殊功能寄存器 SFR 区中的 8EH 单元的 D0 位置位 可禁止 ALE 操作 该位置位后 只有一条 M0VX 和 M0VC 指令 ALE 才会被激活 此外 该引脚会被微弱拉高 单片机执行外部程序时 应设置 ALE 无 效 Error 程序储存允许 Error 输出是外部程序存储器的读选通信号 当 AT89S51 由外部程序存储器取指令 或数据 时 每个机器周期两次Error 有效 即输出两个脉冲 当访问外部数据存储器 没有两次有效的Error 信号 Error VPP 外部访问允许 欲使 CPU 仅访问外部程序存储器 地址为 0000H FFFFH EA 端必须保持低电平 接地 需注意的是 如果加密位 LB1 被编 程 复位时内部会锁存 EA 端状态 如 EA 端为高电平 接 VCC 端 CPU 则执行内部 程序存储器中的指令 F1ash 存储器编程时 该引脚加上 12V 的编程电压 Vcc XTAL1 振荡器反相放大器及内部时钟发生器的输入端 3 2 系统硬件总电路构成及原理系统硬件总电路构成及原理 实现本设计要求的具体功能 可以选用 AT89C51 单片机及外围器件构 基于单片机的交通控制系统模拟设计 11 成最小控制系统 8 个发光二极管分成 3 种变化方式 数码显示管进行计数 3 2 1 系统硬件电路构成 本系统以单片机为核心 系统硬件电路由状态灯 数码管显示 按键 组成 其具体的硬件电路总图如图 1 5 所示 实物图如 1 6 所示 3 2 2 系统工作原理 先对系统进行初始化 之后再调用子程序入单片机内 分别控制循环彩灯 及其数码管显示模块 以上两个模块及其工作方式都已经在上面提到 之 后就是对程序的无限循环了 达到 3 种方式不停循环的目的 可以实现手动 关闭 基于单片机的交通控制系统模拟设计 12 图 1 5 基于单片机的流水灯控制系统电路图 基于单片机的交通控制系统模拟设计 13 图图 1 61 6 硬件结构 硬件结构 基于单片机的交通控制系统模拟设计 14 4 4 系统软件程序的设计系统软件程序的设计 4 1 程序主体设计流程程序主体设计流程 全部控制程序实际上分为若干模块 键盘设置处理程序 状态灯控制程 序 LED 显示程序紧停程序等 整个软件程序 流程图如图 1 7 所示 开始 初始化 调用子程序 循环彩灯 数码管显示 无限循环 手动关闭 基于单片机的交通控制系统模拟设计 15 4 24 2 理论基础知识理论基础知识 4 2 1 数组及 while switch 等语句 数组 所谓数组 就是相同数据类型的元素按一定顺序排列的集合 就是把 有限个类型相同的变量用一个名字命名 然后用编号区分他们的变量的集合 这个名字称为数组名 编号称为下标 组成数组的各个变量称为数组的分量 也称为数组的元素 有时也称为下标变量 数组是在程序设计中 为了处理 方便 把具有相同类型的若干变量按有序的形式组织起来的一种形式 这 些按序排列的同类数据元素的集合称为数组 While 语句 while 语句格式为 while 表达式 语句 循环体 这里的表达式是循环能否继续下去的条件 而语句是循环体 只要表达式为真 则执行循环体内语句 否则终止循环 执行循环体外语句 switch 语句 switch 语句格式为 switch 表达式 case 常量表达式 1 语句 1 case 常量表达式 2 语句 2 基于单片机的交通控制系统模拟设计 16 case 常量表达式 n 语句 n default 语句 n 1 说明 switch 后面的括号内的表达式 ANSI 标准允许为任何类型 当表达式与某一个 case 后面的常量表达式相等时 就执行 case 后面的语句 若没有匹配 则执行 default 后面的语句 每一个 case 的常量表达式的值须互不相同 否则便会出现矛盾 各个 case 和 default 的出现次序不影响结果 执行完一个 case 语句 流程就转移到下一个 case 并继续执行 因此在 case 的分支后 加 break 语句来 跳出 switch 语句 4 2 2 软件延时原理 单片机因具有体积小 功能强 成本低以及便于实现分布式控制而有非常 广泛的应用领域 1 单片机开发者在编制各种应用程序时经常会遇到实现 精确延时的问题 比如按键去抖 数据传输等操作都要在程序中插入一段或 几段延时 时间从几十微秒到几秒 有时还要求有很高的精度 如使用单总 线芯片 DS18B20 时 允许误差范围在十几微秒以内 2 否则 芯片无法工 作 用 51 汇编语言写程序时 这种问题很容易得到解决 而目前开发嵌入 基于单片机的交通控制系统模拟设计 17 式系统软件的主流工具为 C 语言 用 C51 写延时程序时需要一些技巧 3 因此 在多年单片机开发经验的基础上 介绍几种实用的编制精确延时程序 和计算程序执行时间的方法 实现延时通常有两种方法 一种是硬件延时 要用到定时器 计数器 这 种方法可以提高 CPU 的工作效率 也能做到精确延时 另一种是软件延时 这种方法主要采用循环体进行 单片机系统一般常选用 11 059 2 MHz 12 MHz 或 6 MHz 晶振 第一 种更容易产生各种标准的波特率 后两种的一个机器周期分别为 1 s 和 2 s 便于精确延时 本程序中假设使用频率为 12 MHz 的晶振 最长的延 时时间可达 216 65 536 s 若定时器工作在方式 2 则可实现极短时间的 精确延时 如使用其他定时方式 则要考虑重装定时初值的时间 重装定时 器初值占用 2 个机器周期 在实际应用中 定时常采用中断方式 如进行适当的循环可实现几秒 甚至更长时间的延时 使用定时器 计数器延时从程序的执行效率和稳定性两 方面考虑都是最佳的方案 但应该注意 C51 编写的中断服务程序编译后会 自动加上 PUSH ACC PUSH PSW POP PSW 和 POP ACC 语句 执行时占 用了 4 个机器周期 如程序中还有计数值加 1 语句 则又会占用 1 个机器周 期 这些语句所消耗的时间在计算定时初值时要考虑进去 从初值中减去以 达到最小误差的目的 4 3 程序模块的设计程序模块的设计 4 3 1 花样灯的设计 case 0 P2 0 x10 P0 tableNUM led point case 1 P2 0 x20 P0 tableNUM led point 基于单片机的交通控制系统模拟设计 18 case 2 P2 0 x40 P0 tableNUM led point case 3 P2 0 x80 P0 tableNUM led point case 4 P2 0 x10 P0 tableNUM led point case 5 P2 0 x20 P0 tableNUM led point case 6 P2 0 x40 P0 tableNUM led point case 7 P2 0 x80 P0 tableNUM led point case 8 P2 0 x10 P0 tableNUM led point case 9 P2 0 x20 P0 tableNUM led point case 10 P2 0 x40 P0 tableNUM led point case 11 P2 0 x80 P0 tableNUM led point case 12 P2 0 x10 P0 tableNUM led point case 13 P2 0 x20 P0 tableNUM led point case 14 P2 0 x40 P0 tableNUM led point case 15 P2 0 x80 P0 tableNUM led point case 16 P2 0 x10 P0 tableNUM led point case 17 P2 0 x20 P0 tableNUM led point case 18 P2 0 x40 P0 tableNUM led point case 19 P2 0 x80 P0 tableNUM led point case 20 P2 0 x10 P0 tableNUM led point case 21 P2 0 x20 P0 tableNUM led point case 22 P2 0 x40 P0 tableNUM led point case 23 P2 0 x80 P0 tableNUM led point 4 3 2LED 数码管显示 case 0 P1 tableLED led point break case 1 P1 tableLED led point break case 2 P1 tableLED led point break case 3 P1 tableLED led point break case 4 P1 tableLED led point break case 5 P1 tableLED led point break case 6 P1 tableLED led point break case 7 P1 tableLED led point break case 8 P1 tableLED led point break case 9 P1 tableLED led point break case 10 P1 tableLED led point break case 11 P1 tableLED led point break case 12 P1 tableLED led point break case 13 P1 tableLED led point break case 14 P1 tableLED led point break case 15 P1 tableLED led point break case 16 P1 tableLED led point break case 17 P1 tableLED led point break 基于单片机的交通控制系统模拟设计 19 case 18 P1 tableLED led point break case 19 P1 tableLED led point break case 20 P1 tableLED led point break case 21 P1 tableLED led point break case 22 P1 tableLED led point break case 23 P1 tableLED led point break 4 4 系统软件调试系统软件调试 4 4 1 proteus 仿真器 仿真的概念其实使用非常广 最终的含义就是使用可控的手段来模仿真实的情况 单片机系统开发中的仿真包括软件仿真和硬件仿真 软件仿真这种方法主要是使用计算机软件来模拟实际的单片机运行 因此仿真与硬件 无关的系统具有一定的优点 用户不需要搭建硬件电路就可以对程序进行验证 特别适 合于偏重算法的程序 软件仿真的缺点是无法完全仿真与硬件相关的部分 因此最终还 要通过硬件仿真来完成最后的设计 硬件仿真使用附加的硬件来替代用户系统的单片机并完成单片机全部或大部分的功 能 使用了附加硬件后用户就可以对程序的运行进行控制 例如单步 全速 查看资源 断点等 系统的软件调试借助于 proteus 仿真器 在进行系统软件的连续调试之前要先进行软 件的初调 就是要使各个子程序模块运行正确 程序的运行流程正确 软件调试主要分 以下几个步骤进行 功能子程序的调试 能子程序的调试包括运算 采样 数字滤波以及 PID 运算等子程 序的调试 在调试功能子程序时 许多参数都是未知的 要根据其所需的条件 给出 假定的数据 使其运行 如果能完成预定的处理功能或与手工计算的结果相符 就说 明该子程序己调试通过 调试时由小到大 由里到外 例如 调试 PID 算法子程序时 先调通其包含的各个运算子程序和参数处理子程序 然后将它们连起来进行通调 通 调时 也是假定一些数据 参数和初始条件 然后运行程序 当运算结果与手工计算 的结果相同时 该算法子程序则调试完成 反之 就要进行相应的修改 其它子程序 的调试同理 程序流程的调试 序流程的调试主要是查看程序运行的步骤是否正确 在某时刻程序 运行所处的位置是否正确 是否能正确运行各个中断服务程序 在调试过程中 先将 PID 算法子程序屏蔽 输出可控硅导通时间用一个固定的常数代替 在各个中断服务 子程序设置断点 然后运行程序 查看程序是否能运行到所有的断点 若所有断点都 能运行到 则程序流程基本正确 去掉所有断点 再一次运行程序 查看可控硅状态 从而判断程序流程正确 反之 若程序流程不正确 做相应的修改后 重新调试 功能程序与算法程序的通调 完成整个程序流程的调试后 将 PID 等算法子程序加入 在算法子程序前或后设置断点 运行整个程序 当程序在断点处暂停时 查看 PID 计算 的控制量与手工计算的值是否相同 多运行几次 若每次的结果都正确 则说明程序各 个部分互相没有矛盾 反之 则说明算法子程序和其它子程序之间有影响 需要做相应 的修改后重新调 4 4 2 集成开发环境 KEIL 基于单片机的交通控制系统模拟设计 20 KEIL IDE Vision2 集成开发环境主要由以下部分组成 u Vision2 IDE ision2 IDE 包括 一个工程管理器 一个功能丰富并有交互式错误提示 的编辑器选项设置生成工具 以及在线帮助 使用 vision2 创建源文件并组成应用工程 加以管理 vision2 可以自动完成编译汇编链接程序的操作 C51 编译器和 A51 汇编器 Vision2 IDE 创建的源文件可以被 C51 编译器或 A51 汇编器 处理生成可重定位的 object 文件 KEIL C51 编译器遵照 ANSI C 语言标准支持 C 语言 的所有标准特性 另外还增加了几个可以直接支持 80C51 结构的特性 KEIL A51 宏 汇编器支持 80C51 及其派生系列的所有指令集 LIB51 库管理器 B51 库管理器可以从由汇编器和编译器创建的目标文件建立目标库 这些库是按规定格式排列的目标模块 可在以后被链接器所使用当链接器处理一个库 时仅仅使用了库中程序使用了的目标模块而不是全部加以引用 BL51 链接器定位器 L51 链接器使用从库中提取出来的目标模块和由编译器汇编器生成 的目标模块创建一个绝对地址目标模块 绝对地址目标文件或模块包括不可重定位的 代码和数据所有的代码和数据都被固定在具体的存储器单元中 利用 KEIL 开发和调试系统软件流程大致如下 启动 Vision2 进入 KEIL 软件的集成开发环境 利用 KEIL 内置的文本编辑器进行程序源文件的编辑 因为 KEIL 集成的文本编辑器对中 文支持不是很好 可以选择其他的编辑器 本文使用的文本编辑器是 Ultraedit 32 Vision2 能够自动识别外部改变了的源文件 建立工程 指定针对哪种单片机进行开发 指定对源程序的编译 链接参数 指定调试 方式 本文采用外部硬件仿真器仿真调试的方式 即使 TKS 仿真器仿真 然后对工程进 行相关设置 设置好工程后即可进行编译 链接 连接仿真器对软件进行调试 也可以生成下载到单 片机存储器上的 HEX 文件 系统软件调试 系统的软件调试借助于 proteus 仿真器 在进行系统软件的连续调试之前要先进行软 件的初调 就是要使各个子程序模块运行正确 程序的运行流程正确 软件调试主要分 以下几个步骤进行 功能子程序的调试 能子程序的调试包括运算 采样 数字滤波以及 PID 运算等子程 序的调试 在调试功能子程序时 许多参数都是未知的 要根据其所需的条件 给出 假定的数据 使其运行 如果能完成预定的处理功能或与手工计算的结果相符 就说 明该子程序己调试通过 调试时由小到大 由里到外 例如 调试 PID 算法子程序时 先调通其包含的各个运算子程序和参数处理子程序 然后将它们连起来进行通调 通 调时 也是假定一些数据 参数和初始条件 然后运行程序 当运算结果与手工计算 的结果相同时 该算法子程序则调试完成 反之 就要进行相应的修改 其它子程序 的调试同理 程序流程的调试 序流程的调试主要是查看程序运行的步骤是否正确 在某时刻程序 运行所处的位置是否正确 是否能正确运行各个中断服务程序 在调试过程中 先将 PID 算法子程序屏蔽 输出可控硅导通时间用一个固定的常数代替 在各个中断服务 子程序设置断点 然后运行程序 查看程序是否能运行到所有的断点 若所有断点都 基于单片机的交通控制系统模拟设计 21 能运行到 则程序流程基本正确 去掉所有断点 再一次运行程序 查看可控硅状态 从而判断程序流程正确 反之 若程序流程不正确 做相应的修改后 重新调试 功能程序与算法程序的通调 完成整个程序流程的调试后 将 PID 等算法子程序加入 在算法子程序前或后设置断点 运行整个程序 当程序在断点处暂停时 查看 PID 计 算的控制量与手工计算的值是否相同 多运行几次 若每次的结果都正确 则说明程 序各个部分互相没有矛盾 反之 则说明算法子程序和其它子程序之间有影响 需要 做相应的修改后重新调 参考文献 l 边海龙 孙永奎 单片机开发与典型工程项目实例详解 J 电子工业出版 社 2008 10 143 160 2 张鑫 华臻 陈书谦 单片机原理及应用 J 电子工业出版社 2008 5 3 黄智伟 凌阳单片机课程设计指导 J 北京航空航天大学出版社 2007 4 余锡存 曹国华 单片机原理及接口技术 M 陕西 西安电子科技大学出版 社 2000 7 5 雷丽文 等 微机原理与接口技术 M 北京 电子工业出版社 1997 2 6 柴钰 单片机原理和应用 M 西安电子科技大学出版社 7 张靖武 单片机系统的 PROTUSE 设计和仿真 M 电子工业出版社 2007 8 唐 工 51 单片机工程应用实例 M 设计心得体会 经过两周的努力工作 终于完成了自己的单片机课程设计 虽说忙碌了点 但我觉 得这样的生活充实且有成就感 当然 也获益匪浅 在焊接过程中 我学会应先合理的布局 并认真检查每个元器件 确保无误后再焊 接 还有 不能急于求成 要焊接一个模块 检查一个模块 免得整个版子焊完后再在 一大堆线中检查 这样不仅效率低且耗时 自然 我也学会如何去发现问题与解决问题 的一些方法 至于软件设计与调试 我觉得它主要考验你的思维逻辑能力及你对指令的熟悉程度 可以说再整个软件设计过程中 我不仅学会了延时的两种方法 即软件延时和硬件延时 还掌握数码管的两种显示方式 即动态显示与静态显示 及其如何选择 当然 通过几 次反复调试过程 使得我对汇编指令有了更深刻的理解 在整个课程设计过程我还掌握了一下几点 1 掌握了电子系统设计的流程 熟悉了各种硬件电路以及软件编程方法 2 理解了最单片机的各部分组成及特性 3 熟练使用了各种计算机辅助设计工具完成设计 充分掌握了这些工具的使用 4 学会了利用Keil uVisio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论