洗衣机功能设计课程设计报告_第1页
洗衣机功能设计课程设计报告_第2页
洗衣机功能设计课程设计报告_第3页
洗衣机功能设计课程设计报告_第4页
洗衣机功能设计课程设计报告_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机硬件技术基础课程设计报告 洗衣机功能设计指导教师: 硬件课程设计组老师学 生: 黄韬 张腾飞 魏兵 杨承炜廖贵川 学 号: 20104954 20105059 20104903 20104965 20104984专 业: 自 动 化班 级: 2010 级 4 班设计日期: 2013.9.22013.9.13重庆大学自动化学院2013年9月目录一、总体方案设计11、引言:12、硬件设计:23、所用硬件结构及原理3(1)步进电机3(2)8254定时/计数器4(3)、键盘44、主流图设计65、初始化及流程图76、按键部分与状态显示77、声音提示108、洗衣(洗涤、漂洗、甩干)119、步进电机模

2、拟1310、运行结束14二、操作说明14三、源程序15五、小组分工及设计心得351、分工352、心得体会35附录:计实物图4043洗衣机功能设计一、总体方案设计1、引言:洗衣机广泛运用于家庭生活中,本实验研究洗衣机的基本原理,对洗衣机的大致过程用步进电机,led小灯,led数码管进行了基本功能模拟,本实验采用模块化的程序设计思想,模块化的设计具有许多优点:其一便于分块细化设计,其二让整个主程序思路清晰,结构明了;其三各个模块独立进行调试,当程序出现错误时,以便于纠错。本方案大致共分为六个部分:初始化,按键,声音提示,状态显示,洗衣(洗涤、漂洗、甩干),步进电机模拟,结束。本实验报告将对实验进行

3、具体分析。关键词:汇编语言,模块,水位档次,正反转,清洁模式,声音提示,数码管显示,指示灯,步进电机模拟。2、硬件设计:8254接线部分: gate0-pa7gate1-+5v out0-pc4 clk0-out1 clk1-47khz cs-cs18255接线部分:第五片8255的cs-cs28255-8254小灯:pa0-d1pa1-d2pa5-d6pa6-d7pa6-d88255-步进电机:pb0pb3-hahd8255-键盘:pc0pc3-p0p3键盘:q0-gnd蜂鸣器:pb43、所用硬件结构及原理(1)步进电机 步进电机驱动是通过对每相线圈中的电流的顺序使点击步进式旋转,所以调节脉

4、冲信号的频率就可以改变步进电机的转速,改变相脉冲的先后顺序,可以改变电机的旋转方向。步进电机的转速应由慢到快逐步加速,刚启动时就应该避免就加太快的速度。(2)8254定时/计数器intel8254是可编程定时/计数器。每个8254芯片有3个独立的16位计数器通道,每个计数器有6中工作方式,都可以按二进制货十进制(bcd码)计数。 (3)、键盘 在扩展的实验板上有4行4列非编码键盘,按键的行、列信号 通过插孔引出,航信号通过插孔p0p3引出,列信号通过插孔q0q3引出,4*4非编码键盘电路图如下图所示。 键盘少藐视需要出列少苗,判断该行是否有键按下。现将对应列信号设置为0,然后读入航信号,如果有

5、键按下,则该行读入0,否则为1。4、主流图设计判断启停键是否按下开始调用状态初始程序8255,8254初始化判断是否有开关键按下调用状态初始化程序灭小灯,灭数码管否开led是点亮开光标志灯调用查询子程序调用按键处理子程序开始调用状态初始程序8255,8254初始化判断是否有开关键按下调用状态初始化程序灭小灯,灭数码管否开led是点亮开光标志灯调用查询子程序调用按键处理子程序否点亮起停标志灯根据设置选择洗涤类型调用相应洗涤程序蜂鸣器报警是否有启停键按下否是停止蜂鸣器报警图1 主程序流程图5、初始化及流程图本程序的初始化较为复杂,初始变量较多,在程序开始进行了备注,初始部分主要有三个部分组成,82

