单片机课程设计 洗衣机控制器
基于51单片机的智能洗衣控制系统设计
基于51单片机的智能洗衣控制系统设计1. 引言智能家居技术的发展为我们的生活带来了诸多便利,其中智能洗衣控制系统是其中的一项重要应用。
本文旨在基于51单片机设计一种智能洗衣控制系统,通过对洗衣机的控制和监测,提高洗衣质量和用户体验。
2. 智能洗衣控制系统设计原理2.1 51单片机介绍51单片机是一种常用的微控制器,具有体积小、功耗低、易于编程等特点。
在本设计中,我们选择51单片机作为主要的控制器。
2.2 智能洗衣系统功能需求智能洗衣系统应具备以下功能需求:2.2.1 温度控制:根据用户设定的温度要求,自动调节水温。
2.2.2 洗涤程序选择:根据用户选择不同类型的布料和污渍程度,自动调节洗涤程序。
2.2.3 水位监测:通过传感器实时监测水位情况,并根据需要自动添加或排放水量。
2.2.4 电机驱动:通过电机驱动实现转筒运转、排放水等功能。
...3 实验结果与分析在实际实验中,我们成功地实现了基于51单片机的智能洗衣控制系统,并进行了多组洗衣实验。
通过对洗衣机的控制和监测,系统能够根据用户设定的要求进行智能化的洗涤操作,并在完成后自动停止。
4 总结与展望通过本次研究,我们成功地设计并实现了一种基于51单片机的智能洗衣控制系统。
该系统具备温度控制、洗涤程序选择、水位监测和电机驱动等功能,能够提高洗衣质量和用户体验。
然而,目前该系统还存在一些局限性,如对于特殊布料和污渍处理不够精细等。
未来工作可以进一步优化系统设计,并结合更多的传感器和算法来提高智能化程度。
5 致谢本次研究得到了指导教师的悉心指导与帮助,在此向他们表示诚挚的感谢。
同时也感谢参与本研究工作并提供支持与帮助的各位同学们。
6 附录附录中包含了本次研究中使用到的关键代码、电路图、数据表格等详细信息,以供读者参考。
通过对基于51单片机的智能洗衣控制系统的设计,本文详细介绍了系统的原理、功能需求、硬件设计和软件设计等方面。
通过实验验证了系统的可行性,并对实验结果进行了分析。
基于单片机的洗衣机的控制系统设计
基于单片机的洗衣机的控制系统设计一、洗衣机控制系统的功能需求分析洗衣机的主要功能是对衣物进行洗涤、漂洗和脱水。
为了实现这些功能,控制系统需要具备以下几个方面的能力:1、洗涤模式选择:用户能够根据衣物的材质和脏污程度选择不同的洗涤模式,如标准洗、快速洗、强力洗等。
2、水位控制:根据衣物的数量自动或手动选择合适的水位,以达到节约用水和提高洗涤效果的目的。
3、洗涤时间控制:不同的洗涤模式对应不同的洗涤时间,控制系统需要准确地控制洗涤过程的时间。
4、转速控制:在脱水阶段,需要根据衣物的重量和材质控制电机的转速,以确保脱水效果和保护衣物。
5、故障检测与报警:能够检测洗衣机运行过程中的故障,如电机过载、水位异常等,并及时发出报警信号。
二、硬件设计1、单片机选型选择一款适合洗衣机控制系统的单片机是至关重要的。
需要考虑单片机的性能、引脚数量、存储容量、价格等因素。
常见的单片机如STM32 系列、ATmega 系列等都可以满足需求。
2、传感器模块(1)水位传感器:用于检测洗衣机内的水位高度,常见的有压力式水位传感器和电容式水位传感器。
(2)衣物重量传感器:通过测量电机的负载来估算衣物的重量,从而为水位和洗涤时间的选择提供依据。
(3)转速传感器:用于检测电机的转速,以实现对脱水转速的精确控制。
3、电机驱动模块洗衣机的电机通常为交流电机或直流无刷电机,需要相应的驱动电路来控制电机的正反转、转速和启停。
可以使用专门的电机驱动芯片,如 L298N 等。
4、显示与按键模块为了方便用户操作和了解洗衣机的工作状态,需要设计显示模块和按键模块。
显示模块可以采用液晶显示屏(LCD)或数码管,按键模块可以采用薄膜按键或机械按键。
5、电源模块为整个控制系统提供稳定的电源,通常采用交流 220V 市电经过变压器降压、整流、滤波和稳压后得到所需的直流电源。
三、软件设计1、主程序流程系统上电后,首先进行初始化操作,包括单片机内部资源的初始化、传感器的校准、显示模块的初始化等。
基于单片机的洗衣机控制器的设计
目录1 绪论 (1)1.1 洗衣机控制器的概述 (1)1.1.1 课题开发背景 (1)1.1.2 目的意义 (1)1.1.3 国内外现状及水平 (1)1.1.4 设计任务 (3)1.2 工程技术方案 (3)2 硬件设计 (3)2.1 洗衣机控制器的外部设计 (4)2.1.1 洗衣机控制器控制面板的设计 (4)2.1.2 硬件设计框图 (5)2.2 系统硬件详细设计图 (7)2.2.1 晶闸管驱动控制电路设计 (7)2.2.2 水位检测电路 (7)2.2.3 开关电源电路 (8)2.2.4 键盘输入及显示电路 (8)2.3 各芯片介绍 (9)2.3.1 MCS-51单片机介绍 (9)2.3.2 8279 芯片 (13)2.3.3 水位开关的简介 (17)2.3.4 ULN2803驱动芯片 (18)3 系统软件设计 (19)3.1 主流程图 (19)见附录A (19)3.2 各子程序流程图 (19)4 调试 (25)4.1 硬件调试 (26)4.2 软件调试 (27)5 结束语 (28)附录A (29)附录B (31)参考文献 (40)致谢 .................................................. 错误!未定义书签。
1 绪论1.1 洗衣机控制器的概述1.1.1 课题开发背景随着人民生活水平的提高,越来越多的人需要用洗衣机。
现在洗衣机越来越高度自动化,只要衣服放入洗衣机,简单的按两个键,就会自动注水,一些先进的电脑控制洗衣机,还能自动的感觉衣物的重量,自动的添加适合的水量和洗涤剂,自动的设置洗涤的时间和洗涤的力度,洗涤完以后自动的漂洗甩干,更有些滚筒洗衣机还会将衣物烘干,整个洗衣的过程完成以后还会用动听的音乐声提醒用户,用户可以在洗衣的过程做其它的事,节省了不少的时间。
总之,每一项技术的进步极大地推动了洗衣过程自动化程度的提高[1]。
1.1.2 目的意义本次设计的洗衣机控制器是为了满足不同用户的不同需求。
单片机课程设计_基于89C51的全自动洗衣机控制器设计
单片机系统课程设计成绩评定表设计课题基于89C51的全自动洗衣机控制器设计学院名称:电气工程学院专业班级:学生姓名:学号:指导教师:设计地点:设计时间:单片机系统课程设计课程设计名称:基于89C51的全自动洗衣机控制器设计专业班级:学生姓名:学号:指导教师:课程设计地点:课程设计时间:单片机系统课程设计任务书目录1概述 (4)2 总体方案设计 (5)2.1全自动洗衣机的工作流程 (5)2.2硬件组成 (5)3 硬件电路设计 (6)3.1 89C51 (6)3.2 晶振电路 (6)3.3 复位电路 (7)3.4 启动电路 (7)3.5注水电路,放水电路 (7)3.6洗涤电机控制电路 (8)3.7警报电路 (11)4 软件设计 (12)4.1 主程序流程图 (12)4.2 中断服务程序流程图 (14)4.3子函数流程图 (15)5 总结 (15)6 参考文献 (16)附录A (17)附录B (18)1概述当今社会,洗衣机已经渗透到各个家庭了,人们对于这种东西已经不会再陌生,也越来越离不开洗衣机。
洗衣机的便利让人们节省了许许多多的时间,而且洗涤之后的效果也比人手洗的更加干净。
而自从推出了全自动洗衣机之后,洗衣机变得更加可靠。
全自动洗衣机就是将洗衣的全过程(泡浸-洗涤-漂洗-脱水)预先设定好N 个程序,洗衣时选择其中一个程序,打开水龙头和启动洗衣机开关后洗衣的全过程就会自动完成,无需人操作,只需要按下开始按钮便可。
其工作原理可以简述为:洗衣机的洗涤过程主要是在机械产生的排渗、冲刷等机械作用和洗涤剂的润湿、分散作用下,将污垢拉入水中来实现洗净的目的。
首先充满于波轮叶片间的洗涤液,在离心力的作用下被高速甩向桶壁,并沿桶壁上升。
在波轮中心处,因甩出液体而形成低压区,又使得洗涤液流回波轮附近。
这样,在波轮附近形成了以波轮轴线为中心的涡流。
衣物在涡流的作用下,作螺旋式回转,吸入中心后又被甩向桶壁,与桶壁发生摩擦。
单片机课程设计_基于89C51的全自动洗衣机控制器设计
单片机系统课程设计成绩评定表设计课题基于89C51的全自动洗衣机控制器设计学院名称:电气工程学院专业班级:学生姓名:学号:指导教师:设计地点:设计时间:单片机系统课程设计课程设计名称:基于89C51的全自动洗衣机控制器设计专业班级:学生姓名:学号:指导教师:课程设计地点:课程设计时间:单片机系统课程设计任务书目录1概述 (4)2 总体方案设计 (5)2.1全自动洗衣机的工作流程 (5)2.2硬件组成 (6)3 硬件电路设计 (6)3.1 89C51 (6)3.2 晶振电路 (6)3.3 复位电路 (7)3.4 启动电路 (7)3.5注水电路,放水电路 (7)3.6洗涤电机控制电路 (8)3.7警报电路 (11)4 软件设计 (12)4.1 主程序流程图 (12)4.2 中断服务程序流程图 (14)4.3子函数流程图 (15)5 总结 (15)6 参考文献 (16)附录A (17)附录B (18)1概述当今社会,洗衣机已经渗透到各个家庭了,人们对于这种东西已经不会再陌生,也越来越离不开洗衣机。
洗衣机的便利让人们节省了许许多多的时间,而且洗涤之后的效果也比人手洗的更加干净。
而自从推出了全自动洗衣机之后,洗衣机变得更加可靠。
全自动洗衣机就是将洗衣的全过程(泡浸-洗涤-漂洗-脱水)预先设定好N 个程序,洗衣时选择其中一个程序,打开水龙头和启动洗衣机开关后洗衣的全过程就会自动完成,无需人操作,只需要按下开始按钮便可。
其工作原理可以简述为:洗衣机的洗涤过程主要是在机械产生的排渗、冲刷等机械作用和洗涤剂的润湿、分散作用下,将污垢拉入水中来实现洗净的目的。
首先充满于波轮叶片间的洗涤液,在离心力的作用下被高速甩向桶壁,并沿桶壁上升。
在波轮中心处,因甩出液体而形成低压区,又使得洗涤液流回波轮附近。
这样,在波轮附近形成了以波轮轴线为中心的涡流。
衣物在涡流的作用下,作螺旋式回转,吸入中心后又被甩向桶壁,与桶壁发生摩擦。
基于单片机的全自动洗衣机控制系统设计
山东协和学院工学院,山东济南 250109【摘要】采用了STC89C52单片机进行设计控制系统,控制系统主要是四个部分构成:用户参数输入、洗涤、脱水、最后报警。
以单片计算机为主体构成的主要控制系统,主要控制系统是以STC89C52单片机为内核,使用键盘、蜂鸣器、电源、水位传感器等为核心,完成对洗衣机内各步骤的管理。
【关键词】STC89C52单片机洗衣机控制系统1总体方案设计1.1设计任务1.研究内容:利用单片机实现了一种新型的洗衣机控制装置。
利用MCU作为主机,通过对所需的外部电路进行扩充,实现了对全自动洗衣机的控制。
2.主要功能:(1)标准:12 min的浸洗、2 min的冲洗、3 min的脱水;(2)快速:4 min的浸洗,2 min的冲洗,2 min的脱水;(3)轻柔:3 min的浸洗,3 min的冲洗,2 min的脱水;(4)调试模式:整个的处理时间为1分钟;(5)有开机/停机按键的操作:先按下菜单,然后再按下选单,选好要做的工作,当工作完成后,再按下停止。
(6)具有脱水功能。
(7)具有指示功能:入水时显示,洗净时显示,排干时显示,漂洗时显示,脱水时显示。
1.2洗衣机的设计方案本控制系统由按钮输入、浸洗、洗涤、漂洗、排气、再洗涤等五个环节构成的。
本控制系统由主回路和单片机系统,外围硬件回路构成[8]。
用STC89C52单片机控制器为基础,以二个共阳数码管,键盘,蜂鸣器,水位传感器,以及发光二极管等为中心元件;由继电器,充气三极管,发电机,以及步进马达驱动器等组成的外围硬件。
1.2.1 按键在洗衣机的控制器上有四个按键,分别是K1、K2、K3、K4K1是单选按键,使用K4前先将K1按下,避免出现错误。
K2是开机按键、K3是停止按键、K4是菜单。
1.2.2 洗衣程序(1)水洗工序接通电源后,如果没有选择清洗时间,那么洗衣机将从清洗程序启动。
进入清洗程序,先加水,当加水指示灯点亮,启动加水,达到所需的时间后,加水停止;马达 M开启,推动水轮转动,产生洗涤水。
基于单片机的智能洗衣机控制系统设计
基于单片机的智能洗衣机控制系统设计一、本文概述随着科技的快速发展和人们生活水平的提高,家电产品逐渐向着智能化、自动化的方向发展。
洗衣机作为家庭日常生活中不可或缺的家电设备,其性能的优化和智能化升级显得尤为重要。
本文将详细介绍一种基于单片机的智能洗衣机控制系统设计,旨在提高洗衣机的自动化程度,改善用户体验,并实现节能环保的目标。
该控制系统以单片机为核心,结合传感器技术、电机控制技术、人机交互技术等多个领域的知识,实现洗衣机的智能控制。
通过传感器实时监测洗衣过程中的水量、温度、衣物重量等参数,单片机根据这些参数自动调节洗涤程序,以达到最佳的洗涤效果。
同时,系统还具备人机交互功能,用户可以通过简单的操作界面选择洗涤程序、设定洗涤参数,实现个性化洗涤。
本文首先将对智能洗衣机控制系统的总体设计方案进行介绍,包括硬件和软件的设计思路。
然后,详细阐述各个功能模块的实现方法,包括传感器模块、电机控制模块、人机交互模块等。
接着,对系统的硬件和软件进行集成和调试,确保系统的稳定性和可靠性。
对智能洗衣机控制系统进行性能测试和实验验证,以评估其实际应用效果。
通过本文的研究和设计,期望能够推动洗衣机行业的智能化升级,为用户提供更加便捷、高效、节能的洗涤体验。
也希望本文的研究方法和成果能够为相关领域的研究人员和技术人员提供有益的参考和借鉴。
二、单片机基础知识单片机(Microcontroller Unit,MCU)是一种集成电路芯片,采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。
单片机也被称为微控制器,它的应用领域非常广泛,包括智能家居、医疗设备、工业控制、航空航天等。
单片机的主要特点包括:集成度高,体积小,功耗低,可靠性高,控制功能强,扩展灵活,以及易于实现智能化控制等。
基于单片机的全自动洗衣机系统设计
基于单片机的全自动洗衣机系统设计一、本文概述随着科技的进步和人们生活水平的提高,家用电器在日常生活中扮演着越来越重要的角色。
全自动洗衣机作为其中的一种,其便捷性和高效性受到了广大用户的青睐。
传统的洗衣机设计在智能化、节能性、操作简便性等方面仍有待提升。
为此,本文提出了一种基于单片机的全自动洗衣机系统设计,旨在通过技术创新和智能控制,为用户提供更加人性化、高效且节能的洗衣体验。
本文将详细介绍该系统的设计原理、硬件构成、软件编程以及实际应用效果。
我们将对单片机的选择及其在系统中的作用进行阐述,同时分析洗衣机控制系统中所需的传感器和执行器。
接着,我们将深入探讨软件设计的关键技术和算法,包括控制逻辑的实现、人机交互界面的设计以及故障检测和处理机制。
我们将通过实际测试和用户体验反馈,对该系统的性能进行评估和优化。
本文旨在提供一种基于单片机的全自动洗衣机系统设计方案,为相关领域的研究和实践提供有益的参考和借鉴。
通过不断优化和创新,我们期待这种智能化、高效且节能的洗衣机能够在未来得到更广泛的应用,为人们的生活带来更多便利和舒适。
二、系统总体设计全自动洗衣机系统的设计,基于单片机作为核心控制器,旨在实现洗衣机的全自动化和智能化。
整个系统由单片机、电机驱动模块、水位检测模块、洗涤剂投放模块、温度控制模块、显示模块和用户交互模块等多个子模块组成。
我们选择一款性能稳定、价格适中且易于编程的单片机作为本系统的核心控制器。
该单片机将负责接收用户输入指令、处理传感器信号、控制各功能模块以及实现与显示模块的通信。
通过编程,单片机能够实现对洗衣机的全面控制,包括启动、停止、调整洗涤方式、设定洗涤时间等功能。
电机驱动模块是洗衣机的动力来源,负责驱动洗衣机的电机进行旋转。
我们选用一款能够驱动电机正反转且具备调速功能的驱动模块,通过单片机输出的PWM信号实现对电机转速的精确控制。
电机驱动模块还具备过流保护功能,以确保系统的安全可靠。
单片机课程设计---单片机控制全自动洗衣机
2.5控制功能及过程
洗衣机的三大功能是实现衣服的洗涤、漂洗和脱水,加上进水,我们把这四个洗衣机动作编排成4个代码。打开电源开关,洗衣机将进入洗衣过程选择状态,此时数码管显示00,用户按启动、暂停键可以显示不同的过程代码(在01-09之间循环显示以指示选择不同的洗衣过程)。3秒内若无按键动作,蜂鸣器开始鸣叫6下(时间长度共3秒)以提醒用户;开始进入相应过程的洗衣程序,此后启动暂停按钮只起暂停或继续洗衣程序执行作用,数码管显示完成本次洗衣的剩余时间。
(2)漂洗过程:漂洗的目的在于清除衣物上的洗涤液,因此,漂洗过程与洗涤过程的电器动作是完全相同的。
(3)脱水过程:洗涤或漂洗过程结束后,电动机停止转动,排水阀通电,打开排水阀门排水。当水位低到一定程度时,满足安全条件,脱水电动机接通,电机带动脱水桶高速旋转,利用离心力把衣服上的水从桶壁的小眼里甩出。
(3)洗涤动作洗涤动作指的是电机周期性的“正转-停止-反转-停止”。不同的洗衣过程,控制电机执行“正转-停止-反转-停止”的时间是不同的,标准洗涤过程可取:正转1.6秒-0.56秒-反转1.6秒-停止0.56秒。对于轻柔洗涤和强力洗涤过程,这个时间要作相应调整。洗涤过程中若遇水位开关断开或用户要求补水(重新选择水位),则要停止洗涤动作并打开进水阀进水直至水位满足要求再继续。
2.3、设计总方框图
水位开关
安全开关
程序选择/启动/暂停
பைடு நூலகம்洗衣机单片机控制系统方框图
基于单片机洗衣机通过控制系统设定洗衣程序在洗涤脱水桶内自动完成注水、洗涤、漂洗、排水和脱水全过程。洗衣时控制系统打开进水电磁阀开始注水;当洗涤脱水桶内的水位达到系统设定值时单片机发送一个低电平通知控制系统关闭进水电磁阀,同时启动电机洗衣。电机在系统的控制下进行正转、停、反转通过传动带动波轮执行洗涤程序;当洗涤时间终了,控制系统切断电机电路打开排水电磁阀开始排水;然后再次注水,洗衣机进入漂洗状态,完成漂洗程序(通常为2次漂洗)后,开始排水,同时排水电磁阀的动作并且松开为脱水程序作好准备;排水结束后系统控制电机单方向高速运转完成脱水程序;当脱水程序终了系统控制排水电磁阀和电机断电,排水阀复位。
单片机课程设计---单片机控制全自动洗衣机
单片机课程设计---单片机控制全自动洗衣机单片机课程设计单片机控制全自动洗衣机在现代生活中,洗衣机已经成为了家庭中不可或缺的电器之一。
而全自动洗衣机更是以其便捷、高效的特点受到了广大消费者的喜爱。
本次课程设计旨在利用单片机技术实现对全自动洗衣机的控制,以提高洗衣机的性能和智能化程度。
一、全自动洗衣机的工作原理全自动洗衣机的工作过程通常包括洗涤、漂洗、脱水等几个主要环节。
在洗涤环节,洗衣机通过电机带动内筒旋转,使衣物在水中不断翻滚,同时加入洗涤剂以去除污渍。
漂洗环节则是用清水冲洗衣物,去除残留的洗涤剂。
脱水环节通过高速旋转内筒,将衣物中的水分甩干。
为了实现这些功能,洗衣机需要对水位、电机转速、洗涤时间、漂洗次数等参数进行精确控制。
这就需要一个可靠的控制系统来协调各个部件的工作,而单片机正是这样一个理想的选择。
二、单片机控制系统的硬件设计1、单片机选型选择合适的单片机是整个控制系统设计的关键。
考虑到洗衣机控制系统的功能需求和成本因素,我们选用了_____型号的单片机。
该单片机具有足够的 I/O 端口、定时器/计数器和存储空间,能够满足洗衣机控制的要求。
2、传感器模块为了实现对水位和衣物重量的检测,我们使用了水位传感器和压力传感器。
水位传感器可以实时监测洗衣机内的水位高度,从而控制进水阀的开关。
压力传感器则可以通过测量内筒的压力变化来估算衣物的重量,以便确定合适的洗涤参数。
3、电机驱动模块洗衣机的电机需要正反转和调速控制,因此我们选用了专用的电机驱动芯片。
该芯片能够接收单片机发出的控制信号,实现对电机的精确驱动。
4、显示与按键模块为了方便用户操作和了解洗衣机的工作状态,我们设计了液晶显示模块和按键模块。
用户可以通过按键设置洗涤模式、洗涤时间等参数,液晶显示屏则会实时显示洗衣机的工作状态和剩余时间。
5、电源模块整个控制系统需要稳定的电源供应。
我们使用了变压器将市电降压,然后通过整流、滤波和稳压电路为单片机和其他模块提供所需的直流电源。
基于单片机全自动洗衣机控制器设计与仿真
基于单片机全自动洗衣机控制器设计与仿真随着科技的发展,越来越多的家电产品逐渐实现了智能化和自动化。
其中,全自动洗衣机的普及程度也越来越高。
为了更好地提供用户体验,许多厂家开始采用基于单片机的全自动洗衣机控制器,来实现对洗衣机的智能控制。
本文主要介绍基于单片机全自动洗衣机控制器设计与仿真的过程。
一、控制器硬件设计控制器的硬件设计主要包括单片机的选型与连接,外设的选型与连接,以及电源部分的设计等方面。
一般来说,单片机控制器主要使用 8 位单片机,比如 AT89C52。
同时,为了更好的扩展性和稳定性,还需要添加与单片机相应连接的晶振、电容等元器件。
此外,还需要选用和连接相应的外设,如数码管、按键、继电器、红外遥控模块等元件。
最后,需要设计一套合适的电源系统,以保证整个控制器的稳定运行。
二、控制器软件设计控制器的软件设计包括程序逻辑的设计和编写。
程序的逻辑设计需要考虑到洗衣机的具体使用场景和功能,如水位控制、转速控制、洗涤时间控制等等。
在编写代码时,需要充分利用单片机的控制能力,使其能够对各个功能进行更好的掌控。
此外,需要注意代码的可读性以及可维护性,以便在后期的调试和修复过程中更加方便地操作。
三、仿真调试为了保证控制器的正确性和可靠性,需要进行一系列的仿真调试。
首先,可以通过仿真软件搭建出一组合适的测试平台,并通过数据的模拟来测试程序的正确性。
接下来,还需要对各个外设元件的功能进行测试,以保证其与单片机之间的通讯正常。
最后,在完成模拟测试后,还需要真实地将控制器连接到洗衣机上,并进行实际的功能测试,以检验其实际的使用效果。
综上所述,基于单片机的全自动洗衣机控制器设计与仿真是一个需要考虑到硬件、软件、仿真等多个方面的问题。
其中,摸索合适的软件逻辑和外部设备之间的连接,对实验的测试成果更为重要。
唯有确保整个控制器的正确性和可靠性,才能为消费者带来更好的使用体验和权益。
基于单片机的洗衣机控制系统设计
基于单片机的洗衣机控制系统设计洗衣机控制系统是一种基于单片机的智能家电系统,主要功能是控制洗衣机的启停、洗涤时间、洗涤模式等操作。
本文将围绕洗衣机控制系统的设计展开,介绍其硬件组成和软件设计。
一、硬件组成洗衣机控制系统的硬件主要包括单片机、显示器、按键、电机驱动模块和传感器等。
1.单片机单片机是洗衣机控制系统的核心部件,负责处理各种输入和输出信号,以及控制洗衣机的运行状态。
常用的单片机有51系列和AVR系列等,根据具体需求选择合适的型号。
2.显示器显示器用于显示洗衣机的运行状态和操作界面。
可以选择液晶显示器(LCD)或数码管等显示设备,用于显示启动、暂停、洗涤时间、洗涤模式等信息。
3.按键洗衣机控制系统通常会设置多个按键,用于操作洗衣机的启停、选择洗涤模式、调整洗涤时间等。
按键可以采用机械按键或触摸按键,具体取决于系统设计的复杂度和成本考虑。
4.电机驱动模块电机驱动模块用于驱动洗衣机的电机,控制洗涤桶的旋转。
常用的电机驱动模块有直流电机驱动模块和步进电机驱动模块等,选择适合的驱动模块根据具体洗衣机的结构和性能要求。
5.传感器传感器用于采集洗衣机的各种状态信息,如水位传感器、温度传感器、湿度传感器等。
通过传感器采集到的信息,可以实时监测洗衣机的工作状态,做出相应的控制。
二、软件设计洗衣机控制系统的软件设计主要包括系统初始化、输入输出处理、洗衣机控制算法等。
1.系统初始化系统初始化是洗衣机控制系统的第一步,包括单片机的时钟设置、IO口初始化、中断配置等。
通过系统初始化可以使洗衣机进入正常的工作状态,并做好准备工作。
2.输入输出处理输入输出处理是指对洗衣机的各种输入信号进行处理和输出相应的控制信号。
通过按键检测,可以实现洗衣机的启停、模式选择等功能。
同时,根据传感器采集到的信息,可以监测洗衣机的水位、温度等状态,并做出相应的控制反馈。
3.洗衣机控制算法洗衣机控制算法是洗衣机控制系统的核心,根据洗涤模式和洗涤时间的设定,控制电机驱动模块驱动洗涤桶的旋转,并控制水泵、加热器等设备的工作状态。
单片机课程设计(洗衣机控制系统).doc
东北石油大学单片机课程设计 洗衣机控制系统设计 电气信息工程学院2017 冬 7 用 28 9课 程 题目 院 系专业班级学生姓名学生学号指导教师任务书课程_______________________ 单片机课程设计______________________________ 题目洗衣机控制系统设计专业__________________________ 姓名___________________学号___________________ 主要内容:本课题针对洗衣机控制系统的发展现状以及当今社会发展对于产品智能化的要求,设计一种基于单片机微处理器的控制系统。
要求具有较高的可靠性和实用性,实现智能化控制。
本文以单片机为控制器核心设计控制系统,使洗衣机可处于自动模式依次进行进水、洗涤、排水、脱水四个过程;也可处于手动模式通过按键进行洗涤、排水、脱水三个过程的选择,并且处于何种模式,何种过程能够通过指示灯显示。
基本要求:1、分析洗衣机控制系统设计各种方案的优缺点,说明本设计方案选用原则;2、阐述本设计方案的基本工作原理、分析并注明元器件选取参数;3、绘制并分析洗衣机控制系统硬件设计原理图及电路图;4、设计完整的程序框图和程序清单;:[1]余永权.单片机在控制系统屮的应用[M].北京电子工业出版社,2003: 23-78.[2]冯先成.单片机应用系统设计[M].北京航空航天大学出版社,2009: 56-98.[3]元增民.模拟电子技术[M].北京:屮国电力出版社,2009:35-97.[4]万光毅,严义,邢春香.单片机实验与实践教程[M].北京:北京航空航天大学,2006:23-110.完成期限2017.7.17—2017.7.28指导教师专业负责人2017 年7 月16 R随着经济社会的快速发展,智能化,自动化以成为当代社会的主旋律。
因此, 设计了基于单片机的全自动洗衣机控制系统。
木系统实现了对洗衣机整个过程的控制,包括进水、洗涤、排水、脱水四个阶段.控制系统主要由电源电路,单片机控制系统和外部硬件三大模块组成。
基于51单片机的全自动洗衣机控制器设计
基于51单片机的全自动洗衣机控制器设计随着科技的进步和人们生活质量的提高,洗衣机已经成为现代家庭中必不可少的家电之一。
然而,传统的洗衣机控制方式往往存在操作复杂、功能单一等问题,无法满足用户对于高效、智能洗涤的需求。
因此,本文将介绍一种基于51单片机的全自动洗衣机控制器的设计,实现洗涤、漂洗、脱水等功能的自动化控制。
一、系统硬件设计1、控制器核心选择本设计选用51单片机作为控制器核心,利用其丰富的I/O口和定时器资源,实现对洗衣机的控制。
通过外接按键和蜂鸣器等元件,实现洗涤方式的选择、启动/停止控制等功能。
2、电源模块设计为了确保洗衣机的稳定运行,本设计采用220V交流电作为电源输入,通过变压器进行降压处理,再经整流滤波后得到稳定的直流电压,为控制器和其他部件供电。
3、输入输出模块设计输入模块主要包括按键和传感器。
其中,按键用于选择洗涤方式,传感器则用于检测水位、水温等信息。
输出模块主要包括继电器和蜂鸣器,继电器用于控制洗衣机的启动/停止,蜂鸣器则用于提示用户洗涤过程的状态。
二、系统软件设计1、程序初始化在程序开始运行时,首先进行初始化操作,包括配置定时器、设置I/O口状态等。
2、洗涤过程控制根据用户选择的洗涤方式,程序将通过定时器控制电机的运转时间,实现不同洗涤模式的自动化控制。
同时,通过检测水位、水温等信息,自动调整洗涤时间和水的温度,提高洗涤效果。
3、漂洗过程控制在洗涤过程结束后,程序将自动进入漂洗阶段。
通过控制进水和排水阀的开闭时间,实现自动漂洗。
同时,根据洗涤过程中收集的衣物量和洗涤效果,智能调整漂洗次数和时间,确保衣物清洗干净。
4、脱水过程控制在漂洗过程结束后,程序将自动进入脱水阶段。
通过控制电机转速和脱水时间,实现衣物的高效脱水。
同时,为了保护衣物和机器的安全,程序将根据衣物的种类和重量信息,智能调整脱水时间和转速,确保脱水过程的顺利进行。
5、报警提示功能为了方便用户及时了解洗涤过程的状态,本设计还实现了报警提示功能。
《2024年基于单片机的全自动洗衣机系统设计》范文
《基于单片机的全自动洗衣机系统设计》篇一一、引言随着科技的不断进步和人民生活水平的提升,人们对家用电器设备的要求越来越高,特别是洗衣机这种日常生活中不可或缺的家用电器。
本文旨在介绍一种基于单片机的全自动洗衣机系统设计,以提高洗衣机的智能化程度,实现更为便捷、高效、自动化的洗衣体验。
二、系统设计概述本系统设计以单片机为核心控制器,通过集成电机驱动、水位检测、温度控制、洗涤程序控制等模块,实现全自动洗衣机的各项功能。
系统设计具有操作简便、功能齐全、节能环保等优点。
三、硬件设计1. 核心控制器:选用高性能的单片机作为核心控制器,负责整个系统的协调与控制。
2. 电机驱动模块:采用直流电机与电机驱动器配合,实现洗衣机的洗涤和脱水功能。
3. 水位检测模块:通过水位传感器实时检测洗衣机内的水位,并将数据传输给单片机,以便进行相应的操作。
4. 温度控制模块:采用温度传感器实时检测洗涤水的温度,并通过加热器进行温度调节,以满足不同的洗涤需求。
5. 洗涤程序控制模块:根据不同的洗涤需求,设置多种洗涤程序,如标准洗、快速洗、轻柔洗等。
6. 电源模块:为系统提供稳定的电源供应,确保系统正常运行。
四、软件设计软件设计是实现全自动洗衣机系统功能的关键。
本系统采用模块化程序设计思想,将软件分为以下几个部分:1. 主程序:负责整个系统的初始化、协调各模块工作,并显示洗衣进度。
2. 电机控制程序:根据洗涤程序的要求,控制电机的运行和停止。
3. 水位检测程序:实时检测水位数据,并将数据传输给单片机。
4. 温度控制程序:实时检测洗涤水温度,并根据需要调节加热器的功率。
5. 洗涤程序控制程序:根据用户选择的洗涤程序,控制洗衣机的运行。
五、功能实现本系统可实现以下功能:1. 自动进水:根据洗涤程序的需要,自动进水至设定水位。
2. 自动洗涤:根据用户选择的洗涤程序,自动进行洗涤操作。
3. 自动排水:洗涤完成后,自动排出污水。
4. 自动脱水:根据用户设置的脱水时间,自动进行脱水操作。
单片机原理及应用课程设计——洗衣机控制器
课程设计(论文)题目名称及于单片机全自动洗衣机控制器设计课程名称单片机原理及应用学生姓名学号1141304002系、专业信息工程系、电子科学与技术指导教师2013年6 月27 日摘要单片机又称“单片机微型计算机”、“微控制器”、“嵌入式微控制器”。
单片机适用于控制领域,是由CPU、RAM、ROM以及I/O接口电路集成在一起的芯片。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51系列单片机是各种单片机中最为典型和最有代表性的一种。
本设计根据全自动洗衣机控制系统的要求和特点,设计了一种基于MCS-51单片机的全自动洗衣机控制器。
该控制器以AT89C51为控制核心,进行洗衣程序的控制。
全自动即进水、洗衣、脱水等一系列过程自动完成,并显示预约时间。
通过本文你将会对全自动洗衣机控制器的设计进一步了解,明白全自动洗衣机的工作流程。
关键词:单片机;AT89C51;全自动;洗衣机控制;目录1. 前言 (3)1.1. 课题背景 (3)1.2. 国内外现状及水平 (3)2. 需求分析 (4)2.1. 课程设计目的 (4)2.2. 课程设计任务 (4)2.3. 设计环境 (4)3. 概要设计 (5)3.1. 电路模块结构 (5)3.2. 程序模块设计 (6)4. 详细设计 (7)4.1. 硬件电路设计 (7)4.2. 程序设计 (11)5. 设计仿真 (13)6. 课程设计总结 (15)参考文献 (16)致谢 (16)附录 (17)1.前言1.1. 课题背景随着人民生活水平的提高,越来越多的人需要使用洗衣机。
现在洗衣机越来越高度自动化,只要衣服放入洗衣机,简单的按两个键,就会自动注水,一些先进的电脑控制洗衣机,还能自动的感觉衣物的重量,自动的添加适合的水量和洗涤剂,自动的设置洗涤的时间和洗涤的力度,洗涤完以后自动的漂洗甩干,更有些滚筒洗衣机还会将衣物烘干,整个洗衣的过程完成以后还会用动听的音乐声提醒用户,用户可以在洗衣的过程做其它的事,节省了不少的时间。
《2024年基于单片机的全自动洗衣机系统设计》范文
《基于单片机的全自动洗衣机系统设计》篇一一、引言随着科技的不断进步和人们对生活品质追求的不断提高,全自动洗衣机成为了现代家庭不可或缺的家电之一。
本文将介绍一种基于单片机的全自动洗衣机系统设计,该设计旨在提高洗衣机的智能化程度,方便用户使用,并提高洗衣效果。
二、系统概述本系统采用单片机作为核心控制器,通过传感器、电机驱动等模块实现洗衣机的全自动控制。
系统主要由以下几个部分组成:单片机控制器、水位检测模块、电机驱动模块、按键输入模块、显示输出模块以及洗衣程序模块。
三、硬件设计1. 单片机控制器:选用性能稳定、功能强大的单片机作为核心控制器,负责整个系统的协调和控制。
2. 水位检测模块:通过水位传感器检测洗衣机内的水位,将检测结果传递给单片机,以便单片机根据水位调整洗衣程序。
3. 电机驱动模块:采用电机驱动芯片驱动洗衣机电机,实现洗衣、漂洗、脱水等功能的控制。
4. 按键输入模块:通过按键实现用户对洗衣程序的设定和操作。
5. 显示输出模块:通过LED或LCD显示屏,显示洗衣程序的状态和结果。
四、软件设计软件设计是本系统的关键部分,主要包括洗衣程序的编写和单片机的程序设计。
1. 洗衣程序设计:根据洗衣需求,设计多种洗衣程序,如标准洗、快速洗、强力洗等。
每个程序包括浸泡、洗涤、漂洗、脱水等步骤,通过单片机控制电机驱动模块和水位检测模块实现。
2. 单片机程序设计:采用C语言或汇编语言编写单片机程序,实现按键输入、显示输出、水位检测、电机控制等功能。
程序采用模块化设计,便于后期维护和升级。
五、系统实现1. 单片机与各模块的连接:通过电路将单片机与水位检测模块、电机驱动模块、按键输入模块、显示输出模块等连接起来,形成完整的系统。
2. 程序烧录:将编写好的程序通过烧录器烧录到单片机中,使单片机具备控制各模块的功能。
3. 系统调试:对系统进行全面的调试,确保各模块正常工作,洗衣程序准确执行。
六、系统特点1. 智能化程度高:本系统采用单片机控制,实现洗衣过程的全自动控制,提高洗衣效果。
《2024年基于单片机的全自动洗衣机系统设计》范文
《基于单片机的全自动洗衣机系统设计》篇一一、引言随着科技的不断发展,人们的生活品质得到了显著提高。
全自动洗衣机作为现代家庭不可或缺的家电之一,其便捷性和高效性已经深入人心。
本文将介绍一种基于单片机的全自动洗衣机系统设计,该系统设计旨在提高洗衣机的智能化程度和用户体验。
二、系统设计概述本系统设计采用单片机作为核心控制器,通过传感器、电机驱动器、人机交互界面等模块,实现洗衣机的全自动控制。
系统设计包括硬件设计和软件设计两部分。
三、硬件设计1. 单片机控制器:作为整个系统的核心,负责接收传感器信号、控制电机驱动器、处理人机交互信息等。
2. 传感器模块:包括水位传感器、温度传感器、转速传感器等,用于实时监测洗衣机的运行状态。
3. 电机驱动器:控制洗衣机的进水、排水、洗涤、漂洗、脱水等动作。
4. 人机交互界面:包括液晶显示屏、按键等,方便用户设置洗衣程序、查看运行状态等。
5. 电源模块:为整个系统提供稳定的电源供应。
四、软件设计软件设计主要包括单片机的程序编写和系统控制算法的实现。
1. 程序编写:根据硬件设计,编写单片机的控制程序,实现洗衣机的全自动控制。
程序包括主程序、中断服务程序、AD转换程序、PWM控制程序等。
2. 系统控制算法:根据洗衣机的运行状态和用户设置,采用合适的控制算法,如PID控制算法,实现洗衣机的精确控制。
五、系统功能与特点1. 全自动控制:系统采用全自动控制方式,用户只需设置洗衣程序,系统即可自动完成进水、洗涤、漂洗、排水、脱水等动作。
2. 智能感知:通过传感器实时监测洗衣机的运行状态,如水位、温度、转速等,确保洗衣机在最佳状态下运行。
3. 人机交互友好:采用液晶显示屏和按键等人机交互方式,方便用户设置洗衣程序、查看运行状态等。
4. 节能环保:系统采用先进的控制算法和电机驱动技术,实现洗衣机的节能环保。
5. 多种洗衣程序:系统支持多种洗衣程序,如棉织物、化纤织物、内衣、外套等,满足用户的不同需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海电力学院16位单片机大作业实验报告实验名称:洗衣机控制器专业:通信工程姓名:班级:学号:一、设计目的运用C 语言,深入了解MC9S12XS128单片机的知识,根据题目的要求进行软硬件的设计和调试,从而加深对于本课程知识点的理解,掌握了如何使用CodeWarrior 来整合各种驱动模块,再通过算法实现硬件上的运行。
二、功能描述最终运行程序实现的的功能为:通过对于CodeWarrior 软件的操作,编写代码,最终实现freescale MC9S12XS128单片机简单控制洗衣机洗衣功能。
按自己的要求将实验箱连线,通电后,LCD 显示屏上面上排显示可以设定的时间,下排显示倒计时的时间,通过键盘输入设定的时间,开始计时,LED 显示灯(绿灯亮起)。
设置好固定的洗衣时间后,开始执行“洗衣”,倒计时完成后,即“洗衣”完成,在LCD 显示屏上面显示“洗衣”的时间到,即时间到00:00,LED 所有灯亮。
三.实验设备1.PC 机一台2.S12嵌入式开发系统 一台3.连接导线 若干 4.小键盘一个四.模块(一)定时模块定时器实现溢出中断接线图PTA0 PTA1 PTA2 PTA3 PTA4 PTA5 PTA6 PTA7PTA 口(KEY1-8)Vcc导线接插点(二)LED 指示灯模块0x55:绿灯亮 0xFF :全部灯亮 (三)LCD 显示模块表7-1 HD44780引脚信号管脚号 符号 电平方向引脚含义说明1 Vss 电源地2 Vdd 电源(+5V)3 V0 液晶驱动电源(0~5V )4 RS H/L 输入 寄存器选择;1-数据寄存器 0-指令寄存器5 R/W H/L 输入 读写操作选择:1-读操作 0-写操作 6E H/L H →L 输入使能信号:R/W =0,E 下降沿有效 R/W =1,E=1有效7~10DB0~DB3 三态8位数据总线的低4位,若与MCU 进行4位传送时,此4位不用11~14 DB4~DB7 三态 8位数据总线的高4位,若与MCU 进行4位传送时,只用此4位15~16E1~E2输入上下两行使能信号,只用于一些特殊型号(四)键盘输入模块 键盘接线原理图:实验箱提供一个16键键盘,用于键盘中断信号的输入。
键盘插孔如下图所示。
图7-1 MCU 与LCD 的连接LCD(HD44780)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 DB7 DB6 DB5 DB4 DB3 DB2DB1DB0ER/WRSV0VddV SS +5VPTB7 PTB6 PTB5 PTB4 PTB3PTB2PTB1PTB0PTM6 PTM3PTM2本实验中:(1) 键盘采用手动接线,将键盘接入双排插孔下一排插孔。
(2) PTP0~3分别接键盘接线处的1~4; (3) PTA0~3分别接5-8; (4) PTB 口接8个小灯。
2五.设计方案实验中需要添加模块都是平时上课的时候做过的实验模块,所以要实现预期的功能,只需要在以前的程序的基础上稍加修改,把各个模块在主程序中联系起来,加以调用,就可以实现所要求的功能。
列线 n 1 n 2 n 3 n 4MCU 内部上拉电阻键盘接线原理图1 2 3 4 5 6 7 8行线m 1m 2 m 3 m 4+5VPTB0 PTB1 PTB2 PTB3 PTB4 PTB5 PTB6 PTB7PTB (LED1-LD0-7)PTP0(PWM1) PTP1(PWM2) PTP2(GPIO-78) PTP3(GPIO-77)PTA0(KEY1) PTA1(KEY2) PTA2(KEY3) PTA3(KEY4)主要驱动模块有:计数定时模块:Timer.cLCD显示模块:LCD.cLED指示模块:Light.c键盘输入模块:KBI_I.c六.程序设计代码[main.c]//包含头文件#include "Includes.h" //包含总头文件#include <string.h>//在此添加全局变量定义uint8 receive_data[32];uint8 valve,mark,i, period,duty;extern uint8 time[3],T[6];//主函数void main(){//0.1 主程序使用的变量定uint32 mRuncount=0; //运行计数器uint8 c;//0.2 关总中断DisableInterrupt();//0.3 芯片初始化MCUInit(FBUS_32M);//0.4 模块初始化Light_Init(Light_Run_PORT,Light_Run,Light_OFF); //RUN指示灯初始化为暗 //PWMInit(0); //初始化PWM通道1TimerInit(); //(1)定时器1初始化 LCDInit(); //液晶显示初始化SCIInit(0,FBUS_32M,9600); //串口0初始化KBInit(); //键盘初始化//0.5 开放中断EnableSCIReInt0; //开放SCI0接收中断EnableKBint(); //开放键盘中断EnableInterrupt(); //开放总中断DDRB=0xff;PORTB=0x55;memcpy(receive_data,"Start:00:00******Stop: : *****",32);LCDShow((uint8 *)receive_data);// 主循环for(;;){if((receive_data[22]=='0')&&(receive_data[23]=='0')&&(receive_data[25]=='0')&&( receive_data[26]=='0')){DisableTimer;PORTB=0xFF;}}}[isr.c]//头文件包含,及宏定义区//头文件包含#include "Includes.h" //包含总头文件uint8 j=0,TimInterCount=0;uint8 T[6]=0;uint8 time[3]=0;extern uint8 valve;extern uint8 receive_data[32];#pragma CODE_SEG __NEAR_SEG NON_BANKED//中断服务程序区//未定义的中断处理函数,本函数不能删除,默认__interrupt void isr_default(void){DisableInterrupt();EnableInterrupt();}//定时器溢出中断处理程序__interrupt void isrTimOver(void){DisableInterrupt(); //关总中断TimInterCount++; //中断次数加一,中断4次为一秒 if (TimInterCount >= 4){receive_data[22]=time[1]/10+'0';receive_data[23]=time[1]%10+'0';receive_data[25]=time[2]/10+'0';receive_data[26]=time[2]%10+'0';SecAdd1(time); //定时器更新LCDShow((uint8 *)receive_data);TimInterCount=0;}TFLG2 = 0x80; //清除定时器溢出标志位EnableInterrupt(); //开总中断}//键盘中断__interrupt void isrKeyBoard(void){uint16 i;DisableInterrupt();DisableKBint();for (i=0 ; i<20000; i++); //延时valve = KBScanN(10);//扫描键值,存于value中if(j<4){if(j==0){receive_data[6]= KBDef(valve);T[0]= KBDef(valve)-'0';}if(j==1){receive_data[7]= KBDef(valve);T[1]= KBDef(valve)-'0';}if(j==2){receive_data[9]= KBDef(valve);T[2]= KBDef(valve)-'0';}if(j==3){receive_data[10]= KBDef(valve);T[3]= KBDef(valve)-'0';}j++;}time[1]=T[0]*10+T[1];time[2]=T[2]*10+T[3];if(valve==0xD7){EnableTimer;PORTA=0xAA;}LCDShow((uint8 *)receive_data);KBInit(); //键盘初始化EnableKBint(); //开放键盘中断 EnableInterrupt(); //开放总中断}[Timer.c]//头文件包含,及宏定义区//头文件包含#include "Timer.h" //定时器构件头文件void TimerInit(void){//允许主定时器开始计数TSCR1 = 0x80;//禁止定时器溢出中断,中断一次时间计算:t=n/(fbus/p)≈1/4秒, //其中n=65535,fbus=32MHZTSCR2 = 0b00000111;// |||_// ||__\分频因子为2^7=128// |___/}void SecAdd1(uint8 *p){*(p+2) -= 1; //秒减1 if (*(p+2) < 0) //秒溢出{*(p+2) = 60; //清秒 *(p+1) -= 1; //分减1 if (*(p+1) < 0) //分溢出{*(p+1) = 60; //清时 *p -= 1; //时减1 if (*p < 0) //时溢出*p = 24; //清时 }}}[Light.c]#include "Light.h" //指示灯驱动程序头文件void Light_Init(uint16 port,uint8 name,uint8 state){GPIO_Init(port,name,1,state); //初始化指示灯}void Light_Control(uint16 port,uint8 name,uint8 state){GPIO_Set(port,PRT,name,state); //控制引脚状态}void Light_Change(uint16 port,uint8 name){if(GPIO_Get(port,PRT,name)==Light_ON) //若原来为"亮",则变"暗" GPIO_Set(port,PRT,name,Light_OFF);else //若原来为"暗",则变"亮" GPIO_Set(port,PRT,name,Light_ON);}[LCD.c]#include "LCD.h" //LCD构件头文件//构件函数实现void LCDInit(void){uint16 i;// 定义数据口为输出GPIO_Set(LCD_P0,DDR,LCD_B0,1);GPIO_Set(LCD_P1,DDR,LCD_B1,1);GPIO_Set(LCD_P2,DDR,LCD_B2,1);GPIO_Set(LCD_P3,DDR,LCD_B3,1);GPIO_Set(LCD_P4,DDR,LCD_B4,1);GPIO_Set(LCD_P5,DDR,LCD_B5,1);GPIO_Set(LCD_P6,DDR,LCD_B6,1);GPIO_Set(LCD_P7,DDR,LCD_B7,1);// 定义控制口为输出GPIO_Set(LCDRS_P,DDR,LCDRS_B,1);GPIO_Set(LCDRW_P,DDR,LCDRW_B,1);GPIO_Set(LCDE_P,DDR,LCDE_B,1);// 设置指令,RS,R/W = 00, 写指令代码GPIO_Set(LCDRS_P,PRT,LCDRS_B,0);GPIO_Set(LCDRW_P,PRT,LCDRW_B,0);// 功能设置LCD_Command(0b00111000);//||||||||____ 可设任意值(0/1)//||||||______ F = 0,5*7点阵模式//|||||_______ N = 1,2行显示//||||________ DL = 1,8位数据总线//|||_________ 固定为001// 显示开关控制LCD_Command(0b00001000);//||||||||____ B = 0,不闪烁//|||||||_____ C = 0,关光标显示//||||||______ D = 0,关显示//|||||_______ 固定为00001// 清屏// 清DD RAM内容,光标回原位,清ACLCD_Command(0b00000001);// 等待清屏完毕,时间 > 1.6msfor (i=0; i<20000; i++);// 输入方式设置LCD_Command(0b00000110);//||||||||____ 显示不移动,光标左移(A = 1)//|||||||_____ 数据读写操作后,AC自动增1//||||||______ 固定为000001// 光标或画面移位设置LCD_Command(0b00010100);//||||||||____ 可设任意值(0/1)//||||||______ 光标右移一个字符位,AC自动加1//||||________ 固定为0001// 显示开关控制LCD_Command(0b00001100);//||||||||____ B = 0,不闪烁//|||||||_____ C = 0,关光标显示//||||||______ D = 1,开显示//|||||_______ 固定为00001}void Delay1(uint16 k){uint16 i,j;for (i=0; i<k; i++)for (j=0; j<=500; j++);}//LCDShow:在HD44780显示屏上显示数据void LCDShow(uint8 str[]){uint8 i;// LCD初始化LCDInit();// 显示第1行16个字符//设置显示首地址GPIO_Set(LCDRS_P,PRT,LCDRS_B,0); //RS,R/W = 00(写的是指令) GPIO_Set(LCDRW_P,PRT,LCDRW_B,0);LCD_Command(0x80); //后7位为DD RAM地址(0x00)//2.2写16个数据到DD RAMGPIO_Set(LCDRS_P,PRT,LCDRS_B,1); //RS,R/W = 10(写的是数据)GPIO_Set(LCDRW_P,PRT,LCDRW_B,0);// 将要显示在第1行上的16个数据逐个写入DD RAM中for (i = 0;i < 16;i++){LCD_Command(str[i]);}// 显示第2行16个字符//设置显示首地址GPIO_Set(LCDRS_P,PRT,LCDRS_B,0); //RS,R/W = 00(写的是指令) GPIO_Set(LCDRW_P,PRT,LCDRW_B,0);LCD_Command(0xC0); //后7位为DD RAM地址(0x40)// 再写16个数据到DD RAMGPIO_Set(LCDRS_P,PRT,LCDRS_B,1); //RS,R/W = 10(写的是数据) GPIO_Set(LCDRW_P,PRT,LCDRW_B,0);// 将要显示在第2行上的16个数据逐个写入DD RAM中for (i = 16;i < 32;i++){LCD_Command(str[i]);}}//LCD_Command:执行给定的cmd命令void LCD_Command(uint8 cmd){uint8 i;// 等待 > 40usDelay1(5);// 数据送到LCD的数据线上GPIO_Set(LCD_P0,PRT,LCD_B0,((cmd >> 0) & 0x01));GPIO_Set(LCD_P1,PRT,LCD_B1,((cmd >> 1) & 0x01));GPIO_Set(LCD_P2,PRT,LCD_B2,((cmd >> 2) & 0x01));GPIO_Set(LCD_P3,PRT,LCD_B3,((cmd >> 3) & 0x01));GPIO_Set(LCD_P4,PRT,LCD_B4,((cmd >> 4) & 0x01));GPIO_Set(LCD_P5,PRT,LCD_B5,((cmd >> 5) & 0x01));GPIO_Set(LCD_P6,PRT,LCD_B6,((cmd >> 6) & 0x01));GPIO_Set(LCD_P7,PRT,LCD_B7,((cmd >> 7) & 0x01));// 给出E信号的下降沿,使数据写入LCDGPIO_Set(LCDE_P,PRT,LCDE_B,1);for(i=0;i<10;i++) //延时asm("NOP");// Lcd结束接收数据GPIO_Set(LCDE_P,PRT,LCDE_B,0);// 等待 > 40usDelay1(5);}[KBI_I.c]//头文件包含,及宏定义区//头文件包含#include "KBI_I.h" //键盘构件头文件//构件函数实现void KBInit(void){GPPort_Set(KB_P,PTI,1,0x0F); //复位相应寄存器GPPort_Set(KB_P,DDR,0,0xF0); //定义列线(PTP0~3)为输入GPPort_Set(KB_A,PRT,0,0xF0); //复位相应寄存器GPPort_Set(KB_A,DDR,1,0x0F); //行线(PTA0~3)为输出GPPort_Set(KB_P,PER,1,0x0F); //输入引脚(列线)有内部上拉电阻 GPPort_Set(KB_P,PPS,0,0xF0); //下降沿产生中断DisableKBint(); //禁止键盘中断GPPort_Set(KB_P,PIF,1,0x0F); //清除键盘中断请求}uint8 KBScan1(void){uint8 i,tmp;for (i = 0; i <= 3; i++) //最多将扫描4根行线{GPPort_Set(KB_A,PRT,1,0x0F); //当前扫描的一行,输出低电平 GPPort_Set(KB_A,PRT,0,~(1<<i));asm("NOP");asm("NOP");//读取键盘口数据寄存器tmp=GPPort_Get(KB_P,PTI)&0x0F;//通过观察4根列线中是否出现低电平来判断当前行有无按键if (tmp != 0x0F) //当前行有键按下{tmp= (tmp<<4)|(GPPort_Get(KB_A,PRT)&0x0F);break; //退出循环不再扫描}}if (i == 4) //无按键,以后将返回0xfftmp = 0xFF;return (tmp);}//键盘定义表const uint8 KBTable[] ={0xEE,'7',0xDE,'8',0xBE,'9',0x7E,'C',0xED,'4',0xDD,'5',0xBD,'6',0x7D,'D',0xEB,'1',0xDB,'2',0xBB,'3',0x7B,'E',0xE7,'0',0xD7,'A',0xB7,'B',0x77,'F',0x00};uint8 KBDef(uint8 valve){uint8 KeyPress; //键定义值uint8 i;i = 0;KeyPress = 0xff;while (KBTable[i] != 0x00) //在键盘定义表中搜索欲转换的键值,直至表尾 {if(KBTable[i] == valve) //在表中找到相应的键值{KeyPress = KBTable[i+1]; //取出对应的键定义值break;}i += 2; //指向下一个键值,继续判断}return KeyPress;}uint8 KBScanN(uint8 KB_count){uint8 i,KB_value_last,KB_value_now;//先扫描一次得到的键值,便于下面比较if (0 == KB_count || 1 == KB_count)return KBScan1();KB_value_now = KB_value_last = KBScan1();//以下多次扫描消除误差for (i=0; i<KB_count-1; i++){KB_value_now = KBScan1();if (KB_value_now == KB_value_last)return KB_value_now; //返回扫描的键值elseKB_value_last = KB_value_now;}//返回出错标志return 0xFF;}七、设计心得在本次的实验中,要求我们将平时所学的各个模块添加在一起,从而实现洗衣机控制器的各个功能。