




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教育部直属 国家“211工程”重点建设高校单片机原理课程设计报告 指导教师: 王宪 学生学号: 0702100229 学生姓名: 王侠 学生班级: 通信1002 一、设计目标用51系列单片机控制全自动洗衣机的运行,使其能自动地完成进水、洗涤、漂洗、脱水等功能。采用LED和数码显示管显示洗衣机所处在的模式和水位,所处的的洗衣状态,水温,以及完成洗衣的剩余时间。实现不同模式下水位的选择一共三种模式(标准,轻柔,快洗),四种水位,当洗衣机启动后,上水电磁阀打开注水,当水到达设定的限位时,上水电磁阀断电,注水过程停止,启动电机全自动控制洗衣操作,整个过程的进行按时间控制,时间自定,软件编程使用汇编语言。洗衣机功能要求二、洗衣机的硬件设计本系统实现了对洗衣机整个洗衣过程的控制,包括用户参数输入、洗衣、漂洗、排水和脱水等阶段。控制系统主要由电源电路、单片机控制系统和外部硬件电路构成。电源采用三端集成固定稳压器7805提供+5V电源,单片机控制系统负责控制洗衣机的工作过程,主要由AT89S51单片机、2位共阳数码管、按键、蜂鸣器、LED指示灯组成;外部硬件电路有继电器、三极管、电动机、进水电磁阀、排水电磁阀组成。2.1 按键洗衣机面板上有4个按钮:1K1为启动键,K2用于模拟洗衣机的盖板打开,K3用于快速洗衣方式;当脱水时,模拟盖板合闭,K4用于脱水。2.2 洗衣程序洗衣机的主要工作程序是:洗涤脱水漂洗脱水漂洗脱水。(1) 洗涤过程:放好待洗物,启动开关,进水阀通电,向洗衣机供水,当供水达到预定水位时,水位开关接通,进水阀断电关闭,停止供水。洗涤电动机接通电源,带动波轮(或桶)旋转,产生各种形式的水流搅动衣物进行洗涤。通过电动不停的正转、停、反转、反复循环,形成洗涤水对洗涤物产生强烈的翻滚作用。同时,衣物之间、衣物与四周桶壁之间产生互相摩擦和撞击力,以次达到洗涤衣物的目的。(2) 漂洗过程:漂洗的目的在于清除衣物上的洗涤液,因此,漂洗过程与洗涤过程的电器动作是完全相同的。(3)脱水过程:洗涤或漂洗过程结束后,电动机停止转动,排水阀通电,打开排水阀门排水。当水位低到一定程度时,满足安全条件,脱水电动机接通,电机带动脱水桶高速旋转,利用离心力把衣服上的水从桶壁的小眼里甩出。2.3、设计总方框图单片机89C51进水电磁阀排水电磁阀电机正转电机反转显示屏蜂鸣器 水位开关 安全开关 程序选择/启动/暂停 洗衣机单片机控制系统方框图 基于单片机洗衣机通过控制系统设定洗衣程序在洗涤脱水桶内自动完成注水、洗涤、漂洗、排水和脱水全过程。洗衣时控制系统打开进水电磁阀开始注水;当洗涤脱水桶内的水位达到系统设定值时单片机发送一个低电平通知控制系统关闭进水电磁阀,同时启动电机洗衣。电机在系统的控制下进行正转、停、反转通过传动带动波轮执行洗涤程序;当洗涤时间终了,控制系统切断电机电路打开排水电磁阀开始排水;然后再次注水,洗衣机进入漂洗状态,完成漂洗程序(通常为2次漂洗)后,开始排水,同时排水电磁阀的动作并且松开为脱水程序作好准备;排水结束后系统控制电机单方向高速运转完成脱水程序;当脱水程序终了系统控制排水电磁阀和电机断电,排水阀复位。2.4洗衣机控制系统原理总图2.5控制功能及过程 洗衣机的三大功能是实现衣服的洗涤、漂洗和脱水,加上进水,我们把这四个洗衣机动作编排成4个代码。打开电源开关,洗衣机将进入洗衣过程选择状态,此时数码管显示00,用户按启动、暂停键可以显示不同的过程代码(在0109之间循环显示以指示选择不同的洗衣过程)。3秒内若无按键动作,蜂鸣器开始鸣叫6下(时间长度共3秒)以提醒用户;开始进入相应过程的洗衣程序,此后启动暂停按钮只起暂停或继续洗衣程序执行作用,数码管显示完成本次洗衣的剩余时间。 三大功能中的漂洗实际上是由洗涤和脱水功能组成的,如一次标准洗涤过程(过程代码)中,漂洗功能包括了时间均为2分钟的脱水、洗涤、脱水、洗涤。因此,在编写控制程序实现三大功能时只需编写洗涤和脱水功能的代码,然后作为子程序调用即可。完成一次洗衣过程所需的动作有:(1)进水动作进行洗涤时,盛水桶内的水量必须到水位设定要求。而水位的高低可以通过调节水位开关来实现。洗衣机的进水和水位判断是由水位开关和进水阀的开合来进行控制的。当桶内没有水或水量达不到设定水位时,单片机程序将控制进水阀闭合,开始注水;当桶内的水位达到设定水位时。水位开关受压闭合;程序就可进入下一步(洗涤)处理。若打开进水阀后20分钟内不能进水,则将出错报警,用户只能关闭洗衣机电源进行相关检查后方能重新开机。(2)排水动作进入脱水动作前应先排水。为了避免空排水造成时间浪费以及排水不完而带水脱水造成对电机的损害,洗衣机能够根据实际水量(由水位开关决定)对排水时间进行动态控制。设排水开始至水位压力开关断开时所需的时间为D,则总的排水时间为2DT(T取60秒,总的排水时间不应大于190秒)。因此,在开始排水时,控制程序将同时启动计时器,在D秒后若收到水位压力开关断开的信号,则再排水DT时间后,就可以结束排水进入脱水动作。若D大于65秒,说明排水系统有故障;洗衣机将停止动作并蜂鸣报警,提醒用户排除故障(安全开关打开又闭合认为是一次故障詯处理)后再继续。需要注意的是:排水结束后排水开关还是打开的。(3)洗涤动作洗涤动作指的是电机周期性的“正转停止反转停止”。不同的洗衣过程,控制电机执行“正转停止反转停止”的时间是不同的,标准洗涤过程可取:正转1.6秒0.56秒反转1.6秒停止0.56秒。对于轻柔洗涤和强力洗涤过程,这个时间要作相应调整。洗涤过程中若遇水位开关断开或用户要求补水(重新选择水位),则要停止洗涤动作并打开进水阀进水直至水位满足要求再继续。此外,洗涤动作的最后15秒,电机还要进行快速的停止正转停止反转停止处理,以避衣服拧成一团。程序流程见洗涤子程序(4)脱水动作排水结束后进入脱水动作,脱水是通过电机的正转来实现的,同时要求排水阀一直打开,也正是由于排水阀的打开,才使脱水时的电机正转速度不同于洗涤时的电机正转速度。(通过机械装置实现)。脱水分间隙脱水和长脱水,间隙脱水时间为30秒,电机按“正转停止”的周期循环动作,时间为“正转4秒停止3秒”。长脱水时电机将一直调整正转,所需时间由用户选择的过程决定,一般有3分钟和5分钟的长脱水时间。进入脱水前若洗衣机桶盖是打开的,则进行鸣叫、显示告警,直至用户合上桶盖后,才继续进行脱水。脱水结束后,再经过30秒延迟后关闭排水阀。脱水时若遇暂停,则重启时需延时5秒后再进行电机动作,目的是用于同步机械动作的滞后。程序流程见脱水子程序流程图。(5)LED的显示 89C51对可以分为静态和动态两种。静态显示的特点是各LED管能稳定地同时显示各自的字形;动态显示是指各LED轮流地一遍一遍显示各自字符,人们由于视觉器官的惰性,从而版的是各LED似乎在同时显示不同字形。(6)其它动作为了有更好的人机交互,进行洗衣时数码管要显示剩余时间(单位为分钟),并且以1秒的频率不停地闪烁。此时如果按下暂停按钮,则时间显示不闪烁。随着洗衣过程的进行,显示时间将不断减少直至洗衣程序完成后显示“0”。剩余时间的获得可以通过如下方法:根据用户所选的过程代码可以获得包含这一过程的所有动作(9个过程所包含的动作需要的时间见功能选择代码表),由于相应的动作有预设的时间(动作对应的代码和预设时间见表动作代码表),因此,根据本次过程余下的动作可以通过查表的方式获取剩余时间。三、洗衣机控制系统软件设计1)主程序设计 根据硬件设计要求,控制主程序流程图如图所示。洗衣机通电之后,单片机上电,首先进行程序的初始化,包括定时器O、外部中断O、外部中断l的初始化,以及各参数初值的设定。默认洗衣强度为“标准洗”,漂洗次数3次。然后扫描K2、K3、K4、K5键的状态,确定洗衣强度R2、洗衣时间R3和漂洗次数R4。洗衣机处于待命状态,控制指示灯显示洗衣强度,液晶显示预设洗衣时间。当发现启动键K2按下,洗衣机从待命状态进入工作状态。完成进水洗涤脱水漂洗的循环过程。当洗衣结束时,控制蜂鸣器发声。开始结束报警?脱水、漂洗程序洗涤程序进水程序启动?初始化查询洗衣强度R2的值查询洗衣时间R3的值查询漂洗次数R4的值 主程序流程图进水程序设计 当P30=1时,打开进水电磁阀开始进水。当水位到达要求时,P10=0,即水位开关K1闭合,关闭进水电磁阀,P30=0,迸水结束; 洗涤过程程序设计电机正反转均为10S,根据R2的值确定洗衣强度、洗衣时间R3以及电动机的间歇时间。洗衣开始电机正转10s电机停转延时1s进入漂洗脱水程序电机反转10s剩余时间=0R2=0?洗涤过程流程图脱水、漂洗过程程序设计 脱水前先打开排水阀排水1min。然后启动电动机脱水1min,并保持排水阀开启,然后停止脱水。接着判断漂洗次数即R4的值,若R4为0则洗衣结束,开蜂鸣器提醒洗衣结束,系统返回初始待命状态;若R4不为0,则再次执行进水操作,进入下一循环。程序如下图所示:关脱水,关脱水阀漂洗脱水开始开排水闸开电动机脱水继续漂洗关蜂鸣器开蜂鸣器报警R4=0?脱水、漂洗程序流程图2)内部定时中断设计工作过程中所需的各种计时均有定时器0定时中断服务64程序提供。单片机晶振频率12Mllz,定时器0选择工作方式1,设置时间常数,每01S中断次。中断处理程序流程图如下图所示。中断入口显示子程序计数清零秒值加1秒值清0分值减1是否到1s是否到1民、中断返回 内部定时中断流程图(3)外部中断设计为了防止外部电压过高或过低对洗衣机的电器及控制硬件产生破坏,用外部中断0进行保护。当电压过高或过低时,引起外部中断0,洗衣机停止一切动作,进入保护状态。用外部中断1来实现洗衣过程停止工作。在洗衣过程中,当暂停键K0按下时,引起外部中断1,转入中断1处理程序。中断l处理程序将使洗衣机停止工作,并将停止前的状态存储起来。当按下启动键K2时,洗衣机又恢复工作。程序设计流程图中断入口相关寄存器进栈暂停否?相关寄存器出栈置外部中断控制字中断返回外部中断流程图4、 PCB版图:五、汇编语言洗衣机系统的汇编程序FLAG EQU 45H ;DS18B20是否存在标志 DQ EQU P1.3 ;DQ引脚由P2.5控制 ORG 0000HLJMP STARTORG 0003HLJMP PINT0ORG 0013HLJMP PINT1ORG 001BHLJMP P_T1ORG 0030HSTART: MOV SP,#60HCLR P3.4 ;关进水阀 CLR P3.5;关排水阀 CLR P3.6;电机不转动 CLR P3.7 ;电机不转动 MOV IP,#01H;INTI为高优先级 SETB EA;CPU允许中断 SETB IT0;跳变触发方式 SETB IT1;跳变触发方式 MOV TH1,#3CHMOV TL1,#0B0HMOV 40H,#20;1S定时 MOV TMOD,#10HSETB EX1;允许INT1中断SETB EX0;允许INT0中断 SETB ET1;允许定时器T1中断 MOV 4DH,#05 ;等待5秒,供用户选择手动还是 DENDAI:LCALL DL1S ;自动,若选择手动并设置自动模式下的哪种 DJNZ 4DH,DENDAI ;工作方式,单洗,单漂,长脱水 MOV P1,#0F6HLCALL DL1SMOV P1,#0FFHMOV 4FH,#250BACK:JB P1.4,KSSM1;P1.4为1即使自动模式,转到扫描键盘 JNB P1.5,TODANXI ;P1.5为0即为选择单洗,转到单洗JNB P1.6,TOPX;P1.6为0即为选择漂洗,转到漂洗JNB P1.7,TOCTS;P1.7为0即为选择长脱水,转到长脱水JMP BACK;没有检测到手动选择的是什么,换回重新检测;*手动单洗程序* TODANXI:SETB TR1MOV 30H,#07 ;状态显示参数,显示7 MOV 31H,#13 ;状态显示参数,显示d,d7代表单洗 MOV 2AH,#18H ;电机动作24分钟 MOV 2CH,#05H ;进排水4分钟 MOV 25H,#36;设正反转次数 MOV 26H,#08;转动8+10s MOV 27H,#02;停2秒 MOV 28H,#40;进排水2分钟,40+20x4 LCALLDJSCZLCALL DANXIJNB P1.6,TOPXLJMP THEND;*手动漂洗程序* TOPX:SETB TR1MOV 30H,#07 ;状态显示参数,显示7 MOV 31H,#18 ;状态显示参数,显示P,P7代表漂洗 MOV 2AH,#0EH ;电机动作14分钟 MOV 2CH,#05H ;进排水4分钟 MOV 28H,#40;进排水2分钟,40+20x4 LCALL DJSCZLCALL PXJNB P1.7,TOCTSLJMP THEND;*手动长脱水* TOCTS:SETB TR1MOV 30H,#16;状态显示参数,显示H MOV 31H,#12;状态显示参数,显示C,CH代表长脱水 MOV 2AH,#04H ;脱水4分钟 MOV 2CH,#00HLCALLDJSCZLCALL CTSLJMP THEND ;*键盘扫描1*KSSM1:MOV P2,#0F0H ;置P2.0P2.3为输出,P2.4P2.6为输入MOV A,P2ANL A,#0F0HXRL A,#0F0HJZ NO_KEY1 ;A为0则无按键LCALL DL20MS ;延时消抖MOV A,P2ANL A,#0F0H ;重读键盘XRL A,#0F0HJZ NO_KEY1 ;A为0则无按键MOV R2,#11110111B ;列扫描初值LSM1:MOV A,R2MOV P2,AMOV A,P2ANL A,#11110000BMOV R3,ACJNE A,#0F0H,KEY1;有键按下则跳转MOV A,R2RR AMOV R2,AXRL A,#01111111BJNZ LSM1NO_KEY1:LJMP NEXT3KEY1:MOV A,R2ANL A,#0FHORL A,R3MOV R4,ASHIFANG1: MOV A,P2ANL A,#0F0HXRL A,#0F0HJNZ SHIFANG1LCALL DL20MSMOV A,P2ANL A,#0F0HXRL A,#0F0HJNZ SHIFANG1MOV A,R4CJNE A,#0D7H,NEXT1LJMP FANGSHI1NEXT1:CJNE A,#0DBH,NEXT2LJMP FANGSHI2NEXT2:CJNE A,#0DDH,NEXT3LJMP FANGSHI3NEXT3: DJNZ 4FH,KSSM1 LJMP MORENMOSHI;跳到默认模式 ;*实际键盘扫描2*KSSM2:MOV P2,#0F0H ;置P2.0P2.3为输出,P2.4P2.6为输入MOV A,P2ANL A,#0F0HXRL A,#0F0HJZ NO_KEY2 ;A为0则无按键LCALL DL20MS ;延时消抖MOV A,P2ANL A,#0F0H ;重读键盘XRL A,#0F0HJZ NO_KEY2 ;A为0则无按键MOV R2,#11110111B ;列扫描初值LSM2:MOV A,R2MOV P2,AMOV A,P2ANL A,#11110000BMOV R3,ACJNE A,#0F0H,KEY2;有键按下则跳转MOV A,R2RR AMOV R2,AXRL A,#01111111BJNZ LSM2NO_KEY2:LJMP KSSM2KEY2:MOV A,R2ANL A,#0FHORL A,R3MOV R4,ASHIFANG2: MOV A,P2ANL A,#0F0HXRL A,#0F0HJNZ SHIFANG2LCALL DL20MSMOV A,P2ANL A,#0F0HXRL A,#0F0HJNZ SHIFANG2MOV A,R4CJNE A,#0B7H,NEXT4LJMP SHUIWEI1NEXT4: CJNE A,#0BBH,NEXT5LJMP SHUIWEI2NEXT5:CJNE A,#0BDH,NEXT6LJMP SHUIWEI3NEXT6:CJNE A,#77H,NEXT7LJMP SHUIWEI4NEXT7: LJMP KSSM2 ;*默认模式* MORENMOSHI: MOV 2AH,#2AH;设置时间1的参数42分钟 MOV 30H,#0BH;显示方式为b代表标准 MOV 25H,#36;正反转次数 MOV 26H,#08;转动8+10s MOV 27H,#02 MOV 2CH,#0DH;时间2,为13分钟 MOV 31H,#01;显示水位为1 MOV 28H,#50;进排水时间,50s+80s LCALL XYCHX RET;*自动情况下方式一即为标准模式*FANGSHI1 : MOV 2AH,#2AH;设置时间1的参数42分钟 MOV 30H,#0BH;显示方式为b代表标准 MOV 25H,#36;正反转次数 MOV 26H,#08;转动8+10s MOV 27H,#02;停两秒 LCALL KSSM2;调用键盘扫描程序,选择水位 LJMP THEND;*自动情况下方式二,即为轻柔模式*FANGSHI2: MOV 2AH,#24H;设置时间1的参数24分钟 MOV 30H,#25;显示方式为q代表轻柔 MOV 25H,#36;正反转次数 MOV 26H,#03;转动3+10s MOV 27H,#02;停两秒 LCALL KSSM2;调用键盘扫描程序,选择水位 LJMP THEND;*自动情况下方式三,即为快洗模式* FANGSHI3: MOV 2AH,#1EH ;设置时间1的参数30分钟 MOV 30H,#03;显示方式为3代表快洗 MOV 25H,#18;正反转次数 MOV 26H,#08;转动8+10s MOV 27H,#02;停两秒 LCALL KSSM2;调用键盘扫描程序,选择水位LJMP THEND;*水位一* * SHUIWEI1: MOV 2CH,#0DH;时间2,为13分钟 MOV 31H,#01;显示水位为1 MOV 28H,#50;进排水时间,50s+80s LCALL XYCHXRET;*水位二* SHUIWEI2: MOV 2CH,#0CH;时间2,为12分钟 MOV 31H,#02;显示水位为2 MOV 28H,#40;进排水时间,40s+80s LCALL XYCHX RET ;*水位三* SHUIWEI3: MOV 2CH,#0BH;时间2,为11分钟 MOV 31H,#03;显示水位为3 MOV 28H,#30;进排水时间,30s+80s LCALL XYCHXRET ;*水位四* SHUIWEI4: MOV 2CH,#0AH;时间2,为10分钟 MOV 31H,#04;显示水位为4 MOV 28H,#20;进排水时间,20s+80s LCALL XYCHXRET;*洗衣程序* XYCHX: SETB TR1;开定时器 LCALL DANXI;调单洗程序 LCALL PX;调漂洗程序 LCALL CTS;调长脱水程序 RET ;*单洗程序 *DANXI: LCALL DJSCZ ;倒计时初值 LCALL JSH;调进水程序 GOON2: MOV 32H,#07MOV 33H,#13LCALL ZFZ;调正反转程序 DJNZ 25H,GOON2;循环几次 LCALL PSH;排水 RET;*漂洗程序 * PX:MOV 29H,#02;循环2次 LCALL DTS;短脱水 GOON3: LCALL JSH;进水 LCALL DXD;短洗涤 LCALL PSH;排水 LCALL DTS;短脱水 DJNZ 29H,GOON3RET;*长脱水程序(4分钟) * CTS:MOV 32H,#16;状态显示查表参数,显示HMOV 33H,#12;状态显示查表参数,显示C,表示长脱水 MOV 2BH,#12;设置调用延时显示程序的次数 SETB P3.5;开排水阀 SETB P3.6CLR P3.7;开始脱水 LCALL YSXS;延时并显示 CLR P3.6;停止脱水 CLR P3.5;关排水阀 LCALL SHGTS;声光提示 RET;*进水程序* JSH:MOV 32H,#16;状态显示查表参数显示H MOV 33H,#07;状态显示查表参数显示7,7H代表进水 MOV 24H,28H;进水时间参数 SETB P3.4;开排进阀 LCALL JPSHYS;延时并显示 CLR P3.4;关进水阀 LCALL SHGTS;声光提示 RET; *短脱水程序(2分钟)* DTS: MOV 32H,#16;状态显示查表参数,显示H MOV 33H,#13;状态显示查表参数,显示d,dH代表短脱水 MOV 2BH,#06;设置调用延时显示程序的次数 SETB P3.5;开排水阀 SETB P3.6CLR P3.7;开始脱水 LCALL YSXS;延时并显示 CLR P3.6;停止脱水 CLR P3.5;关排水阀 LCALL SHGTS;声光提示 RET;*短洗程序 4分钟* DXD:MOV 32H,#13;状态显示查表参数 MOV 33H,#13;状态显示查表参数 MOV 25H,#08H;正反转次数 MOV 26H,#03H;3+10s MOV 27H,#02H;停两秒 GOON1:LCALL ZFZDJNZ 25H,GOON1;正反转8次 LCALL SHGTS;声光提示 RET;*排水程序* PSH:MOV 32H,#16;状态显示查表参数,显示H MOV 33H,#18;状态显示查表参数,显示P,PH代表排水 MOV 24H,28H;进水时间参数 SETB P3.5;开排进阀 LCALL JPSHYS;延时并显示 CLR P3.5;关进水阀 LCALL SHGTS;声光提示 RET ;*进排水延时并显示程序* JPSHYS:MOV R7,#04H ;调4次显示,共80s GO4:LCALL T01 LCALL T02DJNZ R7,GO4;4次完没有 RET;*脱水延时显示 * YSXS:NOP GO3:LCALL T01LCALL T02DJNZ 2BH,GO3RET ;*20ms延时子程序* DL20MS:MOV 20H,#10 DELY1:MOV 21H,#250 DELY2:NOP NOPNOP NOPNOPNOPDJNZ 21H,DELY2DJNZ 20H,DELY1RET;*1s延时子程序 * DL1S:MOV 22H,#50DELY3:LCALL DL20MSDJNZ 22H,DELY3RET;*t0延时子程序* TO:NOP GO5:LCALL DL1S DJNZ 24H,GO5RET ;*1ms延时程序* DL1MS:MOV 23H,#250DELY4:NOPNOPDJNZ 23H,DELY4RET;*t01延时显示程序 * T01:MOV 47H,#10GO10:MOV R6,#00 LCALL DO18B20 GO1:LCALL XSCX1;调显示程序1 CJNE R6,#01,GO1DJNZ 47H,GO10RET;*t02延时显示程序2* T02:MOV R6,#00GO2:LCALL SHJFLLCALL XSCX2CJNE R6,#10,GO2RET ;*正反转程序* ZFZ:MOV 24H,26HSETB P3.6CLR P3.7LCALL T01;正转10秒 MOV P1,#07HLCALL TO;正转8或3秒 CLR P3.6;停 MOV 24H,27H LCALL TO;停2秒 MOV 24H,26HSETB P3.7LCALL T02;反转十秒 MOV P1,#07HLCALL TO;反转8或3秒 CLR P3.7MOV 24H,27H LCALL TO;停2秒 RET;*计算倒计时初值* DJSCZ:MOV A,2AHADD A,2CHDEC AMOV 42H,AMOV 41H,#60RET;*定时到中断* P_T1:PUSH ACCPUSH PSWMOV TH1,#3CH ;重置计时初值 MOV TL1,#0BHDJNZ 40H,TODO1;到一秒使秒单元减一 MOV 40H,#20INC R6DEC 41HMOV R2,41HCJNE R2,#00,TODO1MOV R3,42HCJNE R3,#00,TODO2CLR TR1LJMP TODO1TODO2:DEC 42H ;到一分钟使分单元减一 MOV 41H,#60TODO1:POP PSWPOP ACCRETI ;*时间分离并缓存 * SHJFL:MOV A,41H ;将秒分离到两个单元里 MOV B,#10 ;一个存放个位,一个存放十位DIV ABMOV 36H,BMOV 37H,AMOV A,42HMOV B,#10 ;将分钟数分离到两个单元 DIV AB;一个存放各位,一个存放十位 MOV 38H,BMOV 39H,ARET ;*声光提示程序 *SHGTS:MOV P1,#06HLCALL DL1S ;蜂鸣一秒 MOV P1,#07HLCALL DL1S;亮灯一秒 MOV P1,#00HRET;*显示程序一* XSCX1:MOV R0,#30H ;数据首地址 MOV P1,#05H ;选显示数码管 LCALL DISP; 显示模式 INC R0MOV P1,#04HLCALL DISP ;显示水位 INC R0MOV P1,#03HLCALL DISP;显示状态 INC R0MOV P1,#02HLCALL DISP;显示状态 INC R0MOV P1,#01HLCALL DISP ;显示温度 INC R0MOV P1,#00H LCALL DISP ;显示温度 RET;*显示程序二* XSCX2:MOV R0,#36H ;数据首地址 MOV P1,#05H ;选择数码管 LCALL DISPINC R0;改地址MOV P1,#04H;改数码管 LCALL DISPINC R0MOV P1,#02HLCALL DISPINC R0MOV P1,#01HLCALL DISPRET;*位显示程序* DISP:MOV DPTR,#LED_TABMOV A,R0MOVC A,A+DPTRMOV P0,ALCALL DL1MSRETLED_TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDB 76H,38H,73H,31H,3EH,6EH,40H,80H,00H,67H ;*18B20的驱动机温度转换程序* DO18B20:MOV 50H,#04GOTO: LCALL RE_TEMP ;对传感器设置及读取 LCALL TURN ;转化温度子程序 LCALL DISPLAY ;数据转换缓存程序 DJNZ 50H,GOTO ;循环 RETRE_TEMP: SETB DQ ;对DS18B20初始化及读取 ACALL RESET_1820 ;调用复位子程序 JB FLAG, ST ;判断DS1820是否存在? RET ;*复位子程序 * RESET_1820: SETB DQ NOP CLR DQ ;主机发出延时501微秒的复位低脉冲 DLY: MOV R0,#250 TTO2: DJNZ R0,TTO2 ;然后拉高数据线,等待DS18B20回应 SETB DQ NOP NOP NOP MOV R0,#35 T2: JNB DQ ,T3 ;等待DS18B20回应,回应0电平 DJNZ R0, T2 ;等70us JMP T4 T3: SETB FLAG ;置标志位,表示DS1820存在 JMP T5 T4: MOV FLAG,#00H ;清标志位,表示DS1820不存在 JMP T7 T5: MOV R0,#120 T6: DJNZ R0,T6 ;时序要求延时60-240us时间 T7: SETB DQ RET ;*子程序温度传感工作程序 * ST: ; DS18B20存在 MOV A,#0CCH ;跳过ROM匹配 p217 ACALL WRITE_1820 ;写入数据 MOV A,#44H ;发出温度转换命令 ACALL WRITE_1820 ;写入数据 ACALL RESET_1820 ;准备读温度前先复位 MOV A,#0CCH ;跳过ROM匹配 ACALL WRITE_1820 ;写入数据 MOV A,#0BEH ;发出读温度命令 ACALL WRITE_1820 ;写入数据 ACALL READ_1820 ;读出温度数据 RET ;*写入程序 * WRITE_1820: ;写入DS18B20(有具体的时序要求) MOV R2,#8 ;一共8位数据 CLR C WR1: CLR DQ ;总线拉低,开始写入 MOV R3,#8 TTO: DJNZ R3,TTO ;保持16微秒以上 RRC A ;把字节DATA分成8个BIT环移给C MOV DQ, C ;写入一个BIT,地位在前,高位在后 MOV R3,#23 TTO1: DJNZ R3,TTO1 ;等待46微妙 SETB DQ ;重新释放总线 NO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上市公司员工购车补贴与股权激励结合合同
- 电动汽车充电桩项目投资合作与分红协议
- 建筑工程退款及合同履行协议范本
- 城市建设研学合同书:城市规划与发展趋势研究
- 历史专业考试题及答案
- 维修专业面试题目及答案
- 俄语专业四级试题及答案
- 英语专业知识试题及答案
- 消防安全治理培训课件
- 传送带项目汇报
- 《青霉素过敏试验》课件
- 广东省地质灾害危险性评估实施细则(2023年修订版)
- 包装机营销策划方案
- 小学生着装礼仪课件
- 九年级数学知识点【北师大版】:一元二次方程的根的代数式求值综合问题(培优强化30题)(原卷版)
- 军队文职专用简历(2023年)
- 四年级数学上册【近似数】专项练习题
- 让子弹飞 剧本
- 新型活页式、工作手册式教材编写理论依据和编写体例
- 《税费核算与智能申报》课件全套 中职 导言 税收概述 学习情境1-7 增值税核算与智能申报-社保金及住房公积金核算与智能申报
- 血液标本采集与血涂片制备教学课件
评论
0/150
提交评论