长安大学电气专业单片机洗衣机课程设计_第1页
长安大学电气专业单片机洗衣机课程设计_第2页
长安大学电气专业单片机洗衣机课程设计_第3页
长安大学电气专业单片机洗衣机课程设计_第4页
长安大学电气专业单片机洗衣机课程设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机课程设计报告姓 名:陈得维班 级:32040901学 号: 3204090105专 业:电气工程及其自动化时 间:2011年12月28日指导教师:段晨东、张文革目 录一 、摘要2二、前言2三、方案分析与论证33.1各个部分硬件设计原理说明33.2各个部分软件设计原理说明43.3各部分程序框图7四、调试与实现124.1功能实现过程(图释)124.2 调试出现的问题及解决办法14五、总结14六、参考文献15七、附录157.1电路原理图157.2程序清单187.3元件明细表36 一 、摘要设计要满足如下要求:实现6种模式的互动选择:标准,轻柔,快洗和单独地进行洗涤、漂洗和脱水操作,被选中的模式

2、用LED显示器表明。实现不同模式下的洗衣过程,根据衣物多少允许用户设置4种的水位,被选中的水位用LED显示器表明。当洗衣机启动后,上水电磁阀打开注水,当水到达设定的限位时,上水电磁阀断电,注水过程停止,启动电机全自动控制洗衣操作,整个过程的进行按时间控制,时间自定。液位检测和控制:使水位限定在某一个给定的液位范围内,当水位越限时打开下水电磁阀放水,不启动洗衣过程,待满足要求后,投入运行。当投入洗衣量大于洗衣机额定容量时,控制系统应报警,不启动洗衣过程。待满足要求后,投入运行。 本设计通过采用AT89C51单片机,通过74LS139,水位检测机构,LED数码显示器,LED发光二极管,独立键盘,继

3、电器,进排水阀等硬件实现了上述功能要求。 应用表明该系统具有水位选择,模式设定,水位越限检测,过容及脱水安全保护等功能。其性能可靠,提到了效率,降低了能耗,减少了噪音。关键字:89C51RC 智能家电 自动控制 洗衣机 二、前言单片机又称微控制器,或称嵌入式控制器。而现在的智能家电无一例外是采用微控制器来实现的,所以家用电器是单片机应用最多的领域之一。它是家用电器实现智能化的心脏和大脑。  由于家用电器体积小,故要求其控制器体积更小以便能嵌入其结构之中。而家用电器品种多,功能差异也大,所以又要求其控制器有灵活的控制功能。单片机以微小的体积和编程的灵活性而产生多种控制功能,完全可以满足

4、家用电器的需求。波轮式全自动洗衣机是家用电器领域的重要一员,在全自动洗衣机市场中占有很大的比例,其中绝大多数品是用单片机来实现的AT89C52单片机是ATMEL公司8位单片机系列产品之一,是一种20引脚双列直插式芯片。它内含4KB可反复烧录的FLASH存储器,RAM字节也有128个,15个I/O口,5个中断,2个定时,已经可以满足程序的需要,指令也和51系列兼容,基于上述特点,选择它来设计一台智能洗衣机,完全可以达到以下的功能: 1、洗衣程序功能:含6种独立程序,即标准洗衣程序、轻柔洗衣、快洗、单次洗衣、漂洗、脱水功能; 2、特殊功能:安全保护、防振、间歇工作、声光显示功能

5、。三、方案分析与论证3.1各个部分硬件设计原理说明全自动洗衣机由单片机AT89C51为核心加上有关集成电路及元器件组成。从图中看出,这个全自动洗衣机控制逻辑电路相当简单。 全自动洗衣机的工作部件有3个,这就是电机.进水阀和排水阀。电机是洗衣机的动力源,它的转动带动洗衣桶和波轮的转动,从而时现对衣物的洗涤。进水阀用于控制洗衣机的进水量。排水阀用于控制排水。电机在脱水时还高速旋转带动衣物脱水。 电机的状态有3种,即正转.反转及停止状态。电机一般工作在这三种状态的不断转换之中,从而实现洗涤。但在脱水时,只工作在正转高速状态。 进水阀和派排水阀则只有开.关这两种状态。 从控制电路中可以看出:AT89C

