第9章 MCS-51单片机系统的开发应用西安思源学院电子信息工程学院29.1 单片机应用系统研制过程39.1.1 总体设计1.明确设计任 务 认真进行目标分析,根据应用场合、工作环境、具体用途,考虑系统的可靠性、通用性、可维护性、先进性,以及成本等,提出合理的 、详尽的功能技术指标。 2.器件选择(1)单片机选择 主要从性能指标如字长、主频、寻址能力、指令系统、内部寄存器状况、存 储器容量、有无A/D、D/A通道、功耗、价能比等方面进行选择。对于一般的测控系统,选择8位机即能满足要求。(2)外围器件的选择 外围器件应符合系统的精度、速度和可靠性、功耗、抗干扰等方面的要求。应考虑功耗、电压、温度、价格、封装形式等其他方面的指标,应尽 可能选择标准化、模块化、功能强、集成度高的典型电路。43.总体设计 总体设计就是根据设计任务、指标要求和给定条件,设计 出符合现场条件的软、硬件方案。并进行方案优化。应划分硬件、软件任务,画出系统结构框图。要合理分配系统内部的硬件、软件资源。包括以下 几个方面: (1)从系统功能需求出发设计功能模块。包括显示器、键盘、数据采集、检测、通信、控制、驱动、供电方式等。 (2)从系 统应用需求分配元器件资源。包括定时器/计数器、中断系统、串行口、I/O接口、A/D、D/A、信号调理、时钟发生器等。 (3)从开 发条件与市场情况出发选择元器件。包括仿真器、编程器、元器件、语言、程序设计的简易等。 (4)从系统可靠性需求确定系统设计工艺。包 括去耦、光隔、屏蔽、印制板、低功耗、散热、传输距离/速度、节电方式、掉电保护、软件措施等。59.1.2 硬件设计 由总体设计所给出的硬件框图所规定的硬件功能,在确定单片机类型的基础上进行硬件设计、实验。进行必要的工艺结构设计,制作出印刷电路板 ,组装后即完成了硬件设计。 一个单片机应用系统的硬件设计包含系统扩展和系统的配置(按照系统功能要求配置外围设备)两部分。1. 硬件电路设计的一般原则 (1)采用新技术,注意通用性,选择典型电路。 (2)向片上系统(SOC)方向发展。扩展 接口尽可能采用PSD等器件。 (3)注重标准化、模块化。 (4)满足应用系统的功能要求,并留有适当余 地,以便进行二次开发。 (5)工艺设计时要考虑安装、调试、维修的方便。62.硬件电路各模块设计的原则单片机应用系统的 一般结构 如下图所示。各模块电路设计时应考虑以下几个方面: (1)存储器扩展:类型、容量、速度和接口,尽量减少芯片的数量 。 (2)I/O接口的扩展:体积、价格、负载能力、功能,合适的地址译码方法。7(3)输入通道的设计:开关量(接口形式、电 压等级、隔离方式、扩展接口等),模拟输入通道(信号检测、信号传输、隔离、信号处理、 A/D、扩展接口、速度、精度和价格等)。(4) 输出通道的设计:开关量(功率、控制方式等),模拟量输出通道(输出信号的形式、 D/A 、隔离方式、扩展接口等)(5)人机界面的设计 :键盘、开关、拨码盘、启/停操作、复位、显示器、打印、指示、报警、扩展接口等。(6)通信电路的设计:根据需要选择RS-232C、R S-485、红外收发等通信标准。(7)印刷电路板的设计与制作:专业设计软件( Protel,OrCAD等)、设计、专业化制作厂家、 安装元件、调试等。8 (8)负载容限:总线驱动。 (9)信号逻辑电平兼容性:电平兼容和转换。 (10)电源系统的配置: 电源的组数、输出功率、抗干扰。 (11)抗干扰的实施:芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。99.1.4 软 件设计101.总体规划 结合硬件结构,明确软件任务,确定具体实施的方法,合理分配资源。定义输入/输出、确定信息交换的方式(数 据速率、数据格式、校验方法、状态信号等)、时间要求,检查与纠正错误。2.程序设计技术 软件结构实现结构化,各功能程序 实行模块化、子程序化。一般有以下两种设计方法: (1)模块程序设计:优点是单个功能明确的程序模块的设计和调试比较方便,容易完 成,一个模块可以为多个程序所共享。其缺点是各个模块的连接有时有一定难度。 (2)自顶向下的程序设计:优点是比较符合于人们的日 常思维,设计、调试和连接同时按一个线索进行,程序错误可以较早的发现。缺点是上一级的程序错误将对整个程序产生影响,一处修改可能引起对 整个程序的全面修改。113.程序设计(1)建立数学模型:描述出各输入变量和各输出变量之间的数学关系。(2)绘制程序流程图:以简明直 观的方式对任务进行描述。(3)程序的编制:选择语数据结构、控制算法、存储空间分配,系统硬件资源的合理分配与使用,子程序的入/出口参 数的设置与传递。 4.软件装配 各程序模块编辑之后,需进行汇编或编译、调试,当满足设计要求后,将各程序模块按照软件结构设 计的要求连接起来,即为软件装配。在软件装配时,应注意软件接口。129.1.5 系统调试 单片机应用系统的软、硬件制作完成后 ,必须反复进行调试、修改,直至完全正常工作,经过测试,功能完全符合系统性能指标要求,应用系统设计才算完成。 1.硬件调试 (1)静 态检查 根据硬件电路图核对元器件的型号、极性、安装是否正确,检查硬件电路连线是否与电路图一致,有无短路、虚焊等现象。 (2)通电检查 通电检查时,可以模拟各种输入信号分别送入电路的各有关部分,观察I/O口的动作情况,查看电路板上有无元件过热、 冒烟、异味等现象,各相关设备的动作是否符合要求,整个系统的功能是否符合要求。132.软件调试 程序模块编写完成后,通过汇编或编译 后,在开发系统上进行调试。调试时应先分别调试各模块子程序,调试通过后,再调试中断服务子程序,最后调试主程序,并将各部分进行联调。3 .系统调试 当硬件和软件调试完成之后,就可以进行全系统软、硬件调试,对于有电气控制负载的系统,应先试验空载,空载正常后再试验负载 情况。系统调试的任务是排除软、硬件中的残留错误,使整个系统能够完成预定的工作任务,达到要求的性能指标。4.程序固化 系统调试成功 之后,可以将程序通过专用程序固化器固化到ROM。145.脱机运行调试 将固化好程序的ROM插回到应用系统电路板的相应位置, 即可脱机运行。系统试运行要连续运行相当长的时间(也称为考机),以考验其稳定性。并要进一步进行修改和完善处理。6.测试单片机系统的可 靠性 单片机系统设计完成时,一般需进行单片机软件功能的测试,上电、掉电测试,老化测试,静电放电(ElectroStatic D ischarge,ESD)抗扰度和电快进瞬变脉冲群(Electrical Fast Transient,EFT)抗扰度等测试。可以 使用各种干扰模拟器来测试单片机系统的可靠性,还可以模拟人为使用中可能发生的破坏情况。 经过调试、测试后,若系统完全正常工作 ,功能完全符合系统性能指标要求,则一个单片机应用系统的研制过程全部结束159.2 磁电机性能智能测试台的研制9.2.1 系统概述 双缸摩托车上的磁电机有一个发电线圈和二个点火线圈,为摩托车提供前灯照明电压,及通过放电器为发动机的二个气缸提供点 火信号,其质量直接影响到摩托车的运行性能。目前,磁电机性能测试普遍使用人工观察和判断的方法。 通常采用标准针状放电器替代火花塞检测 点火装置产生电火花的能力,用刻度盘加指针的方法来测取点火提前角,精度低,且效率低下。为此研制了磁电机性能智能测试台,对双缸摩托车用 磁电机的多项参数进行自动测试。16测试内容、条件及标准如下1.点火线圈高压绝缘介电强度测试 在放电器极距为11mm,磁电机转 速为6000r/min时,放电器应能产生每秒不少于50次的火花。2.连续点火性能测试 磁电机在放电器极距为6mm时,最低连续 点火转速为280r/min,最高连续点火转速为13 000r/min,每次运行20s,不能有缺火现象.3.照明及充电性能测试 直流负载用2.2士0.05?无感等效电阻,磁电机转速为2400r/min时,直流负载电压大于13.5V;磁电机转速为6800r/ min时,负载电压应小于28V。174.点火提前角与自动进角测试 点火提前角是磁电机的点火信号超前于摩托车活塞上死点 的角度。磁电机转速为280~13000r/min的范围内,点火提前角应能从15?土2?随转速升高而自动连续进角到41°土2°。28 0~l 300r/min范围内点火提前角应为15°土2°,6000~13000r/min范围内点火提前角为41°土2°。189.2 .2 测试系统硬件设计 磁电机性能智能测试系统硬件结构图19接口电路原理图20接口电路中有关节点电压波形219.2.4 程序 设计系统程序结构图22中断服务程序流程图239.3 水产养殖水体多参数测控仪 本系统以单片机为核心,采用RS -485协议组建分布式控制网络,利用计算机自动检测养殖水池的温度、溶氧含量、浑浊度等各环境因子,通过对增氧机、电磁阀等执行机构的控 制,可以把各项环境因子调整到合适的范围,使鱼类生长在最适宜环境条件下,系统还可以自动对大量现场数据和曲线进行分析,实现参数的自校正 和自适应控制,真正达到了低成本、高效益的现代化水产养殖要求。在相关模型和软件支持下,工控机和下位机均能在发生池水缺氧,温度、酸碱度 不适等异常情况时自动发出报警信号。24监控系统硬件结构图251.传感器选型温度与PH值传感器:采用了配以导热系数较大的不锈钢保护钢 管的铂电阻元件、玻璃电极和参比电极组合在一起的塑壳可充式复合电极(上海雷磁E-201-C型复合电极)。溶解氧传感器: 原电池式薄 膜电极(青岛昱昌科技有限公司的YC-DO-1溶解氧传感器)。水位传感器: 全温度补偿低压力传感器;恒流供电,0~70mV;电压线 性输出;精度:高气压传感器: JQYB-1A型气压变送器,0~110Kpa, 24VDC供电,0~5V输出,精度:北京昆仑海岸传 感技术中心生产。26系统设计保证如下条件:前端桥式电路放大倍数 2.调理电路的设计(1)温度信号调理电路图9-12 温度信号调理 电路R6=R7R5=R827(2) pH值调理电路图9-13 PH值调理电路283. A/D与D/A转换电路图9-14AD/DA转 换器接口电路图294. 单片机系统与看门狗电路图9-16单片机系统与看门狗电路图306. 通信接口电路 图9-17 通信接 口电路图317. 控制面板电路 图9-18 控制面板电路图329.3.4 软件设计系统主程序流程图33 9.4 单片机温度控制实验装置的研制 单片机温度控制实验装置的系统框图见图9- 20。该系统主要由单片机及扩展电路、固态继电器(Solid State Relay,简写为SSR)、加热元件、R/V变换电路、感 温元件、铝块、PC机等组成。其中单片机及扩展电路包括8255、ADC0809、键盘、LED显示器、RS232/TTL 电平转换电路 及其它电路。34图9-20单片机温度控制实验装置的系统框图35电热丝为普通电烙铁用电热丝,用2根,固定在铝块的左右两侧深孔内,使铝 块加温。 热敏电阻为负温度系数热敏电阻,其阻值随周围的温度升高而减小。热敏电阻嵌入铝块内部来感知铝块温度,通过R/V转换电路,将铝 块温度转化为对应的电压。ADC0809为模/数转换器,将R/V转换电路的模拟输出电压转换为对应的数字量,送单片机。SSR为过零触发 固态继电器,只有在交流电压的过零点附近才能使双向晶闸管触发导通。该器件能对交流电进行控制的最小周期为半个周波,即10ms。36课堂 设计的基本内容1.熟悉单片机温控系统硬件结构和温控原理。了解常用的温控算法。2.编制测温程序。A/D转换值在LED显示器上显示,铝 块温度由插入铝块深孔中的温度计读数反映。实测铝块在升温和降温过程中的温度/A/D转换关系表。3.编制单片机温控程序,在PC机上编译 后,经串行口下载到单片机,并调试。37部分连线图38设计说明 1.数码管显示字形 LED显示器是由发光二极管构成的字 段组成的显示器。39显示程序任务:设置显示缓冲区(7EH- 79 H) ,存放待显示数据和字符(位置码)。显示译码:程序存储器中建 立字形码常数表,查表得出对应数据和字符的字形码。输出显示:输出字形码到显示端口。2.字位口表(从高位起) 3.键盘显示原理图404 14.周波控制法: 实现温度控制。以某一时间间隔(例如200ms)为1个控制周期Tc,调整每个控制周期中加到固态继电器输入端的控 制信号uc的宽度tp,即可改变加到电热丝上的电压uo和平均功率。42模块流程采用动态显示方式,即一位一位地轮流点亮(扫描)6位显示 器。在8032RAM存储器中设置六个显示缓冲区单元7EH-79H,分别存放6位显示器的显示数据(从高到低)。43实验系统有4×8的 键盘结构(见键扫显示原理图)。键盘的行线通过电阻接+5V,当键盘上没有键闭合时所有的行线和列线都断开,行线都为高电平。当键盘上某一 键闭合时,则该键所对应的行线和列线都短路。CPU逐行逐列地检查键盘的状态,可判断键盘上有无键闭合。CPU对键盘上闭合键的键号确定, 可根据行线和列线的状态计算求得,也可以根据行线和列线的状态查表求得。44主程序和T0中断服务程序。T0设定10ms定时中断一次,对 测量结果进行采样。调节周期定为0.5秒459.5 单片机的C语言程序开发1. Keil软件系统概述 2.Keil uVisio n2 Keil uVision2 是优秀的单片机开发软件之一,读者可以向Keil公司代理周立功网站索取并下载得到 , 解压后在Windows下运行软件包中的WIN\Setup.exe安装,在桌面上有Keil uVision2图标,点击后出现如图 所示界面,该集成软件开发平台,具有汇编语言和C语言源代码编辑、编译、仿真于一体,它的人机界面友好,操作方便,是51单片机开发者的首 选。46Keil Vision2软件的运行 双击软件图标进入集成开发系统,如图所示,界面由工程管理窗口、源程序 编辑调试窗口和输出窗口组成,界面上还有菜单和工具栏。当系统工作时还有内存窗口,变量观察窗口以及外围设备对话框出现,其中工程管理窗口 有三个选择页面File,Regs,Books。分别显示当前项目的文件结构、CPU的寄存器的值、CPU的附加说明文件。 474849 在软件使用中还会出现下列窗口 1. 主窗口(Mainframe Window) 可设置其它各种调试窗口,设置断点、观察点,修 改地址空间,加载文件等等; 2. 调试窗口(DEBUG Window) 支持用户程序的各种显示方式,可连续运行,单步运行用户 程序,并可在线汇编; 3. 命令窗口(Command Window) 支持命令行的输入; 504. 观察窗口(Watch W indow) 可设置所要观察的变量、表达式等; 5. 寄存器窗口(Registe Window) 显示内部寄存器的 内容,程序运行次数等; 6. 串口窗口(Serical Windows) 显示串口接收和发送的数据; 7. 性能分析窗口 显示所要观察的各程序段占用CPU的空间; 8. 内存窗口(Memory Window) 显示所选择的内存中的数据; 9. 符号浏览窗口(Symbol Browser Window) 显示各种符号名称,包括专有符号,用户自定义符号(函 数名、变量、标号)等;51 10. 调用线窗口(Call-Stack Window) 动态显示当前执行的程序段的函数调用关系 ; 11. 代码覆盖窗口 提供当前模块内各程序段中被执行代码的比率; 12. 外围设备窗口(peripherals) 显示I/O口,定时器,中断,串口等外围设备状态;523. 菜单和工具栏 Keil uVision2软件菜单有:F ile文件和命令菜单,Edit是编辑和编辑命令菜单,View是视图菜单,Project是项目和项目命令菜单,Debug是调试和调试 命令菜单,Flash存储器下载设置菜单,Peripherals是外围器件菜单,Tools是工具菜单,Svcs是软件版本控制系统菜单 ,Window是视窗设置菜单,Help是帮助菜单。 53 除Window常用工具外,软件还有一些专门工具,视图 菜单View和调试菜单Debug等的一些功能有专门的工具栏。如:Options for Target设置对象或文件工具选项, Bu ild Target编译修改过的文件并生成应用文件,Rebuild all Target重新编译所有文件并生成应用,Transla te current编译当前文件, stop Build停止生成应用,GO运行程序直到一个断点,STEP单步运行程序,遇到子程序进 入, Start/Stop开始/停止调试模式,Kill All取消所有断点,Insert/Remove设置/取消当前行的断点等等。 544.软件调试与使用操作过程主要任务的操作过程1、点击软件图标开机,运行Keil uVision2;2、创建工程; 鼠标左键单击主菜单“Project”----------项目命令菜单,鼠标左键单击子菜单“New Project”-------- -创建新项目,弹出“Creat New Project”对话框---------Window格式文件对话框,用鼠标在“保存在”下拉 框选择你要保存的文件夹(比如“我的文档”)----------在“文件名”文本框处用键盘敲入你给这个工程起的工程名(如“test1 ”)----------鼠标左键单击“保存”按键----------弹出“Select Device for Target ‘Ta rget1’”对话框---------公司和CPU型号选择。 55用鼠标在左边列表框“Data Base”区双击ATMEL或单击A TMEL前的“+”号 ATMEL子选项展开----------选公司ATMEL,用鼠标左键单击“89C52”----------选 择项目所用CPU,用鼠标左键单击“确定”按键--------完成项目创建,出现7.1所示窗口。 563、建立源程序A、建立汇编程序 源程序并编译过程 鼠标左键单击菜单“File”----------主菜单中的文件菜单,鼠标左键单击菜单“New”----- ----新建文件,在出现的文本窗口(Text1)中用键盘键入你的汇编程序鼠标左键单击菜单File------Save as---- -----在新建的文档中键入你的汇编程序名称,弹出Save As对话框---- 用鼠标在“保存在”下拉框选择你要保存的文件夹(比如 “我的文档”)--------在“文件名”文本框处用键盘敲入你给这个工程起的工程名(如“test1.asm”)-------- 注 意同时输入扩展名,并且是认可的扩展名。鼠标左键单击“保存”按键。例如使P1.0输出高低电平的源程序:57 在左边资源管理器 用鼠标左键双击“Target 1”或单击“Target 1”前的“+”号,鼠标右键单击Source Group,弹出“Add fi le to Group ‘Source Group 1’” 新建文件加入到项目组中, 如图7.2所示。 “文件类型”选 “asm source file (.a)”: 选择文件类型C语言或汇编等,找到“test1.asm”文件,鼠标左键单击该文件 ,找到刚才输入的文件,鼠标左键单击Add加入工程项目中,鼠标左键单击“Close”:关闭对话框。 编译修改过的程序:鼠 标左键单击主菜单“Project”------58 鼠标左键单击子下拉菜单中的“Built target”:编译文件、生成 应用文件, 输出窗口显示“”test1“-0 Errors(s),0 Warning(s)”:完成编译,没有误如有错误,点击输出 窗口中的提示行,鼠标会跳到源程序所在窗口中的错误处则根据提示修改源程序,然后再编译。用上述方法也可打开已有的汇编程序进行修改和编译 。 建立C51语言源程序并编译 鼠标左键单击菜单“File”------鼠标左键单击菜单“New”------- 在新建的文本窗口“Text 1”中用键盘键入,鼠标左键单击菜单file:save as在新建的文档中键入你的C51源程序, 弹出S ave as对话框: 用鼠标在"保存在"下拉框选择你要保存的文件夹(比如"我的文档") 59 在“文件名”文本框处用键盘敲 入你给这个文件起的文件名(如"text51.c") 只能使用默认的扩展名如a和c 鼠标左键单击左边列表框Target1- ---- 鼠标右键单击Source Group--------选择源文件组 弹出Add file to Group ''So urce Group 1''------文件加入源文件1组 文件类型选c source file (.c)--- 找到" tex t51.c "鼠标左键单击该文件-------- 找到所输入文件 鼠标左键单击"add"------- 加入组中鼠标左键单击"cl ose" 修改源程序,最后鼠标左键单击菜单“Project”------项目管理与命令 鼠标左键单击子菜单“Built t arget”------编译命令 下边图7.3窗口显示" text51.c "-0 Errors(s),0 Warning(s)"60614、设置参数 用鼠标左键单击主菜单“Project”------项目和项目命令菜单用鼠标左键单击子菜单“Options for Target ‘Target1’”------设置对象或文件工具选项窗口。如图所示。 弹出“Options for Target ‘Target1’”对话框------ 在“Target”标签下修改“Xtal(Mhz)”为“11.0592”-------- 在“Output”标签下,选中“Create HEX file”(如果你要生成 hex文件用编程器写到目标板的)。62设置对象或文件工具选项窗口63 在“C51”标签下修改“Interrupt vectors at address”为“0x8000”--在“BL51 Locate”标签“Code”中填入“0x8000”------ 在“debug”标签选中“Use keil monitor-51 driver”-----如图所示。设置对象中“debug”标签选项对话框窗口64 用鼠标左键单击“Setting”按键,根据你用的串口用鼠标选择Port---左键单击"ok"按键---- 选中“Load Application at Start”选中“Go tillmain()”--- 用鼠标左键单击“确认”按键,其余缺省。设置对象中“debug”标签选项对话框窗口 65第九章 结 束 |
|