全自动豆浆机控制程序的设计说明书_第1页
全自动豆浆机控制程序的设计说明书_第2页
全自动豆浆机控制程序的设计说明书_第3页
全自动豆浆机控制程序的设计说明书_第4页
全自动豆浆机控制程序的设计说明书_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、 微机原理及接口技术课程设计 微机原理及接口技术课程设计说明书 课题: 全自动豆浆机控制程序的设计 专业: 电子信息工程 班级: 电子1102 姓名: 张杰 学号: 3220806485 指导老师: 2013 年 12 月 28 日目 录第一章 设计任务与目标3设计目的3设计任务3基本设计要求 3功能扩展 3 设计环节与进程安排 3第二章 总体方案设计与方案论证4总体方案设计 4实时钟的调校方式 5键盘的扫描方式 5定时器方式 6开关量输入消抖模块的选择 6倒计时1S方法选择7第三章 总体软件设计说明及总工作流程8总工作流程 8总体软件设计说明 10第四章 系统资源分配及数据定义说明 11单元

2、分配以及各个标志位注释 11第五章 局部程序设计说明131.自检模块 132.键盘扫描子模块 143.按键消抖子模块 144.蜂鸣器LED缓冲子模块 155.1分钟内取消模块 156.拆字子模块 167.调用时钟设定子模块 178.选择工作模式子模块 189.水位告警子模块 1810.模拟水温子模块1911.无效启动子模块 2012.实时钟子模块 2113.显示更新子模块2114.启动子模块2215.煮浆子模块2216.保温子模块23第六章系统功能与操作说明24 系统功能24 用户界面操作说明25第七章存在问题与改进程序说明 27 模拟水温模块27 水位告警模块28第八章课程设计总结29附录:

3、程序代码清单第一章 设计任务与目标设计课题:全自动豆浆机控制程序的设计设计目的:通过两个礼拜在实验室亲自动手操作,熟悉和理解微机原理及接口技术上课老师所讲的内容,将所学知识亲自动手验证,借此熟悉和掌握书中知识,并加强自己动手设计程序的能力。设计任务:本次为期两个礼拜的课程设计任务是设计一个全自动豆浆机控制程序,通过LED灯,数码管模拟豆浆机的各个流程,主要要实现豆浆机的预加热,预打浆,三次加热打浆,而后进行煮浆完成整个豆浆的流程,中间加入水位告警,防溢告警功能,并有实时钟功能。 基本设计要求:1、开机进行适当的有关接口部件及数码显示器、指示灯、讯响器等自检。2、八位LED 七段数码管在常态下作

4、为实时钟显示,其余状态下有工步号,倒计时,温度显示。3、键盘中能够对实时钟进行调校功能按键。4、设有高低水位报警功能,在高水位状态下启动,LED灯闪3下,蜂鸣器同步响一秒,在低水位状态下启动,LED灯闪1下,蜂鸣器同步响一秒。5、具有能完成基本煮豆浆中的预加热-预打浆,然后加热-打浆总共3次的程序。6、具有在启动后能够在一分钟以内取消煮浆的功能模块。7、实现在3次打浆完成后进入240S倒计时的煮浆功能模块。8、在煮浆功能模块中有对水位进行检测,超出溢电极则停止加热,待恢复水位持续5秒后才重新开启加热煮浆。9、煮浆完成后进行以20%功率加热的保温模块。功能扩展:1、可扩展果汁功能模块。2、设定电

5、机关闭和重新开启之间必须间隔15秒。3、实时钟模块可设置为4X4模块,伴有位闪,按键赋值功能。4、改良告警提示音为音乐模块。设计环节及进程安排1、布置课题,明确任务、总体方案设计 1天2、主体功能控制程序设计及调试 5天3、程序综合联调及功能完善、改进、扩展 3天4、答辩及编写设计说明书 3天 第二章 总体方案设计与方案论证本次课程设计的课题是设计全自动豆浆机模拟程序,需要运用微机原理与接口技术课本内容进行设计,设计的豆浆机不单单仅有煮豆浆功能。还带有水位报警,实时钟以及实时钟调校功能,模拟水温等功能。总体设计方案 对于这次的课程设计,按照老师所讲,我们所采取的程序设计是按照模块化来进行程序的