6、51的P1端口中的P0.0P0.3共四条I/O线通过4块电磁继电器分别直接驱动洗衣机的这些工作部件。电磁继电器是一种常用继电器,内有电磁铁心及磁力开关,通电就可使开关切换。之所以选用这个器件,是因为它一方面可使电路进一部简化,另一方面还可使强.弱两类电完全隔离,保证主板的安全。  ULN2003A为7相反相驱动器,用其作为中间反相器,其中的4个反相器可分别驱动4个SP1110继电器,1个驱动蜂鸣器。ULN2003A还有隔离功能,可保护主板。 74LS139为双2-4线译码器,选用它可解决CPU I/O线数量的不足。从控制要求可知,洗衣机有4种不同的显示来加以区别。74LSW139双2

7、-4线译码器仅占用CPU的P3.7和P3.6两口线即可提供4种不同显示的驱动, 其逻辑关系是:P3.7,P3.6为“11”时D9亮,指示高水位;为“10”时D8亮,指示中2水位;为“01”时D7亮,指示中1水位;为“00”时D6亮,指示低水位。74LS47为共阳极BCD译码器,可把BCD码译为共阳极七段码。洗衣机的三大功能是现衣物的洗涤,漂洗,脱水,而这三个可形成6种过程(或更多)在本设计中只有到6种,洗衣机的过容安全保护和脱水安全保护及防震动功能采用中断处理方式。这两个中断分别对应于CPU的外部中断“0”和外部中断“1”。中断为下跳沿触发分别对k8和K9进行监测。开盖(安全保护)或不平衡(防

8、振动)中断信号通过K9加到P3.3。本系统对开盖和不平衡中断采取相同的处理方法,因此,共用外部中断“1”。 在洗衣机未进入工作状态期间,P1.0为输入线,用于监测启动键的状态,当启动键按下时,洗衣机即进入工作状态。P1.1,P1.3被设为输入键分别用于模式设定和水位设定,接K2和K4,确定后课按K1确认并进入洗衣状态。D6为低水位,D7为中1水位,D8为中2水位,D9为高水位。在洗衣机进水期间,P1.4被用作输入线,用于监测水位开关状态(K5),P1.5用于监测越线水位开关(K6)为CPU提供洗衣机的水位信息;在洗衣机高速脱水期间,当发生开盖和不平衡中断时,P1.2为输入线(盖开关K3),用于

9、撤消中断请求信号。CPU的P0.4线通过ULN2003A用于驱动蜂鸣器发出各种告警信号。P1.6(K7)做输出线用于脱水完成检测。4 5脚外接12Hz的晶振。1脚通过10uF电容接到+5v电源,可实现上电自动复位。洗衣机的洗衣模式可通过K2贱进行循环选择。洗衣机水位可通过K4键循环选择。洗衣机的水位可通过D6D9进行显示。脱水期间系统在响应开盖或不平衡终止后,CPU采取软件查询的方式方式通过P1.2线对盖开关进行监测以确定洗衣机是否继续进行脱水操作。D1为洗涤脱水指示;D2为进水指示;D3为排水指示;D4代表进水阀;D5代表出水阀。D16D20为续流二极管,用于保护电磁阀和蜂鸣器。3.2各个部

10、分软件设计原理说明由AT89C51控制的全自动洗衣机的工作主程序框图如附图2-1所示。从主程序框图可以看出,这个控制程序也较为简单,所以,占用的存储器容量不大。 从程序框图中可以看出程序的基本流程,系统上电复位后,首先进行初始话,按K1启动后默认标准洗衣工作程序和低水位,然后扫描K4,K2和启动键K1,这时洗衣机处于待命状态。通过K2,K4可分别修改洗衣工作程序和水位。扫描过程中当发现启动键K1按下时,洗衣机即从待命状态进入工作状态。 洗衣机进入工作程序后,系统首先根据RAM中R4单元的特征字判断洗衣机的洗衣工作程序,若特征字为00H则为标准洗衣程序、01H则为轻柔洗衣、02快洗、03单次洗衣

