1、,1,第11章单片机应用系统开发及实例,本章内容,11.1单片机应用系统的开发过程 11.2电喷汽车喷油嘴清洗机控制系统 11.3基于实时操作系统RTX51的万年历设计,2,11.1 单片机应用系统的开发过程 11.1.1 开发者必须具备的知识和能力,1.必须具有一定的硬件基础知识 2.需要有一定的动手能力 3.需要具备一定的软件设计能力 4.具有综合运用新知识和新技术的能力 5.搜集、检索、提炼有用知识和资料的能力 6.必须了解生产工艺或制造工艺,3,11.1.2 单片机应用系统开发的步骤,1.确定系统的目标任务 开发设计一个单片机应用系统或者设计智能化的仪器,首先要明白做什么,然后才是怎么
2、做。目标任务即系统要求实现的功能以及技术指标。应用的场合不同,具体的要求会有区别。这些目标任务的提出一般由开发系统的投资方提出,开发设计人员认可。 目标任务要尽可能清晰、完善,完整的目标任务为后续系统的设计和开发奠定坚实的基础。有些目标任务在开始设计时并不是非常清楚、完善,随着系统的研制开发、现场的应用以及市场的变化可能会有不断的更新和变化,设计方案要尽可能适应这些变化。,4,2.系统的总体设计 系统的总体设计包括单片机的选择、重要环节关键器件的选型、技术指标的实现、硬件软件功能的划分等。 单片机以及关键器件的选择一定要考虑技术是否成熟,是否满足系统的精度、速度和可靠性要求,货源是否充足等,如
3、出现问题是否有可以替代的器件等。 技术指标与整个系统的硬件与软件都有关系,所以要综合考虑,硬件选择满足精度要求的产品,软件采用合适的数学模型和算法。,5,硬件、软件功能在一定程度上具有互换性,即有些硬件电路的功能可用软件实现,反之亦然。具体采用什么方法,要根据具体要求及整个系统的性能价格比,加以综合平衡后确定。一般而言,使用硬件完成速度较快,可节省CPU的时间,但价格相对昂贵,而且系统比较复杂,势必增加硬件设计和调试的工作量和难度。用软件实现则相对经济,但占用CPU较多的时间。所以一般的原则是:在CPU时间允许的情况下,尽量采用软件。所以总体设计时,必须权衡利弊,仔细划分硬件和软件的功能。,6
4、,3.系统的结构框图,系统的总体结构设计完成后,将整个系统划分成若干模块,利用框图表示出各模块之间的关系、数据流向、控制流向,说明各模块的工作原理、采用的核心技术以及实现的功能。 结构框图将整个系统的结构图形化、清晰化、简单化,有助于对系统的进一步理解和掌握,并为硬件和软件设计的模块化打下基础。,7,4.系统的硬件设计,系统的硬件设计是根据总体设计方案以及结构框图,在所选择的单片机以及关键元器件的基础上,再进一步确定系统中所要使用的元器件,分模块绘制系统的电路原理图,最后将各模块的电路图综合起来,得到系统的总体电路图,并依据电路图设计、制作印刷电路板以及组装样机等。 设计时要综合考虑各元件的驱
5、动和带负载能力,要根据情况进行扩展,必要时做一些部件环节实验以验证电路的正确性。电路板设计时要综合考虑模拟电路、数字电路;高频电路、低频电路;高压电路、低压电路的布线规则,地线的布线方法和原则,以及印刷电路板导线宽度与所能承受的电压、电流关系等,并要综合考虑抗干扰设计。,8,5.系统的软件设计,根据系统总体设计方案中软件实现的功能,明确数学模型和算法,遵循自顶向一下、模块化设计的原则,综合顺序程序设计、分支程序设计、子程序设计、中断服务程序设计的各种方法,绘制程序流程图,并编写相应的程序。,9,6.系统的Proteus仿真,应用传统方法开发单片机应用系统开发时,只有当硬件制作完成后才能执行检验
6、软件设计的正确性,这无疑延长了开发时间。Proteus提供了软件和硬件同时开发的可能性,开发者应尽可能使用Proteus仿真系统功能,确认在硬件制作前,系统设计满足要求,以减少联机调试困难。,10,7.系统的联机调试、运行和维护,分模块调试,且大的模块又可以分成小的模块。 硬件是软件的工作平台,软件只有工作在正确无误的硬件平台上才能验证其正确性,所以一般的调试过程是硬件调试成功后再调试软件。 软件利用开发系统先进行模拟仿真后,再进行在线仿真调试。整个系统联机调试成功后,需要先在实验环境运行,认真仔细地记录其运行状态、故障状态、连续运行时间等,最后写出书面报告,根据运行报告再进行相应的硬件或软件
7、改动。,11,实验环境运行满足要求后,还要在现场环境运行,现场环境相对实验环境要复杂得多,一定要认真观察运行情况,分析出现的各种故障及原因,此时出现故障时,尽量采用软件的方法修正。 系统在实际工作过程中,可能会受到来自系统内部和外部的各种各样的干扰,使系统发生异常状态。通常把瞬时的不加修理也能恢复正常的异常状态称为错误;而必须通过修理才能恢复正常的异常状态称为故障。,12,8.可靠性设计,单片机应用系统的可靠性指在规定的条件下和规定的时间内,完成规定功能的能力。规定的条件包括环境条件(如温度、湿度、振动、电磁干扰等)、使用条件、维修条件、操作水平等。常用的描述可靠性的定量指标有可靠度、失效率、
8、平均无故障时间。 可靠度指产品或系统在规定条件下和规定的时间内完成规定功能的概率。 失效率又称故障率,指工作到某一时刻尚未失效的产品在该时刻后单位时间内发生失效的概率。 平均寿命又称平均无故障工作时间,指产品寿命的平均值。,13,为了减少系统的错误和故障,系统设计时常从以下几个方面提高系统可靠性:冗余设计,电磁兼容设计,信息冗余技术,时间冗余技术,故障自动检测与诊断技术,软件可靠性技术,失效保险技术等。 对于一个实际应用系统首先要保证可靠,其次是实时,然后是灵活和通用。,14,11.2电喷汽车喷油嘴清洗机控制系统 11.2.1系统功能描述及工作原理,系统功能描述 喷油嘴是电喷发动机关键部件之一
9、,它的工作状况好坏直接影响发动机的性能。然而不少车主根本不重视发动机喷油嘴的清洗,或者认为发动机喷油嘴要隔很长时间才需进行清洗,殊不知喷油嘴阻塞会严重影响汽车性能。 一般来说,在行驶20000km30000km左右进行清洗,清除喷油嘴上的积炭和污物,使发动机恢复其动力特性。,15,过去这类保养通常要交汽修厂进行,费用昂贵。现在市场上出现的一种电喷汽车喷油嘴清洗机,结合专用的燃油系统清洗剂,不需拆装发动机,只需用接头与发动机供油管及回油管连接,在发动机正常运转状况下, 让清洗混合液进入燃油供给系统,在 30min 内即可溶解发动机供油管、喷油嘴针阀和燃烧室各组件的积炭、油泥、胶质及漆类污染物,经
10、由循环燃烧分解过程,从汽车排放系统排出,恢复该车的性能,使其启动顺畅,怠速平稳,加油轻快,增加动力,达到省油及降低空气污染的效果。下面就对电喷汽车喷油嘴清洗机的原理与设计作一介绍。,16,2电喷汽车喷油嘴清洗机的工作原理,把汽油和清洗剂混合,通过高压汽油泵为发动机提供燃料。由于清洗剂对喷油嘴上的污染物有清洗作用,使喷油嘴清除堵塞。电喷汽车喷油嘴清洗机的工作过程及技术要求如下所述: (1)按启动停止键,数码管显示器显示“00”。 (2)按时间+、-键选择工作时间,每次累加(减)1 min,时间的选择范围为0060min。 (3)选好时间,延时5s继电器吸合工作,汽油泵运行在额定电压12V状态,数
11、码管同时显示剩余的工作时间。汽油泵的额定功率为70W,额定电压为12V。,17,(4)按压力+、-键通过改变直流电机上的电压(即改变汽油泵转速)调整清洗压力,电压调整范围为7V12V。 (5)当剩余工作时间小于4min时,蜂鸣器开始鸣叫,直到定时结束,继电器释放,汽油泵停止工作,蜂鸣器停止鸣叫,数码管显示“00”。 (6)5min内无任何操作则自动断电,数码管无显示。,18,(7)保护措施 油面过低保护。为防止无油损坏汽油泵,油面过低时,传感器开关闭合,汽油泵自动断电,数码管g段显示“”,但不闪烁; 油温过高保护。为防止油温过高起火,温度过高时,温度继电器开关闭合,汽油泵自动断电,数码管g段显
12、示“”,闪烁。,19,11.2.2系统方案及电路设计,1. 系统方案,20,图11-1 电喷汽车喷油嘴清洗机系统组成方框图,21,AT89S51单片机是整个系统的核心,负责控制检测输入/输出显示和电机调速等。按键输入电路负责对整个清洗过程一系列工作参数进行设定输入。数码管显示器在工作过程中显示剩余工作时间。电机调速利用了单片机内部的定时器,配合软件产生脉宽调制波(PWM),再通过功率场效应管去驱动低压直流电机,具有效率高、能耗低、转速连续可调等特点。输出控制电路在油温过高或油面过低的情况下,切断高压汽油泵电机的供电,防止发生事故。 电喷汽车喷油嘴清洗机的工作电源取自汽车上的12V蓄电池,经降压
13、稳压后得到5V的稳定工作电压。,2.电路设计 电喷汽油嘴清洗机电路共有6个模块,如图11-2(a)(f)。,22,(a)单片机及其接口电路,(b) 电机驱动电路,23,(c)油位过低传感器输入电路和油温过高传感器输入电路,24,(d)显示器电路,25,(e)报警电路,26,(f) 电机供电控制电路图11-2 电喷汽油嘴清洗机电路原理图,27,图11-3 主程序流程图状态,28,2变量定义及初始化模块 程序设计时需设立一系列的变量和标志,具体如下。 uint deta; /*1 ms计时单元 */ uchar sec; /*计时秒*/ char set_min; /*设定分*/ uchar mi
14、n_5m; /*5min计数器*/ uchar val; /*中间变量*/ uchar pwm_val; /*调宽脉冲变量值*/ char push_val; /*压力变化值*/ sfr WDT=0xa6; /*定义看门狗定时器*/ sbit pushdec_key=P14; /*压力键*/ sbit pushinc_key=P13; /*压力键*/,29,sbit timedec_key=P12; /*时间键*/ sbit timeinc_key=Pl1; /*时间键*/ sbit buzz=P35; /*驱动蜂鸣器端*/ sbit out=P36; /*调宽脉冲输出端*/ sbit rel
15、ay=P37; /*驱动继电器端*/ uchar dis_sel; /*显示内容散转标志*/ bit over_5m; /*5 min溢出标志*/ bit flag_5m; /*5min标志*/ bit flag_5s; /*5s标志*/ bit start; /*启动标志 */ bit dis_flag; /*显示标志*/ bit key_flag; /*按下键标志*/ bit buzz_sound; /*蜂鸣器声响标志*/,30,bit y; /*中间变量*/ bit out_flag; /*PWM输出标志*/ /*初始化*/ void init( ) IT0=1;IE=0x8b;rese
16、t( ) ; ,31,/*定时器T0初始化*/ void init_timer0( ) TMOD=0x11;TH0=-(1150/256) ; /*1ms初值 */TL0=-(1150%256) ;TR0=0;ET0=1;EA=1; ,32,/*定时器T1初始化*/ void init_timerl( ) TH1=-(5000/256) ; /*5ms初值 */TL1=-(5000%256) ;TR1=1;ET1=1;EA= 1; ,33,3. 调宽脉冲输出子程序模块 AT89S51内部没有集成PWM部件,这里利用了内部定时 器,与软件配合产生出调宽脉冲波。,34,if(pwm_val=50)
17、pwm_val=0;elseout=OFF; ,void pwm_out(void) if(out_flag)if(pwm_val=(push_val+30)out=ON; /* 输出有效 */elseout=OFF; /*输出关闭 */,4.主程序(略),35,11.3 基于实时操作系统RTX51的万年历设计 11.3.1电路原理图,1. LED点阵显示器电路及和单片机的接口,36,图11-4 万年历组成方框图,图11-5 万年历的LED点阵显示器,37,图11-6 LED点阵显示器列驱动电路,38,图11-7 万年历LED点阵显示器行驱动,39,图11-8时钟芯片DS1302 和单片机接口
18、电路,40,图11-9 AT89S52单片机和外部电路接口,41,11.3.2实时时钟DS1302,图11-10 实时时钟DS1302引脚图,42,其中VCC1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由VCC1或VCC2两者中的较大者供电。当VCC2大于VCC1+0.2V时,VCC2给DS1302供电。当VCC2小于VCC1时,DS1302由VCC1供电。,X1和X2是振荡源,外接32.768kHz晶振。 RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传输。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入
19、移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在VCC2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向)。SCLK为时钟输入端。,43,DS1302有12个寄存器,其中有7个寄存器与日历、时钟有关,数据格式为BCD,其日历、时间寄存器及其控制字如表11-1所示。 DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位
20、Write Protect(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入), D0=1,指定读操作(输出)。,44,45,表11-1 DS1302的日期和时间寄存器,46,表11-2 控制字(即地址与命令字节),DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM
21、的31个字节。单片机控制DS1302的程序主要包括对寄存器的地址定义和控制字的写入,以及数据的读取。主要包括:初始化DS1302、读DS1302、读字节、写字节。,11.3.3主要程序代码,程序在实时操作系统RTX51环境运行,主要有5个任务:任务0、1、2、3、4。其中,任务0主要是初始化,初始化结束后删除;任务1读取DS1302时间,任务2读取DS18B02温度,任务3检测键盘,并执行相对应的子程序,任务4在点阵显示器上显示。 限于篇幅,仅给出任务调度程序和DS1302读写子程序。,47,void init(void) _task_ 0 DS1302_Initial( );DS18B20_
22、Initial( );os_create_task(1);os_create_task(2);os_create_task(3);os_create_task(4);os_delete_task(0);while(1);,48,void job1(void)_task_ 1 while(1)ReadTime(); / 读DS1302 ,49,void job2(void)_task_ 2 while(1)Read_B20( ); / 读DS18B20 ,50,void job3(void)_task_ 3 while(1)Get_key( ); / 键盘检测 ,51,void job4(void)_task_ 4 while(1)Display( ); /显示 ,52,