6、设计。将豆浆机的主工作流程作为一个模块,再加入其它功能的模块,比如实时钟调校模块,水位告警模块,模拟水温模块等,通过各个模块之间的循环调用,以此来完成整个全自动豆浆机的程序设计。 整个程序由自检模块,程序初始化,15个子模块组成的主流程循环调用,中断模块,延时子模块构成。实时钟的调校方式方案一:运用4X4键盘对应数字输入实时钟调整通过对4X4键盘模块的程序设计,使键盘模块能够在实时钟调校功能中实现时分秒准确调时,并且有退格,取消,确定等按键调整实时钟调校,相对应的小时十位只能输入02,小时个位只能按键输入04,分钟十位输入06,分钟个位输入09,能够较准确的对实时钟进行调校。方案二.:通过调时

7、键进入调时,四个按键对小时,分钟进行+1-1调校。这个方案是更为简单的方案,只需要有个进入调时的按键和一个调时完成确定按键,以及4个加减时钟按键。通过对键号的扫描判断按键是否按下以此来实现对实时钟的调校功能。这个方案最好的优点是简化了调校功能,使时钟能够以更简便的方式进行调校,为产品的外观设计提供了很大的方便。通过上面的综合判断实时钟的调校我们选择方案二按键加减调校。键盘的扫描方式方案一:扫描法首先识别键盘有无键按下,驱动所有列线为0,输入各行线电平如果有0,就说明有键按下,如果行线电平全1,则全部无键按下。其次是如有键被按下,识别具体的按键。依序驱动某一列为0 ,其余列均为1 ,输入各行线电

8、平,如果某行线电平为0 ,可确定此行列交叉点处的按键被按下;如果行线电平全为1 则本列无按键按下。这种方式太占用CPU的工作时间。方案二:线反转法 首先列线输出为全0 ,随后输入行线电平如有0,则0所在的行就是闭合的按键所在行;无0则无键闭合。其次行线输出为全0 ,随后输入列线电平如有0,则0所在的列就是闭合的按键所在列;无0则无键闭合。直通结合上述两步,可确定按键所在行和列。这种方式非常简单,并且很实用。综合以上的分析,我们选择方案二线反转法计数方式方案一:13位计数方式-方式0 定时器/计数器方式0 一共是有13位的计数方式。方式0是为兼容MCS-48而设,初值计算麻烦,在实际应用中,一般

9、不用方式0。并且存在一个是时间误差,不能适用于精确定时。方案二:16位计数方式-方式1定时器/计数器方式1 一共是有16位的计数方式,由于它每个扫描周期都会有38个Tm(机器周期)的时间误差,主要是用于要求不是很精确地定时,因为有随机性的误差产生。方案三:8位计数自动重装工作方式-方式2定时器/计数器方式2为自动恢复初值(初值会自动重装)的8位定时器/计数器,当其计数溢出的时候,系统会自动重装初值,重新开始计数。这种工作方式可以省去用户软件中重装初值的指令执行时间,可以做到精确地定时时间。综上所述,我们是要求能做到精确定时,所以选择方式2按键输入消抖模块的选择对于开关量输入的消抖处理一般有以下

10、两种种处理方法。方案一:软件延时消抖即检测出键闭合后执行一个延时程序,产生5ms10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms10ms的延时,待后沿抖动消失后才能转入该键的处理程序。方案二:滚动滤波消抖法滚动滤波消抖法就是通过滚动滤波法的原理,我们将PB0PB7电平输入,并进行五次滚存消抖,新态存2EH,旧态存2FH,这个方法能够较好的完成按键的消抖,排除按键抖动所产生的不良效果,完善了按键功能。所以我们对消抖模块选择滚存消抖。倒计时1S方法选择方案一:在非倒计时显示情况下,延时可采取调用主程序,重复相应次数,

