基于51单片机多功能洗衣机控制(强洗弱洗漂洗)设计( proteus仿真+程序+设计报告+原理图+讲解视频)

news2024/11/18 2:28:35

基于51单片机多功能洗衣机控制(强洗弱洗漂洗)设计( proteus仿真+程序+设计报告+原理图+讲解视频)

多功能洗衣机控制-强洗弱洗漂洗

  • 1. 主要功能:
  • 2. 讲解视频:
  • 3. 仿真设计
  • 4. 程序代码
  • 5. 设计报告
  • 6. 原理图
  • 7. 设计资料内容清单
    • 资料下载链接:

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0077

1. 主要功能:

基于51单片机的洗衣机多功能控制面板proteus仿真设计。

1、通过直流电机的转速体现三种不同洗衣方式,弱洗、强洗、漂洗;

2、用三个独立按键设置待洗衣物的不同洗涤方式:

丝质衣服:漂洗定时3分钟

棉质衣服:弱洗2分钟;强洗5分钟;漂洗3分钟;

化纤衣服:强洗4分钟;漂洗2分钟;

3、定时时间到,或者中途按下停止键,蜂鸣器报警提示;

4、数码管显示定时时间;

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

img

2. 讲解视频:

讲解视频包含仿真运行讲解和代码讲解

3. 仿真设计

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。通过按键选择模式,化纤模式下启动开始六分钟倒计时,化纤衣服下强洗4分钟;漂洗2分钟。

img

通过按键选择棉质模式,开始十分钟倒计时。棉质衣服:弱洗2分钟;强洗5分钟;漂洗3分钟;

img

通过按键选择丝质模式,开始十分钟倒计时。丝质模式漂洗定时3分钟;

定时时间到,或者中途按下停止键,蜂鸣器报警提示;数码管显示定时时间。

4. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。

#include "reg51.h"

#define uchar unsigned char
#define uint unsigned int
sbit k1=P3^0;//按钮
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
sbit k5=P3^4;
sbit out=P1^0;
sbit beep=P2^4;//蜂鸣器
sbit led1=P3^5;//洗涤强度指示
sbit led2=P3^6;
sbit led3=P3^7;
sbit led4=P2^5;//洗涤模式
sbit led5=P2^6;
sbit led6=P2^7;
sbit led7=P1^7;//启停
sbit smg1=P2^0;//数码管
sbit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;