6、54初始化,8255初始化和初始数据给定。图2给出了8255初始化的设计流程图:8255初始化8255四个控制口分别送入89808080h从第一片8255a口开始依次显示0-3-0从第一片8255b口开始依次显示0-0-0实际显示初始值003000,最后一个数码管关闭结束图2 8255初始化流程图6、按键部分与状态显示按键硬件部分:设计中按键部分主要对来自按键的设置信号进行输入,控制显示的状态,按键第一列为本实验所用的四个按键,第一个为电源键,在电源关闭的情况下按下该键,电源开,第一个小灯亮,再按一次小灯灭;第二个为启停键,负责电机的启停,启停键每按下依次状态切换一次,第二个小灯的亮灭也跟着相

7、应的切换;第三个为水位设置键,负责设置水位的低中高三个状态,水位键每按下一次,状态依次改变,三色数码管中的第三块led数码管也相应显示01(低水位),02(中水位),03(高水位);第四个为洗涤方式键,按下可切换方式,分为标准洗涤、快速洗涤和甩干,按键按下后进行选择,小灯d6、d7、d8进行相应显示。按键软件部分:按键软件主要有三部分组成,按键查询,按键处理,状态设置。按键查询子程序通过查询按键按下状态对按键状态值k进行赋值按键查询子程序有无键按下电源键是否按下否启停键是否按下否水位键是否按下否洗涤键是否按下否否否按键状态key=9key=0是key=1是key=2是key=3是调用延时按键是

8、否弹起否是调用延时结束图3 按键查询子程序实现流程图按下启停键次数k1+1否按键处理子程序按键状态key=9?按键状态key=0?否按键状态key=1?否按键状态key=2?否按键状态key=3?否结束是按下电源键次数k0+1是是按下水位键次数k2+1是按下洗涤键的次数k3+1是按键处理子程序通过key值对各个按键的次数进行统计,程序实现流程图如图4:图4 按键处理子程序按键状态子程序通过对按键次数进行除法处理,让它变成实际的按键状态。比如初始电源按键次数k0=0,后来电源按键按了8次变成了8,这是我们给一个电源键状态值num0=2(两种状态,开关)用8/2,取余数为0,证明电源键等同于关着的

9、,以此类推我们设计了这种处理程序。图5按键状态设置实现的流程图:状态设置子程序电源按键次数k0/电源键状态2启停键次数k1除以启停键状态数2水位设置键次数k2除以水位状态数3洗涤键次数k3除以洗涤状态数3得到按键实际状态结束图5 状态设置子程序7、声音提示8255 pb4接蜂鸣器,洗涤完成后送入低电平,蜂鸣器响。8、洗衣(洗涤、漂洗、甩干)设计中给了两种洗衣方式,一种为标准洗衣,另一种为快速洗衣,标准洗衣有30s,快速洗衣为25s,该部分为程序的重点和难点,洗衣过程分为三个部分,第一步为洗涤,时间长、有正反转、转速中等,第二部分为漂洗,时间短、有正反转、转速慢,第三部分为甩干,只有正转、转速快

10、。三个部分程序具有相似性,其中衔接有步进电机子程序对整个洗衣过程进行模拟。图6 是标准洗衣的实现流程图:标准洗衣子程序初始洗衣剩余时间sysj=30s,洗涤转速500,洗涤结束时间xdsj=18s调用洗衣第一步洗涤程序漂洗转速500,漂洗结束时间pxsj=10s调用第二步漂洗程序甩干转速count=100甩干结束图6 标准洗衣子程序流程图此处重点分析实验中的洗涤程序,洗涤开始后三色数码管显示0130,随着洗涤的进行,30s时间逐渐减少,洗涤开始为正转,然后反转,洗涤过程可以通过启停键控制洗衣的启停,图7是第一步洗涤过程的额实现流程图:洗涤程序数据初始化对送入显示值进行拆分处理,分十位个位分别显

11、示调用ledxs显示子程序显示当前状态正转标志direct=0一秒定时小灯送值,关启停小灯(时间极短,如果没有按下停止键不会出现关小灯情况)调用按键查询处理设置三个子程序,进行启停状态扫描启停键是否按下,为停止状态是否小灯送值显示,开启停小灯显示开启调用电机程序正转判断1s延时是否完成否 剩余时间sysj-1,显示剩余时间是反转标志direct=0ffh1s定时小灯送值,关启停小灯调用按键查询处理设置三个子程序启停键是否按下,为停止状态是否小灯送值显示,开启停小灯调用电机反转程序电机反转判断1s延时是否完成是剩余时间sysj-1,显示剩余时间判断洗涤是否结束结束是否否图7 洗涤流程图9、步进电

