毕业设计(论文)-基于单片机AT89s52的家用洗衣机的程序设计.doc_第1页
毕业设计(论文)-基于单片机AT89s52的家用洗衣机的程序设计.doc_第2页
毕业设计(论文)-基于单片机AT89s52的家用洗衣机的程序设计.doc_第3页
毕业设计(论文)-基于单片机AT89s52的家用洗衣机的程序设计.doc_第4页
毕业设计(论文)-基于单片机AT89s52的家用洗衣机的程序设计.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

家用洗衣机程序设计摘要单片机已经渗透到我们生活的各个领域,全自动洗衣机的控制就是其中的一个典型应用。本系统利用单片机实现了洗衣机的全自动控制,即洗涤、漂洗、脱水各工序之间的转换无需人工介入而自动完成。并且了单片机控制的原理方法、特点及控制洗衣机的特色。本文在介绍洗衣机结构的同时,对全自动洗衣机的控制系统进行分析,在此基础上提出了基于单片机的全自动洗衣机控制方案,并对方案进行了深入的研究,根据洗衣机的工作原理对程序及其流程进行了设计,实现了洗衣机由进水、洗涤、排水、脱水到自动停机的循环过程的自动控制,并且具有智能化程度高、安全可靠等特点。关键词:洗衣机;自动控制;单片机。目录1 绪论12总体方案设计分析22.1 全自动洗衣机控制方法选择22.2 方案构思23硬件电路设计33.1 单片机简介33.2at89s5253.3步进电机模块简介73.4 8279简介104 软件设计124.1 程序流程124.2 部分程序及功能简介135 综合调试145.1实验导线连接与调试145.2实验结果分析15实验体会15附录 硬件电路图17附录 实验程序18参考文献25ii1 绪论洗衣机是一种在家庭中不可缺少的家用电器,发展非常快。全自动式洗衣机由于具有对衣物的磨损小、洗涤量大、节水等特点,越来越得到广大家庭的青睐。其主要依靠装在洗衣桶底部的波轮正、反旋转,带动衣物上、下、左、右不停地翻转,使衣物之间、衣物与桶壁之间,在水中进行柔和地摩擦,在洗涤剂的作用下实现去污清洗。全自动即进水、洗涤、清洗、甩干等一系列过程自动完成,通过各种开关组成控制电路,来控制电动机、进水阀、排水电磁铁的电压输出,使洗衣机实现程序运转。随着社会的进步和生活水平的提高,人们对全自动洗衣机的功能多样化、操作简单化也提出了更高的要求。为适应这种变化,全自动洗衣机的控制器已由机械式、混合式逐步过渡到全电子控制。随着微电子技术的发展,大多数的科学技术广泛运用与人们的生活当中,使生活水平也随着科技的发展而大大提高。单片机在电器中的应用越来越广泛。单片机需要根据一定的控制规律控制电器中的一些功率部件工作。这些部件是实现电器功能的重要部件。以至于向硬件,软件合为一体的方向发展,以硬件电路设计为主的传统设计方向也向器件内部资源加以利用的方法转化,单片机是实现电路功能的重要部分,例如:洗衣机中的洗涤电机和脱水电机的控制从一开始是通过两个电机分别控制的,而现在可以共用同一个电机进行洗涤和脱水;更是由原来的手动控制提高到现在的全自动控制;而且,其他的功能也相应增加,让洗衣机的功能越来越智能化。洗衣机的各种洗衣程序运行在单片机(微电脑芯片)的控制下,使得洗涤、漂洗、脱水等各种功能的操作都能不需要手动,而是模拟人类智能行为完成,一般的微电脑控制程序全自动洗衣机由使用者根据洗涤衣物的质量、厚薄、脏污程度等,选择洗涤程度(包括洗涤水量、洗涤时间、漂洗方式、脱水时间等),洗衣机按照选定的洗涤程度自动进行工作。它的输入指令来自两个方面:一方面是使用者在控制面板上的选择。另一方面,洗衣机内具有各种传感器,在洗涤过程中可对洗涤量、洗净程度、排水情况、脱水情况等进行检测,调整洗涤过程,使洗衣机工作于最佳状态。2总体方案设计分析2.1 全自动洗衣机控制方法选择 在全自动洗衣机中,现在比较通用的控制手段是利用单片机或者plc两种方法,本课设选用的是单片机。之所以选用单片机主要考虑了以下原因。首先,单片机具有较强的抗干扰能力,当受到外部强干扰,程序出错时,可以自动使系统复位重新执行程序。并且采用无噪声、无电磁干扰的双向晶闸管作为控制元件,控制电磁阀和电机。其次,单片机具有欠压和过压保护,欠压时,控制器不工作;超压时,保护电路起作用。再次,单片机还具有瞬间掉电保护功能,电源短时间停电后,电压恢复时,能够维持原来运行程序的工作状态并继续完成洗衣程序。最后,各种操作和洗衣机的运行状态均可以用led显示。此外,在硬件规模方面,单片机相当于将一个基本规模的单板机所具有的资源复合在一块芯片上,因此具有相当的规模;在功能方面,单片机已经超过了plc的功能;在指令系统方面,如果将单片机的指令系统plc的指令系统相比较,除单片机的数据传送能力较弱一点之外,单片机的指令系统已大大超过plc;此外,无论在性价比方面,还是在体积、重量方面相比较,单片机都比plc优越得多。综合上述原因本课设采用单片机来完成。2.2 方案构思全自动洗衣机由洗衣系统和控制电路组成。其控制电路分为机械和电脑型,电脑型控制电路是以单片机作为控制电路的核心。自动洗衣机的洗衣程序,键盘上有两个按钮01键和02键。01键设为开始按钮;02键设为停止按钮,其功能是按下停止按钮后洗完一个周期后停止,中间不能停。洗衣机的标准洗衣程序是:开始进水洗涤排水进水清洗排水脱水。1.洗涤过程通电后,洗衣机进入暂停状态,以便放好衣物并且等待按下开始按钮。当按下开始按钮01时,进入洗涤过程。首先进水阀打开,开始进水,向洗衣机供水;当到达预定水位时,进水阀关闭,停止进水;步进电动机接通电源,开始旋转,形成洗衣水流。步进电动机可以实现正反转功能,可以形成往返水流,有利于洗涤衣物。 2. 脱水过程洗涤或漂洗过程结束后,电机停止转动,排水阀通电,开始排水。当水位低到一定值时,排水停止,再经过一段时间后,电机开始正转,带动内桶高速旋转,甩干衣物。 3.漂洗过程与洗涤过程操作相同,只是多一个循环周期,清洗两次。全部洗衣工作完成后,电机停止,停止指示灯亮。3硬件电路设计本课设采用的单片机的型号为at89s52,需要用到的模块有:步进电机模块、led显示模块、8279 键盘显示模块。以下是对其一一介绍。3.1 单片机简介单片机是指一个集成在一块芯片上的完整计算机系统。尽管它的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:cpu、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机内部也用和电脑功能类似的模块,比如cpu,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可.用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、vcd等等的家电里面都可以看到它的身影。 单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是一些特殊的功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。目前占统治地位的软件还是最低级汇编语言,单片机没有家用计算机那样的cpu,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十k的大小!对于家用pc的硬盘来讲没什么,可是对于单片机来讲是不能接受的。 单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用pc上来运行,家用pc的也是承受不了的。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称pc机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。常用单片机芯片有以下几种:stc单片机、pic单片机、atmel单片机(51单片机)、emc单片机、 phlipis 51plc系列单片机(51单片机)、holtek单片机、ti公司单片机(51单片机)和松翰单片机(sonix)。本课设则采用atmel单片机(51单片机),选用型号为at89s52。atmel单片机(51单片机)是atmel公司的8位单片机,有at89、at90两个系列,at89系列是8位flash单片机,与8051系列单片机相兼容,静态时钟模式,at90系列单片机是增强risc结构、全静态工作方式、内载在线可编程flash的单片机,也叫avr单片机。3.2at89s52与mcs-51单片机产品兼容 、8k字节在系统可编程flash存储器、 1000次擦写周期、 全静态操作:0hz33hz 、 三级加密程序存储器 、 32个可编程i/o口线 、三个16位定时器/计数器、八个中断源 、全双工uart串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针 、掉电标识符 。at89s52 是一种低功耗、高性能cmos8位微控制器,具有 8k 在系统可编程flash 存储器。使用atmel公司高密度非易失性存储器技术制造,与工业80c51产品指令和引脚完全兼容。片上flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位cpu 和在系统可编程flash,使得at89s52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。at89s52具有以下标准功能: 8k字节flash,256字节ram, 32 位i/o 口线,看门狗定时器,2个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,at89s52 可降至0hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu 停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 at89s52主要包括p0口、p1口、p2口和p3口。各口完成不同工作。图3.1 at89s52引脚图p0 口:p0口是一个8位漏极开路的双向i/o口。作为输出口,每位能驱动8个ttl逻辑电平。对p0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,p0口也被作为低8位地址/数据复用。在这种模式下,p0具有内部上拉电阻。在flash编程时,p0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 p1 口:p1 口是一个具有内部上拉电阻的8 位双向i/o 口,p1 输出缓冲器能驱动4个ttl 逻辑电平。对p1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。此外,p1.0和p1.2分别作定时器/计数器2的外部计数输入(p1.0/t2)和时器/计数器2的触发输入(p1.1/t2ex),具体如下表所示。在flash编程和校验时,p1口接收低8位地址字节。 引脚号第二功能 p1.0 t2(定时器/计数器t2的外部计数输入),时钟输出 p1.1 t2ex(定时器/计数器t2的捕捉/重载触发信号和方向控制) p1.5 mosi(在系统编程用) p1.6 miso(在系统编程用) p1.7 sck(在系统编程用) p2 口:p2 口是一个具有内部上拉电阻的8 位双向i/o 口,p2 输出缓冲器能驱动4个ttl 逻辑电平。对p2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行movx dptr)时,p2 口送出高八位地址。在这种应用中,p2 口使用很强的内部上拉发送1。在使用 8位地址(如movx ri)访问外部数据存储器时,p2口输出p2锁存器的内容。在flash编程和校验时,p2口也接收高8位地址字节和一些控制信号。 p3 口:p3 口是一个具有内部上拉电阻的8 位双向i/o 口,p2 输出缓冲器能驱动4个ttl 逻辑电平。对p3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。p3口亦作为at89s52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,p3口也接收一些控制信号。 端口引脚 第二功能p3.0 rxd(串行输入口)p3.1 txd(串行输出口)p3.2 into(外中断0)p3.3 int1(外中断1)p3.4 to(定时/计数器0)p3.5 t1(定时/计数器1)p3.6 wr(外部数据存储器写选通)p3.7 rd(外部数据存储器读选通)此外,p3口还接收一些用于flash闪存编程和程序校验的控制信号。3.3步进电机模块简介1步进电动机有三线式、五线式、六线式三种,但其控制方式均相同,必须以脉冲电流来驱动。若每旋转一圈以20个励磁信号来计算,则每个励磁信号前进18 度,其旋转角度与脉冲数成正比,正、反转可由脉冲顺序来控制。2步进电动机的励磁方式可分为全部励磁及半步励磁,其中全部励磁又有1 相励磁及2相励磁之分,而半步励磁又称1-2 相励磁。图为步进电动机的控制等效电路,适应控制a、b、/a、/b 的励磁信号,即可控制步进电动机的转动。每输出一个脉冲信号,步进电动机只走一步。因此,依序不断送出脉冲信号,即可步进电动机连续转动。(1)1 相励磁法:在每一瞬间只有一个线圈导通。消耗电力小,精确度良好,但转矩小,振动较大,每送一个励磁信号可走18 度。若欲以1 相励磁法控制步进电动机正转,其励磁顺序如表3.1所示。若励磁信号反向传送,则步进电动机反转。励磁顺序: abcda表3.1 1相励磁法脉冲顺序表(2)2 相励磁法:在每一瞬间会有二个线圈同时导通。因其转矩大,振动小,故为目前使用最多的励磁方式,每送一个励磁信号可走18 度。若以2 相励磁法控制步进电动机正转,其励磁顺序如表3.2所示。若励磁信号反向传送,则步进电动机反转。励磁顺序: abbccddaab表3.2 2 相励磁法脉冲顺序法(3)1-2 相励磁法:为1 相与2 相轮流交替导通。因分辨率提高,且运转平滑,每送一个励磁信号可走9 度,故亦广泛被采用。若以1 相励磁法控制步进电动机正转,其励磁顺序如表3.3所示。若励磁信号反向传送,则步进电动机反转。励磁顺序: aabbbcccdddaa表3.3 1-2 相励磁法脉冲顺序法3电动机的负载转矩与速度成反比,速度愈快负载转矩愈小,当速度快至其极限时,步进电动机即不再运转。所以在每走一步后,程序必须延时一段时间。4本实验需要用到cpu 模块(f3 区)和步进电机模块(a7 区)。步进电机电路原理参见图3.2图3.2 步进电机电路图本实验采用1相励磁法来控制电机正反转,通过向电机送入脉冲控制字01h、02h、04h、08h来控制电机正转;通过送入控制字01h、08h、04h、02h来实现电机反转。3.4 8279简介8279能自动完成键盘输入和显示控制两种功能。键盘控制部分提供一种扫描工作方式,可与64个按键的矩阵键盘连接,能对键盘进行自动扫描、自动消抖、自动识别出按下的键并给出编码,能同时按下双键或键实行保护, 其接收键盘上的输入信息存入内部fifo缓冲器,并可在有键输入时向cpu请求中断。 8279提供了按扫描方式工作的显示接口,其内部有一个168的显示缓冲器,能对8位或16位led自动进行扫描,将显示缓冲器的内容在led上显示出来。8279是可编程接口芯片,通过编程使其实现相应的功能,编程的过程实际上就是cpu向8279发送控制指令的过程。在软件设计中,显示方式采用了8个字符显示,左输入方式,编码扫描键盘,双键锁定。由于该系统对实时性及速度要求并不十分高,所以时钟频率采用6m hz已足够了,故程序时钟命令字取为2ah,用以保证100khz的内部工作频率。由于采用10ms定时扫描查询方式,所以在下次开始扫描时,先应清空8279,清除显示ram大约需要160s的时间,在此期间,fifo状态字的最高位du=1,表示显示无效,cpu不能显示ram写入数据,所以清除命令状态字取d1h。cpu对8279的控制是先读回8279的状态字,查看piforam中有无字符 ,若有将根据字符个数读出所有字符,并进行相应处理;若无,则直接返回。cpu对8279的监视采用查询方式,对8279分配的数据口地址为8000h,状态口地址为8001h,cpu每隔10ms定时中断查询一次,所有显示采用查询段码表的方式实现,简化了程序设计过程,提高了程序质量。8279的引脚功能:采用单5v电源供电,40脚封装。db0db7:双向数据总线,用来传送8279与cpu之间的数据和命令。clk:时钟输入线,用以产生内部定时的时钟脉冲。reset:复位输入线,8279复位后被置为字符显示左端输入, 二键闭锁的触点回弹型式,程序时钟前置分频器被置为31,reset信号为高电平有效。cs:片选输入线,低电平有效,单片机在cs端为低时可以对8279读/写操作。a0:缓冲器低位地址,当a0为高电平时,表示数据总线上为命令或状态,当为低电平时,表示数据总线上为命令或状态,当为低电平时,表示数据总线上为数据。rd:读信号输入线,低电平有效,将缓冲器读出,数据送往外部总线。wr:写信号输入线,低电平有效,将缓存器读出,将数据从外部数据总线写入8279的缓冲器。可按其功能分为:键盘功能块;显示功能块;控制功能块;与cpu接口功能块控制功能块包括控制和定时寄存器, 定时和控制,扫描计数器三部分,它主要用来控制键盘和显示功能块工作。控制和定时寄存器:用于存贮来自cpu的编程命令,cpu对8279编程以确定键盘与显示器工作方式和其它工作条件时,先把命令控制数据放到数据总线上,然后使a0=1,wr=0cs=0,并在wr上升沿把命令键存在控制和定时寄存器中,并经译码,建立适当的功能。定时和控制:它含基本的定时计数器,第一个计数器是一个分频系数为2-31的前置定时器,分频系数可由程序预置, 使内部频率为100khz,从而能给出5. 1ms键盘扫描时间和10.3ms反跳时间,其它计数器将此基本频率分频后,提供适当的按键扫描.行扫描.键盘阵列扫描.以及显示器扫描次数。扫描计数器:扫描计数器有两种工作方式,在编码工作方式时,计数器提供一种二进制计数,通过管脚sl0-sl3输出后经外部译码才能提供给键盘和显示器的扫描作用,在译码工作方式时,扫描计数器对最低二位进行译码,sl0-sl3输出4选1的译码信号,作为显示器和键盘的译码扫描。8279通过74ls 138译码器扩展44键盘、6位显示器。由3-8译码器对sl0sl2译出键扫描线,由另一三八译码器译出显示器的位扫描线,并采用了编码扫描方式。为了防止出现重键现象,扫描输出线高位sl3不参加键扫描译码。cpu对8279的监视采用了查询方式,故8279的中断请求信号irq悬空未用。8279可适应各种键盘和显示器的不同工作方式,这是由于8279内的各功能块的工作是可程控的,我们可根据自己的要求,通过编写命令语言的方法对8279的工作方式等进行编程。4 软件设计4.1 程序流程图4.1 实验流程图4.2 部分程序及功能简介1.初始化程序流程中的初始化主要指对8279键盘显示的初始化,其作用是清除8279原先杂乱的数据,将按键及显示进行复位操作。其程序为:ini8279:push dph push dpl push acc lcall delay mov dptr ,#z8279 mov a,#ledmod movx dptr,a mov a,#ledfeq movx dptr,a mov a,#ledcls movx dptr,a lcall delay lcall dis_off pop acc pop dpl pop dph2.步进电机正反转程序本实验最主要的一个程序,主要完成步进电机的正反转的过程,通过分别向p1.4(正转指示)、p1.5(反转指示)送入脉冲信号将其点亮或关断,低电平点亮,高电平关断。并且通过查表的方式来控制步进电机的正反转。01h、02h、04h、08h控制电机正转,循环的次数为电机正转的圈数。01h、08h、04h、02h为电机反转。其程序如下:for1:setb p1.5 dec r3 djnz r3,for2 ljmp exitfor2: clr p1.4 mov r2,#00hfor3: mov a,r2 mov dptr,#step movc a,a+dptr jz revv cpl a mov p3,a lcall delay_step inc r2 lcall delay_fr ljmp for3 revv: setb p1.4 clr p1.5 mov r2,#11hrev1: mov a,r2 mov dptr,#step movc a,a+dptr jz for1 cpl a mov p3,a call delay_step inc r2 lcalldelay_fr ljmprev1 exit:ret5 综合调试5.1实验导线连接与调试 本实验所有输入信号采用按键来模拟;洗衣机的电动机采用进步电机模拟;其它输出采用led发光二极管显示。键盘01键代表启动按钮,02键为停止按钮;led p1.0 为停止指示,p1.1为启动指示,p1.2为进水指示,p1.3为排水指示,p1.4 正转指示,p1.5 反转指示,p1.6为甩干指示。实验步骤:(1)系统各跳线器处在初始设置状态。(2)用导线对应连接步进电机模块的a、b、c、d 分别到cpu 模块的rxd、txd、p32、p33;键盘显示8279与led相连。(3)启动pc 机,打开thgmw-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。经过连线、调试、运行后能够成功的完成自动洗衣全过程。5.2实验结果分析错误一:实验过程所有的led显示统统不亮。解决方案:没有将键盘与led相连,用导线将二者相连后led指示正常。错误二:键盘无法显示“on”与“off”。解决方案:起初以为是程序问题,后来经过多遍检查,以及程序的重新编译,依然无法显示,检查导线连接无误,第二天换了一台机器正常显示,说明与程序无关。仔细比较两台机器的键盘显示模块区,发现原来键盘的左边有一排很小的按钮没有推上,打开按钮重写调试,则正常显示“on”与“off”。错误三:洗衣机能够完成洗衣过程但是不能自动停车。解决方案:经检查实验台的停止按钮已经损坏,重新选择另一按钮进行替换但是问题并没有解决,于是重新检查程序,发现整个程序并没有停止功能,而是完成洗衣过程后自动跳转到了开始指令,并且顺序进行,加入等待按键指令后系统可以自动停机。错误四:步进电机不能实现正反转,只有在脱水时动了一下。解决方案:查看实验台,a、b、c、d的指示灯正常闪烁,但是电机的螺丝已经非常松动,调换实验台后电机正常工作。实验体会对于大四的学生来说单片机已经不再是一个新名词了,尤其是自动化的学生,因为在我们的课程里已经开设了这么一堂课。但是,真正的熟悉和操作单片机对我们来说却是一个未知的领域,毕竟我们真正能够接触的机会还是很少的,而我有幸在本次试验中被分到了一个运用单片机的洗衣机的实验。实验的第一天我接到了实验题目,便回来查询有关实验发面的资料,这才发现对于无边的知识领域来说人类永远是渺小的,我开始显得有些不知所措。一下子变成了一只无头苍蝇,不知从哪下手,于是我选择从最开始入手。首先,我先查阅了关于洗衣机的实验原理,了解了洗衣机是如何工作的,以及工作流程,这为接下来的实验铺设了一块很好的基石。这正的实验开始了,去实验室安装调试的过程是获益匪浅的,起先错误不断,但是在老师的耐心教导和同学的热心帮助下一路走来还算顺利。因为弄懂了实验原理及流程,所以以后的实验便算是顺藤摸瓜了。我需要做的就是如何正确无误的编写程序。通过查阅大量的资料的,对程序进行拼接修改,不会的地方请教老师同学,最后总算将程序编写出来了。在这里我不得不提一下程序的编写,这是本次我试验收获最大的。以前只是知道一些mov、pup、push之类的指令,并且也只能用认识来形容,因为我只知道他们的表面含义并不了解为何要使用这类指令,通过本次实验我不仅认识了一些从未蒙面的指令而且还知道了他们为何这样用,以及这样用的目的是什么。可以算是掌握了。最后我还要返回一下原题,单片机。这次算是与单片机的一次亲密接触了,虽然可以运用单片机来达到我的实验目的,但我知道理熟练掌握还是有相当一段路程要走的,因为只是一个简单的洗衣机实验就可以耗费我接近三周的时间,可见在那快小小的芯片里确实蕴含着无穷的知识。对于本次实验我想用四个字来表达我的感受是最贴切的那就是“获益匪浅”。附录 硬件电路图附录 实验程序z8279 equ 08701h ;8279 状态/命令口地址d8279 equ 08700h ;8279 数据口地址ledmod equ 10h ;右端输入 八位字符显示 ;外部译码键扫描方式,双键互锁ledfeq equ 38h ;扫描速率 ledcls equ 0d1h ;清除ledwr0 equ 80h ;设定的将要写入的显示ram地址;* org 0000h ljmp start org 0010h;*启动、停止信号检测*start: clr p1.0 lcall ini8279wait: mov dptr,#z8279 movx a,dptr anl a,#0fh jz wait mov a,#40h movx dptr,a mov dptr,#d8279 movx a,dptr anl a,#3fh mov r5,a subb a,#01h jz onwait1: mov a,r5 subb a,#02h jz off ljmp wait;*8279初始化*ini8279:push dph ;保存现场 push dpl push acc lcall delay ;延时 mov dptr ,#z8279 mov a,#ledmod ;置8279工作方式 movx dptr,a mov a,#ledfeq ;置键盘扫描速率 movx dptr,a mov a,#ledcls ;清除 led 显示 movx dptr,a lcall delay ;延时 lcall dis_off pop acc ;恢复现场 pop dpl pop dph ret;*启动*on:lcall dis_on clr p1.1 lcall inn lcall forr lcall out lcall inn lcall forr lcall out lcall dryy ljmp off;*停止*off: lcalldis_off setbp1.1 ljmp wait;*进水、排水*inn: mov r4,#50in3: mov r2,#0ffhin1: mov r3,#0ffhin2: djnzr3,in2 djnzr2,in1 cpl p1.2 djnzr4,in3 retout: mov r4,#50ou3: mov r2,#0ffhou1: mov r3,#0ffhou2: djnz r3,ou2 djnz r2,ou1 cpl p1.3 djnz r4,ou3 ret;*正转、反转*forr:mov r3,#10for1:setb p1.5 dec r3 djnz r3,for2 ljmpexitfor2: clrp1.4 movr2,#00hfor3: mova,r2 mov dptr,#step ; movc a,a+dptr jz revv ; 是否到了结束码00h cpl a ;把acc反向 mov p3,a ;输出到p1开始正转 lcall delay_step ;转动的速度 inc r2 lcall delay_fr ljmpfor3 ;取下一个码 revv: setbp1.4 clrp1.5 movr2,#11hrev1: mova,r2 mov dptr,#step ;取码 movc a,a+dptr jz for1 ;是否到了结束码00h cpl a ;把acc反向 mov p3,a ;输出到p1开始反转 call delay_step ;转动的速度 inc r2 ;取下一个码 lcall

温馨提示

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

评论

0/150

提交评论