11、、04漂洗、05脱水程序。(水位和模式选择如框图1-1) 洗衣机的三大功能是 实现衣服的洗涤、漂洗和脱水,进入工作状态后跳到所选工作程序,所有工作程序都是对这三大功能的调用和复写只是时间代码和洗涤力度不同,所以完成一次洗衣过程所需的动作为下列过程或其中几种. (1)进水动作 进行洗涤时,盛水桶内的水量必须达到水位设 定要 求。洗衣机的进水和水位 判断,是 由水位开关K5和进水阀的开合来进行控制的。当桶内没有水或水量达不到设定水位时,单片机程序将控制进水阀打开,开始注水;当桶内的水位达到设定水位时,水位开关K5受压闭合,程序就可进入下一步 (洗涤)处理。若水位越线即K6闭合则控制排水阀打开进行排

12、水直到K5打开为止。进入下一过程。 (2)排水动作 进入脱水动作前应先排水。为了避免空排水造成时间浪费以及排水不完而带水脱水造成对电机的损害,洗衣机能够根据实际水量 (缸底水位检测开关K7决定)对排水进行动态控制。K7打开则排水完成,关闭排水阀。 (3)洗涤动作 洗涤动作指的是电机周期性的 “正转 一停止 一反转 一停止 “。不 同的洗衣过程 ,控制 电机执行“正转 一停止 一反转 一停止“的时间是不同的,标准洗涤过程可取:正转4秒 一停止2秒 一反转4秒 一停止2秒。对于轻柔洗涤过程,这个时间要作相应调整为正转3秒 一停止2秒 一反转3秒 一停止2秒。 (4)脱水动作 排水结束后进入脱水动作

13、,脱水是通过电机的正转来实现的,同时要求排水阀一直打开,也正是由于排水阀的打开,才使脱水时的电机正转速度不同于洗涤时的电机正转速度(通过机械装置实现)。脱水分短脱水和长脱水,短脱水时间为 2分钟。脱水时电机将一直高速正转,一般5分钟的长脱 时间。进入脱水前若洗衣机桶盖是打开的,则进行呜叫、显示 警。进 行脱水时 若遇洗衣机桶盖打 开或脱水不平衡,则暂停脱水并进行 显 告警,直至用户合上桶盖后或调整衣物后,才继续进行脱水。脱水结束后,进入下一动作。 (5)抗干扰设计 在设计中,我们将软件抗干扰的重点放在了C P U抗干扰问题上。在洗衣机洗涤的过程中, 如果干扰强烈, 干扰就很可能通过三总线扰乱

14、C P U按正常流程执行这些程序。 我们抗干扰的目的就是发现c P u如何受到干扰, 如何拦截失去控制的程序流向, 如何使程序的损失减小, 如何尽可能无扰动地恢复系统正常状态。 这些可以通过以下两个途径实现 指令冗余和软件陷阱。洗衣过程结束后,蜂鸣器将断续呜叫以提醒用户可以取走衣服并关掉洗衣机 的电源。 3.3各部分程序框图 开始水位默认显示启动放开否模式默认显示选模式选水位完成放开否放开否模式标志位加1R4清零显示水位标志位加1 R5清零显示到6否到6否YNNYYNYNNYNNYRET1-1键盘扫描程序流程图开始进水长洗涤排水短脱水脱完进水短洗涤洗完RET总洗完长脱水YNYNYN1-2标准-

15、轻柔洗衣程序流程开始进水洗涤洗完排水短脱水脱完漂洗漂洗RET洗完长脱水YNNYYN1-3快洗程序流程图开始开脱水电磁阀电机正传开INT1中断脱完关脱水电磁阀电机停传关INT1中断RETYN1-4单脱-长脱水程序流程开始保护现场停止脱水报警校正继续脱水停止报警恢复现场RETIYN1-5脱水中断开始进水洗衣洗完RETYN1-6单洗长洗程序流程图开始洗衣完进水排水RETYN1-7漂洗流程图开始进水排水开进水电磁阀开排水电磁阀到预设关进水电磁阀RET关进水电磁阀到预设NYYNYYNN1-8进水过程流程开始电机正传时间到电机停转时间到电机反转时间到电机停转时间到RETYNNYNYNY1-9洗衣-电机正反