12、机模拟 步进电机作为洗衣过程的的镶嵌程序是本设计的难点,设计中通过设计正转表反转表实现电机的转动状态控制,用count变量存储低脉冲宽度,其值越大电机转的速度越慢,实验流程图如图8:步进电机子程序判断电机是否启动电机正反转标志direct给al是al=0?查正转表是查表结果存入buf查反转表否buf给al取al得低四位,从第四片8255送出该表查表位置,级改变拍数延时结束否图8 步进电机模拟子程序流程图10、运行结束蜂鸣器长鸣,剩余时间为0表示运行结束,这是你可以通过启停停止洗衣。二、操作说明1、首先需要按下电源键,按下过后电源指示灯会亮,led亮。2、然后你可以选择水位设置键设置需要水位,三

13、色led第三片会显示01(低水位),02(中水位),03(高水位)。3、你还可以为自己选择适合的清洁模式,标准清洁和快速清洁,led小灯d5亮表示标准清洁,d6表示快速清洁。4、按下启停键,这个时候启停指示灯会亮。你可以在三色led上的第一片上显示的01(洗涤),02(漂洗),03(甩干)判断洗衣正在进行的过程,通过第二片三色led显示的时间来了解剩余时间,方便你了解什么时候可以结束洗衣。通过控制启停来控制整个洗衣过程。5、洗衣完成后,蜂鸣器会响起,你可以选择用启停键退出。三、源程序.486data segment at 0200h use16porta equ 320hportb equ 3

14、24hportc equ 328hportk equ 32ch ;8255端口地址portk4 equ 30ch ;8254控制口地址jsq0 equ 300h ;8254计数器0地址jsq1 equ 304h ;计数器1地址porta1 equ 200h ;portb1 equ 204h ;portc1 equ 208h ;第一片8255地址porta2 equ 201h ;第二片8255a口地址portb2 equ 205h ;第二片8255b口地址portc2 equ 209h ;第二片8255c口地址porta3 equ 202h ;第三片8255a口地址portk1 equ 20ch

15、 ;第一片8255控制口地址portk2 equ 20dh ;第二片8255控制口地址 chusu db ? ;显示处理子程序除数xsdk dw ? ;led显示子程序显示端口xsz db ? ;led显示子程序显示值sysj db ? ;剩余时间gwz db ? ;显示值高位值dwz db ? ;显示值地位置order db ? stop db ? ;电机启停标志bufdb ? count dw ? ;count变量存储低脉冲宽度,其值越大电机转的速度越慢direct db ? ;diret=ffh表示正转,direct=0表示反转pacs db ? ;a口初始化值xdsj db ? ;洗涤

16、结束时间pxsj db ? ;漂洗结束时间set40 equ 00110010b ;8254计数器0控制字,方式1set41 equ 01010100b ;8254计数器1控制字,方式2jscz0 equ 470 ;470定时1s,计数器0计数初值jscz1 equ 100 ;计数器1计数初值set5 equ 10001001b ;8255控制字,方式0yanshi dd ? ;延时子程序设定值 key db ? ;按键状态k0 db ? ;电源按键次数k1 db ? ;启停键按键次数k2 db ? ;水位设置键按键次数k3 db ? ;洗涤键按键次数num0 db ? ;电源键2种状态num

17、1 db ? ;启停键2种状态 num2 db ? ;水位设置键3种状态num3 db ? ;洗涤键1种状态dy db ? ;电源键当前状态qt db ? ;启停键当前状态sw db ? ;水位设置键当前状态xidi db ? ;清洁程序设置键当前状态data endscode segment use16 assume cs:code, ds:data org 4000hbeg:jmp start;-ad-d-dc-c-cb-b-ba-azztdb 0eh,0ch,0dh,09h,0bh,03h,07h,06h ;正转表;a-ab-b-bc-c-cd-d-da-afztdb 06h,07h,0

