1、第第1010章章 单片机应用系统设计单片机应用系统设计10.1 单片机应用系统构成10.2 单片机应用系统设计方法10.2.1 需求分析10.2.2 可行性分析10.2.3 系统体系结构设计10.2.4 硬件设计10.2.5 软件设计10.2.6综合调试10.3 全自动洗衣机控制器设计10.3.1 需求分析10.3.2 可行性分析10.3.3系统体系结构设计10.3.4 硬件设计10.3.5软件设计10.3.6 综合调试习 题单片机应用系统是以单片机为核心的软硬件结合的智能系统,根据不同的应用目标,系统的构成、规模、功能、复杂程度都有差异,设计内容也不尽相同但系统的逻辑结构是相同的,设计方法是
2、一致的,设计过程中应遵循的规律和注意的问题是相似的设计开发高质量单片机应用系统的基础:深入了解单片机应用系统的基本构成全面掌握单片机应用系统的设计方法10.1 单片机应用系统构成单片机从逻辑结构上看,任何单片机应用系统都可分为单片机、输入通道、输出通道、通信接口、人机接口等几个部分。1.输入通道指将被测信号正确合理输入单片机所需的所有电路。主要任务是将被测信号转化为单片机可以接收的标准数字信号。对于数字量,可以直接送入单片机;对于开关量,经过整形、隔离后送入单片机;对于模拟量,需要经过放大、A/D转换后送入单片机;对于频率信号,可以经隔离后送单片机在设计输入通道时应注意以下问题信号形式多样。干
3、扰信号多。电路性质复杂。2.输出通道指将单片机输出的数字信号转化为控制对象需要的信号形式所需的所有电路。根据输出控制对象的不同输出电路可能是模拟电路或数字电路输出信号可以是模拟信号或开关量在设计输出通道时应注意以下问题功率隔离电路形式3.通信接口指单片机应用系统中的标准数字通信通道在多机系统、网络系统或与其他设备通信时,必须配置有标准的RS232、RS422/RS485通信接口或CAN现场总线的通信接口。单片机一般都提供串行通信接口,选择合适的器件就能方便地将串行通信接口扩展成相应的RS232、RS422/RS485接口。在设计通信接口时应注意以下问题串行口通信协议。专用芯片传输距离4.人机对
4、话人机对话通道是“人机”联系的主要手段常用的人机对话部件有键盘、显示器、打印机等设计人机对话接口时应注意以下问题设备规模电路形式10.2 单片机应用系统设计方法 单片机应用系统设计过程一般包括需求分析、可行性分析、系统体系结构设计、软/硬件设计、综合调试等几个步骤。10.2.2 可行性分析可行性分析是从原理、技术、需求、资金、材料、环境、研发/生产条件等方面分析论证产品开发研制的必要性及可行性,论证产品的经济效益、社会效益和生态效益,决定产品的开发研制工作是否需要继续进行下去可行性分析通常从以下几个方面进行论证市场或用户需求科学原理与技术资金、材料及研发/生产条件经济效益、社会效益和生态效益现
5、在的竞争力与未来的生命力10.2.3 系统体系结构设计指产品由哪些功能模块构成,实现哪些功能,怎样实现这些功能。主要包括软硬件功能分配、技术路线、核心器件的选型等内容。系统体系结构决定产品的综合性能,要从正确性、可行性、先进性、可用性和经济性等多个角度综合考虑。体系结构可以用逻辑框图明确表述。体系结构设计时应注意以下问题硬件和软件功能划分技术路线核心器件选择10.2.4 硬件设计硬件设计的任务主要包括硬件功能模块划分、电路原理图设计、系统仿真、印刷电路板(PCB板)绘制、元器件的焊接与测试硬件系统设计应采用模块化系统原理图的设计是硬件设计最重要的一步在PCB板设计过程中要充分考虑元器件分放位置
6、的合理性在产品开发时,IC芯片多采用焊接插座的方法,如果是批量生产,除了易损坏的IC芯片外,应把IC芯片直接焊在PCB板上。硬件电路焊接完成后,就可以进行测试。最好的测试方法是分模块进行,再进行综合调试。10.2.4 硬件设计硬件设计原则尽可能选择典型通用的电路,并符合单片机的常规用法。为硬件系统的标准化、模块化奠定良好的基础。系统的扩展与外围设备配置应在满足应用系统当前功能的同时,留有适当余地,便于以后产品升级和功能扩充。硬件结构应结合软件方案一并考虑。元器件性能要匹配。单片机外围电路较多时,必须考虑驱动能力。设计一个较复杂的系统时,要考虑把硬件系统设计成模块化结构。10.2.4 硬件设计电
7、源系统采用稳压、隔离、滤波、屏蔽和去耦措施。采用交流稳压器,以防止电网欠压或过压;采用初次级双层屏蔽的隔离变压器,以提高系统抗共模干扰的能力;采用低通滤波器,以除去电网中的高次谐波;滤波器要加屏蔽外壳,以防止感应和辐射耦合;在电源的不同部分(如每个芯片的电源)配置去耦电容,消除以各种途径进入电源中的高频干扰。选择可靠性高的专用器件。这是保护系统安全运行的有效手段。对输入输出通道进行光电隔离,以防止干扰信号从I/O通道进入系统而导致系统程序跑飞(死机)。对于闲置的I/O口或输入引脚,不要悬空,可直接接地或接电源。10.2.4 硬件设计PCB设计原则晶振必须尽可能靠近CPU晶振引脚,且晶振电路下方
8、不能走线,最好在晶振电路下方放置一个与地线相连的屏蔽层。在双面印制板上,电源线和地线应安排在不同的面上,且平行走线,这样寄生电容将起滤波作用。对于功耗较大的数字电路芯片,如CPU、驱动器等应采用单点接地方式,即这类芯片电源、地线应单独走线,并直接接到印制板电源、地线入口处。电源线和地线宽度尽可能大一些。模拟信号和数字信号不能共地,即采用单点接地方式。在中低频应用系统(晶振频率小于20 MHz)中,走线转角可取45;在高频系统中,必要时可选择圆角模式。尽量避免使用90转角。10.2.4 硬件设计对于输入信号线,走线尽可能短,必要时在信号线两侧放置地线屏蔽,防止可能出现的干扰;不同信号线避免平行走
9、线,上下两面的信号线最好交叉走线,相互干扰可减到最小。合理分区。系统电路可以分为三类:模拟电路、数字电路和功率驱动电路。模拟地和数字地分开走线,最后在一点处汇合(一点接地)。功率驱动电路的地线也要单独接地,以减少相互干扰。I/O驱动器件和功率放大器件尽量放在电路板边缘,靠近引出接插件。时钟振荡电路要用地线隔离起来。时钟电路是系统中的主要辐射源。晶振外壳接地,时钟线尽量短。在单面板和双面板设计中,电源线和地线尽量粗些,以确保能通过大电流。10.2.4 硬件设计元器件选择原则在硬件电路成本允许的情况下,尽可能选择集成度高、功能完备的芯片对于需要大批量生产的产品,一定要选用通用性强、供货渠道充足的元
10、器件整个系统中相关的器件要尽可能做到性能匹配选择元器件时应遵从以下原则性能参数和经济性通用性速度匹配电路类型10.2.4 硬件设计硬件电路调试方法硬件设计完成后,要进行调试。硬件调试的任务是排查硬件电路故障,包括设计性错误和工艺性故障。硬件调试可按静态调试和动态调试两步进行静态调试方法如下不加电检查加电检查动态调试方法如下把硬件系统按功能分为若干模块,并逐一调试编制相应模块的测试程序,并在开发系统上运行测试程序,观察被调模块电路工作是否正常依次排除各功能模块的故障10.2.5 软件设计软件设计的任务主要包括编程语言的选择、软件任务划分、算法设计、程序编写与调试等编程语言不仅有汇编语言,还有一些
11、高级语言开发软件的明智选择是尽可能采用模块化结构软件设计原则结构清晰、简捷、流程合理、正确各功能程序模块化程序存储区、数据存储区规划合理运行状态标志化经过调试修改后的程序应进行规范化设置冗余指令设置软件陷阱采用“看门狗”(WATCHDOG)10.2.5 软件设计软件调试方法软件调试的任务是通过对系统应用程序的汇编、连接、执行来发现程序中的语法及逻辑错误,并加以纠正应用程序必须在联机状态下进行仿真调试先单步/断点,后连续。单步运行可以方便地观察程序中每条指令执行的情况,从而确定是硬件错误、数据错误还是程序设计错误先独立,后联合。将各个软件模块独立仿真调试。当各个程序模块都调试成功后,再将所有模块
12、连接起来进行联调,以解决在程序模块连接中可能出现的逻辑错误10.2.6综合调试系统软件、硬件独立调试成功后,可将程序固化到程序存储器中,用单片机芯片替换仿真器,进行系统脱机综合运行,检查系统软硬件的结合错误。若综合测试正常,则可进行产品的安装运行。综合调试出现错误,就要针对出现的问题形式、性质,分析修改硬件、软件或体系设计方案,直至系统运行正常为止。综合调试完成后,可将样机拿到工作现场进行测试,进一步暴露问题。经过现场运行、调试后,确认系统工作稳定、可靠,并己达到设计要求,产品即可定型。可以整理资料,编写技术说明书,进行产品鉴定或验收。投入批量生产、销售。10.3 全自动洗衣机控制器设计10.
13、3.1 需求分析自从洗衣机发明以后,由于其操作方便、安全可靠,既节省了手工洗衣所需的体力,又节省了手工洗衣所需的时间,彻底把人们从繁重的洗衣家务中解脱出来,大大提高了人们的生活质量,因此倍受人们青睐。但随着人们生活质量的不断提高,全自动洗衣机是消费者追捧的对象。市场调查表明:目前全世界洗衣机年总产量近5000万台,全自动洗衣机的产量和比例呈逐年增长趋势。2009年,全自动洗衣机在中国增长40%左右,在日本、意大利、英国分别增长20%、50%、71%。由此可见,无论从用户需求还是市场需求,全自动洗衣机都有巨大的发展空间。市场需要全自动洗衣机,用户需要全自动洗衣机。10.3.2 可行性分析 全自动
14、洗衣机主要通过单片机执行程序完成洗衣流程的自动化,科学原理明确,设计、制造技术成熟,不存在技术障碍;全自动洗衣机控制器不需特殊材料,不需要特殊的设计、开发、生产环境;生产洗衣机控制器资金投入少,劳动力投入少,生产效率高。综合上述分析,全自动洗衣机节能、环保,经济效益好,社会效益好,技术成熟,市场需求旺盛,产品发展空间广阔,产业前景良好,项目切实可行。10.3.3系统体系结构设计全自动洗衣机控制器的任务是控制洗衣机自动完成洗衣流程。包括:按键识别、指示灯提示、进水/放水阀控制、水量检测、浸泡时间控制、洗涤时间控制、出水阀控制、脱水时间控制、甩干时间控制、鸣笛提示等10.3.4 硬件设计全自动洗衣
15、机控制器硬件主要由单片机、按键、指示灯、进水/放水阀、压力传感器、电机驱动电路、时间/状态显示电路、蜂鸣器等部件组成。10.3.4 硬件设计电源为5V直流电源,通过一个LED灯来显示电源通断情况通过LM044L液晶屏,显示当前洗衣机的运行状态设置一个复位按钮设置一个蜂鸣器,发出警告信息选用44键盘,以方便使用者实现快速功能设定选用L298电机驱动芯片作为洗衣机电机、进水阀门、排水阀门的驱动芯片选用ADC0808来完成水位检测、电压检测功能10.3.4 硬件设计单片机选用AT89C51,和单片机直接连接的器件有:按键、LCD显示器、A/D转换器、电机驱动电路、电磁阀驱动电路、蜂鸣器等。引脚分配如
16、下表所示。引脚编号引脚编号 使用说明使用说明引脚编号引脚编号使用说明使用说明P0.0P0.0AD转换芯片输出LCD数据输入P2.0按键P0.1P0.1P2.1P0.2P0.2P2.2P0.3P0.3P2.3P0.4P0.4P2.4AD转换芯片EOCP0.5P0.5P2.5AD转换芯片START,AD转换芯片ALEP0.6P0.6P2.6报警控制P0.7P0.7P2.7P1.0P1.0PWM脉冲信号P3.0AD转换芯片ADDAP1.1P1.1PWM脉冲信号P3.174LS373输出使能信号P1.2P1.2进水阀门使能P3.274C922输出中断信号P1.3P1.3排水阀门使能P3.3P1.4P1
17、.4电机运转使能P3.4P1.5P1.5液晶RS信号P3.5AD转换输出使能信号P1.6P1.6液晶RW信号P3.6P1.7P1.7液晶E信号P3.710.3.4 硬件设计时钟与复位。单片机采用外接晶振给单片机提供时钟信号,并且接有复位RST按键,提供复位功能10.3.4 硬件设计LED显示电路:为了指示电路是否上电,在设计中,利用5V电源、LED与电阻组成电源指示电路,当电源一开启,电源指示LED灯即会亮起,作为提示信号10.3.4 硬件设计LCD显示电路:选用LM044L LCD显示模块用于显示洗衣状态。单片机P1.5引脚作为RS信号,P1.6引脚作为RW信号,P1.7引脚作为LCD使能信
18、号,P0口配置为LCD数据输入引脚,通过设置P1.5,P1.6,P1.7引脚的高低电平来设置LCD的功能。10.3.4 硬件设计按键:选择MM74C922芯片作为按键扫描控制电路,可以实现44键盘扫描。当有按键按下后,MM74C 922 会产生一个中断信号,将此中断信号接至单片机外部中断输入引脚P3.2,用于按键中断请求;将按键信息接至P2.0至P2.3口10.3.4 硬件设计按键值与功能对应关系P2.3-P2.0P2.3-P2.0对应按键功能对应按键功能P2.3-P2.0P2.3-P2.0对应按键功能对应按键功能00000000浸泡1000漂洗00010001脱水1001方式一0010001
19、0方式二1010方式四00110011速度1/41011速度3/401000100洗涤1100ON01010101进水1101OFF01100110方式三111001110111速度2/41111速度4/410.3.4 硬件设计AD采样电:选用ADC0808作为AD采样转换模块。由于系统只需要对电源电压、水位位置进行检测,只需要两路模拟信号。因此将ADC0808的位选信号ADD B和ADD C直接接地,通过P3.0引脚对ADD A位进行高低电平设置,来实现电压检测和水位检测的切换。10.3.4 硬件设计电机驱动电路:选用L298芯片作为洗衣机电机驱动电路。通过脉宽调制PWM波和使能信号,对电机
20、的正转和反转等运行状态进行控制。NoImage10.3.4 硬件设计蜂鸣器电路:通过单片机引脚P2.6和三极管实现对蜂鸣器的电压控制,当P2.6引脚为高电平时,三极管导通,蜂鸣器响,报警提示;当P2.6为低电平时,三极管截止,蜂鸣器不发声。10.3.5软件设计选用C语言为编写语言,以增加程序的可读性,方便程序修改,方便程序维护10.3.5软件设计定时中断子程序:在定时中断中,主要完成LCD显示、电机PWM波输出高低电平、电机运行状态设置等功能。10.3.5软件设计按键中断子程序:外部中断0设按键中断。当有按键按下后,就会产生外部中断0中断,就进入按键中断程序。首先读取P2口的电平值将P2口信息
21、和0X0F相与后获得对应的按键信息根据按键键值设置过程process、方式method、速度speed、PWM高电平值MOTOR_ON、洗衣机状态state等全局变量,以控制洗衣机的运行状态。10.3.5软件设计蜂鸣器控制子程序:蜂鸣器控制子程序由两部分组成,分别为蜂鸣器运行与蜂鸣器停止。通过设置speaker参数来控制对应引脚的高低电平,从而控制蜂鸣器的工作状态。LCD显示子程序:用write_com和write_data两个函数分别实现LCD写指令和LCD写数据功能,用check_BF函数来判断LCD忙碌状态,init_LCM函数实现LCD的初始化设置,display函数根据全局变量的状态
22、,显示当前的洗涤状态、洗涤方式、洗涤速度和电源电压、水位检测结果。10.3.5软件设计主程序:在主程序中,首先要完成定时中断、外部中断、LCD初始化、全局变量的设置,随后进入循环。在循环中,完成电压、水位两个模拟量的AD转换,将转换结果赋值给ad_level和ad_voltage两个全局变量,使得display函数调用时,可以实时显示AD采样转换结果。10.3.6 10.3.6 综合调试综合调试1.1.模块调试模块调试按照每个模块的设计要求,在Proteus下绘制电路原理图,编写功能程序,用断点、单步等方法调试。修改错误,改进硬件、软件设计,使功能模块达到设计要求。2.2.综合调试综合调试按照系统体系设计要求,在单片机系统上,逐一添加各个模块,进行调试。每次添加一个模块,修改错误。一个模块调试成功后,再添加另一个模块。所有模块添加、调试成功后,系统调试成功。全自动洗衣机控制器系统电路原理图如附录E所示。3.3.系统装配及运行系统装配及运行按照系统原理图设计、制作PCB版,将元器件焊接安装到指定位置,检测安装是否正确。将程序固化到单片机中,脱机测试系统。如果有错误,继续修改完善;直到系统工作正常为止。系统装配调试成功。