11、得到相应延时时间。如主程序每调用一次需10ms,调用100次,则得到1s的延时。在倒计时显示情况下,采取在中断设置1s到标志位,用到倒计时开启标志位即可。方案二:每次延时即开启1s到标志位。 两个方案相比较,方案一比较简单、灵活,所以采取第一种方案来进行精准计时。 第三章 总体软件设计说明与总工作流程总工作流程如图所示主流程自检模块程序初始化B蜂鸣器LED灯缓冲子模块调用键盘扫描子模块启动子模块调用按键消抖子模块1分钟内取消子模块显示更新子模块工作模式选择模块调用拆字子模块时钟设定子模块 A无效启动子模块 B A水位告警子模块模拟水温子模块煮浆子模块保温子模块拨动开关子模块总体软件设计说明本次

12、的课程设计通过对15个子模块的循环调用来完成全自动豆浆机的模拟功能,并且采用定时器方式2精准计时。拆字子程序:常态下(待机,保温)送时分秒到显缓,其余则送工步号,倒计时到显缓。显示更新子程序:根据显缓单元内容驱动八位数码管。时钟设定子程序:通过扫描键号判断调时键是否按下借以对实时钟进行调校。键盘扫描子程序:通过线反转法扫描按键键号,旧键号存65H,新键号存64H。工作模式子程序:当无工作模式时,按下功能选择键,则显示豆浆模式,而后再按时,工作模式在果汁和豆浆两种模式中切换。1分钟取消子程序:启动1分钟内,通过检查启动键是否再被按下,是则取消运行。蜂鸣器LED灯缓冲子程序:根据缓冲单元内容驱动蜂

13、鸣器和LED灯按键消抖子程序:输入PB0PB7电平,经5次滚存消抖后,旧态存2FH,新态存2EH。保温子程序:以20%的功率进行加热保温。水位告警子模块:通过检测高低水位,若有高水位或者低水位,则启动时会告警并退出 。煮浆子模块:以240S倒计时加热煮浆,若煮浆过程中检测到超水位,则停止加热,待水位恢复持续5秒后再重新开启加热。无效启动子模块:检测功能未选择时启动键是否按下,是则告警并退出。拨动开关子模块:输入SW0SW7电平到缓冲单元,输出驱动L8L15。启动子模块:功能选择后判断启动键是否按下,是则进入预加热,预加热达到35度时,则进入预打浆。开启电机,关闭加热。待25秒打浆倒计时结束后,

14、关闭电机,开启加热。加热达到50度时进入打浆模式,开电机,关加热。以下再重复加热打浆2次后进入煮浆。第四章 系统资源分配及数据定义说明微处理器内部存储单元分配及数据定义微处理器内部存储单元数据定义23H豆浆进程码24H.0是否进行调时标志位25HLED灯闪烁进程码26H.0闪烁标志位26H.1倒计时标志位26H.2响标志位26H.3开关蜂鸣器标志位26H.4高低水位告警区分标志位26H.5保温标志位26H.6满1秒标志位26H.7倒计时百位减到0标志位27H工步号28H驱动P1标志位29H滚存消抖存储单元2AH滚存消抖存储单元2BH滚存消抖存储单元2CH滚存消抖存储单元2DH滚存消抖存储单元2

15、EH新态按键存储单元2FH旧态按键存储单元30H-37H显示缓存单元38H200us计数单元39H1/100s计数单元3AH实时钟秒钟存储单元3BH实时钟分钟存储单元3CH实时钟小时存储单元47H打浆,加热4次设置初值53H闪闪闪延时200ms59H倒计时十位,个位。 5AH倒计时百位(千位不显示)5BH保温16秒设置初值5DH保温4秒设置初值5FH满一秒计数64H当前新扫描键号值存储单元65H10ms前扫描到键号存储单元67H保温讯响1分钟初值69H1分钟内取消初值6BH1分钟无效标志位第五章 局部程序设计说明1.自检模块功能简述该模块主要功能为在开机时进行有关接口部件及数码显示器、指示灯、

16、蜂鸣器等适当自检。程序设计思路及方案当程序输入到单片机中运行后会首先进行对单片机上各个功能显示模块的自检,确保使用者所使用的单片机是可以正常使用。原理说明及部分代码 下面通过一段程序了解自检模块的实现MOV DPTR,#0FEFCH ;DPTR指向U3-A口MOV A,#0FFH ;置八段均不亮的字段码(8255A初始化后输出寄存器全0')MOVX DPTR,A ;输出,关数码显示器(段输出口初始驱动全为1'无效)MOV DPTR,#0FDFFH ;对8255A(U5)接口芯片初始化MOV A,#8BH ;设定为A口输出(驱L815),B口输入(按钮PB07),C口输入(开关S