18、3h,0bh,09h,0dh,0ch,0eh ;反转表tab db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;字型码表start: mov ax,data mov ds,ax mov dx,portb or al,00010000b out dx,al call ztcs ;状态初始子程序s00: call c8255 ;8255初始化子程序 call c8254 ;8254初始化子程序s0: call jpsm ;键盘扫描子程序 call jpcl ;键盘处理子程序 call ztset;状态设置子程序 and dy,01h cmp dy,0

19、 ;电源状态判断 jne s1 ;为开跳转到s1 mov dx,porta mov al,pacs or al,00000001b out dx,al mov dx,portc1 mov eax,0f0f0f0fh ;关led out dx,eax call ztcs jmp s0 ;跳回继续等待电源启动s1: mov dx,porta mov al,pacs and al,11111110b ;电源指示灯亮 mov pacs,al out dx,al mov dx,portc1 mov eax,0f000a05h;开led out dx,eax s2: cmp qt,0 jne s5 ;开启

20、,跳转 cmp sw,0 ;查看水位状态是否为低 jne s3 mov xsdk,porta3 mov xsz,1 call xscl call ledxs ;第三片8255显示01,表示低水位 cmp xidi,0 ;是否为标志洗涤,否跳转 jne s41 mov al,pacs and al,11011111b or al,01000100b mov pacs,al mov dx,porta out dx,al ;标准洗涤小灯亮 mov xsdk,porta2 mov xsz,30 call xscl call ledxs jmp s0 ;跳回继续扫描键盘s3: cmp sw,1 ;查看水

21、位状态是否为中 jne s4 mov xsdk,porta3 mov xsz,2 call xscl call ledxs ;第三片8255显示02,表示中水位 cmp xidi,0 ;是否为标志洗涤,否跳转 jne s41 mov al,pacs and al,11011111b or al,01000000b mov pacs,al mov dx,porta out dx,al ;标准洗涤小灯亮 mov xsdk,porta2 mov xsz,30 call xscl call ledxs jmp s0 s4: mov xsdk,porta3 mov xsz,3 call xscl cal

22、l ledxs ;第三片8255显示03,表示高水位 cmp xidi,0 ;是否为标志洗涤,否跳转 jne s41 mov al,pacs and al,11011111b or al,01000000b mov pacs,al mov dx,porta out dx,al ;标准洗涤小灯亮 mov xsdk,porta2 mov xsz,30 call xscl call ledxs jmp s0s41: cmp xidi,1 jne s42 mov al,pacs and al,10111111b or al,00100100b mov pacs,al mov dx,porta out

23、dx,al ;快速清洁小灯亮 mov xsdk,porta2 mov xsz,22 call xscl call ledxs jmp s0 s42: mov al,pacs and al,11111011b or al,01100000b mov pacs,al mov dx,porta out dx,al mov xsdk,porta2 mov xsz,10 call xscl call ledxs jmp s0 s5: mov al,pacs and al,11111101b ;启动指示灯开启 mov pacs,al mov dx,porta out dx,al cmp xidi,0 jn

24、e s51 ;是否设置为标准洗涤程序,否跳转 call bzxd ;标准洗涤子程序 jmp s53 s51: cmp xidi,1 jne s52 mov xsdk,porta2 mov xsz,22 call xscl call ledxs ;剩余秒数显示25 call ksxd ;快速洗涤子程序 jmp s53s52:mov xsdk,porta2 mov xsz,10 call xscl call ledxs call sgxd jmp s53 s53: mov dx,portb mov al,0 out dx,al ;蜂鸣器响s8: call jpsm ;键盘扫描子程序 call jp

25、cl call ztset cmp qt,0 ;是否按下启停键 jne s8 ;等待启停键按下 mov dx,portb or al,00010000b out dx,al ;关蜂鸣器 mov al,pacs or al,00000010b mov pacs,al mov dx,porta out dx,al ;关启停小灯 jmp s00 mexit: jmp mexit ;主程序结束 ;8255初始化程序c8255 proc near pusha mov dx,portk mov al,89h out dx,al mov dx,portk1 mov eax,89808080h ;写控制字 o

26、ut dx,eax mov dx,porta1 mov eax,0fec0b0c0h ;a口初始化 out dx,eax mov dx,portb1 mov eax,0ffc0c0c0h ;b口初始化 out dx,eax mov dx,portc1 mov eax,0f000a05h ;c口初始化 out dx,eax mov dx,portb or al,00010000b out dx,al popa retc8255 endp ;8254初始化子程序c8254 proc near pusha mov dx,portk4 mov al,set40 out dx,al ;写计数器0控制字