16、转流程图开始保护现场报警解除释放现场RETIYN1-10超重中断总程序流程图:开始初始化开中断Key扫描 水位与模式选择择结束蜂鸣所选程序确认完成RET关蜂鸣器;四、调试与实现4.1功能实现过程(图释)单洗过程短洗过程短脱水过程长脱水过程排水过程4.2 调试出现的问题及解决办法开始由于P0口没有上拉电阻而产生电机不能运转的问题,后经老师指导和查阅相关书籍讨论得以解决。1、 上电后,按启动键K1进入设定部分,可通过K2设定洗衣模式,K4设定水位。设定结束后再按K1键进入相应模式并进水到设定位。2、 洗衣机进水指示灯亮,闭合K7,K5后进入下一步(05单脱无此步)3、 洗衣机脱水-洗涤指示灯闪烁,

17、表明进入洗衣状态。4、 进入排水状态后,排水指示灯亮,打开K7则排水结束进入下一步5、 若没有闭合K3在脱水时则不脱水并警报蜂鸣,直到闭合K2,进入脱水(脱水-洗涤指示灯亮,排水指示灯亮)。6、 K8只在确定设定以前起作用,发出中断请求。按下后会蜂鸣报警提醒用户减少洗衣量7、 K9只在脱水是起作用,当抖动厉害时由于抖动按下筒壁外的K9,发出中断请求,报警知K9放开。 五、总结 本文介绍了采用AT89C51单片机对家用洗衣机进行智能控制,经过实际检测,本设计具有结构简单,使用方便,可靠性高等特点。经过本次设计使我对所学单片机知识的得到了深化,能够把知识综合的应用起来而不使像以前一样各个知识点是孤

18、立的不能融会贯通。加强了对实际问题的分析解决能力。在这里我要感谢段老师以及姚超仁,罗春富,朱江和华雪松在设计中给我的帮助。六、参考文献 1. 段晨东 单片机原理及接口技术 2008 清华大学出版社2. 张义和,陈敌北 例说8051 2006 人民邮电出版社3. 张毅刚 单片机应用设计 2002 哈尔滨工业大学出版社4. 李仁 电器控制 2002 机械工业出版七、附录7.1电路原理图进水过程 单洗过程3-5排水过程 短脱水过程 短洗过程长脱水过程7.2程序清单AT89C52RC控制的全自动智能波轮洗衣机程序A_BIT EQU 43H ;存放个位数变量B_BIT EQU 44H ;存放十位数变量F

19、LAG EQU 45H ;DS18B20是否存在标志DQ EQU P1.3 ;DQ引脚由P2.5控制ORG 0000HLJMP STARTORG 0003HLJMP PINT0ORG 0013HLJMP PINT1ORG 001BHLJMP P_T1ORG 0030HSTART: MOV SP,#60HMOV 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;允许

20、INT0中断SETB ET1;允许定时器T1中断BACK: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,#07MOV 31H,#13MOV 2AH,#01H ;电机动作6分钟MOV 2CH,#01H ;进排水40秒MOV 25H,#09;设正反转次数MOV 2

21、6H,#08;转动8+10sMOV 27H,#02;停2秒MOV 28H,#20;进排水40秒,20+20x1LCALLDJSCZLCALL DANXIJNB P1.6,TOPXLJMP THEND;手动漂洗程序TOPX:SETB TR1MOV 30H,#07MOV 31H,#18MOV 2AH,#01H ;电机动作MOV 2CH,#01H ;进排水40秒MOV 28H,#20;进排水20+20LCALL DJSCZLCALL PXJNB P1.7,TOCTSLJMP THEND;手动长脱水TOCTS:SETB TR1MOV 30H,#16;状态显示查表参数MOV 31H,#12;状态显示查表

22、参数MOV 2AH,#01H ;脱水1分钟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,#111

23、10000BMOV R3,ACJNE A,#0F0H,KEY1;有键按下则跳转MOV A,R2RR AMOV R2,AXRL A,#01111111BJNZ LSM1NO_KEY1:LJMP KSSM1KEY1: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,#0