17、W07) MOVX DPTR,A ;写入方式控制字 MOV DPTR,#0FDFCH ;DPTR指向U5-A口MOV A,#0FFH ;置八位输出均为1'无效MOVX DPTR,A ;输出,令L8-15初始不亮CLR P3.2 ;蜂鸣器响 LCALL D1S ;延时1S SETB P3.2 ;关蜂鸣器MOV P1,#00H ;P1口输出全0',所驱动的L0L7指示灯全亮从这段代码可知,再初始的状态下,系统置八位数码管全不亮,并且L8L15也置为不亮,随后检测蜂鸣器是否能正常亮,再检测L0L7能否全亮。通过程序的设计,完整的检验了单片机上各个模块的状态,让使用者能更好的分辨出单片

18、机的正常程度。2.键盘扫描子模块功能简述该模块主要功能为实现4*4的键盘扫描功能,扫描当前所按下4*4键盘的按键键号存入相应存储单元,并获得键值,以备后面的操作和功能实现。程序设计思路及方案该模块在主流程中调用键盘扫描子程序(LCALL),运用反转法扫描键盘,得到所按下按键的相应行列码。当用户未按下按键时,相应存储单元存入未按下信息,即为10H,当用户按下按键时,系统相应存储单元存入已按下信息,即00H-0FH。通过扫描,并与键码表比较行列码,相等说明扫描到所按下的按键,将键值赋值到61H储存单元,以便后面的使用。原理说明及部分代码61H为键值存储单元,给61H单元赋初值,通过扫描所按下按键的

19、行列码与键码表比较,找到相等的即说明有键按下,且能精确得到相应键码,若找不到相等键码则说明为按下按键。键号值从00H开始,最多进行16次的键码查表,DPTR指向键码表首地址,置当前键号于A中,代码MOVC A,A+DPTR查表读取键码表中当前键号对应位置的键码,与8位行列码比较,不同则转NK查下一个,相同表明找到当前按下的键号,代码INC 61H使键号值加1,代码DJNZ R5,KY判断未查完键值表则继续,查完则无按键或出现异常行列码,结束并返回。64H中存有新扫描到的键号,65H中存有相对于64H中存有的键号10ms前扫描到的键号,通过两个单位的存储比较,能够较好的判断出按键的按下与否。3.

20、按键消抖子模块功能简述该模块的主要功能是为按键输入消抖,防止出现按键抖动影响主流程。程序设计思路及方案将原新态存为前态,将前4次得到的电平值推送至2AH-2DH单元中,获得电平值并存为新态存放在2EH中,比较5次得到的电平值,若电平值不一致则新态不变,若电平值一致则存为新态。原理说明及部分代码。代码MOV 2FH,2EH 将原新态存入旧的键号,即2EH为新态键值存储单元,2FH为旧态键值存储单元,代码 MOV 2DH,2CH ; MOV 2CH,2BH MOV 2BH,2AH MOV 2AH,29H将前4次得到的电平值推送至2AH-2DH单元中,获得电平值并存为新态,代码 MOV A,2DH

21、CJNE A,2CH,XDR CJNE A,2BH,XDR CJNE A,2AH,XDR CJNE A,29H,XDR比较近5次输入的电平值,一致的话存为新态,不一致则新态照旧。4.蜂鸣器LED灯缓冲子模块功能简述该模块通过设定缓冲单元驱动蜂鸣器和LED灯。程序设计思路及方案通过设定缓冲单元来驱动蜂鸣器和LED灯,防止直接驱动蜂鸣器和LED灯这种情况下不容易修改需要驱动的方式。原理说明及部分代码 下面一段程序可以了解整个模块功能FMQ:JB 26H.3,LF0 CLR P3.2 SJMP LF1 LF0:SETB P3.2 LF1:MOV P1,28HQ0:RET通过设定26H.3作为开启蜂鸣