uchar code smgduan0[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9,无小数点
uchar code smgduan1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//显示0~9,有小数点
//丝质silk,棉质Cotton,化纤Chemical fiber
uchar time=0,miao=0,fen=0;//时间
uchar start=0,mode=0,sec=0;

void disp();//函数声明
// 定义输出PWM信号的函数,参数k用于区分弱洗、强洗和漂洗模式
void pwm(uchar k)//弱洗、强洗、漂洗; 
{
    uchar i;
    // 循环99次,模拟不同阶段的电机转速控制
    for(i = 0; i < 99; i++)
    {
        // 根据k值判断当前处于哪种洗涤模式,并相应设置电机输出(out)
        if(k == 1) // 若为弱洗模式
        {
            if(i < 30) // 当计数i小于30时,电机低速运行(out=0)
                out = 0;
            else       // 否则电机高速运行(out=1)
                out = 1;
        }
        else if(k == 2) // 若为强洗模式
        {
            if(i < 50) // 当计数i小于50时,电机低速运行(out=0)
                out = 0;
            else       // 否则电机高速运行(out=1)
                out = 1;
        }
        else if(k == 3) // 若为漂洗模式
        {
            if(i < 10) // 当计数i小于10时,电机低速运行(out=0)
                out = 0;
            else       // 否则电机高速运行(out=1)
                out = 1;
        }
        
        // 调用disp()函数显示当前时间
        disp();
    }
}
//延时
void delay(uint i)
{
	while(i--);
}
//显示
void disp()
{
    P0 = smgduan0[fen / 10]; // 显示分钟的十位数字
    smg1 = 0;               // 清除数码管段选信号
    delay(10);              // 延迟一段时间以实现分段显示效果
    smg1 = 1;               // 设置数码管段选信号

    P0 = smgduan1[fen % 10]; // 显示分钟的个位数字
    smg2 = 0;               // 清除数码管段选信号
    delay(10);
    smg2 = 1;               // 设置数码管段选信号

    P0 = smgduan0[miao / 10]; // 显示秒的十位数字
    smg3 = 0;               // 清除数码管段选信号
    delay(10);
    smg3 = 1;               // 设置数码管段选信号

    P0 = smgduan0[miao % 10]; // 显示秒的个位数字
    smg4 = 0;               // 清除数码管段选信号
    delay(10);
    smg4 = 1;               // 设置数码管段选信号
}
//主函数
void main()
{	
	TMOD|=0X01;//初始化定时器
	TH0=0X3C;
	TL0=0XB0;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	while(1)
        完整代码见文章末尾压缩包
	{
		disp();//显示时间
		if(!k1)//丝质
		{
			mode=0;
		} 
		if(!k2)//棉质
		{
			mode=1;
		}
		if(!k3)//化纤
		{
			mode=2;
		}
		if(!k4)//启动
		{
			start=1;
			beep = 1;			
		}
		if(!k5)//停止
		{
			start=0;
			fen=0;
			miao=0;
			beep = 1;
			sec = 0;
		}
		if(start==1)//如果启动标志start为1,则执行相应的洗涤操作
		{
			if(mode==0)//丝质,漂洗定时3分钟
			{
				fen=3;miao=0;
				led1=1;
				led2=1;
				led3=0;
				while((fen>0)||(miao>0))
				{
					pwm(3);
					if(!k5)//停止
					{
						start=0;
						break;
					}					
				}
				sec=30;
				start=0;
			}
			
	}
}

// 定义定时器0的中断服务程序,当定时器0产生中断时,该函数会被调用
void Timer0() interrupt 1
{
    // 检查时间计数变量time是否小于10(这里设置的是每过约10个计数值表示1秒)
    if(time < 10)
    {
        // 如果time未满1秒,则将其加1,继续累计时间
        time++;
    }
    else
    {
        // 当累积到1秒后,重置time为0,并开始处理倒计时逻辑
        time = 0;
        // 检查当前秒数miao是否大于0,如果是,则进行倒计时操作,减去1秒
        if(miao > 0)
            miao--;
        // 当miao减至0时,检查分钟数fen是否大于0
        else
        {
            // 若fen大于0,则分钟数减少1,并将miao重新设定为59秒
            miao = 59;
            if(fen > 0)
                fen--;
            
            // 若fen也已减至0,则清零miao
            else
            {
                miao = 0;
            }
        }
        // 根据start标志判断是否正在启动状态
        if(start == 1) 
        {
            // 若处于启动状态,关闭led7(可能表示某种运行指示灯)
            led7 = 0;
        }
        else
        {
            // 若不在启动状态,则打开led7
            led7 = 1;
        }
        // 显示当前工作模式
        // mode=0时显示对应LED组合
        if(mode == 0)
        {
            led4 = 0; // 设置led4的状态
            led5 = 1; // 设置led5的状态
            led6 = 1; // 设置led6的状态
        }
        // mode=1时显示另一组LED组合
        if(mode == 1)
        {
            led4 = 1; // 设置led4的状态
            led5 = 0; // 设置led5的状态
            led6 = 1; // 设置led6的状态
        }
        // mode=2时显示最后一组LED组合
        if(mode == 2)
        {
            led4 = 1; // 设置led4的状态
            led5 = 1; // 设置led5的状态
            led6 = 0; // 设置led6的状态
        }
        // 蜂鸣器控制部分
        // 检查蜂鸣器延时计数器sec是否大于0
        if(sec > 1)
        {
            // 如果sec大于0,则减1并关闭蜂鸣器(beep=0)
            sec--;
            beep = 0;
        } else if(sec==1) {
            // 若sec已经减至1,则开启蜂鸣器(beep=1)
            beep = 1;
        }
        // 重新加载定时器0的初值,以维持固定的中断频率(这里是设置成大约1秒的周期)
        TH0 = 0X3C;
        TL0 = 0XB0;
    }
}

5. 设计报告

6098字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

img

通过Proteus仿真平台的强大功能,我们能够进行全方位的功能验证与性能测试,使学生能够在虚拟环境中实现对整个系统的硬件电路设计、软件编程及系统集成的全过程演练。此过程不仅能帮助学生深入理解单片机系统在实际家电产品中的具体应用方式和工作原理,还为他们提供了宝贵的实践机会,可以锻炼并提升硬件电路设计、信号处理、嵌入式编程、实时控制算法开发等方面的专业技能。

同时,本设计项目强调理论与实践相结合的教学方法,鼓励学生自主探究,激发创新思维,通过解决实际问题来积累工程实践经验。因此,完成此项目后,学生们不仅能掌握单片机系统在智能家电领域的具体应用,还能全面提升自身的综合设计能力和实际动手能力,为未来从事相关领域的工作或研究奠定坚实的基础。

6. 原理图

原理图使用AD绘制,可供实物参考,仿真不同于实物,需要调试经验才能做出来。

img

Proteus仿真和实物作品的区别:

1.运行环境:Proteus仿真是在计算机上运行的,而实物则是在硬件电路板上运行。

2.调试方式:在Proteus仿真中,可以方便地进行单步调试和观察变量值的变化,而在实物中则需要通过调试器或者串口输出等方式进行调试。

电路连接方式:在Proteus仿真中,可以通过软件设置进行电路连接的修改,而在实物中则需要通过硬件电路板和连接线进行修改。

3.运行速度:Proteus仿真通常比实物运行速度快,因为仿真是基于计算机运行的,而实物则需要考虑电路板上的物理限制和器件的响应时间等因素。

4.功能实现:在Proteus仿真中,可以通过软件设置实现不同的功能,而在实物中则需要根据电路设计和器件的性能进行实现。

7. 设计资料内容清单

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

img

0、常见使用问题及解决方法–必读!!!!

1、程序代码注释

2、proteus仿真

3、功能要求

4、软硬件流程图

5、开题报告

6、设计报告

7、原理图

8、讲解视频

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

资料下载链接:

https://docs.qq.com/doc/DS29EdFdqUVVHWWFJ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1594477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Element-UI 自定义-下拉框选择年份

1.实现效果 场景表达&#xff1a; 默认展示当年的年份&#xff0c;默认展示前7年的年份 2.实现思路 创建一个新的Vue组件。 使用<select>元素和v-for指令来渲染年份下拉列表。 使用v-model来绑定选中的年份值。 3.实现代码展示 <template><div><el-…

数学:人工智能学习之路上的“拦路虎”及其背后的奥秘

在人工智能的浪潮席卷全球的今天&#xff0c;越来越多的人开始涉足这一领域&#xff0c;以期掌握其核心技术&#xff0c;为未来的科技发展贡献力量。然而&#xff0c;在学习的道路上&#xff0c;许多人却遇到了一个不小的挑战——数学。为何数学会成为学习人工智能的“拦路虎”…

多波长,无限可能:探索波分复用的前沿 ✨

&#x1f331;当我们谈论光纤通信时&#xff0c;波分复用是一个不可忽视的关键词。它不仅改变了通信的速度和容量&#xff0c;更是连接数字世界的一座隐形桥梁。让我们深入了解这项技术的精髓。 &#x1f4da; 目录 ❓什么是WDM波分复用&#xff1f;以及WDM工作原理&#x1f5…

有真的副业推荐吗?

#有真的副业推荐吗# 我做副业项目的时候&#xff0c;认识了一位带娃宝妈&#xff0c;讲一下她空闲时间做副业赚钱的故事吧。在一个温馨的小家庭里&#xff0c;李婷是一位全职宝妈&#xff0c;她的主要任务是照顾和陪伴自己可爱的宝宝。然而&#xff0c;随着宝宝逐渐长大&#x…

Linux应用开发笔记(八)SPI应用层开发及其框架

文章目录 前言一、扩展SPI协议&#xff08;Single/Dual/Quad/Octal SPI&#xff09;二、SPi驱动框架三、SPI应用编程1. SPI相关数据结构与ioctl函数2. 基本函数 前言 与IIC类似&#xff0c;SPI协议也是我们的老朋友了&#xff0c;这里依然不多作赘述&#xff0c;本文将介绍SPI的…

Flutter第八弹 构建拥有不同项的列表

目标&#xff1a;1&#xff09;项目中&#xff0c;数据源可能涉及不同的模版&#xff0c;显示不同类型的子项&#xff0c;类似RecycleView的itemType, 有多种类型&#xff0c;列表怎么显示&#xff1f; 2&#xff09;不同的数据源构建列表 一、创建不同的数据源 采用类似Rec…

韩顺平Java | C25 JDBC和连接池(上)

概述 JDBC概述&#xff1a;JDBC为访问不同数据库提供统一接口&#xff0c;为使用者屏蔽细节问题。Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统&#xff0c;从而完成对数据库的各种操作。 // 模拟代码 //JdbcInterface.java --Java规定的JDBC接口(方法) p…

Linux-文件系统理解(磁盘的物理与逻辑结构、什么是inode、OS如何管理磁盘)

一、磁盘 磁盘的物理结构 磁盘的本质是一个机械设备&#xff0c;可以存储大量的二进制信息&#xff0c;是实现数据存储的基础硬件设施&#xff0c;磁盘的盘片类似于光盘&#xff0c;不过盘片的两面都是可读可写可擦除的&#xff0c;每个盘面都有一个磁头&#xff0c;马达可以使…

keil无法查看外设寄存器(生成SFR文件)

1.前言 自从更新了keil&#xff0c;用的是越来越不顺手了&#xff0c;一会是cannot evaluate&#xff0c;一会是与强制与cubemx强制联系了&#xff0c;这次也是的&#xff08;地铁&#xff0c;老人&#xff0c;手机&#xff09;折腾了一下总是搞好了&#xff08;网上的解法只能…

安卓刷机fastboot分段传输

win10 fastboot 无法识别&#xff0c;驱动下载地址GitHub - xushuan/google_latest_usb_driver_windows 把inf文件更新到设备管理器驱动更新即可 问题 archive does not contain super_empty.img Sending vbmeta_a (4 KB) OKAY [ 0.117s] Writing …

Open CASCADE学习|实现Extrude功能

首先定义了一些基本的几何元素&#xff0c;如线、圆和平面&#xff0c;然后使用makeExtrudebydir函数来对一个面进行挤出操作。下面是详细过程&#xff1a; 定义Extrude函数&#xff1a;makeExtrudebydir函数接受一个TopoDS_Shape对象和一个gp_Vec对象作为参数。TopoDS_Shape是…

【vs2019】window10环境变量设置

【vs2019】window10环境变量设置 【先赞后看养成习惯】求关注点赞收藏&#x1f60a; 安装VS2019时建议默认安装地址&#xff0c;最好不要改动&#xff0c;不然容易出问题 以下是安装完VS2019后环境变量的设置情况&#xff0c;C:\Program Files (x86)\Microsoft Visual Studi…

【Unity添加远程桌面】使用Unity账号远程控制N台电脑

设置地址&#xff1a; URDP终极远程桌面&#xff1b;功能强大&#xff0c;足以让开发人员、设计师、建筑师、工程师等等随时随地完成工作或协助别人https://cloud-desktop.u3dcloud.cn/在网站登录自己的Unity 账号上去 下载安装被控端安装 保持登录 3.代码添加当前主机 "…

初探vercel托管项目

文章目录 第一步、注册与登录第二步、本地部署 在个人网站部署的助手vercel&#xff0c;支持 Github部署&#xff0c;只需简单操作&#xff0c;即可发布&#xff0c;方便快捷&#xff01; 第一步、注册与登录 进入vercel【官网】&#xff0c;在右上角 login on&#xff0c;可登…

【小迪安全2023】第23天:WEB攻防-Python考点CTF与CMS-SSTI模版注入PYC反编译

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

Linux 文件页反向映射

0. 引言 操作系统中与匿名页相对的是文件页&#xff0c;文件页的反向映射对比匿名页的反向映射更为简单。如果还不清楚匿名页反向映射逻辑的&#xff0c;请移步 匿名页反向映射 1. 文件页反向映射数据结构 struct file&#xff1a; 用户进程每open()一次文件&#xff0c;则会生…

微服务相关

1. 微服务主要七个模块 中央管理平台&#xff1a;生产者、消费者注册&#xff0c;服务发现&#xff0c;服务治理&#xff0c;调用关系生产者消费者权限管理流量管理自定义传输协议序列化反序列化 2. 中央管理平台 生产者A在中央管理平台注册后&#xff0c;中央管理平台会给他…

BLIP 算法阅读记录---一个许多多模态大语言模型的基本组件

论文地址&#xff1a;&#x1f608; 目录 一、环境配置以及数据集准备 数据集准备 数据集格式展示 环境配置&#xff0c;按照官网所述即可 二、一些调整 vit_base的预训练模型 远程debug的设置 Tokenizer初始化失败 读入网络图片的调整 三、训练过程 Image Encoder …

Kylin IPv4 setting config

Kylin IPv4 setting-CSDN博客 上次配置完重启又没了&#xff0c;永久需要修改配置文件 /etc/sysconfig/network-scripts ifcfg-ens33

langchain-chatchat指定一个或多个文件回答,不允许回答内容有其他文件内容,即屏蔽其他文件内容

1.找到langchain-chatchat中的knowledge_base_chat.py 2.knowledge_base_chat.py的api内容加上一个flie_name参数&#xff0c;即传过来你需要指定一个文件名称&#xff0c;或多个文件名称&#xff0c;同时也可以不指定&#xff0c;加上以下代码&#xff1a; flie_name: List …