24、DBH,NEXT2LJMP FANGSHI2NEXT2:CJNE A,#0DDH,NEXT3LJMP FANGSHI3NEXT3: LJMP KSSM1KEY_TAB: DB 0EBH,0EDH,0EEH,0DBH,0DDHDB 0DEH,0BBH,0BDH,0BEH;*实际键盘扫描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_KEY

25、2 ;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,AMOV DPTR,#KEY_TABMOV R5,#00ZHAOJZ2:MOV A,R5MOVC A,A+DPTRXRL A,R4JZ SHIFANG2INC R5LJMP Z

26、HAOJZ2SHIFANG2: 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 ;*自动情况下方式一即为标准模式*FAN

27、GSHI1 : MOV 2AH,#07H;设置时间1的参数7分钟MOV 30H,#01;显示方式为1MOV 25H,#06;正反转次数MOV 26H,#08;转动8+10sMOV 27H,#02;停两秒LCALL KSSM2;调用键盘扫描程序,选择水位LJMP THEND;*自动情况下方式二,即为轻柔模式*FANGSHI2: MOV 2AH,#04H;设置时间1的参数04分钟MOV 30H,#02;显示方式为2MOV 25H,#06;正反转次数MOV 26H,#03;转动3+10sMOV 27H,#02;停两秒LCALL KSSM2;调用键盘扫描程序,选择水位LJMP THEND;*自动情况下

28、方式三,即为快洗模式*FANGSHI3: MOV 2AH,#05H;设置时间1的参数05分钟MOV 30H,#03;显示方式为3MOV 25H,#03;正反转次数MOV 26H,#08;转动8+10sMOV 27H,#02;停两秒LCALL KSSM2;调用键盘扫描程序,选择水位LJMP THEND;*水位一* *SHUIWEI1: MOV 2CH,#04H;时间2,为4分钟MOV 31H,#01;显示水位为1MOV 28H,#20;进排水时间,20s+20sLCALL XYCHXRET;*水位二*SHUIWEI2: MOV 2CH,#03H;时间2,为3分钟MOV 31H,#02;显示水位为

29、2MOV 28H,#20;进排水时间,20s+20sLCALL XYCHXRET;*水位三*SHUIWEI3: MOV 2CH,#02H;时间2,为2分钟MOV 31H,#03;显示水位为3MOV 28H,#20;进排水时间,20s+20sLCALL XYCHXRET ;*水位四*SHUIWEI4: MOV 2CH,#01H;时间2,为1分钟MOV 31H,#04;显示水位为4MOV 28H,#20;进排水时间,20s+20s LCALL XYCHXRET;*洗衣程序*XYCHX: SETB TR1;开定时器LCALL DANXI;调单洗程序LCALL PX;调漂洗程序LCALL CTS;调长

30、脱水程序RET;*单洗程序 * DANXI: LCALL DJSCZ ;倒计时初值 LCALL JSH;调进水程序GOON2: MOV 32H,#07MOV 33H,#13LCALL ZFZ;调正反转程序DJNZ 25H,GOON2;循环几次LCALL PSH;排水RET;*漂洗程序 * PX:MOV 29H,#01;循环1次LCALL DTS;短脱水GOON3: LCALL JSH;进水LCALL DXD;短洗涤LCALL PSH;排水LCALL DTS;短脱水DJNZ 29H,GOON3RET ;*长脱水程序(4分钟) * CTS:MOV 32H,#16;状态显示查表参数MOV 33H,#

31、12;状态显示查表参数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;状态显示查表参数MOV 33H,#07;状态显示查表参数MOV 24H,28H;进水时间参数SETB P3.4;开排进阀LCALL JPSHYS;延时并显示CLR P3.4;关进水阀LCALL SHGTS;声光提示RET; *短脱水程序(2分钟)* DTS: MOV 32H,#16;状

32、态显示查表参数MOV 33H,#13;状态显示查表参数MOV 2BH,#06;设置调用延时显示程序的次数SETB P3.5;开排水阀SETB P3.6CLR P3.7;开始脱水LCALL YSXS;延时并显示CLR P3.6;停止脱水CLR P3.5;关排水阀LCALL SHGTS;声光提示RET;*短洗程序1分钟* DXD:MOV 32H,#13;状态显示查表参数MOV 33H,#13;状态显示查表参数MOV 25H,#02H;正反转次数MOV 26H,#03H;3+10s MOV 27H,#02H;停两秒 GOON1:LCALL ZFZDJNZ 25H,GOON1;正反转2次LCALL S