22、器的标志位,28H作为LED灯L0L7,这样能够在设计过程中通过标志位来判断来使蜂鸣器能完成我们所需要设定的响的时间,而通过28H缓冲驱动LED灯L0L7,我们就可以通关对28H的判断来了解灯的亮灭,也可以直接给28H中各个字节分别置0或1,来开启各个灯的亮灭。5.1分钟内取消子模块功能简述该模块主要功能为实现当豆浆机开启工作一分钟之内都可以取消工作,使用户能再误开状态下能较好的停止豆浆机工作。程序设计思路及方案通过设定一个1分钟之内可以判断按键是否按下,按下就可以退出整个工作状态。原理说明及部分代码 FQ1: DJNZ 69H,FQ2 ;1分钟倒计时 MOV 69H,#60 DJNZ 6AH

23、,FQ2 MOV 6AH,#100 以上程序为1分钟主流程循环,通过在一分钟之内可以判断启动键是否再次按下,再次按下后就可以取消豆浆机运作。超过一分钟后就会跳出一分钟取消模块,就不能再按取消键结束豆浆机运作。 6.拆字子模块功能简述该模块主要功能是在待机保温时候拆送实时钟时分秒到显缓,其余状态下拆送工步号,倒计时到显缓驱动八位数码管。程序设计思路及方案通过判断进程码,在不同的模式下拆送不同的单元到显缓驱动八位数码显示器,以实现所需要的功能。原理说明及部分代码 CZ: MOV A,23H CJNE A,#00H,CZT SJMP CZ2 ;最开始不工作是显示电子表 CZT: CJNE A,#25

24、H,CZ5 ;保温时候也显示电子表 CZ2:MOV R0,#3AH ;取秒,开始拆字实时种 MOV R1,#30H ;置显示缓冲单元首地址(对应于最右显示位) 上面为拆字的部分程序,通过程序我们可以清楚的看到,拆字模块主要通过判断进程码,不同的进程码拆送不同的单元到显缓,上面一段程序为在待机进程00H,保温进程25H下拆送时分秒到显缓,而若非待机,保温。则程序跳转到CZ5,如下程序:CZ5:MOV A,27H ; 步骤码 ANL A,#0FH ;保留低4位(个位) MOV 36H,A MOV A,27H ANL A,#0F0H ;保留高4位(十位) SWAP A ;交换到低4位 MOV 37H

25、,A JB 26H.1,CZ0 ;为1不送倒计时(跳出) MOV A,59H ;倒计时 ANL A,#0FH ;保留低4位(个位) MOV 32H,A MOV A,59H ANL A,#0F0H ;保留高4位(十位) SWAP A ;交换到低4位 MOV 33H,A MOV A,5AHANL A,#0FH ;保留低4位(个位) MOV 34H,A 为拆送倒计时,工步号到对应的显缓单元,以此来实现豆浆机运作过程中所需要的打浆倒计时和工步号显示。7.时钟设定子模块功能简述该模块主要功能为提供用户对实时钟的调校功能。程序设计思路与方案 当用户在使用时,如发现实时钟不准确,可简单的对实时钟进行调校功能

26、,通过设定按键加减时分,轻松的完成实时钟的调校。主要设定六个按键,包括进入调时键K4,确定调时并退出调时K5,小时加1键K0,小时减1键K1,分钟加1键K2,分钟减1键K2。原理说明及部分代码利用进程码进行设定,只有在待机,保温进程下才能对实时钟进行调校。通过线反转法扫描键号来判断按键是否按下以实现对实时钟的调校功能。在进入调校后通过4个按键分别对小时和分钟进行加减,并将秒单位及前一级单位置0,较准确的完成实时钟的调校功能。 KTE:JNB 24H.0,L2 MOV A,65H CJNE A,#10H,L3 MOV A,64H CJNE A,#04H,L3下面程序为线反转法扫描键号,若发现有按

27、键按下,则新键号会存到64H中,以此实现对应的功能。65H存的10H为初始状态,即无000F键按下。8.工作模式子模块功能简述该模块的功能主要为用户提供模式选择,正常的模式选择有豆浆机和果汁,由于本程序只设计豆浆机,但仍然提供了果汁的模式选择,较好了模拟了正常产品的功能选择。程序设计思路及方案当用户按下功能选择按键时, 会将28H.0置0,驱动L0亮起,模拟豆浆模式,而后再按下功能选择键,则模式会在果汁和豆浆中切换。原理说明及部分代码:原理我们可以分析部分程序来进行,以下面部分程序为例: GZMS: MOV A,23H CJNE A,#00H,GZ0 ;刚开始选择功能键才有效 JNB 2FH.

