270 likes | 485 Views
《 单片机原理与接口技术 》 电子教案 重庆工商职业学院. 第七章 单片机应用系统设计. [内容提要] 本章主要介绍单片机应用系统的设计。目前单片机的应用领域十分广泛,可以说,已深入到了包括工业过程控制、智能化仪器仪表、家用电器等在内的各行各业。本章中列举的只是单片机众多应用中的几个侧面。以单片机为核心的产品的开发需要单片机开发系统的支持,本章对单片机开发系统作了初步介绍。 [学习要求]
E N D
《单片机原理与接口技术》电子教案重庆工商职业学院《单片机原理与接口技术》电子教案重庆工商职业学院
第七章单片机应用系统设计 [内容提要] 本章主要介绍单片机应用系统的设计。目前单片机的应用领域十分广泛,可以说,已深入到了包括工业过程控制、智能化仪器仪表、家用电器等在内的各行各业。本章中列举的只是单片机众多应用中的几个侧面。以单片机为核心的产品的开发需要单片机开发系统的支持,本章对单片机开发系统作了初步介绍。 [学习要求] 在本章的学习过程中,应主要了解并初步掌握单片机应用系统的设计,即如何规划单片机应用系统软、硬件之间的关系,如何合理地选择外部扩展器件,合理分配单片机资源等。
7.1 单片机应用系统的设计过程 一、合理的开发流程 ◆需求获取 在进入正式开发之前,必须先从用户处获取准确的需求。在这上面花费相当时间是很必要的。 项目可以大致分为委托开发和公司立项开发两大类。 对于委托开发,例如给某单位开发一套该单位专用的系统,一般用户对于项目要完成哪些功能已经有了一个比较清楚的轮廓,而且往往在开发合同中已经大致地规定了。 但是,开发合同上规定的只是一个大概的框架,在进入开发之前必须与用户进行比较具体的交流和讨论,了解清楚用户心目中的产品究竟是什么样子。这个步骤如果没有好好做,往往到了开发工作的后期才发现开发人员的理解和用户的要求有一些误解,那么必然造成时间上的浪费。 对于公司立项开发的项目,在开发之前应该做一定的市场调查工作,一方面是从经济效益考虑,调查产品的潜在市场有多大,另一方面是从技术的角度,必须了解清楚潜在用户对产品的各种功能上的要求,例如,用户现在使用什么产品,对该产品有什么意见和要求等等,根据调查的统计结果决定即将开发的产品的一些技术指标。
7.1 单片机应用系统的设计过程 一、合理的开发流程 ◆需求分析 在了解用户的需求之后,将需求用一种模型来表示,就是需求分析。 强调几个问题: ▲要分清问题域与系统责任 ▲需求获取与需求分析的关系 ▲分析与设计过程的衔接 ◆设计过程 设计阶段的工作包括: 对分析模型必要的修改。可能需要对某些类结构进行一些修改,这些修改的原因可能是编程环境的要求,或者为了重用以前的某些工作。 定义界面部分、数据访问(数据库)部分。 由于目前很多编程语言都可以可视化地设计界面,所以界面部分工作往往留到了编码阶段来完成。于是设计阶段的工作量并不大。 ◆编码 进入编码工作之后,可能会发现前面分析或设计阶段的某些错误,这时应返回到前面的阶段进行必要的修改。 ◆测试 即使是小项目,也应该严格地进行测试。
7.1 单片机应用系统的设计过程 一、合理的开发流程 ◆人员安排 比较小的项目,往往是几个人来完成,这几个人基本上从头到尾参加开发。在这几个人中,有一位项目负责人,负责分析、设计和协调的工作。由于项目小,项目负责人也要参加编程,那么这人必须把时间合理运用, 注意以下以点原则: ▲协调几个人的工作比自己完成一段编码更重要 由于协调上出了漏洞,可能导致很大的问题,所以项目负责人必须随时监控各开发人员的工作,包括内容是否与要求发生偏差,进度是否滞后等等。 只有在完成这些工作之后,项目负责人剩下的时间才能用于编程。 ▲ 给每个开发人员明确的任务书 不管是用面向对象或者其他方法开发,分析、设计模型只是从功能的角度来描述系统。但是,具体开发时每个开发人员必须非常明确自己的任务,这些任务应该采用明确的文档来表示。 ▲让大家都大致熟悉设计模型 让每个开发人员都清楚自己所做的工作在整个系统中处于什么地位,有时侯可能会发现设计模型中的漏洞,避免了各人的代码编写完毕之后又要修改的后果。
1 2 1 2 7.1 单片机应用系统的设计过程 二、产品开发流程框图 图7-1 开发流程图
仿真插头 单片机应用系统 (用户系统) EPROM写入插口 开发模板 通用计算机 系统 总线 7.2 单片机开发工具 一、开发手段的选择 图7-2 微机开发系统
7.2 单片机开发工具 二、开发工具软件 ◆ 805l宏汇编语言 ◆PL/M-51语言 ◆C-51语言 图7-3 伟福仿真器菜单界面
7.3 单片机应用系统举例 一、潜水泵自动控制保护器 任务描述:潜水泵自动控制保护器具有两大功能,第一是保护功能:能 在泵体缺水时实施自动保护,并能根据预设时间自动恢复工 作。第二是自动控制功能:能根据水塔水位,自动启停水泵。 • 总体设计 ◆需求分析 ▲需求获取 • 本项目最早由一家专门生产潜水泵的厂家提出,该厂家在生产和销售过程中,不断接到用户反馈潜水泵烧坏,主要原因是在抽水过程中,由于水源来水不足,潜水泵干抽烧坏,所以提出开发一种保护装置,就有了最初的潜水泵自动控制保护器项目的需求,再根据实际中,许多情况是给水塔抽水,这样就要知道水塔缺水和水满情况,还有在广大农村有时要计时抽水,这样就确定最后方案。 ▲设计开发任务书 • 本项目是一个很小的项目,开发人员为:项目负责人一名、一名软件工程师、一名硬件工程师、一名技术员。项目负责人负责协调各人员工作和检查进度,软件工程师负责程序设计,硬件工程师负责硬件原理图及PCB板设计,技术人员负责原器件购买、测试和组装工作。
7.3 单片机应用系统举例 一、潜水泵自动控制保护器 • 总体设计 ◆方案设计 采用89C2051单片机控制、二个键(K1、K2)用来起动水泵前的参数设置,水位器:(三个)水池上水位器、水池下水位器、潜水泵水位器,用来检测水位保证水泵正常工作,该保护器有两种工作模式,一种是自动控制模式,主要用在对水塔抽水,另一种是定时工作模式主要应用在计时抽水。 ◆测试计划 硬件测试:主要测试各部分硬件是否能正常工作,每部分通过简单程序来检测。 软件测试:测试软件是否符合设计要求、是否存在BUG。
7.3 单片机应用系统举例 一、潜水泵自动控制保护器 • 详细设计 ◆硬件设计 ▲主要元器件 89C2051 一片、78L05一个、LED 3个、按键二个、水位检测器三个、MOC3020一个、变压器一个、及电阻、电容、三极管、灯等若干。 ▲LED工作原理及动态显示: 本项目采用的是共阳极的3个LED数码管,要点亮某个数码管的某笔划,则相应的数码管阳极加+5V电源,相应笔划的阴极端接低电平,本方案三个数码管阴极是相连的,所以在阳极必须轮流有效,只要时间合理,在人的视觉就会看到同时亮的结果。
7.3 单片机应用系统举例 一、潜水泵自动控制保护器 • 详细设计 ▲原理图
7.3 单片机应用系统举例 一、潜水泵自动控制保护器 • 详细设计 ◆软件设计 LED显示程序 LED0 EQU 41H; 定义LED显示缓冲低位单元 LED1 EQU 42H; LED2 EQU 43H;定义LED显示缓冲高位单元 …… LOOP: LCALL DISPLAY …… SJMP LOOP …… DISPLAY: PUSH ACC MOV A,LED2 LCALL DISP1
7.3 单片机应用系统举例 一、潜水泵自动控制保护器 • 详细设计 ◆软件设计 CLR P3.2 LCALL DEL1 SETB P3.2 MOV A,LED1 LCALL DISP1 CLR P3.3 LCALL DEL1 SETB P3.3 MOV A,LED0 LCALL DISP1 CLR P3.4 LCALL DEL1 SETB P3.4 POP ACC RET DISP1: MOV DPTR,#DBB MOVC A,@A+DPTR MOV P1,A RET DEL1: MOV R3,#10 DEL: MOV R4,#50 DJNZ R4,$ DJNZ R3,DEL RET ;数码管字形码 DBB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H ;0-6 DB 82H,0F8H,80H,90H ;7-9 END
7.3 单片机应用系统举例 二、可调速加热控制炉 任务描述:本控制器能根据用户设定的加温温限(最高温度),以及加 热时间、冷却时间,自动调节加热功率,从而达到可调速加 热的目的。 • 总体设计 ◆需求分析 ▲需求获取 • 本项目最初由湘潭大学理化实验室提出需求,在化学实验金属相图实验中,原有的实验仪(一台PC机、一台加热炉、一台测温仪)要做一个完整的实验需要四五个小时以上,并且数据要学生自己记录并自己计算和给制图形,往往几个小时不能完成一个实验,为了解决这个问题,提出开发一种新的实验设备,新的实验仪(PC机一台、两台测温仪,每台测温仪可以接六路温度传感器,两台加热炉),这样一台PC机可同时采集12路数据,整个过程由PC机上软件完成,不需学生记录数据和绘制图形和表格,大大提高了实验速度,实验结果更准确和直观。同时一个实验室可以省下一半PC机,节约了设备成本。本项目只是该实验仪中一部分,也就是加热炉的控制部分。 ▲设计开发任务书 • 本项目开发人员如下:项目负责人一名,软件工程师四名、硬件工程师一名、结构工程师一名、技术员一名、采购员一名。其中两名软件工程师负责PC软件开发、一名软件工程师负责测温仪软件开发、一名软件工程师负责加热炉软件开发。
7.3 单片机应用系统举例 二、可调速加热控制炉 • 总体设计 ◆方案设计 整个方案在这里就不详述,这里只就加热炉部分进行说明,由于一台PC机同时控制两台加热仪和两台测温仪,所以本台都有相应地址,与PC机通讯采用CAN总线,地址用24C01存储,加温速度由PC机根据当时室温发送相应加热功率百分比来控制加热炉。加热炉由89C1051控制。如接收到PC机发送的功率是80,则可通过控制加热炉80%时间打开电源,20%时间关断电源,具体通讯协议读者可以自己制订,并完整好程序,并在做实验或实训时调试。 ◆测试计划 硬件测试:主要测试各部分硬件是否能正常工作,每部分通过简单程序来检测。 软件测试:加热炉在不同室温下能不能在相同时间加热到指定温度。
7.3 单片机应用系统举例 二、可调速加热控制炉 • 详细设计 ◆硬件设计 ▲主要元器件 89C2051 一片、24C01、双向可控硅等。 ▲I2C总线原理及工作时序: 引脚图
7.3 单片机应用系统举例 二、可调速加热控制炉 读写命令字 当前读时序
7.3 单片机应用系统举例 二、可调速加热控制炉 字节写、页写时序
7.3 单片机应用系统举例 二、可调速加热控制炉 随机读时序图
7.3 单片机应用系统举例 二、可调速加热控制炉 • 详细设计 ▲原理图
7.3 单片机应用系统举例 二、可调速加热控制炉 • 详细设计 ◆软件设计 I2C总线的24C02读写程序: ;********************************************** ;*Title:AT24C02与51单片机连接读写程序* ;*Date:2005.7.7 * ;********************************************************* ;连线:SCL—P3.4,SDA—P3.5,WP—接地 ;(R3)=器件地址,(R4)=片内字节地址, ;(R5)=连续读写字节数,(R1)=欲读写数据存放地址指针 ;*********************************************************
7.3 单片机应用系统举例 二、可调速加热控制炉 SCL EQU P30 SDA EQU P31 ;写24C02子程序 I2C_WRITE: SETB SDA SETB SCL CLR SDA ;发开始信号 MOV A,R3 ;发器件地址 ACALL SEND ;调发送单字节子程序 MOV A,R4 ;送片内字节地址 ACALL SEND I2CW_AGAIN: MOV A,@R1 ACALL SEND INC R1 DJNZ R5,I2CW_AGAIN ;连续写N个字节 CLR SDA ;SDA位置0,准备送停止信号 ACALL DELAY ;延时以满足传输速率要求 SETB SCL ;发送停止信号 ACALL DELAY SETB SDA RET SEND: MOV R0,#08H I2CW_LOOP: CLR SCL ;开始[信号之后的]写地址操 ;作,SCL清'0' RLC A MOV SDA,C
7.3 单片机应用系统举例 二、可调速加热控制炉 NOP SETB SCL ;写完一位打操作后,SCL 置'1' ACALL DELAY DJNZ R0,I2CW_LOOP CLR SCL CALL DELAY SETB SCL ; ACKLP: MOV C,SDA JC ACKLP ;判断应答到否,未到则等待 CLR SCL RET ;******************************** ;读24C02子程序 I2C_READ: SETB SDA SETB SCL
7.3 单片机应用系统举例 二、可调速加热控制炉 CLR SDA ;发开始信号 MOV A,R3 ;发器件地址 ACALL SEND ;调发送单字节子程序 MOV A,R4 ;送片内字节地址 ACALL SEND SETB SDA SETB SCL CLR SDA ;发开始信号 MOV A,R3 ;发器件地址 SETB ACC.0 ;发读命令 ACALL SEND I2CR_AGAIN: ACALL READ MOV @R1,A INC R1 DJNZ R5,I2CR_AGAIN
7.3 单片机应用系统举例 二、可调速加热控制炉 CLR SDA ;SDA位置0,准备送停止信号 ACALL DELAY ;延时以满足传输速率要求 SETB SCL ;发送停止信号 ACALL DELAY SETB SDA RET READ: MOV R0,#08H I2CR_LOOP: SETB SCL ACALL DELAY MOV C,SDA RLC A CLR SCL ACALL DELAY DJNZ R0,I2CR_LOOP
7.3 单片机应用系统举例 二、可调速加热控制炉 CJNE R5,#01H,LW SETB SDA ;若是最后一个字节,置ACK=1 AJMP SETOK LW: CLR SDA ;否则置ACK=0 SETOK: ACALL DELAY SETB SCL ACALL DELAY CLR SCL ACALL DELAY SETB SDA ;应答完毕,SDA置1 RET DELAY: NOP NOP RET END