数电课设.docx
- 文档编号:23320221
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:29
- 大小:418.91KB
数电课设.docx
《数电课设.docx》由会员分享,可在线阅读,更多相关《数电课设.docx(29页珍藏版)》请在冰豆网上搜索。
数电课设
学号:
课程设计
题目
学院
专业
班级
姓名
指导教师
年
月
日
课程设计任务书
学生姓名:
业班级:
指导教师:
工作单位:
题目:
洗衣机控制电路设计
初始条件:
STC89C52单片机,LED,蜂鸣器,晶体三极管,弹性按键开关,Proteus7Professional,STC_ISP_V479,KeiluVision4
要求完成的主要任务:
洗衣机的主要工作程序包含三个过程,洗涤过程、漂洗过程、脱水过程。
(1)洗涤过程:
洗涤电动机接通电源,带动波轮(或桶)旋转,产生各种形式的水流搅动衣物进行洗涤。
通过电动不停的正转、停、反转、反复循环,形成洗涤水对洗涤物产生强烈的翻滚作用。
以达到洗涤衣物的目的。
(2)漂洗过程:
漂洗的目的在于清除衣物上的洗涤液,因此,漂洗过程与洗涤过程的电器动作是完全相同的。
(3)脱水过程:
洗涤或漂洗过程结束后,电动机停止转动,排水阀通电,打开排水阀门排水。
当水位低到一定程度时,满足安全条件,脱水电动机接通,电机带动脱水桶高速旋转,利用离心力把衣服上的水从桶壁的小眼里甩出。
全部洗衣工作完成后,由蜂鸣器发出音响,表示衣物已洗干净。
时间安排:
第17周
理论讲解
第18周
理论电路设计,实际电路搭建相关测试
第21周
答辩
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
1摘要II
2工作原理及方案选择4
2.1整体思路4
2.1.1方案一4
2.1.2方案二5
2.2方案选择6
2.3元件介绍6
2.3.1STC51单片机6
2.3.2蜂鸣器7
2.3.3LED灯7
3电路设计及仿真8
3.1硬件电路的主要模块8
3.1.1功能设置及控制电路8
3.1.2洗衣机状态显示8
3.2仿真电路图9
3.3洗衣机软件系统设计14
3.3.1洗涤过程流程图14
3.3.2内部定时中断设计14
3.3.3外部中断设计15
3.4代码16
4实物制作和调试21
4.1实物图21
5心得体会23
6参考文献24
7附录25
1摘要
根据洗衣机的控制要求,从功能要求、硬件设计、软件设计三个方面描述了一个以51单片机为核心的洗衣机控制系统。
硬件线路及控制程序的设计是该系统的重要组成部分。
硬件线路设计主要包括电源、功能及控制系统、洗衣机状态显示、输出控制电路的设计。
控制程序设计主要包括主程序、内部定时中断服务程序、外部中断服务程序的设计。
关键字:
STC51单片机;洗衣机控制系统;硬件;控制程序
Abstract
Accordingtothewashingmachinecontrolrequirements,acontrolsystemwiththeSTC—51SCMCasthecoreaboutwashingmachinesweredescribedinthefollowingthreeaspectsoffunctionalrequirements,hardwaredesign,softwaredesign.Thehardwarecircuitdiagramandrelatedcontrolflowchartoftheprogramweregiven.Hardwarecircuitdesign,includingpower,functionandcontrolsystem,washingmachinestatusdisplay,outputcontrolcircuit.Controlprogramdesignincludesthemainprogram,theinternaltimerinterruptserviceroutine,thedesignoftheexternalinterruptserviceroutine.
Keywords:
STC一51SCMC;Washingmachinecontrolsystem;Hardware;Controlprogram
2工作原理及方案选择
2.1整体思路
从课程设计要求来看,要求实现电机的正传、反转、暂停,实际上没又电机给我们接上,这回要用四个LED灯的状态来表示,当显示时间前20秒正传、暂停10秒、反转20秒、再暂停10秒,如此一来,周期恰好是60秒,理所当然的定时器计数器是一定要用的。
严格的讲,洗衣机工作于洗涤状态与脱水状态电动机的转速有很大不同,需要用到精确的步进电机,但由于知识水平有限,只能有普通直流电动机代替。
可以认为正转时电动机由静止做加速运动,由于时间持续较短,电动机转速远未达到额定转速,此过程可以认为是低速洗涤过程,反转也是如此。
另一方面,从人性化角度洗涤时间和脱水时间可以有用户自由设置,这就用到了定时电路。
当洗涤时间或者脱水时间到了,电动机停止运转,洗涤或者脱水指示灯由亮变灭,同时发出警报,比如说蜂鸣器响同时指示灯亮,根据人性化、自动化、低成本的设计原则,报警的蜂鸣器不可以长时间的叫,要有个合理的时间。
从安全角度讲,当洗衣机正在工作时,人为打开洗衣机盖子,为了安全起见,无论此时洗衣机工作于何种状态都要停止工作。
2.1.1方案一
用数字电路设计电路。
电路主要分为显示电路、秒脉冲发生电路、计时电路、报警状态电路和洗衣机正反转控制电路。
显示电路使用数码管。
秒脉冲发生电路采用了使用成熟广泛的555定时器芯片,通过电脑USB插口供电,产生秒脉冲信号,作为各芯片的时钟信号。
计时电路使用的是四片十进制可逆计数器74lS192芯片,分别设计为十进制和六进制电路,用于完成时间的定时、计时功能。
报警电路和状态显示电路使用的是简单的非门和与非门74lS04、74lS00组成的逻辑组合电路,分别控制蜂鸣器和发光二极管,来实现报警和状态显示。
电机控制电路采用了3-8译码器74ls138和与非门电路的组合,实现电机正、反转、暂停功能。
,
图2.1.1.1洗衣机控制电路原理图
2.1.2方案二
用单片机设计。
椭圆型表示指示灯:
从上到下依次为启动、停止、脱水、洗衣定时。
电动机正反交替转动,选择定时按键对时间进行加减。
然后对脱水时间设定,最后按下启动键,洗开始工作。
数码管1(显示时间)
51单片机
正转
反转
数码管2(显示时间)
蜂鸣器
电动机
开始/暂停
图2.1.2.1基于单片机的总体设计框图
2.2方案选择
数字设计组建方便而且直观,电路的各个模块清晰,运算速度高,而且不用编程,在许多功能实现上有软件可望不可及的优势,是可编程逻辑器件的基础。
缺点是复杂应用成本高,设计复杂,功耗大,部分效率较低,而且保密性差,容易被仿造。
单片机功耗低应用灵活,但是执行并行任务效率低。
不过一般的应用对实时性要求不高,所以应用特别特别特别广泛。
特别是8051单片机,在控制领域经久不衰,而且成本低廉。
本设计要求中,可采用一块51单片机作为核心,几个个开关,几个个LED灯,一个蜂鸣器和一些驱动电路作为外围设备,实现实验要求功能。
电路比较简单。
考虑到本学期学的一门重要课程是是数电,为了强化课本知识,设计过程中认真研究了数字电路。
同时也为了更好的适应社会需要,主攻了用单片机设计的方案以提高设计能力。
因此,本次课程设计采用了方案二,即用单片机搭建电路。
2.3元件介绍
2.3.1STC51单片机
STC89C51系列单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,是MCS-51系列单片机的派生产品;它们在指令系统中、硬件系统和片内资源与标准的8052单片机完全兼容,DIP-40封装系列与8051为pin-to-pin兼容,指令代码是与8051完全兼容的单片机。
STC89C51单片机具有增强型12时钟/机器周期、6时钟机器/周期任意选择,工作电压为5.5V-3.4V(5V单片机)/3.8V-2.0V(5V单片机);工作频率范围:
0-40MHZ,相当于普通8051的0-80MHZ。
实际频率可达48MHZ。
用户应用程序空间为4K/8K/13K/16K/20K/32K/64K字节;片上集成1280字节/512字节RAM;有32/36个通用I/O口,P1/P2/P3/P4是准双向口;集成ISP(在系统可编程)/IPA(在应用可编程),无需专用的编程器/仿真器,可通过串行口(P3.0/P3.1)直接下载用户程序,8K程序3秒就可以完成一片,具备EEPROM功能,工作温度范围在0-750,共有3个16位定时器/计数器,其中定时器T0还可以当成2个8位定时器使用;封装形式有DIP-40,PLCC-44,PQFP-44等。
本文选取的是DIP-40引脚的。
2.3.2蜂鸣器
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。
蜂鸣器一般有两种。
一种是压电式蜂鸣器压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。
有的压电式蜂鸣器外壳上还装有发光二极管。
多谐振荡器由晶体管或集成电路构成。
当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。
在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。
另一种是电磁式蜂鸣器电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。
振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
2.3.3LED灯
LED(LightEmittingDiode),发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。
LED的心脏是一个半导体的晶片发光二极管晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。
半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。
但这两种半导体连接起来的时候,它们之间就形成一个P-N结。
当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。
而光的波长也就是光的颜色,是由形成P-N结的材料决定的。
最初LED用作仪器仪表的指示光源,后来各种光色的LED在交通信号灯和大面积显示屏中得到了广泛应用,产生了很好的经济效益和社会效益。
对于一般照明而言,人们更需要白色的光源。
3电路设计及仿真
3.1硬件电路的主要模块
根据洗衣机的基本功能,硬件电路设计需要考虑:
洗涤、脱水时间设定长短的问题、工作剩余时间工作过程中的暂停、启动、脱水、洗完后的报警等问题。
采用5l系列单片机作为控制核心,主要包括功能设置及控制电路、洗衣机状态显示及输出控制电路。
主要组成部件有:
单片机、指示灯、电动机、蜂鸣器以及按键等。
3.1.1功能设置及控制电路
1.启动键K0,接P1.0,根据人的需要可以进行手工洗涤;
2.停止键K1,接P1.1,按下该键后洗衣机停止工作;
3.脱水键K2,接P1.2,作为脱水过程的启动键;
4.按键K3是定时键,接P3.2,按一次工作时间定为十分钟,每按一次工作时间增加十分钟,设定为四十分钟后再按一下定时取消,默认状态不定时;
5.按键K4,接RST,作为单片机复位键;
3.1.2洗衣机状态显示
1.LED0接P0.0,电源指示灯;
2.LED1接P0.1,洗衣机洗涤指示灯;
3.LED2接P0.2,洗衣机停止工作指示灯;
4.LED3接P0.3,洗衣机脱水指示灯;
5.LED4接P0.4,当定时时间为十分钟时该灯亮;
6.LED5接P0.5,当定时时间为二分钟时该灯亮;
7.LED6接P0.6,当定时时间为三分钟时该灯亮;
8.LED7接P0.7,当定时时间为四分钟时该灯亮;
9.蜂鸣器和一个发光二极管串联接P2.2,当洗衣过程完成后该二极管亮同时蜂鸣器响;
10.电桥电路接P2.0和P2.1,控制电动机的正转和反转;
3.2仿真电路图
图3.2.1整体电路的Pretus仿真电路图
图3.2.2洗涤过程仿真图
图3.2.3脱水过程仿真图
图3.2.4停止工作时仿真图
图3.2.5定时二十分钟仿真图
3.3洗衣机软件系统设计
3.3.1洗涤过程流程图
图3.3.1.1洗涤过程流程图
3.3.2内部定时中断设计
工作过程中所需的各种计时均有定时器0定时中断服务64程序提供。
单片机晶振频率12Mllz,定时器0选择工作方式1,设置时间常数,每0.1S中断~次。
中断处理程序流程图如下图所示。
图3.3.2.1内部定时中断流程图
3.3.3外部中断设计
在洗衣过程中,当暂停键K4按下时,引起外部中断1,转入中断1处理程序。
中断l处理程序将使洗衣机停止工作,并将停止前的状态存储起来。
当按下启动键K2时,洗衣机又恢复工作。
程序设计流程图:
图3.3.3.1外部中断流程图
3.4代码
/**************************************
洗衣机控制系统
2012-7-3
**************************************/
#include
#defineBIT(x)(1<<(x))//带参数的宏定义
sbitbeep=P2^2;//蜂鸣器管脚定义
sbitMoto_1=P2^0;//电动机管脚1定义
sbitMoto_2=P2^1;//电动机管脚2定义
sbitLED0=P0^0;//电源指示灯
sbitLED1=P0^1;//启动
sbitLED2=P0^2;//停止
sbitLED3=P0^3;//脱水
sbitLED4=P0^4;//定时10min
sbitLED5=P0^5;//20min
sbitLED6=P0^6;//30min
sbitLED7=P0^7;//40min
unsignedcharcnt,cnt2,flag,time;//cnt---定时器0计时中间变量
//cnt2---定时器1计时中间变量
//flag---系统基准秒时钟信号
//time---定时时间(10min为单位)
charkey;//按键定义
voiddelay(unsignedintms)//毫秒延时
{
unsignedchari;
for(;ms;ms--)
for(i=110;i;i--);
}
voidTimer_init(void)//定时器初始化
{
TMOD=0x11;//定时器0和1都工作在方式1
TH0=(65536-50000)/256;//装初值
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
ET1=1;//开定时器1中断
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
}
voidEX_init(void)//外部中断初始化
{
EX0=1;//开外部中断0
IT0=1;//边沿触发
EX1=1;//开外部中断1
IT1=1;//边沿触发
}
voidMoto_L(void)//电机正传
{
Moto_1=1;
Moto_2=0;
}
voidMoto_R(void)//电机反转
{
Moto_1=0;
Moto_2=1;
}
voidMoto_S(void)//电机停止
{
Moto_1=0;
Moto_2=0;
}
voidStart(void)//启动
{
unsignedchartemp;
LED0=0;LED1=0;LED2=1;LED3=1;//点亮启动指示灯
temp=flag/5;//根据系统基准秒时钟信号
temp=temp%2;//每5秒正转或反转一次电机
if(temp)Moto_L();
elseMoto_R();
}
voidStop(void)//停止
{
LED1=1;LED2=0;LED3=1;//点亮停止指示灯
Moto_S();//电机停止
}
voidDry(void)//脱水
{
LED0=0;LED1=1;LED2=1;LED3=0;//点亮脱水指示灯
flag=0;//脱水15分自动停止
if(flag<15)Moto_L();
}
voidTimeCal(void)//计算定时时间
{
flag=0;//复位系统基准秒信号
time++;//定时时间增加10min
if(time==5)time=0;//超出范围清零
while(!
(P1&BIT(3)));//等待按键释放,防止多次定时
}
voidTimer_(void)//根据定时时间,点亮相应指示灯
{
if(time==1)
{
LED4=0;LED5=1;LED6=1;LED7=1;//10min
}
elseif(time==2)
{
LED4=1;LED5=0;LED6=1;LED7=1;//20min
}
elseif(time==3)
{
LED4=1;LED5=1;LED6=0;LED7=1;//30min
}
elseif(time==4)
{
LED4=1;LED5=1;LED6=1;LED7=0;//40min
}
else
{
LED4=1;LED5=1;LED6=1;LED7=1;//不定时
}
}
voidmain(void)
{
Timer_init();//定时器初始化
EX_init();//外部中断初始化
LED0=0;//打开电源指示灯
while
(1)
{
switch(P1)//扫描按键,并做标记
{
case0xfe:
key=1;break;//启动键被按下
case0xfd:
key=2;break;//停止键被按下
case0xfb:
key=3;break;//脱水键被按下
default:
break;//没有键被按下
}
switch(key)//根据标记,执行相应功能
{
case1:
Start();break;//启动
case2:
Stop();break;//停止
case3:
Dry();break;//脱水
default:
break;//没有按键
}
delay(20);//稍微延时,挺高系统稳定性
Timer_();//点亮定时指示灯
}
}
voidTimer_0()interrupt1//定时器0中断函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cnt++;
if(cnt==20)//一秒时间到
{
cnt=0;//清零中间变量
flag++;//基准秒时钟信号加一
if(flag==100)//满100,清零
flag=0;
}
}
voidTimer_1()interrupt3//定时器1中断函数
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
cnt2++;
if(cnt2==200)//10秒时间到
{
cnt2=0;
time--;//定时时间减10min
if(time==0)
{
TR1=0;//停止定时器1
LED0=1;LED1=1;LED2=0;LED3=1;//指示灯显示停止状态
beep=0;//开蜂鸣器报警
Moto_S();//电机停止
key=4;//防止再次启动电机
}
}
}
voidEX_0()interrupt0//外部中断0服务函数
{
TimeCal();//计算定时时间
TR1=1;//开启定时器1
}
voidEX_1()interrupt2//外部中断1服务函数
{P0=0xfb;//开启停止指示灯
key=4;//防止电机再次开启
Moto_S();//电机停止
beep=1;//停止蜂鸣器报警
}
4实物制作和调试
4.1实物图
图4.1.1实物正面图
图4.1.2实物背面图
5心得体会
本次课设题目下来的比较早,但由于眼高手低,自我感觉良好,想当然的认为题目简单容易实现,所以一拖再拖,不知不觉到了最后时刻,不得不通宵焊电路写报告,教训深刻。
牢记今日事今日毕。
拿到题目时觉得不难,傲慢地认为自己了解一些单片机的知识,就可以毫不费力的做出来。
其实自己是一知半解,夜郎自大,调程序是多次走到崩溃边缘。
自作虐不可活!
平心而论,本次课设收获颇丰。
首先深刻认识到了眼高手低的危害,看着容易坐着就不一定容易了,只有真真正正的做了出来才叫本事,“会”不是本事。
再次,通过本次课设,对数字电子技术有了更深刻的认识,对单片机的掌握也进一步加深了,知道仿真结果跟预期的完全一致时才感觉到本学期不算太荒废,总算学到了一点东西。
通过本次课设,才深刻的明白了人与人的差距在课余时间,不知不觉自己已经落后了一大截,要学的东西太多,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数电课设