28、1,GZ0 JB 2EH.1,GZ0 ;判断PB1功能选择键是否按下 以上的程序是通过判断在待机状态时的功能选择键是否按下,通过按键的按下再实行以下程序; INC 50H MOV 28H,50H MOV A,50H CJNE A,#0FEH,GZ0 MOV 50H,#0FCH 通过对50H单元加1,而50H内容有初值0FDH,加1后变为FE即驱动L0亮起,即选择豆浆模式,而后L0与L1交替切换亮灭,即模拟豆浆和果汁模式切换。9.水位告警子模块功能简述该模块主要功能为在启动时检测是否水位是否正常程序设计思路及方案为了模拟高低水位,我们设置为SW0模拟高水位,SW1模拟低水位,设立闪烁标志位,借此

29、分辨不同水位不同的闪烁告警方式。原理说明及部分代码水位告警模块是为了让用户能再一个安全的水位状态下进行煮浆,即保证了煮出豆浆的优良度,亦能够较好的保护使用者的安全与豆浆机的使用寿命。通过SW1模拟高水位,当SW0为“0”时,则为高水位,反之则未超水位。SW1为“0”时为低水位,反之水位正常。而通过加入闪烁标志位和高低水位告警标志位26H.4,在调用告警闪闪闪模块中,可区分高低水位的告警,即高水位告警为闪烁3次,同步蜂鸣器响;低水位告警为闪烁一次,同步蜂鸣器。10.模拟水温子模块功能简述该模块主要功能为在通过AN1控制A/D转换数据拆送到数码管最右边两位模拟水温。.程序设计思路与方案为了更好的模

30、拟水温拆送,在此模块中独立进行拆字程序,而非在拆字模块中进行拆送,通过对A/D数据的BCD转换,将0256转换为099拆送显示温度,而AN1可调整模拟水温。原理说明及部分代码通过设定AN1调整,由以下程序完成: MOV DPTR,#0FBF9H ;A/D子程序。MOVX A,DPTR ;读取A/D转换结果的8位二进制数字值即可以通过AN1调整模拟水温。而A/D转换结果存为缓冲单元,而后进行BCD转换,将其二进制数转换为099的BCD码拆送温度显示。超过99则送“EE”到温度显示显缓单元中。11.无效启动子模块功能简述该模块主要功能为防止用户在未选择模式就按启动进入。程序设计思路及方案通过对功能

31、模式灯的亮灭进行判断是否选择完模式,是则正常启动,若无选择模式进入,则告警并且退出。原理说明及部分代码首先检测功能模式灯是否亮起,若未亮起时检测到启动键按下,则会有告警程序,并且退出运行。告警程序如下:WX2: JNB 2FH.0,WX0 JB 2EH.0,WX0 ; 启动键是否按下 CLR 26H.2 ; 响1s标志位0,持续响 CLR 26H.3 ; 响 WX3: DJNZ 5CH,WX0 MOV 5CH,#100 ; 响1s SETB 26H.3 ; 停响 SETB 26H.2 ; 响1s标志位1,不再响在无选择模式下,启动键按下后,则会开启响标志位告警,并有1S主流程循环,告警完才关闭

32、蜂鸣器。12.实时钟子模块功能简述该模块主要功能为精确实时钟计时。程序设计思路及方案利用定时方式1产生中断进行精确实时钟计时。原理说明及部分代码当定时器1满足中断条件(即定时器计满256TM),发生中断,找到中断路口地址001BH,跳转到子程序IT1P。子程序的开头和结尾分别对累加器A和PSW进行入栈和出栈,保证完成中断回到主循环后,能保存累加器和PSW的数据。进入IT1P子程序表示完成200us计时,此时先对38H单元加1,用以做200us计时单元。同时判断38H是否为36次,即是否计满36*256TM=10ms?当时间未到10ms,则跳出子程序,继续等待中断发生,再过256TM再进入程序,

