单片机洗衣控制毕业设计内容摘要:
Delayms(5)。 //使该位显示 5ms LED3=1。 //关闭该位的控制,使其不显示 } 按键程序设计 按键电路的作用是设置一些功能,一般按键电路有按键查询式, CPU不断的检测是否有按键按下,这样将会耗费大量的 CPU 时间,且反应速度实时性不强;还有一种是中断式按键,只有当有按键按下时,单片机产生 中断,开始处理按键的输入功能,没有键按下时单片机处理其他,不需要不停地查询按键是否按下。 这样采用中断使按键反应速度快,同时减少单片机处理时间,本设计采用中断扩展式电路 [11]。 工作原理如下:没有按键时,相关的 I/O口为高电平,单片机的 INT0也为高电平,当有键按下时, 5V电压经过所按键上的电阻流向 GND,这时由于按键闭合,按键上的低电平送入单片机的 I/O口,同时与按键相连的二极管导通,由于二极管导通时,电 压大约 为 ,相当于低电平,这个低电平送入单片机的 INT0产生中断,在中断里检查哪个 I/O口为低电 平,就可以判断是哪个按键按下,执行相关的那个按键的功能 [12]。 本设计中单片机 ~ 作为按键输入,并通过二极管连接到单片机的中断入口引脚,当有键按下,就会产生中断,执行相关按键的功能。 按键程序 流程图如 图 所示 : 图 按键程序流程图 本设计中一共用到六个按键,通过连接单片机的 ~ 口来实现按键的功能,按键 1 的作用是调节自动或者手动, 按键 2 的作用是调节洗衣的强度,按键 3 的作用是调节洗衣功能,按键 4 的作用是设置时间,按键 5 的作用是设置次数,按键 6 的作用是控制洗衣机的运行与停止。 是否按键 2。 下 ? Y N 强度选择 中断入口 是否按键 1。 下 ? Y N 自动 /手动 是否按键 3。 下 ? Y N 功能选择 是否按键 4。 下 ? Y N 时间设定 是否按键 5。 下 ? Y N 次数设置 是否按键 6。 下 ? Y N 运行 /暂停 中断返回 具体电路如下图: 根据硬件的设计方法, 编写程序如下: /***************************** 功能:按键输入 说明:用到中断 0, ~ /****************************/ void inkey_int0() interrupt 0 { uchar input。 P2=P1|0x3f。 input=P1。 switch(inputamp。 0x3f) {case 0x3e: //111110 最右边 //按键 1功能 break。 case 0x3d: //111101 //按键 1功能 case 0x3b: //111011 //按键 1功能 case 0x37: //110111 //按键 1功能 break。 case 0x2f: //101111 //按键 1功能 break。 case 0x1f: //011111 最左边 //按键 1功能 break。 default: break。 } } 定时 程序 设计 MCS51 单片机 内部有两个可编程的 16 位定时器 T0 和 T1。 通过编程,可以设定为定时器和外部计数方式。 T1 还可以作 MCS51 串行口的波特率发生器。 定时器 T0由特殊功能寄存器 TL0 和 TH0 构成,定时器 T1 由特殊功能寄存器 TL1 和 TH1 构成。 特殊功能寄存器 TMOD 控制定时器的工作方式, TCON 控制其运行, TCON 还包含了定时器 T0 和 T1 的溢出标志。 定时器的中断由中断允许寄存器 IE、中断优先级寄存器 IP中的相应位进行控制。 定时器 T0 的中断入口地址为 000BH, T1 的中断入口地址为001BH[13]。 定时器的编程包括; ( l)置工作方式。 ( 2)置计数初值。 ( 3)中断设置。 ( 4)启动定时器。 由于 MCS51 的定时器采用加 1 计数,因此,计数初值应根据计数器长度及计数值来决定。 对于同样的计数值,在采用 13位计数器、 16位计数器及 8位计数器时,其计数初值各不相同。 此外,方式 0、 3均不能自动恢复初值,如果要求重复计数必须在每次计数溢出后重新装入计数初值。 除了编写以上程序外,还要设置中断的开关,用定时器时还要计算定时时间,内部计数器用作定时器时 ,是对 机器周期计数。 每个机器周期的长度是 12个振荡器周期。 因为实验系统的晶振是 12MHz,所以定时常数的设置可按以下方法计算 : 机器周期 =12247。 12MHz= 1μ S (65536定时常数 )*1μ S=50mS 定时常数 TH0=0X3C; TL0=0XB0[14]; 本设计中在洗衣时需要设置洗衣时间,这部分程序设计采用单片机内部的定时器,用来倒计时。 洗衣机定时系统采用单片机的定时器 0,工作方式 1,当设定洗涤、漂洗和脱水时,单片机的定时器开始倒计时,前两位数码管显示设定好的时间每秒减,当剩余时间为 0时第三位数码管显示的 次数就减一,直至洗衣次数完全执行完。 定时程序 流程图如 图 : 图 定时程序流程图 倒计时编程采用定时器 0,方式 1。 //定时器 0 //用于到计时 void timer0() interrupt 1 using 0 { TH0=0X3C。 TL0=0XB0。 //赋初值值 50ms 定时 Y 定时器中断入口 数据减 1 置 TH0、 TL0 计数初值 是否 1 秒 ? 关闭中断,停止计时 N 定时结束 ? N Y 中断返回 cont1s++。 if(cont1s==20) // cont1s==20 秒 { // LEDnumber[0]++。 if(LEDnumber[0]8) LEDnumber[0]=0。 timer。 if(!timer){TR0=0。 } //如果到计时结束停止计时 cont1s=0。 } } 4 软件调试 软件调试就是检查系统软件中的错误。 常见的软件错误有程序失控、中断错误(不响应中断或循环响应中断)、输入 /输出错误和处理结果错误等类型。 要把各个程序模块分别进行调试 ,调试通过后再组合到一起进行综合调试 ,达到预定的功能技术指标后即可将软件固化。 系统的调试 过程要结合具体的仿真器进行 [15]。 对于一个新设计的电路板,调试起来往往会遇到一些困难,特别是当板比较大、元件比较多时,往往无从下手。 但如果掌握好一套合理的调试方法,调试起来将会事半功倍。 单片机系统的硬件调试和软件调试是不能分开的 ,许多硬件错误是在软件调试中被发现和纠正的。 但通常是先排除明显的硬件故障以后 ,再和软件结合起来调试以进一步排除故障。 可见硬件的调试是基础 ,如果硬件调试不通过 ,软件设计则是无从做起。 硬件电路焊接好后,就可以编写相关的程序调试电路了,由于电路复杂,不可能一步全部完成,一般方法是,一 边写软件一边调试,这样可以及时发现是硬件问题还是软件问题,也方便及时改正。 首先应该确认电源电压是否正常。 用电压表测量接地引脚跟电源引脚之间的电压,看是否是电源电压,例如常用的 5V。 接下来就是检查复位引脚电压是否正常。 分别测量按下复位按钮和放开复位按钮的电压值,看是否正确。 然后再检查晶振是否起振了,一般用示波器来看晶振引脚的波形,注意应该使用示波器探头的 “ 10”档。 另一个办法是测量复位状态下的 I/O 口电平,按住复位键不放,然后测量 I/O 口(没接外部上拉的 P0 口除外)的电压,看是否是高电平,如果不是高电平,则多半是因为晶振没有起振。 另外还要注意的地方是,如果使用片内ROM 的话(大部分情况下如此,现在已经很少有用外部扩 ROM 的了),一定要将 EA 引脚拉高,否则会出现程序乱跑的情况。 有时用仿真器可以,而烧入片子不行,往往是因为 EA 引脚没拉高的缘故(当然,晶振没起振也是原因只一)。 经过上面几点的检查,一般即可排除故障了。 如果系统不稳定的话,有时是因为电源滤波不好导致的。 在单片机的电源引脚跟地引脚之间接。单片机洗衣控制毕业设计
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。