《单片机应用》_项目四 任务三.pptVIP

  • 0
  • 0
  • 约3.14千字
  • 约 17页
  • 2026-01-22 发布于广东
  • 举报

单片机应用技术项目式教程【任务描述】设计基于如下图所示全自动洗衣机电路中的洗涤过程控制程序,用单片机定时/计数器的定时功能使洗衣机电机正转/反转周期为3s,并具备开始、暂停/继续和停止三个按键功能(设晶振频率为12MHz)。任务3带暂停键功能的洗涤过程控制电路元件清单:元件关键字元件名称AT89C51单片机RESPACK-8上拉电阻CRYSTALAT晶振CERAMIC33P33pF电容CAP-ELEC22μF电解电容MINRES2K电阻2KΩBUTTON按键【任务分析】通过前面的任务1和任务2我们已掌握利用单片机内部定时/计数器编程实现定时过程的方法,由前述已知实践中全自动洗衣机的洗涤环节工作过程的本质就是使电机在正/反两个方向上定时反复旋转,从而驱动水流运动实现洗涤功能。而电机的旋转状态是由与继电器控制电路相连的单片机引脚上的电平状态来控制,我们在此结合已掌握的定时/计数器编程定时方法来实现这个过程。任务2周期为6s的单片机方波输出电路【知识准备】开始、暂停/继续和停止三种按键的相关功能需要用到控制转移指令,再结合任务2中利用定时/计数器实现较长时间定时的方法,我们就可以完成本任务所需的控制程序。【任务实施】1、软件设计本任务电路中由于存在多个单片机引脚分别与按键、LED和继电器相连接,且在程序中会被多次用到,为方便编程和减少出错借助了位定义指令BIT在程序的开头部分将这些引脚预先定义好;而开始、暂停/继续和停止等三个功能按键的状态判别切换用控制转移指令JB来实现。(1)画流程图Y开始键按下?YNNYN开始设定定时器单次循环次数定时/计数器T0初始化启动T0洗涤指示灯灭电机为停转状态洗涤指示灯亮电机开始正转暂/继键按下?等待抬起电机状态取反停止键按下?关闭T0洗涤指示灯灭电机停转(a)总流程图(b)中断服务程序流程图(2)计算计数初值

计算方法同前,当定时时间为30ms时,采用定时器T0,工作在方式1,机器周期为1μs,则计数值应为

30ms/1μs=30000

所以T0应装入的计数初值为

216?30000=65536?30000=35536=1000101011010000B=8AD0H

即TH0=8AH,TL0=D0H。(3)程序代码STARTBITP0.0 ;将3个按键位分别定义 PAUSEBITP0.1 STOPBITP0.2 XDLEDBITP2.2 ;指示灯位定义 XDZBITP3.6 ;正转位定义,为0时电机正转,为1时电机停 XDFBITP3.7 ;反转位定义,为0时电机反转,为1时电机停 ORG0000H LJMPMAIN ORG000BH ;定时器T0入口 LJMPZD0 ORG0200HMAIN: SETBXDF ;令电机是停转状态 SETBXDZ SETBXDLED ;令洗涤指示灯开始时是灭的 MOVR0,#100 ;用100个30ms累加到3s MOVTH0,#08AH ;设T0初值为8AD0H即35536,即计数30000次即30ms MOVTL0,#0D0H MOVTMOD,#01H ;设定T0为工作方式1 SETBEA ;开放中断 SETBET0WASH: ;洗涤过程开始 JBSTART,$ ;等待开始键按下 SETBTR0 ;启动定时器T0 CLRXDLED ;洗涤灯亮 SETBXDF ;令电机开始正转 CLRXDZPD1: JBPAUSE,PD2 ;若暂停键没按下就去判断停止键状态 JNBPAUSE,$ ;等待暂停键抬起 CPLXDZ;令电机一端电压取反PD2: JBSTOP,PD1 ;若停止键没按下就去判断暂停键状态 CLRTR0 ;若停止键已按下就关闭T0 SETBXDLED

文档评论(0)

1亿VIP精品文档

相关文档