33、为38H单元加1。当计满10ms,对200us单元38H清零,并对百分秒单元39H加1,判断计满100次即1s的时间,将百分秒单元清零,对秒单元3A单元加1,之后按照时间规律,每60s对秒单元清零、分钟单元加1;每60min对分钟单元清零、小时单元加1但处理秒、分和时的加1需要十进制加1(BCD码加1),使用ADD累加并用DA进行十进制调整,可以完成此功能。13.显示更新子模块功能简述该模块主要功能为将显示缓存单元30H-37H的数据通过查表法找到相应的段码表将要显示的内容显示到数码管上。程序设计思路及方案通过单元指针逐个将显示缓存单元30H-37H的数据,查表法找到相应的段码表将要显示的内容

34、显示到数码管上,再通过循环和判断执行相应程序。原理说明及部分代码置显缓首位,位码首位,查询相关的字段码,输出字段码,保存显示1ms,消除串显,指向下一个单元,在30H-37H单元循环。14.启动子模块功能简述该模块为豆浆机运行的主要模块,模块中实现豆浆机的预加热,预打浆,3次加热打浆以此来完成豆浆打磨加热的主要过程。程序设计思路及方案通过判断豆浆模式选择完后正常启动进入,利用进程码实行整个过程。利用进程码来完成预加热-预打浆-加热-打浆-加热-打浆-加热-打浆。利用L2灯模拟加热是否开启,L3模拟电机。原理说明及部分代码正常启动后即赋进程为10H进程时,进行预加热,而后通过判断温度是否达到35

35、度,达到后关闭加热(即灭L2),开启电机(即亮L3),进程码送11H,进行倒计时25秒的预打浆,通过满1秒标志位的设立,准确的进行倒计时。25秒倒计时结束后重新开启加热,关闭电机,待温度达到50度后,关闭加热,开启电机进行打浆,接下去重复加热打浆两次,待最后一次打浆完成后即完成整个打磨部分,直接送煮浆程序进程码。下面示例程序为对进程码的判断:Q1: CJNE R1,#10H,Q2 CLR 28H.2 ;加热 即在不同的进程中完成不同的功能。 15.煮浆子模块功能简述 该模块是在豆浆机打浆完成后进行的最后一步煮浆程序,为240秒的加热过程,并且有水位溢出判断功能程序设计思路及方案通过对满一秒标志

36、位的判断进行较为准确的240秒加热倒计时,并且判断在加热过程中是否有超溢位,有则停止加热,待水位恢复正常持续5秒后才重新开启加热。原理说明及部分代码通过对进程码的判断,当进程为20H进程时,进行煮浆。开启加热。加热过程中通过判断水位情况,若出现高水位则会停止加热,待恢复水位持续5秒后才重新开启加热,以下列程序为例: LK1: DJNZ 5CH,LK2 ;5S内无益处才重新加热 MOV 5CH,#100 INC 4FH MOV A,4FH CJNE A,#06H,LK2 ;5秒后无超水位 CLR 28H.2 ;开加热 即为判断恢复水位5秒后才重新开启加热。若是为低水位状态下,即出现“干烧”,则煮

37、浆模式停止,并退出运行。恢复到待机状态。240秒煮浆完成后,即进入保温模块。16.保温子模块功能简述 该功能模块是对煮完的豆浆讯响1分钟后,以20%的功率进行加热保温。程序设计思路及方案设定响标志位来开启蜂鸣器讯响通知。而后进入保温,通过设定加热4秒,停热16秒,来实现20%的功率加热保温。原理说明及部分代码如下列程序: BW1: SETB 28H.2 ;停加热 DJNZ 5BH,BW0 MOV 5BH,#16 DJNZ 5CH,BW0 ;延时16sMOV 5CH,#100 CLR 28H.2 ;开加热 CLR 26H.5 BW2: DJNZ 5DH,BW0 MOV 5DH,#4 DJNZ 5