33、HGTS;声光提示RET;*排水程序*PSH:MOV 32H,#16;状态显示查表参数MOV 33H,#18;状态显示查表参数MOV 24H,28H;进水时间参数SETB P3.5;开排进阀LCALL JPSHYS;延时并显示CLR P3.5;关进水阀LCALL SHGTS;声光提示RET;*进排水延时并显示程序* JPSHYS:MOV R7,#01H ;调1次显示,共20s GO4:LCALL T01LCALL T02DJNZ R7,GO4;1次完没有RET;*脱水延时显示 * YSXS:NOP GO3:LCALL T01LCALL T02DJNZ 2BH,GO3RET ;*20ms延时子程

34、序* DL20MS:MOV 20H,#10 DELY1:MOV 21H,#250 DELY2:NOPNOPNOPNOPNOPNOPDJNZ 21H,DELY2DJNZ 20H,DELY1RET;*1s延时子程序 * DL1S:MOV 22H,#50DELY3:LCALL DL20MSDJNZ 22H,DELY3RET;*t0延时子程序* TO:NOP GO5:LCALL DL1SDJNZ 24H,GO5RET;*1ms延时程序*DL1MS:MOV 23H,#250DELY4:NOPNOPDJNZ 23H,DELY4RET;*t01延时显示程序 * T01:MOV 47H,#10GO10:MOV

35、 R6,#00LCALL 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,27HLCALL TO;停2秒MOV 24H,26HSETB P3.7LCALL T02;反转十秒MOV

36、P1,#07HLCALL TO;反转8或3秒CLR P3.7MOV 24H,27HLCALL TO;停2秒RET;*计算倒计时初值*DJSCZ:MOV A,2AHADD A,2CH;DA ADEC AMOV 42H,AMOV 41H,#60RET;*定时到中断* P_T1:PUSH ACCPUSH PSWMOV TH1,#3CHMOV TL1,#0BHDJNZ 40H,TODO1MOV 40H,#20INC R6DEC 41HMOV R2,41HCJNE R2,#00,TODO1MOV R3,42HCJNE R3,#00,TODO2CLR TR1LJMP TODO1TODO2:DEC 42HM

37、OV 41H,#60TODO1:POP PSWPOP ACCRETI;*时间分离并缓存 * SHJFL:MOV A,41HMOV B,#10DIV ABMOV 36H,BMOV 37H,AMOV A,42HMOV B,#10DIV ABMOV 38H,BMOV 39H,ARET;*声光提示程序 *SHGTS:MOV P1,#06HLCALL DL1SMOV P1,#07HLCALL DL1SMOV P1,#00HRET;*显示程序一* XSCX1:MOV R0,#30H ;数据首地址MOV P1,#05H ;选显示数码管LCALL DISPINC R0MOV P1,#04HLCALL DISP

38、INC R0MOV P1,#03HLCALL DISPINC R0MOV P1,#02HLCALL DISPINC R0MOV P1,#01HLCALL DISPINC R0MOV P1,#00HLCALL DISPRET;*显示程序二* 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

39、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;*18B20的驱动机温度转换程序* DO18B20:MOV 50H,#04GOTO: LCALL RE_TEMP ;对传感器设置及读取 LCALL TURN ;转化温度子程序 LCALL DISPLAY ;数据转换缓存程序 DJNZ 50H,GOTO ;循环 RET RE_TEMP: SE

40、TB DQ ;对DS18B20初始化及读取 ACALL RESET_1820 ;调用复位子程序 JB FLAG, ST ;判断DS1820是否存在? RET ;*2.复位子程序 RESET_1820* 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* ST: ; DS18B20存在 MOV A,#0CCH ;跳过ROM匹配 p217 ACALL WRITE_1820 ;写入数据 MOV A,

温馨提示

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

评论

0/150

提交评论