豆浆机单片机课程设计汇本_第1页
豆浆机单片机课程设计汇本_第2页
豆浆机单片机课程设计汇本_第3页
豆浆机单片机课程设计汇本_第4页
豆浆机单片机课程设计汇本_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

...wd......wd......wd...《单片机原理及接口技术》课程设计报告题目:智能小家电(全自动豆浆机)控制系统的设计专业:电气工程及其自动化班级:32040901学号:3204090124姓名:何玉毛授课教师:段晨东时间:2011.12设计要求题目4智能小家电控制系统的设计〔1〕〔一〕功能介绍全自动家用豆类和谷物处理机〔即全自动豆浆机〕具有按预设模式自动粉碎谷物、加热功能、防止溢出、处理完毕报警等根本功能。一般可以处理如豆类、玉米、其他五谷杂粮、蔬菜等多种食品。全自动家用豆类和谷物处理机的处理食品的过程通常为:加热——粉碎1——加热——粉碎2——加热——完成报警,整个加工过程的进展按时间控制。由于食品原料的物理特性不同,在加工处理时采用不同的加工〔过程〕模式,其主要区别在于加热和粉碎时间的长短不同。在工作过程中,被加工的食品液体被限定在某一个给定的液位范围内,当液体加热时泡沫到达溢出液位时,停顿加热,待脱离溢出液位区时继续加热。〔二〕设计参数〔1〕电机5W,24VDC〔2〕加热器500W,220VAC〔3〕加热容器1.25〔4〕电力供给:220VAC〔三〕设计要求〔1〕实现多模式选择。被选中的模式用LED显示器说明〔2〕实现不同模式下的加工过程:加热——粉碎1——加热——粉碎2——加热——完成报警,整个加工过程的进展按时间控制,时间自定〔3〕液位检测和控制:使被加工的食品液体限定在某一个给定的液位范围内,当液体溢出容器或无液体时,报警并断电。〔4〕显示工作模式、加工状态和时间。〔5〕每个动作完成时,通过声光报警提示。〔6〕测量并显示液体温度。〔四〕扩大功能〔1〕在加热阶段进展恒温控制〔2〕PWM调节电机转速目录摘要对于此次课程设计的要求,本设计采用STC89C52来实现全自动豆浆机的各个功能的控制。在本设计中,能实现一下功能:针对食品原料的物理特性不同,在加工处理时采用不同的加工〔过程〕模式,其主要区别在于加热和粉碎时间的长短不同〔其中我用不同颜色的LED灯来表示加热和粉碎过程。〕不同的共工作模式和加热、粉碎时间用数码管表示出来可以实现液位溢出和过低报警〔用拨码开关来模拟〕每个模式完成后报警在豆浆机工作过程中,全部用软件控制。对不同物料的不同处理用处理时间来区分,用定时来完成。防液位溢出和过低用中断方式来实现。但在设计过程中,对于PWM调速和恒温控制没能很好的实现,在后面的学习中,我一定会更加认真地学习理论知识,并与实践相结合,进一步提升自己的能力。在此,感谢在此次课程设计过程中提供帮助的同学,谢谢你们。一,系统分析此次课程设计的题目是:全自动豆浆机。我们采用STC89C52来完成其设计,用不同颜色的LED灯模拟加热与粉碎功能,还有就是用蜂鸣器来完成其报警功能,以中断方式采用拨码开关来实现液位的控制等。1.方案分析与论证:〔1〕模式选择模块:方案一:键盘选择模式方法。通过按下键的键值判断,来跳转到不同的模式。键盘有九个键,最多可以设计九中模式,设计时设计三种模式即可。该方案可行。方案二:定时计数模式方法。设计一个三循环的计数。通过按一下,外部给单片机一个低电平,计数一次。按两下,计数加二,按三下计数加三。按四下后回到按一下的状态。然后通过计数后的数值来选择不同的模式。该方案可行。方案选择:总体来讲,两种方案都挺好。最后,选择模块选择方案一,由于板上有键盘,可以加以运用,也方便实现。计数口可以留着扩展外部事件中断用。〔2〕加热粉碎完成报警模块:方案一:加热和粉碎时都有一定的时间,用延时实现。方案二:加热和粉碎需要的时间可以用定时实现。方案选择:选择方案二,因为加热和粉碎的时间需要用动态扫描的方式显示出来,因此定时可以实现加热和粉碎时的显示,而延时方式不行。〔3〕液位控制模块:液位控制模块可用外部事件中断方式实现。烧干,液体溢出容器功能采用外部事件中断(INTO,P3.2)实现,设为高优先级的中断。加热液位控制功能也采用外部事件(INT1,P3.3)中断实现,设为低优先级。〔4〕扩展计时模块:计时用来动态计量在某种模式下工作了多久,以此来观察还需要多久完成全过程。并且工作过程中有两个报警的状态,由计时的时间大概可以判断属于那种情况。计时还可以检测豆浆机工作的时间是否正常。最后,我采用正计时的方式来实现。二,设计框图1.矩阵式键盘实现的模式选择框图开场开场置置P2为输入有按键按下 N有按键按下Y延时延时20ms消抖 Y有按键按下?有按键按下?按键识别按键识别按键释放?按键释放?Y延时延时20ms消抖Y按键释放?按键释放?Y选择模式1KEY1选择模式1KEY1按下?N选择模式2KEY2选择模式2KEY2按下?N选择模式3KEY3选择模式3KEY3按下?NRETRET2.加热粉碎完成报警及液位控制模块框图开场开场定时加热定时加热定时粉碎定时加热定时加热定时粉碎定时加热定时加热完成报警完成报警RETRETRETRETRETRETRET3.液位溢出或者过低报警框图加热时是否超液位或者液位过低加热时是否超液位或者液位过低N返回继续加热返回继续加热中断,停顿加热,延时适当时间中断,停顿加热,延时适当时间RET'RET'4.显示程序框图开场开场设置显示起始位置设置显示起始位置取显示数据取显示数据查显示数据字型码查显示数据字型码显示显示数据是否显示完数据是否显示完 NYRETRET5.定时程序框图开场开场设置设置TMODTH0,TL0TH0,TL0置初值0允许定时器工作允许定时器工作等待,并调用正计时显示程序及模式显示程序定时器是否溢出等待,并调用正计时显示程序及模式显示程序定时器是否溢出NYRETRET5.主程序框图开场开场主程序初始化主程序初始化调用显示程序,初始化显示调用显示程序,初始化显示090124调用键盘扫描程序,有键按下调用键盘扫描程序,有键按下 NY选择相应模式选择相应模式,并显示。同时显示加热和粉碎的时间及调用正计时程序中断返回调用加热粉碎程序,是否有中断调用加热粉碎程序,是否有中断执行烧干和溢出容器中断程序执行超液位中断程序Y Y执行烧干和溢出容器中断程序执行超液位中断程序 N完成报警,调用所有显示程序完成报警,调用所有显示程序RETRET三,软件模拟初始化其初始值为090124,上电复位后显示模式1其中第一个1表示工作在模式一,后面的09为加热和粉碎各维持9s,后三位为计时局部模式二其中和模式一一样,不同的是加热和粉碎时间不同,还有就是模式三也是一样的方式。液位溢出报警和液位过低报警其中用拨码开关模拟液位的变化,进展声光报警,液位过低也是这种模式。温度当按下4号键,就会显示温度四,硬件调试:1.调试图详相见附录2.问题归纳①中断时,返回的不是原来的状态?解决方案:因为中断里面的程序改变了主程序里面的端口状态,所以返回时不时原来的状态。需要对影响主程序的量进展保护和复原就行了。②通过键盘选择某模式,复位后,必须复位后的瞬间选择其它模式,否则就无法选择其他模式了解决方案:这是因为键盘扫描程序里没有对无按键时的状态进展操作。只要让无按键时,执行重新扫描键盘即可。③在软件里模拟没有问题,但是下载板子里就不行了解决方案:软件、硬件的灵敏度不同,软件里都是理想的,和实际存在一定差距,要结合硬件来调试。在延时、端口方面应该多注意。④数码管显示不要稳定,一直在闪解决方案:改变延时长短,多调试几次,直至稳定。⑤温度一直是85度解决方案:18b20在运行过程中,其第一次读数就是85,应该舍弃第一次读数,让其循环调用。3.总结:在此次课程设计过程中,让我深刻认识到把理论转化为现实的不易,可谓是收益匪浅。通过这次的课设,让我也熟悉了keil和protuse这两个软件,大大的提高了动手能力。过程中,遇到问题是在所难免的,最终那份通过寻求各种帮助将问题解决后的兴奋是令人难忘的。特别是当我看着自己辛苦两周焊接出来的板子上的各种功能一一实现,那份喜悦是无法代替的。在此感谢教师,感谢在此次课程设计过程中帮助我的同学。五,参考文献《单片机原理及接口技术》段晨东主编,清华大学出版社《手把手教你学单片机》周兴华编著,北京航空航天大学出版社附录一:电路原理图软件模拟原理图附录二:原件明细表元器件数量备注电阻31K电阻45.1K电阻28K独石电容60.1uF独石电容230PF电解电容110Uf25V51单片机实验板189C52芯片1MAX232芯片174LS245芯片274LS138芯片1DS18B201三极管90122PNP二极管IN40011数码管2三位八段共阴继电器1晶振111.0592MHz芯片座6电源座1三脚5V通信插座1CON232电源适配器1通讯电缆1微型按钮开关10实验插板1单排插针假设干双排插针假设干短路块假设干导线假设干补充原件:LED灯2个〔一个红色,一个绿色〕排线:4根面包板:1快焊接线:假设干附录三:程序清单ORG0000HLJMPMAINORG0003HLJMPP_T0ORG0013HLJMPP_T1ORG0030HMAIN:MOVSP,#60H;开辟栈区CLRIT0;INT0低电平触发CLRIT1;INT1低电平触发SETBEA;开CPU中断SETBEX0;允许INT0中断SETBEX1;允许INT1中断SETBPX0;设置INT0为高优先级CLRPX1;设置INT1为低优先级CLRP3.6;加热指示灯清零CLRP3.7;粉碎指示灯清零MOV20H,#0;赋初始值MOV21H,#9MOV22H,#0MOV25H,#1MOV26H,#2MOV27H,#4LCALLDSPLY1;调显示程序LCALLDSPLY2LCALLSCAN_KEYB;点键盘扫描程序MOV25H,#00H;高三位清零MOV26H,#00HMOV27H,#00HMOVA,R5;键盘返回值在然中NEXT:CJNEA,#01H,NEXT1;判断是否为1键按下 LCALLFUNCTION_1;调1键处理程序LCALLLOOP4;调用计时程序和完成之后的报警程序LCALLLOOP6 RETNEXT1:CJNEA,#02H,NEXT2;判断是否2键按下LCALLFUNCTION_2;和第一种模式一样LCALLLOOP6LCALLLOOP4RETNEXT2:CJNEA,#3,NEXT3;3键按下LCALLFUNCTION_3;同前两种LCALLLOOP6LCALLLOOP4NEXT3:CJNEA,#4,NEXT4;4键按下否LCALLPRO_18B20;调温度处理程序NEXT4:LJMPMIAN;假设无键按下,返回;#######中断处理程序,液位溢出##########ORG0100HP_T0:PUSHACC;保护现场PUSHPSWCLRP3.6;停顿加热,粉碎CLRP3.7LCALLALARM;报警POPPSW;恢复现场POPACCRETI;########液位过低处理程序#############ORG0200HP_T1:CLREA;关中断PUSHACC;保护现场PUSHPSWSETBEA;开中断SETBRS0;将工作存放器切换CLRP3.6;停顿加热停顿粉碎CLRP3.7LCALLALARM;报警 SETBP3.6;恢复中断前状态CLREA;关中断POPPSW;恢复现场POPACCSETBEA;开中断RETI;按键处理程序FUNCTION_1:MOV20H,#01H;MOV21H,#0MOV22H,#9MOV30H,#03H MOV31H,#03H LCALLDSPLY1RETS2_PRESS:MOV20H,#02HMOV21H,#1MOV22H,#2MOV30H,#04H MOV31H,#04H LCALLDSPLY1RETS3_PRESS:MOV20H,#03HMOV21H,#1MOV22H,#5MOV30H,#05H MOV31H,#05H LCALLDSPLY1RETDSPLY1:MOVR0,#20HMOVR2,#00HREDO:ACALLDISPINCR2MOVA,R2INCR0XRLA,#03HJNZREDORETDSPLY2:MOVR0,#25HMOVR2,#03HREDO2:ACALLDISPINCR2MOVA,R2INCR0XRLA,#06HJNZREDO2RETDISP:MOVP1,R2MOVDPTR,#LED_SEGMOVA,@R0MOVCA,@A+DPTRMOVP0,ALCALLDL1MSRETLED_SEG:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHLOOP6:LCALLDL1SMOVA,27HCJNEA,#09H,GOON1MOV27H,#00HMOVA,26HCJNEA,#05H,GOON2MOV26H,#00HINC25HRETGOON1:INC27HRETGOON2:INC26HRETDL20MS:MOVTMOD,#01HMOVTH0,#0DBHMOVTL0,#00HSETBTR0CONT1:JBCTF0,OVERF1SJMPCONT1OVERF1:RETLOOP4:LCALLJIARELCALLFENSUILCALLJIARELCALLFENSUILCALLJIARECLRP3.6CLRP3.7LCALLALARMRETJIARE:MOV23H,30HCLRP3.7SETBP3.6LOOP1:LCALLDL1MINDJNZ23H,LOOP1RETFENSUI:MOV24H,31HCLRP3.6SETBP3.7LOOP2:LCALLDL1MINDJNZ24H,LOOP2RETALARM:LOOP5:MOVR1,#20MOVA,#06HMOVP1,ALCALLDL1MSLCALLDL1MSINCAMOVP1,ALCALLDL1MSLCALLDL1MSLCALLDSPLY1LCALLDSPLY2DJNZR1,LOOP5RETDL1MIN:MOVR7,#3DL1:LCALLLOOP6DJNZR7,DL1RETDL1MS:MOVR1,#200DL2:NOPNOPNOPDJNZR1,DL2RETDL1S:MOVR6,#20WAIT:MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBTR0CONT2:JBCTF0,OVERF2LCALLDSPLY1LCALLDSPLY2SJMPCONT2OVERF2:DJNZR6,WAITRETSCAN_KEYB:MOVP2,#0F0HMOVA,P2ANLA,#0F0HXRLA,#0F0HJZNO_KEYACALLDL20MSANLA,#0F0HXRLA,#0F0HJZNO_KEYMOVR2,#11110111BSCAN:MOVA,R2MOVP2,AMOVA,P2ANLA,#11110000BMOVR3,ACJNEA,#0F0H,KEY_PRSDMOVA,R2RRAMOVR2,AXRLA,#01111111BJNZSCANNO_KEY:LJMPMAINKEY_PRSD:MOVA,R2ANLA,#00001111BORLA,R3MOVR4,AMOVR5,#01HMOVDPTR,#KEY_TABCAL_VAL:MOVA,R5MOVCA,@A+DPTRXRLA,R4JZFIXEDINCR5SJMPCAL_VALFIXED:MOVA,P2ANLA,#0F0HXRLA,#0F0HJNZFIXEDACALLDL20MSMOVA,P2ANLA,#0F0HXRLA,#0F0HJNZFIXEDINCARETKEY_TAB:DB77H,77H,7BH,7DH,0B7H,0BEH,0BDHDB0D7H,0DBH,0DDHRET ;WENDUXIANSHIFLAG1BITF0;DS18B20存在标志位DQBITP1.3TEMPER_LEQU27HTEMPER_HEQU26HPRO_18B20:MOV30H,#250REPLY:LCALLINIT_18B20LCALLRE_CONFIGLCALLGET_TEMPERLCALLCHANGE ;将18B20读的16位温度转换8位数据 LCALLDISPLAY;调用数码管显示子程序DJNZ30H,REPLY;**********DS18B20复位程序*****************INIT_18B20:SETBDQ NOPNOPCLRDQNOPNOPMOVR0,#0FBHTSR1:DJNZR0,TSR1;延时SETBDQMOVR0,#25HTSR2:JNBDQ,TSR3DJNZR0,TSR2TSR3:SETBFLAG1;置标志位,说明DS18B20存在CLRP2.0;二极管指示AJMPTSR5TSR4:CLRFLAG1LJMPTSR7TSR5:MOVR0,#06BHTSR6:DJNZR0,TSR6TSR7:SETBDQ;说明不存在RET;********************设定DS18B20暂存器设定值**************RE_CONFIG:JBFLAG1,RE_CONFIG1RETRE_CONFIG1:MOVA,#0CCH;放跳过ROM命令LCALLWRITE_18B20MOVA,#4EHLCALLWRITE_18B20;写暂存器命令MOVA,#00H;报警上限中写入00HLCALLWRITE_18B20MOVA,#00H;报警下限中写入00HLCALLWRITE_18B20MOVA,#1FH;选择九位温度分辨率LCALLWRITE_18B20RET;*****************读转换后的温度值****************GET_TEMPER:SETBDQLCALLINIT_18B20JBFLAG1,TSS2RET;假设不存在则返回TSS2:MOVA,#0CCH;跳过ROMLCALLWRITE_18B20MOVA,#44H;发出温度转换命令LCALLWRITE_18B20;LCALLDISPLAY;延时LCALLINIT_18B20MOVA,#0CCH;跳过ROMLCALLWRITE_18B20MOVA,#0BEH;发出读温度换命令LCALLWRITE_18B20LCALLREAD2_18B20;读两个字节的温度RET;***************写ds18b20汇编程序************WRITE_18B20:MOVR2,#8CLRCWR1:CLRDQMOVR3,#6DJNZR3,$RRCAMOVDQ,CMOVR3,#23DJNZR3,$SETBDQNOPDJNZR2,WR1SETBDQRET;***********读18B20程序,读出两个字节的温度*********READ2_18B20:MOVR4,#2;低位存在29H,高位存在28HMOVR1,#29HRE00:MOVR2,#8RE01:CLRCSETBCNOPNOPCLRDQNOPNOPNOPSETBDQMOVR3,#7DJNZR3,$MOVC,DQMOVR3,#23DJNZR3,$RRCA

温馨提示

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

评论

0/150

提交评论