单片机实训智能洗衣机

目录

  • 单片机实训智能洗衣机
    • 第一部分 内容介绍
    • 第二部分 实训代码
    • 第三部分 硬件仿真电路
    • 第四部分 设计过程
      • 1、安装软件
      • 2、仿真图绘制
      • 3、编写代码
      • 4、装载hex文件
    • 第五部分 使用方法
    • 第六部分 软件链接

第一部分 内容介绍

  • 此实训内容使用软件Proteus7.8和Keil4设计完成,设计使用的语言是C语言,使用的单片机型号是AT89C51单片机,可以实现洗衣机的定时洗涤、定时甩干、转速和洗涤时间的设置。

第二部分 实训代码

#include<reg51.h>
#include<stdio.h>
void delay(unsigned int t);
#define uchar unsigned char
#define uint unsigned int
sbit F1 = P0^0;
sbit F2 = P0^1;
sbit F3 = P0^2;
sbit F4 = P0^3;
sbit K1 = P3^0;//慢速
sbit K2 = P3^1;//快速
sbit K3 = P3^7;//甩干
sbit K4 = P3^3;//设定模式
sbit K5 = P3^4;//增加时间
sbit K6 = P3^5;//减少时间
sbit K7 = P3^6;//启动
sbit K8 = P3^2;//紧急停止
sbit lcdrs = P0^5;
sbit lcdrw = P0^6;
sbit lcden = P0^7;
sbit Sound = P1^7;
unsigned char code FFW[8]={0xfc,0xf9,0xf3,0xf6,0xfc,0xf9,0xf3,0xf6};//步进电机正转
unsigned char code FFZ[8]={0xf6,0xf3,0xf9,0xfc,0xf6,0xf3,0xf9,0xfc};//步进电机反转
unsigned int key,K,rate;//声明模式键,步进电机模式、速度
unsigned int rest,LedNumVal=1;//声明模式选择标志,Led显示时间并设定初值为1
//函数功能:控制步进电机采取正转还是反转模式
void motor_ffw()
{unsigned int i;for(i = 0;i<8;i++){if(K==1&&LedNumVal != 0)P0 = FFW[i];if(K==2&&LedNumVal != 0)P0 = FFZ[i];delay(rate*10);//通过选择的速度控制步进电机转速}
}
//函数功能:延时函数
void delay(uint z)
{uint x,y;for(x=z;x>0;x--){for(y=100;y>0;y--);}
}
//函数功能:获得模式按键的选择结果
void getkey()
{key = 1;rest = 0;do{P3 = 0xff;if((K1 || K2 || K3 ||K4)!= 0){delay(2);if((K1||K2||K3||K4)!=0){if(K1==0)key=1;if(K2==0)key=2;if(K3==0)key=3;if(K4==0){rest=rest%2+1;}}}}while(rest==0);
}
//函数功能:设置洗衣或者甩干的时间
void timedesign()
{unsigned int j = 0;void time(void);do{P3 = 0xff;if((K5&&K6&&K7)!= 1){delay(2);if((K5&&K6&&K7)!= 1){if(K5==0)LedNumVal++;if(K6==0)LedNumVal--;if(K7==0)j=1;delay(150);}}if(LedNumVal>=6){LedNumVal=6;}if(LedNumVal==0){LedNumVal++;}time();}while(j==0);
}
//函数功能:写命令
void write_com(uchar com)
{lcdrs=0;lcdrw=0;lcden=0;P2=com;delay(5);lcden=1;delay(5);lcden=0;
}
//函数功能:写数据
void write_date(uchar dat)
{lcdrs=1;lcdrw=0;lcden=0;P2 = dat;delay(5);lcden=1;delay(5);lcden=0;
}
//函数功能:写字符串,将想显式地内容输出
void write_str(uchar *str)
{uchar idata i;for(i=0;str[i]!='\0';i++)write_date(str[i]);
}
//函数功能:液晶显视屏初始化
void init(void)
{delay(75);write_com(0x38);//模式:8位总线,双行,5*7字体delay(25);write_com(0x38);delay(25);write_com(0x38);write_com(0x38);write_com(0x08);//屏幕关闭write_com(0x01);//清除DDRAM的所有单元,光标被移动到屏幕左上角write_com(0x06);//写入DDRAM后,地址指针加一write_com(0x0c);//打开显示屏,不显示光标,光标所在位置的字符不闪烁
}
//函数功能:将获得的时间在显示屏输出
void time(void)
{unsigned int i,time;unsigned char num[3];time = LedNumVal*10;sprintf(num,"%3d",time);write_com(0x80+0x40);for(i=0;i<3;i++){write_date(num[i]);}write_str("min");
}
//函数功能:外部中断子函数,用于中断危险情况
void int0() interrupt 0
{LedNumVal=0;time();
}
//主函数
void main(void)
{unsigned int t;unsigned int n;int m;init();//初始化液晶显示屏EA=1;//开启总中断EX0=1;IT0 = 0;//开启外部中断while(1){write_com(0x80);write_str("enter key");time();getkey();if(key==1){rate=20;//步进电机速度write_com(0x80);write_str("deng ji:1");//模式1,轻柔模式}if(key==2){rate=15;//步进电机速度write_com(0x80);write_str("deng ji:2");//模式2,强洗模式}if(key==3){rate=10;//步进电机速度write_com(0x80);write_str("shuai gan...");//模式3,甩干模式}timedesign();//设置洗衣时间time();//显示设定的时间t = rate/5;//用于时间减少标志n=0;//控制时间减少次数do{if(key==1 ||key==2){K=1;//开启步进电机正转模式motor_ffw();//步进电机正转K=2; //开启步进电机反转模式motor_ffw();//步进电机反转n++;if((t==4)&&(n%3)==0){LedNumVal--;//时间标志数减少time();//显示此时剩余时间}if((t==3)&&(n%4)==0){LedNumVal--;time();}}else//甩干功能{K=1;motor_ffw();n++;if(n%5==0){LedNumVal--;time();}}}while(LedNumVal!=0);//当时间标志数为0时结束,开始下一次循环time();for(m=0;m<20;m++)//蜂鸣器{Sound = 1;delay(305);Sound = 0;delay(305);}}
}

第三部分 硬件仿真电路

  • 原件列表

第四部分 设计过程

1、安装软件

  • 安装路径必须是全英文路径包括电脑的用户名,也不能是中文。否则无法正常安装使用。
  • 安装Proteus7.8,我已经将软件打包按需下载即可,破解和安装方法都包含在其中。
  • 安装Keil4,我也将Keil4软件打包按需下载即可。
  • 需要注意的是,Keil4安装后需要输入用户名和密码,随心填就好,已经破解好了。

2、仿真图绘制

  • 按照第三部分在Proteus中画出来,连接出来后,开启仿真查看是否漏掉端口没有连接,这点很重要。

3、编写代码

  • 首先在Project中选择新建项目。
  • 最好将所有实训文件命名为同一个名字并放在相同名字的文件夹下,例如
  • 选择Atmel公司的89C51单片机,然后选择OK

  • 然后选择 是
  • 然后将左侧工作组展开,并新建一个空白文档
  • 然后将此文件保存,并命名为.C为扩展名的文件,名字与项目名相同

  • 将保存好的文件添加到资源组里,在Source Group 1上右键即可选择
  • 选择与项目名称相同的C语言文件,并选择Add
  • 添加成功后,即可将代码复制到其中
  • 依次选择编译和创建
  • 观察编译和创建的结果,创建可能会产生警告,但是不影响运行,但是错误会影响运行

  • 最后生成hex文件
  • 选择output选项卡,勾选Creat HEX File,最后选择OK
  • 查看项目文件夹下是否有hex为扩展名的文件,如果没有可以多做几次生成hex文件操作即可解决

4、装载hex文件

  • 双击仿真图上的单片机即可打开装载hex文件的窗口,选择文件夹后,选择hex文件的所在位置,如果都在同一文件夹下的话可以很快找到

  • 装载完成后进行仿真
  • 仿真启动后的样子

第五部分 使用方法

  • 首先选择洗衣模式,有轻柔洗、强力洗、甩干三种模式,然后按下模式选择(起到确定选择的作用),然后设置时间最少十分钟,可增加,也可减少,最后按下启动按键,即可启动洗衣机等到时间结束,蜂鸣器会发出报警声,危险中断可以在任意时间紧急停止洗衣机运行,但是下一次启动需要将仿真终止然后重新开启,洗衣机才能再次正常使用。

第六部分 软件链接

链接:https://pan.baidu.com/s/1ad0LEtuvFAzZseQG-iKAgg
提取码:8096

单片机实训智能洗衣机相关推荐

  1. 单片机8位抢答器实训机电报告_16路抢答器单片机实训报告.docx

    <16路抢答器单片机实训报告.docx>由会员分享,可在线阅读,更多相关<16路抢答器单片机实训报告.docx(33页珍藏版)>请在微传网上搜索. 1.四川信息职业技术学院课程 ...

  2. 北京电子科技学院c语言实验报告,最新单片机 实训报告电子万年历实训报告.doc...

    最新单片机 实训报告电子万年历实训报告 河南工程学院 单片机 实训报告 学 院 电气信息工程学院 专 业 电气工程及其自动化 组员及学号 李 东 盼 201250712138 高 辉 20125071 ...

  3. 单片机实训与毕业设计开放式训练系统QY-DPJ14

    一.系统概述: QY-DPJ14单片机实训与毕业设计开放式训练系统是根据机电工学中有关"数字电子"."模拟电子"."单片机应用技术".&qu ...

  4. 51单片机c语言学习感想,51单片机实训心得体会

    [www.hywsbj.com--心得体会] 单片机实训有哪些心得体会呢?下面是小编为大家收集的资料,欢迎阅读哦. 51单片机实训心得体会 通过为期一周的单片机实训,是我们对这门课有了许多新的了解,弥 ...

  5. 计算机单片机实训报告,计算器单片机实训报告.doc

    计算器单片机实训报告 重庆电力高等专科学校 单片机实训报告 简易计算器 专业:电子信息工程技术 班级:信息1212 组员:张忠艳 学号:201203020207 组员:王传胜 学号:201203020 ...

  6. 计算机单片机实训报告,单片机实训总结

    单片机实训总结 总结在一个时期.一个年度.一个阶段对学习和工作生活等情况加以回顾和分析的一种书面材料,它可以给我们下一阶段的学习和工作生活做指导,快快来写一份总结吧.你所见过的总结应该是什么样的?下面 ...

  7. 基于51单片机的全自动智能洗衣机控制系统Proteus仿真(仿真+源码+全套资料)

     资料编号:108 设计功能: 1.对水温实时显示 2.显示滚筒转速 3.显示运行倒计时 4.能通过按钮分别设置洗涤时间和脱水时间 5.运行过程为:加热--洗涤--脱水 具体功能请看下方演示视频 10 ...

  8. 项目实训 - 智能车系统 - 第七周记录

    项目实训 - 智能车系统 - 第七周记录 日期:4.04 – 4.10 项目进度 本周工作进展: 更换了底层的通信框架(shm) 熟悉速腾雷达驱动,以及ros相关驱动,为二次开发驱动做准备 1.更换底 ...

  9. 单片机c语言 王东锋,单片机实训总结报告.docx

    单片机实训总结报告.docx 超声波测距实训总结报告专业 电子信息工程 班级 信息091 姓名 郑干恒(15) 何清华(43) 指导教师 邬志锋 日期 2012.6. 19 广东交通职业技术学院交通信 ...

最新文章

  1. mysql 触发器 赋值_MYSQL的触发器中 变量赋值
  2. vba代码编程800例_VBA编程常用“积木”过程代码Address的含义
  3. CentOS7.2 开启内网转发
  4. 工具用的好下班走的早
  5. 数学建模感悟:新的算法的学习
  6. arm cpu 超频_树莓派 400 超频方法介绍
  7. Nacos(四)之安装
  8. .Net/C#中Cache的用法
  9. 硬件电路基础(2)RF 一些概念
  10. 用计算机来控制飞船在太空中运行,神舟飞船在太空中靠什么动力运行
  11. 我应关注的AEC算法细分
  12. java虚拟机是什么?
  13. Spring框架学习笔记6-AOP编程-AspectJ方式
  14. 凯撒密码(移位密码)
  15. 索隆:九山八海,无我不断者。
  16. Detail-revealing Deep Video Super-resolution 论文笔记
  17. iOS之UITableView组头组尾视图/标题悬停
  18. 小红书java算法难吗_Java面试系列之记一次小红书之旅
  19. window下Python查看已经启动的进程名称并关闭
  20. ssh整合:spring+springmvc+hibernate

热门文章

  1. jquery validate submitHandler 提交导致死循环
  2. 小米隔空无线充电技术背后,是对塑造技术创新型品牌形象的渴望
  3. HDU 1002 A + B Problem II
  4. 微信小程序“反编译”实战(一):解包
  5. 线程池参数的合理设置
  6. 使用request下载图片
  7. 4G速度的100倍:美国Verizon宣布完成5G无线规范标准制定
  8. 漫谈数据中心CLOS网络架构
  9. JAVA泛型QUIK START
  10. 对象object循环遍历的方法