1 / 67

本章学习目标 : 本章介绍了单片机的选型及应用系统的设计过程。通过一个综合实例,完整地介绍了 89C51 与外围电路的硬件接口及软件设计。通过对本章的学习,读者应达到以下目标:

第 9 章 综合设计实例. 本章学习目标 : 本章介绍了单片机的选型及应用系统的设计过程。通过一个综合实例,完整地介绍了 89C51 与外围电路的硬件接口及软件设计。通过对本章的学习,读者应达到以下目标: 能熟悉单片机系统设计的基本要求及研发过程 学会正确选择单片机的型号 能看懂设计实例,并尝试对具体课题进行总体设计. 9.1 单片机应用系统设计过程. 9.1.1 单片机系统设计的基本要求. 1 .可靠性要高 ● 应选用可靠性高的元器件,以防止器件的损坏影响系统的可靠运行; ● 选用典型电路,排除电路的不稳定因素;

matty
Download Presentation

本章学习目标 : 本章介绍了单片机的选型及应用系统的设计过程。通过一个综合实例,完整地介绍了 89C51 与外围电路的硬件接口及软件设计。通过对本章的学习,读者应达到以下目标:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第9章综合设计实例 • 本章学习目标: 本章介绍了单片机的选型及应用系统的设计过程。通过一个综合实例,完整地介绍了89C51与外围电路的硬件接口及软件设计。通过对本章的学习,读者应达到以下目标: • 能熟悉单片机系统设计的基本要求及研发过程 • 学会正确选择单片机的型号 • 能看懂设计实例,并尝试对具体课题进行总体设计

  2. 9.1 单片机应用系统设计过程 9.1.1 单片机系统设计的基本要求 1.可靠性要高 ● 应选用可靠性高的元器件,以防止器件的损坏影响系统的可靠运行; ● 选用典型电路,排除电路的不稳定因素; ● 采用必要的冗余设计或增加系统的故障自检测和自处理功能; ●采取必要的抗干扰措施,以防止环境干扰。

  3. 2.操作维修要方便 ●系统结构要规范化、模块化; ●系统的控制开关不能太多,不能太复杂; ● 操作顺序简单明了,操作功能简明直观; ●易于查找故障和排除故障。 3.性能价格比要高 优化系统设计,简化外围硬件电路,或采用硬件软化技术提高系统的性能价格比。 4.具有自我保护意识 应考虑软件具有加密功能,使固化到单片机内的用户程序不能被非法读出或复制。

  4. 9.1.2 单片机应用系统的组成 任何单片机应用系统都由硬件和软件两大部分组成。 1.硬件组成 硬件由单片机、存储器、若干I/O接口及外围设备等组成,如图9—1所示。 图9—1 单片机系统硬件组成示意图

  5. (1)单片机是整个系统的核心部件,能运行程序和处理数据。(1)单片机是整个系统的核心部件,能运行程序和处理数据。 • (2)存储器用于存储单片机程序(程序存储器)及数据(数据存储器)。 • (3)I/O接口是单片机与外部被控对象的信息交换通道。包括以下几部分: • 数字量(频率、脉冲等)I/O接口 • 开关量(继电器开关、无触点开关、电磁阀等)I/O接口 • 模拟量I/O接口(A/D或D/A转换电路)

  6. (4)通用外部设备是进行人—机对话的联系纽带。包括以下几部分:(4)通用外部设备是进行人—机对话的联系纽带。包括以下几部分: ●键盘 用于输入数据及修改系统参数等。 ●显示器 用于显示控制系统工作状态及各种被测参数。 ●打印机 用于打印各种待分析及处理的数据或图表。 (5)检测与执行机构 检测单元用于将各种被测参数转变成电量信号,供计算机处理。一般采用传感器实现。 执行机构用于驱动外部被控对象,一般有电动、气动和液压等驱动方式。

  7. 2.软件组成软件主要由应用软件和开发软件两大类构成。(1)应用软件是由软件设计者提供的、针对不同单片机控制系统功能所编写的软件,专门用于对整个单片机系统的管理和控制。(2)开发软件是指在开发、调试控制系统时使用的软件,如汇编程序、编译程序、调试和仿真程序、固化程序等。 9.1.3 应用系统的研制开发过程 1.确定总体设计方案

  8. 开 始 用户需求分析及方案调研 确定功能指标 选机型,划分软硬件 系统扩展方案设计 按功能确定软件模块 外围电路、接口电路方案设计 软件结构设计 系统硬件电路设计 模块化软件编制 硬件电路检查 测试软件 汇编 接开发装置 硬件系统诊断 N 硬件合格? Y 模块化软件调试 N 模块化软件合 格? 软件修改 Y N 所有模块化软件均调试完? Y

  9. 所有模块化软件链接 运行调试程序 N 合格? 软件修改 Y 程序固化到EPROM 脱机运行 完成设计

  10. (1) 用户需求分析与方案调研目的:通过对市场及用户的了解明确应用系统的设计目标及技术指标。 内容主要: ①对国内外同类系统的状态分析; ②明确被控、被测参数的形式(电量,非电量,模拟量,数字量等)、被测控参数的范围、性能指标、系统功能、显示、报警及打印要求; ③确定课题的软、硬件技术难度及主攻方向等。 (2)可行性分析 目的:对系统开发研制的必要性及可行性做出明确的判断并决定开发工作是否继续。

  11. (3)系统方案设计 目的:为整个系统设计建立一个逻辑模型。 主要内容: ● 进行必要的理论分析和计算,确定合理的控制算法; ● 选择机型; ● 划分系统软、硬件的功能,合理搭配软、硬件比重; ● 确定系统的硬件配置,包括系统的扩展方案、外围电路的配置及接口电路方案的确定,并画出各部分的功能框图; ●确定系统软件功能模块的划分及各功能模块的程序实现方法,并画出流程图; ● 估计系统的软、硬件资源并进行存储空间的分配。

  12. 2.系统的详细设计与制作 • 包括硬件设计与软件设计两大部分。 • (1)硬件设计 ①任务:根据总体设计要求,设计系统的硬件电路原理图,并初步设计印制电路板等。 ②主要内容: • 单片机系统扩展(如存储器扩展、I/O接口扩展、中断系统扩展等); • 系统配置(如键盘、显示器、打印机、A/D或D/A转换等)

  13. ③单片机系统扩展及配置应遵循的原则: ● 尽量选用典型通用的电路; ● 系统扩展及配置应留有余地,以便于今后的系统扩充; ● 硬件结构应结合软件考虑,尽可能用软件代替硬件,简化硬件结构; ● 应选用性能匹配且功耗低的器件; ● 适当考虑CPU的总线驱动能力; ● 注意可靠性及抗干扰设计。

  14. (2)软件设计 软件设计的思想见第3章,软件设计的内容及步骤如图9—3所示。 ①系统定义定义各输入/输出端口地址及工作方式,分配主程序、中断程序、表格、堆栈等存储空间; ②软件结构设计常用的程序设计方法有模块化程序设计(见第3章)、自顶向下逐步求精程序设计、结构化程序设计三种。 ③ 建立数学模型用于描述各输入变量和输出变量之间的数学关系并确定算法。

  15. 绘制程序流程图根据系统功能、操作过程、软件结构及算法进行绘制。 ⑤ 编写程序依据流程图选择适合的语言来编写主程序及各功能模块程序。 ⑥ 汇编与调试将编写好的用户程序汇编成机器码,并利用仿真器进行调试和修改。

  16. 开 始 系统定义 软件结构设计 建立数学模型 绘制程序流程图 编写程序 汇 编 修改程序 在线仿真调试 Y 程序有错? N 固化到EPROM 结 束 图9—3 软件设计步骤

  17. 什么是硬件调试? 3.仿真调试仿真调试分硬件调试、软件调试和系统联调三个阶段。(1)硬件调试 硬件调试是利用开发系统、基本测试仪器(万用表、示波器等),通过执行开发系统有关命令或测试程序,检查用户系统硬件中存在的故障。它又可分为静态调试和动态调试两步: ●静态调试即用户系统未工作时的一种硬件检查。一般采用目测、万用表测试、加电测试等方法对印制电路板及各芯片、器件进行检查。 ● 动态调试是在用户系统工作时发现和排除硬件故障的一种硬件检查。其一般方法是先进行各单元电路调试再进行全系统调试。

  18. 什么是软件调试? (2)软件调试软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。软件调试的一般方法是先独立后联机、先分块后组合、先单步后连续。 (3)系统联调系统联调是指让用户系统的软件在其硬件上实际运行,并进行软、硬件联合调试。

  19. 4.程序固化及独立运行5.文件编制阶段文件应包括:4.程序固化及独立运行5.文件编制阶段文件应包括: • 任务描述; • 设计的指导思想及设计方案论证; • 性能测定及现场试用报告与说明; • 使用指南; • 软件资料(流程图、子程序使用说明、地址分配、程序清单); • 硬件资料(电路原理图、元件布置图及接线图、接插件引脚图、印制线路板图、注意事项等)。

  20. 9.2 单片机的选型 9.2.1 单片机的性能指标 1.单片机的位数 单片机的位数由其内核CPU的位数决定。位数越多,单片机处理数据的能力就越强。目前以8位机应用居多。 2.运行速度 单片机的运行速度取决于外部晶振或外部时钟信号的频率。如89C51的外部时钟频率可达24MHz。单片机运行速度高则执行速度快,但功耗也会相应地增加,同时要注意其外围接口芯片与工作速度的配合。

  21. 3.存储器容量 通常指片内ROM、 RAM的配置情况。 4.中断及定时器 基本型单片机与增强型单片机所拥有的中断源及定时/计数器个数不一样。 • 5.输入/输出端口 • 输入/输出端口有输入口、输出口及双向口几种类型; • 有些输入/输出口还同时具备了总线的功能。 • 一些专用的单片机上还带有特殊功能的端口,如大电流驱动口、SPI串行口、I2C串行口、A/D输入口、D/A输出口、红外发射接收口、PWM输出口等。

  22. 6.功耗、封装及环境温度功耗:在一些自动监测仪表及电池供电的产品中,低功耗是主要的技术指标,通常采用HCMOS工艺的单片机在低电压下工作。6.功耗、封装及环境温度功耗:在一些自动监测仪表及电池供电的产品中,低功耗是主要的技术指标,通常采用HCMOS工艺的单片机在低电压下工作。 封装:单片机的封装一般有DIP、QFP、PLCC等类型,应从印制板的尺寸、加工手段、购买途径及成本等方面综合考虑。 环境温度:根据工作环境温度的不同可将单片机分为商业级(0℃~70℃)、工业级(-40℃~85℃)、汽车级(-40℃~125℃)和军用级(-55℃~125℃)。

  23. 7.极限参数极限参数主要指: • 最高使用电压、最低使用电压 • 最高使用温度、最低使用温度 • 最大功耗 • 最大电流 • 端口最大输入电压 • 端口最大输出电流 • 最高焊接温度 • 最长焊接时间

  24. 9.2.2 单片机的选型原则 1.单片机的系统适应性 所谓系统适应性是指能否用这个单片机完成对应用系统的控制任务。 主要考虑以下几点: ● 是否有所需的I/O端口数 ● 是否有所需的中断源及定时器 ● 是否有所需的外围端口部件 ● 是否有合适的计算处理能力 ● 是否有足够的极限性能

  25. 2.单片机的可开发性(1)开发环境包括汇编程序、编译、连接程序。2.单片机的可开发性(1)开发环境包括汇编程序、编译、连接程序。 (2)调试工具包括在线仿真器、逻辑分析工具、调试监控程序。 (3)在线BBS服务包括实时执行、应用案例、缺陷故障报告、实用软件、样本源码。 (4)应用支持包括是否存在专职的应用支持机构?是否存在应用工程师及销售人员的支持?支持人员的学识水平如何?是否有便利的通信工具,是否及时得到支持?

  26. 3.制造商历史及可购买性 ● 产品的性价比以及是否可靠? ● 购买途径是否顺畅? ● 供货量是否充足稳定? ● 是否停产? ● 是否在改进之中? 总结 依据上述三个原则进行单片机的选型,应可以选择出最能适用于具体应用系统的单片机,同时可以保证应用系统具有高可靠性、高性价比、高使用寿命及可升级换代性。

  27. 9.3设计实例:多功能数字钟 9.3.1 设计要求 设计制作具有下列功能的数字钟: l自动计时,由6位LED显示器显示时、分和秒; l 具备校准功能,可以直接由0-9数字键设置当前时间; l具备定时闹钟功能。

  28. 9.3.2 设计方案 1. 计时方案 利用单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分和秒的计时。 2. 键盘/显示方案 设计方案中采用4×3键盘实现输入设置,采用动态显示方式实现LED显示,如图所示。

  29. 3、控制方案 (1)时间显示 上电后系统自动进入时钟显示,从00:00:00开始计时,此时可以设定当前时间。 (2)时间调整 按下C/R键(时间设定/启动计时键),系统停止计时,进入时间设定状态,系统保持原有显示,等待键入当前时间,按下0~9数字键可以顺序设置时、分和秒,并在相应的LED上显示设置值,6位设置完毕后系统将从设定后的时间开始计时显示。

  30. (3)闹钟设置 按下ALM键(闹钟设置/启闹/停闹键),系统继续计时,显示00:00:00,进入闹钟设置状态,等待键入启闹时间,按下0-9数字键可以顺序进行相应的时间设置,并在相应的LED上显示设置值,6位设置完毕后系统启动定时启闹功能,并恢复时间显示。定时时间到,蜂鸣器鸣叫,直至重新按下ALM键停闹,并取消闹钟设置。

  31. 9.3.3 硬件原理 数字钟电路由单片机、可编程I/O接口芯片8155、4×3键盘输入电路、6位LED显示输出电路及蜂鸣器启闹电路组成,如图9—5所示为系统电路原理图。 1.单片机:选用89C51可满足要求。 2.I/O接口电路: 采用8155作为键盘/显示接口电路,其中8155的A口作为6位LED显示的位选口(低电平有效),B口作为段选口(高电平有效),C口的低3位为键盘输入口,对应0~2行,A口同时用做键盘的列扫描口。由系统电路原理图可知:

  32. 8155的地址分配如下: ● 控制寄存器:8000H,定义为PORT ● A口:8001H,定义为PORTA ● B口:8002H,定义为PORTB ● C口:8003H,定义为PORTC

  33. 3. 4×3键盘输入电路: 采用4×3键盘,包括0~9十个数字键(键号为00H~09H)、C/R键(时间设定/启动计时键,键号为0AH)和ALM键(闹钟设置/启闹/停闹键,键号为0BH)。 4. LED数码显示电路: 采用共阴极数码管实现时钟显示,6位LED从左到右依次显示时、分和秒,采用24小时计时。 5. 蜂鸣器启闹电路: 由89C51的P1.0控制驱动蜂鸣器(低电平有效)。

  34. 图9—5 数字钟硬件电路图

  35. 地 址 功 能 名 称 初始值 30H-35H 显示缓冲区,时、分、秒(高位在前) DISP0-DISP5 00H 3CH-3FH 计时缓冲区,时、分、秒、100ms HOUR,MIN,SEC,MSEC 00H 40H-42H 闹钟值寄存区,时、分、秒 AHOUR,AMIN,ASEC FFH 50H-7FH 堆栈区 PSW.5 计时显示允许位(1:禁止,0:允许) F0 0 PSW.1 闹钟标志位(1:正在闹响,0:未闹响) F1 0 9.3.4 程序设计 1.系统资源分配 定时器T0按照定时方式1工作,片内RAM及标志位的分配与定义见表9—1。 表9—1 片内RAM及标志位的分配

  36. 2.主要程序设计 (1)主程序 实现初始化与键盘监控,流程图如图9—6所示。 (2)定时器T0中断服务程序 实现计时功能,同时刷新计时缓冲区。流程图如图9—7所示。 定时器T0每隔100 ms溢出中断一次(设系统使用6 MHz晶振,定时器T0工作在方式1的定时器初值为3CB0H,即TH0=3CH,TL0=0B0H),每循环中断10次则延时时间为1s,重复60次为1分,分计时60次为1小时,小时计时24次则时间重新回到00:00:00。

  37. 图9—7 计时流程图 图9—6 主程序流程图

  38. (3)时间设置与闹钟设置子程序 实现当前时间及定时启闹时间的键盘输入设置。流程图如图9—8所示。 其功能是用键盘设置子程序将键入的6位时间值送入键盘设置缓冲区,用合字子程序将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区。若键盘输入的小时值大于23,分和秒值大于59,则不合法,将取消本次设置,清零重新开始计时。 图9—8 时间设置/闹钟定时流程图

  39. (4)键盘扫描子程序 作用: 判断是否有键按下,无键按下则循环等待,有键按下则求取键号后返回。流程图如图9—9所示。 图9—9 键盘扫描程序流程图

  40. (5)显示子程序 实现显示缓冲区的6位BCD码的动态扫描方式显示。 图9—10 显示程序流程图

  41. (6)定时比较子程序 实现当前时间(计时缓冲区的值)与预设的启闹时间(闹钟设置寄存区的值)的比较,若二者完全相同时,启动蜂鸣器鸣叫并置位闹钟标志位。当重新按下ALM键时,停闹并清零闹钟标志。流程图如右图所示。

  42. (7)其它辅助功能子程序 ●键盘设置子程序:将键入的6位时间值送入键盘设置缓冲区,流程图见图9—12所示。 ●拆字子程序:将3字节计时缓冲区中时、分和秒压缩BCD码拆分为6字节BCD码并刷新显示缓冲区。 ● 合字子程序:将键盘设置缓冲区中6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区,同时检测时间值的合法性。

  43. 图9—12 键盘设置子程序流程图

  44. 3.源程序清单 主程序: ORG 0000H AJMP MAIN ORG 000BH AJMP CLOCK ORG 0030H PORT EQU 8000H PORTA EQU 8001H PORTB EQU 8002H PORTC EQU 8003H DISP0 EQU 30H DISP1 EQU 31H

  45. DISP2 EQU 32H DISP3 EQU 33H DISP4 EQU 34H DISP5 EQU 35H HOUR EQU 3CH MIN EQU 3DH SEC EQU 3EH MSEC EQU 3FH AHOUR EQU 40H AMIN EQU 41H ASEC EQU 42H F1 BIT PSW.1

  46. MAIN:MOV SP,#50H ;设置堆栈区 MOVX DPTR,#PORT ;8155初始化 MOV A,#03H MOVX @DPTR,A CLR F1 ;清零闹钟标志位 CLR F0 ;允许计时显示 MOV AHOUR,#0FFH ;闹钟值寄存区置初值 MOV AMIN,#0FFH MOV ASEC,#0FFH MOV R7,#10H ;显示缓冲区、计时缓冲区清零 MOV R0,#DISP0 CLR A

  47. LOOP:MOV @R0,A INC R0 DJNZ R7,LOOP MOV TMOD,#01H ;定时器T0初始化 MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 ;启动定时器 SETB EA ;开中断 SETB ET0 BEGIN:ACALL ALARM ;调用定时比较 ACALL KEYSCAN ;调用键盘扫描 CJNE A,#0AH,NEXT1 ;是C/R键否? CLR TR0 ;暂时停止计时

  48. MOV R1,#HOUR ;地址指针指向计时 缓冲区首地址 AJMP MOD NEXT1:CJNE A,#0BH,BEGIN ;是ALM键否? JB F1,NEXT2 ;闹钟正在闹响否? MOV R1,#AHOUR ;地址指针指向闹钟值寄存区 首地址 MOD:SETB F0 ;禁止显示计时时间 ACALL MODIFY ;调用时间设置/闹钟定时程序 SETB TR0 ;重新开始计时 CLR F0 ;恢复显示计时时间 AJMP BEGIN

  49. NEXT2:SETB P1.0 ;闹钟正在闹响,停闹 CLR F1 ;清零闹钟标志 AJMP BEGIN 定时器T0中断服务子程序: CLOCK:PUSH PSW PUSH ACC ;保护现场 MOV TL0,#0B7H MOV TH0,#3CH ;重装初值,时间校正 INC MSEC MOV A,MSEC CJNE A,#0AH,DONE MOV MSEC,#00H

  50. MOV A,SEC INC A DA A ;二—十进制转换 MOV SEC,A CJNE A,#60H,DONE MOV SEC,#00H MOV A,MIN INC A DA A MOV MIN,A CJNE A,#60H,DONE

More Related