27、mov al,set41 out dx,al ;写计数器1控制字 mov dx,jsq0 mov ax,jscz0 out dx,al mov al,ah out dx,al ;计数器0计数初值 mov dx,jsq1 mov al,jscz1 out dx,al ;计数器1计数初值 popa ret c8254 endp ;按键查询子程序 jpsm proc near kscan: mov dx,portc in al,dx and al,0fh cmp al,0fh je a5 ;无键按下 cmp al,0eh ;电源键按下 je a1 cmp al,0dh ;启停键按下 je a2 cm

28、p al,0bh ;水位设置键按下 je a3 cmp al,07h ;洗涤键按下je a4a5:mov key,9 jmp exit ;四个键都未按下,重新扫描a1: mov key,0 mov yanshi,2000 call delay jmp keyup a2: mov key,1 mov yanshi,2000 call delay jmp keyup a3: mov key,2 mov yanshi,2000 call delay jmp keyup a4:mov key,3 mov yanshi,2000 call delay keyup:mov al,0mov dx,portc

29、in al,dxand al,0fhcmp al,0fhjnz keyupmov yanshi,2000 call delayexit: ret jpsm endp ;按键处理子程序 jpcl proc near cmp key,9 je aj4 cmp key,0 je aj0 cmp key,1 je aj1 cmp key,2 je aj2 cmp key,3 je aj3 jmp aj4 aj0: inc k0 ;按下电源键次数 jmp aj4 aj1: inc k1 ;按下启停键次数 jmp aj4 aj2: inc k2 ;按下水位设置键次数 jmp aj4 aj3: inc k3

30、 ;按下洗涤键次数 jmp aj4 aj4: ret jpcl endp ;状态设置子程序 ztset proc near mov ah,0 mov al,k0 div num0 ;除以电源键状态数 mov dy,ah ;存入当前状态值 mov ah,0 mov al,k1 ;存入当前状态值 div num1 ;除以启停键状态数 mov qt,ah mov ah,0 mov al,k2 ;存入当前状态值 div num2 ;除以水位键状态数 mov sw,ah mov ah,0 mov al,k3 ;存入当前状态值 div num3 ;除以洗涤键状态数 mov xidi,ah ret ztse

31、t endp ;状态初始子程序ztcs proc near mov pacs,11111110b mov yanshi,0 mov key,9 mov k0,2 mov k1,2 mov k2,3 mov k3,3 mov num0,2 mov num1,2 mov num2,3 mov num3,3 mov dy,0 mov qt,0 mov sw,0 mov xidi,0 mov buf,0ffh mov sysj,30 mov chusu,10 mov order,0 mov stop,0 mov direct,0 mov count,500 ret ztcs endp;延时子程序del

32、ay proc near push ecx mov ecx,yanshi agn: nop loop agn pop ecx retdelay endp;标准洗涤子程序bzxd proc near pusha mov sysj,30 ;剩余时间为30 mov count,500 ;洗涤转速 mov xdsj,18 ;洗涤结束时间 call xdcx ;洗涤程序 mov count,500 ;漂洗转速 mov pxsj,10 ;漂洗结束时间 call pxcx mov count,100 ;甩干转速 call sgcx popa ret bzxd endp;sgxd proc near push

33、a mov sysj,10 mov count,100 call sgcx popa ret sgxd endp xdcx proc near pusha mov xsdk,porta1 mov xsz,1 ;第一片8255显示01,表示正在洗涤,初始化显示0030 call xscl ;显示处理,拆分10位,个位 call ledxs mov stop,0 z1: mov direct,0 ;正转 call time1s ;1s定时开启 z2: mov dx,porta mov al,pacs or al,00000010b mov pacs,al out dx,al call jpsm call jpcl call ztset cmp qt,0 je z2 mov dx,porta mov al,pacs and al,11111101b mov pacs,al out dx,al call djcx ;电机程序 mov dx,portc in al,dx and al,00010000b cmp al,00010000b jne z2 ;判断8254out0是否为高,不是则等待 dec sysj mov al,sysj mov xsz,al call xscl mov xsdk,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论