38、EH,BW0 ;延时4s MOV 5EH,#100 SETB 26H.5 SJMP BW1通过调用主流程循环,以此来实现4秒的加热以及16秒的停热来进行加热保温。 第六章 系统功能与操作说明系统功能全自动豆浆机能够自主的在启动后进行整个豆浆的打磨煮浆过程,全程自动化,无需使用者额外操作。而本全自动豆浆机还包括有水位情况的报警,实时钟的模块,很好的满足用户的需求,以及保护使用者。用户在使用时候,可以轻松操作,无需任何学习,只需要在选择模式后按下启动后即可,豆浆机将全程自动化完成,用户只需轻轻一点,稍等段时间即可以享受一杯美味的豆浆。用户若有误启动,在启动的一分钟内可再按此启动键取消启动。用户界面

39、及操作说明针对用户需求进行说明。常规显示界面及其说明常规显示状态下,8位数码管是显示“时钟 - 分钟 - 秒钟”,当用户按下进入启动后,最左边两位显示当前所进行的工步的工步号。左边第三位到第六位则显示豆浆过程中打浆倒计时,煮浆倒计时。最右边两位数码管则显示当前豆浆温度。数码管显示界面,从左到右分别为第一位至第八位常规显示状态,即显示当前时间 1. 进入运行界面如下:01 240 55 工部号 倒计时 温度2、L0为豆浆模式指示灯,L1为果汁模式指示灯,L7为保温灯,L3加热灯,L4为电机灯,PB0为功能选择键,PB1为启动/取消键,如下图 L0L1L3L4L7PB0PB1 豆浆模式 果汁模式

40、加热 电机 保温 启动键 功能选择键 以上为各个功能模式灯与按键,用户可通过对比参照使用与观察。时间调整模式当用户按下调时功能键后,则会进入调时,然后用户根据所需要调整的时间进行按键加减操作,K0和K1为分别对小时单位进行加减1操作,而K2和K3则为对分钟单位进行加减1操作。用户可以简单轻松的对实时钟进行调校,在调校完成后,用户只需按下确定调时键K5,即可退出调时。调时各个按键功能如下图: 进入调时键 确定调时退出键 小时+1 小时-1 分钟+1 分钟-1K1K0K3K2K4K8K12K5K9K6K7K14K10K13K11K15水位警告模式当用户开启时,若发现功能灯闪烁三次并同步伴有蜂鸣器响

41、,则为高水位。若功能灯闪烁一次,同步伴有蜂鸣器响,则为低水位。用户通过报警的不同自行改变水量重新进行煮豆浆。保温模式当煮浆完成时,会有一分钟提示音提示用户已完成,用户听到提示音就可提取美味豆浆。再按次启动键即可退出保温。第七章 存在问题与改进程序说明 在整个程序的设计中,仍然有着一些程序存在问题,这是在设计的时候没有考虑周全导致的,在经过了与老师的探讨和同学间的互相讨论下,对程序进行了完善。以下为几个存在问题的程序以及其改进后的程序。1.模拟水温模块在水温模拟模块中,设计时由于考虑不周全,单纯的认为只需要拆送099到显缓中就可以,于是设计出了错误的程序,如下:CJNE A,#9AH,LA1 L

42、A1:JNC LA2 ;超过99显示EE CLR C DA A MOV 58H,A MOV B,A ;A/D转换结果拆送最右两位显示缓冲单元 ANL A,#0FH MOV 30H,A MOV A,B ANL A,#0F0H SWAP A MOV 31H,A 这个程序模块,是个虚假数据,拆送了一个虚假的099到显缓,并没有经过BCD转换,在温度送显缓调整过程中会有跳步现象,无法完整的模拟出温度变化,是我当初设计时候没有考虑周全造成的。而后在老师的指导与同学的探讨下,有了水温拆送的正确拆送方法,自己加以改进程序。改进程序如下:MOV A,58HMOV B,#10HDIV ABMOV 31H,AMOV 30H,B即可以完整的模拟099的水温变化,而非虚假的数据转换。通过BCD转换拆送到显缓。较为完整的模拟出了水温。2.水位告警模块在最初始的水位告警模块中,初始判断只判断了预加热状态下的水位告警,而没有考虑到接下去的预打浆模块,使整个豆浆机在模拟过程中,跳过了在预打浆进程下的水位检测告警。经老师指正修改后,添加了判断进程,使整个过程中都有着水位检测的功能,改进后的程序如下:SWGJ: JNB 26H.0,SW ;JNB,0跳转, MOV

温馨提示

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

评论

0/150

提交评论