微机原理课程设计全自动洗衣机.docx
《微机原理课程设计全自动洗衣机.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计全自动洗衣机.docx(28页珍藏版)》请在冰豆网上搜索。
微机原理课程设计全自动洗衣机
微机原理课程设计
第一章设计内容及要求
1.1设计内容及要求
选用8086和适当的存贮器及接口芯片完成
1、六挡水位显示(50、45、40、35、30、25升);五档洗衣时间(18、15、12、9、6分钟);三档清洗(3、2、1分钟)、五档脱水(6、5、3、2、1分钟);两位数码管显示总时间;有上电、启动和暂停按钮。
2、工作顺序:
插上电源各档均在最大值,选择各档的按钮可以依次向下调节档位,然后按下启动按钮洗衣机按设定的程序进行工作。
3、开始数码管显示为总的洗衣所用时间,在洗衣机工作时,数码管显示的时间为洗衣所剩时间。
4、为了安全起见,当洗衣机盖打开时,洗衣机停止工作,在洗衣机盖关闭后,在继续进行工作。
5、洗衣机可根据水位和工作要求自动进行开启和关闭水阀。
1.2课程设计的要求
设计出电路原理图,说明工作原理,编写程序及程序流程图。
第二章系统的总体设计方案
2.18086对全自动洗衣机进行控制的主要分析
图1全自动洗衣机示意图
输入设备主要有电源按钮、启动按钮、水位选择、水位开关、排水按钮、及脱水按钮。
输出设备主要有电源指示灯、水位选择按钮信号灯、进水电磁阀、洗涤电动机正转接触器、排水电磁阀、脱水离合器及蜂鸣器等。
2.2设计思想
首先构思系统的总体结构,根据设计要求确定好系统大致的硬件组成及其结构,其次根据系统的各个功能把软件分成几个不同的模块,依次实现各个模块的功能,最后把各个模块组合起来完成整个系统的功能。
第三章硬件设计
3.1硬件设计概要
用Intel的8086作为控制芯片,配合其他接口电路以及配套的芯片组成洗衣机的控制电路。
主要用到8255串行通信芯片,74LS1373—8译码器发出片选信号,AD0809以及DA0832进行模数、数模转换芯片。
用一个电位计和AD0809模拟水量信号,DA0832和LM324运放来控制直流电机的正反转和停止。
此外还用到了4*4扫描键盘作为输入设备,两个共阴数码管作为显示设备。
详情见各个芯片的介绍。
3.2所用到的芯片及其个自功能介绍
3.2.1芯片列表
8086,8284,74LS138,8255,AD0809,DAC0832,74LS02,LM324
3.2.28086的功能简介
8086是Intel系列的16位微处理器,采用HMOS工艺,内部包含29000个晶体管。
内部总线16位,外部总线8位。
主要用于兼容当时的外围接口芯片。
8086CPU有两部分组成,指令执行部件EU和总线接口部件BIU。
8086的基本性能指标如下所示:
1.16位微处理器;
2.采用高速运算性能的HMOS工艺制造,芯片上集成了2.9万只晶体管;
3.使用单一的+5V电源,40条引脚双列直插式封装(DIP);
4.时钟频率为5MHz~10MHz,基本指令执行时间为0.3ms~0.6ms
5.16根数据线和20根地址线,可寻址的地址空间达1MB
6.8086可以和浮点运算器、输入/输出处理器或其他处理器组成多处理器系统,从而极大地提高了系统的数据吞吐能力和数据处理能力。
图28086CPU内部结构框图
在这个系统中8086作为整个系统的主控芯片,用来控制协调整个系统的工作。
3.2.38284的功能介绍
为8086CPU提供外部的基准时钟信号,并把时钟信号进行功率放大。
3.2.474LS138的功能介绍
74LS138为3线—8线译码器,共有54/74S138和54/74LS138两种线路结构形式。
其功能表如图所示,引脚分配如图所示:
表一74LS138的功能表
图374LS138的引脚分配图
3.2.48255的功能简介
8255的功能介绍如下:
1.Intel8255A是一个通用的可编程的并行接口芯片,内部有2个8位I/O口(A、B),两个4位I/O口(PC7~4、PC3~0).
2.通过编程可设置3种工作方式,可适用于CPU与I/O设备之间的多种数据传送方式的要求。
3.C口可作为数据口,可作为信号线(CPU与I/O设备之间的应答信号),可作为状态口,可按位置位/复位。
4.价格低廉,使用方便,可以直接与Intel系列的芯片连接使用,在中小系统中有着广泛的应用。
8255的内部结构如图:
图48255的内部结构图
8255的引脚分配
1.引脚(40DIP)
(1)D0~D7:
8位,双向,三态数据线,用来与系统数据总线相连;
(2)端口A、B、C:
PA0~PA7(A组数据信号,用来连接外设);PB0~PB7(B组数据信号,用来连接外设);PC0~PC7(C组数据信号,用来连接外设或者作为控制信号)。
(3)CS、RESET、WR、RD、A1、A0(内部4个端口)。
(4)VCC、GND。
8255A的工作方式:
8255A有三种工作方式,用户可以通过编程来设置。
方式0――简单输入/输出――查询方式;A,B,C三个端口均可。
方式1――选通输入/输出――中断方式;A,B,两个端口均可。
方式2――双向输入/输出――中断方式。
只有A端口才有。
工作方式的选择可通过向控制端口写入控制字来实现。
3.2.5AD0809的功能简介
1.ADC0809是8位逐次逼近型A/D转换器,它由一个八路模拟开关,一个地址译码器,一个A/D转换器和一个三态输出所存器组成,多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换,三态输出用于锁存A/D转换完的数据,当OE端为高电平时,才可以从三态输出锁存器取走转换完成的数据。
2.AD0809的工作原理
IN0-IN7:
8条模拟量输入通道
ADC0809对输入模拟量要求:
信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入端前加采样保持电路。
地址输入和控制线:
4条
ALE为地址锁存允许输入线,高电平有效,当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道模拟量通过转换器进行转换。
A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。
通道选择表如下表所示。
C
B
A
选择的通道
0
0
0
IN0
0
0
1
IN1
0
1
0
IN2
0
1
1
IN3
1
0
0
IN4
1
0
1
IN5
1
1
0
IN6
1
1
1
IN7
数字量输出及控制线:
11条
ST为转换启动信号。
当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在跳转期间,ST应保持低电平,EOC为转换结束信号,当EOC为高电平时,表明转换结束;否则表明正在进行A/D转换,OE为输出允许信号,用于控制三条输出锁存器想单片机输出转换得到的数据,OE=1,输出转换得到的数据‘OE=0输出数据线呈高阻状态。
D7-D0为数字量输出线CLK为时钟输入信号线,因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常频率为500KHZ。
VREF(+),VREF(-)为参考电压输入。
3.2.6DAC0832芯片的功能简介
DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。
所以这个芯片的应用很广泛,DAC0832 D/A转换结果采用电流形式输出。
若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。
运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。
DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。
DAC0832的引脚如图
图5DAC0832的引脚图
3.2.774LS02芯片简介
四2输入或非门(OC)其引脚如图所示,功能表如图所示
图674LS02的引脚图
图774LS02的功能表
3.2.8LM324芯片功能简介
LM324系列器件为价格便宜的带有真差动输入的四运算放大器。
与单电源应用场合的标准运算放大器相比,它们有一些显著优点。
该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。
共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。
它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。
两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。
LM324的引脚排列见图。
图8LM324引脚图
3.3硬件电路设计系统原理图及其说明
图9系统总体框架
在具体实践中,因硬件资源的限制有所调整,比如有些电路采用其他电路来模拟,进水部分有电位器来模拟,电机驱动用直流系统来模拟。
3.4系统的电路图
图10系统电路图
第四章软件设计
4.1程序流程
软件可分为10个模块:
主程序、键盘扫描子程序、参数设置子程序、延时子程序、显示子程序、进水子程序、排水子程序、甩干子程序、停止子程序、开机延时保护子程序。
其中进水、洗衣、排水为一次洗衣的三个不同状态、由相应的子程序来控制电机的运动和进水排水,流程图如图11所示。
4.2源程序及其说明
CODESEGMENT
ASSUMECS:
CODE
WASHTIMEDW20H
WASHTYPEDW08H
ONTIMEDW00H
TIMEDW0
ADPORTEQU0010H
ORG1000H
IOCONPTEQU0FF2BH
IOAPTEQU0FF28H
IOBPTEQU0FF29H
IOCPTEQU0FF2AH
ORG10A0H
MAINPROC
MOVAL,01H
CALLCONVERS
CALLDISP
CALLKEY
MOVDL,10
MULDL
MOVWASHTIME,AX
CALLKEY
CBW
ADDWASHTIME,AX
K1:
MOVAL,02
CALLCONVERS
CALLDISP
CMPAL,2
JAK1
CMPAL,1
JBK1
CMPAL,1
JERUOX1
CMPAL,2
JEQIANGXI
RUOX:
MOVWASHTYPE,08H
JMPNEXT
QIANGXI:
MOVWASHTYPE,0FH
NEXT:
MOVAL,03
CALLCONVERS
CALLDISP
CALLKEY
MOVDL,10
MULDL
MOVONTIME,AX
CALLKEY
CBW
ADDONTIME,AX
MOVCX,ONTIME
LOOPK2
K2:
CALLDELAY
ADDAX,WASHTIME
ADDAX,WASHTIME
ADDAX,WASHTIME
MOVTIME,AX
CALLSTEP1;洗衣
MOVCX,WASHTIME
LOOPWASH
CALLSTEP3
CALLSHUAIGAN
CALLSTEP1;漂洗
MOVCX,WASHTIME
LOOPWASH
CALLSETP3
CALLSHUAIGAN
CALLSTEP1;漂洗
MOVCX,WASHTIME
LOOPWAHS
CALLSTEP3
CALLSHUANGAN
CALLSTOP
JMPMAIN
MAINENDP
;////////////////////////////////////////////
WASHPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVDX,DAPORT
DACON1:
MOVAL,0FFH
OUTDX,AL
MOVCX,WASHTYPE
LOOPW1
W1:
CALLDELAY
DACON2:
MOVAL,80H
OUTDX,AL
MOVCX,8H
LOOPW2
W2:
CALLDELAY
DACON23:
MOVAL,00H
OUTDX,AL
MOVCX,WASHTYPE
LOOPW3
W3:
CALLDELAY
MOVAL,80H
OUTDX,AL
MOVCX,8H
LOOPW4
W4:
CALLDELAY
DECTIME
MOVAX,TIME
CALLCONVERS
CALLDISP
POPDX
POPCX
POPBX
POPAX
RET
WASHENDP
;//////////////////////////////////////
SETP1PROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
ADCONTROL:
CALLFORMAT
ADCON:
MOVAX,00
MOVDX,ADPORT
MOVDX,ADPORT
INAL,DX
PUSHAX
CALLCONVERS
CALLDISP
POPAX
CMPAL,0EEH
JAELA
CALLJINSHUI
LA:
MOVDX,IOCONPT;水满,关水
MOVAL,89H
OUTDX,AL
MOVDX,IOCPT
INAL,DX
ANDAL,0FEH
PUSHAX
MOVDX,ICONPT
MOVAL,80H
OUTDX,AL
MOVDX,IOCPT
POPAX
OUTDX,AL
POPDX
POPCX
POPBX
POPAX
RET
STEP1ENDP
;//////////////////////////////////////
JINSHUIPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVDX,IOCONPT
MOVAL,89H
OUTDX,AL
MOVDX,IOCPT
INAL,DX
ORAL,01H
PUSHAX
MOVDXIOCPT
MOVAL,80H
OUTDX,AL
MOVDX,IOCPT
POPAX
OUTDX,AL
POPDX
POPCX
POPBX
POPAX
JMPADCON
JINSHUIENDP
;//////////////////////////////////////
CONVERS:
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,AL
ANDAL,0FH
MOVBX,077AH
MOVDS:
[BX],AL
POPDX
POPCX
POPBX
POPAX
RET
DISP:
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVDX,077FH
MOVAH,20H
DISP0:
MOVCX,00FFH
MOVBX,DX
MOVBL,DS:
[BX]
MOVBH,0H
PUSHDX
MOVDX,0FF22H
MOVAL,CS:
[BX+1060H]
OUTDX,AL
MOVDX,0FF21H
MOVAL,AH
OUTDX,AL
DISP1:
LOOPDISP1
POPDX
DECDX
SHRAH,01H
JNZDISP0
MOVDX,0FF22H
MOVAL,OFFH
OUTDX,AL
POPDX
POPCX
POPBX
POPAX
RET
DATA1:
DB0C0H,0F9H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0AH
DB86H,0FFH,0CH,89H,0DEH,0C7H,8CH,0F3H,0BFH
FORMAT:
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVBX,0
MOVWORDPTRDS:
[BX+077AH],0000H
ADDBX,2
MOVWORDPTRDS:
[BX+077AH],0009H
ADDBX,2
MOVWORDPTRDS:
[BX+077AH],0008H
POPDX
POPCX
POPBX
POPAX
RET
;///////////////////////////////////////////////
STEP3PROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
ADCON1TORL:
CALLFORMAT
ADCON1:
MOVAX,00
MOVDX,ADPORT
OUTDX,AL
MOVCX,0500H
DELAYSS:
LOOPDELAYSS
MOVDX,ADPORT
INAL,DX
PUSHAX
CALLCONVERS
CALLDISP
POPAX
CMPAL,08H
JBELAA
CALLPAISHUI
LAA:
MOVDX,IOCONPT;停止排水
MOVAL,89H
OUTDX,IOCPT
INAL,DX
ANDAL,0FDH
PUSHAX
MOVDX,IOCONPT
MOVAX,80H
OUTDX,AL
MOVDX,IOPT
POPAX
OUTDX,AL
POPDX
POPCX
POPBX
POPAX
SETP3ENDP
;////////////////////////////////
PAISHUIPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVDX,IOCONPT
MOVAL,89H
OUTDX,AL
MOVDX,IOCPT
INAL,DX
ORAL,02H
PUSHAX
MOVDX,IOCONPT
MOVAL,80H
OUTDX,AL
MOVDX,IOCPT
POPAX
OUTDX,AL
POPDX
POPCX
POPBX
POPAX
JMPADCON1
PAISHUIENDP
;//////////////////////////
SHUAIGANPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVDX,DAPORT
MOVAL,0FFH
OUTDX,AL
MOVCX,08H
LOOPSHUAI
SHUAI:
CALLDELAY
MOVDX,AL
POPDX
POPCX
POPBX
POPAX
RET
SHUAIGANENDP
;///////////////////
DELAY:
POPDX
POPCX
POPBX
POPAX
MOVCX,0FFFFFH
DELAY1:
LOOPDELAY1
PUSHAX
PUSHBX
PUSHCX
PUSHDX
RET
;//////////////////////////////////
STOPPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVCX,0FFFFFH
LOOPDE
DE:
CALLDELAY
POPDX
POPCX
POPBX
POPAX
RET
STOPENDP
;////////////////////////////////
KEY:
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAL,0FFH
MOVDX,0FF22H
OUTDX,AL
MOVBL,00H
MOVAH,0FEH
MOVCX,08H
KEY1:
MOVAL,AH
MOVDX,0FF21H
OUTDX,AL
SHLAL,01H
MOVAH,AL
NOP
NOP
NOP
NOP
NOP
MOVDX,0FF23H
INAL,DX
NOTAL
NOP
NOP
NOP
ANDAL,0FH
JNZKEY2
INCBL
LOOPKEY1
JMPKEY
KEY2:
TESTAL,01H
JEKEY3
MOVAL,00H
JMPKEY6
KEY3:
TESTAL,02H
JEKEY4
MOVAL,08H
JMPKEY6
KEY4:
KEY2:
TESTAL,04H
JEKEY5
MOVAL,10H
JMPKEY6
KEY5:
TESTAL,08H
JEKEY
MOVAL,18H
KEY6:
ADDAL,BL
CMPAL,10H
JNCFKEY
MOVBL,AL
MOVBH,0H
MOVAL,NYTEPTRDS:
[BX+DATA2]
POPDX
POPCX
POPBX
POPAX
FKEY:
RET
DATA2:
DB07H,04H,08H,05H,09H,06H,0AH,0BH
DB01H.00H,02H,0FH,03H,0EH,0CH,0DH
CODEENDS
ENDMAIN
第五章系统调试与使用
在软件编译连接后就开始对整个系统进行调试,包括软件和硬件部分,在我们调试的过程中,遇到的最大困难是软件部分的调试,因为我们在写程序的过程中,受到一些高级语言编程思想的影响,比如从上至下。
逐步细分的思想,在我们的程序中,系统被分成了好几个模块,每个模块都是有各自不同的子程序来完成,所以在程序部分,我们每个都进行了现场保护,但是我们在调试过程中发现,这些程序并不是想我们写高级语言那样,可以随意进行调用,比如我们在写程序中遇到的最大问题就是关于LOOP指令与CALL指令的混合使用,一般情况下,LOOP指令的调用格式如下:
MOVCX,10;将循环次数存入CX寄存器
LOP:
*;标号
LOOPLOP
而在我们自己的程序中,我们是想通过这条指令来控制DELAY的循环次数