消毒柜控制器设计说明Word文件下载.docx
《消毒柜控制器设计说明Word文件下载.docx》由会员分享,可在线阅读,更多相关《消毒柜控制器设计说明Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
A2单独控制,按一下A2,点亮照明灯LED5,再按一下A2,关闭照明灯LED5。
三、所用设备与软件
3.1、可编程控制器--单片机
单片机是控制系统的核心器件,它相当于人的大脑,控制我们的一切的动作。
它的结构一般是有中央处理器(CPU)、存储器、输入输出等部分构成。
在不断增长和变化的市场需求刺激下,单片机的品种和类型在不断更新,日益丰富多样。
单片机有专用型与通用型的区别。
根据软硬件系统结构的特点,通用型单片机可以分为CISC、RISC、ARM、DSP四大类。
本课程设计所采用的是CISC结构的MCS-51系列单片机,其简化结构框图如图1所示:
图151单片机的简单结构框图
3.2、编程软件-Keil
Keil是德国KeilSoftware公司开发的一个51单片机开发软件平台,是一个用户群比较广大的单片机应用系统开发软件。
KeilC51μVisionIDE是KeilSoftware公司针对51系列单片机推出的基于32位Windows平台,以51系列单片机为开发目标,高效率的C语言集成为基础
的开发环境。
Keil的最新版本是μVision4,与μVision2增加了支持ARM单片机的功能。
Keil与Proteus可以联合使用,在单片机应用系统开发工作中,结合Keil和Proteus各自的特点,综合运用,可以提高开发工作效率。
μVision2主要包括:
C51编译器、A51汇编器、LIB51库管理器、BL51连接器/定位器、OH51IntelHEX格式文件转换器、RTX51实时操作系统以及单片机软件仿真器Dscope51.μVision2将项目管理、源代码编辑、程序调试等集成到一起,其C编译工具在产生代码的准确性和效率方面达到了较高的水平。
μVision2嵌多种灵活的控制选项,比较适宜大型项目的开发。
3.3、仿真软件-Proteus
借助Proteus对电路进行仿真。
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。
四、系统设计
4.1、系统总体设计
消毒柜的要求有如下四种消毒干燥过程:
(4)加热20秒。
且需要不同种类的消毒、加热干燥时,可以通过按A1进行选择,每按一次A1,点亮的LED指示灯下移一位,只进行余下的消毒、干燥过程。
同时,还要求有一消毒柜照明灯,故综合设计要求,设计的总体思想框图如图2所示:
其中复位键的作用是:
当所设置消毒柜的工作模式错误时,或需要将余下的工作过程取消而重新开始某种工作模式时,可以通过按复位键来实现。
图2设计思想框图
4.2、系统硬件设计
4.2.1、按键的设计
设计要求有两个按键即消毒按键A1和消毒柜照明按键A2,并且设计要求根据消毒按键A1不仅作为消毒柜工作的启动按键,而且可以通过消毒按键A1来实现消毒模式的选择,所以在选择此按键和和单片机连接时,直接选择其和单片机的外部中断0即P3.2口连接,这样使得硬件连接方便的同时,软件编程也比较简单和容易。
在设计消毒柜照明按键A2设计时,由于考虑到照明灯的开启和关闭是不定时的,且是随机无规律的,故也采用将A2接单片机外部中断的方法,其硬件连接和A1类似。
注意到,当消毒柜工作在某种工作模式下,突然由于某种原因要立即结束当前的工作,而要重新开始某种工作模式或者所设置消毒柜的工作模式错误而需要重新选择时,就需要一个复位按键,所以在按键设计时,在单片机的复位引脚上接出一个复位按键,这不仅可以满足这些需要外,还能在当单片机出现运行故障时,及时有效的复位。
4.2.2、时间显示部分的设计
消毒柜消毒或加热的时间,根据设计的要求需要用数码管确切的显示出来,而从要求可知,每段时间的最大限度为20s,故只需用两位数码管即可。
为了使系统的硬件结构简单,同时考虑到所采用的单片机有40个引脚且足以满足系统设计的需求,所以采用数码管的静态显示方法。
数码管的引脚直接接到单片机的P0和P2引脚上。
4.2.3、照明灯电路的设计
根据实际经验可以知道,消毒柜的照明灯的功率较大,不像状态指示灯,因此在点亮照明灯时,需要比较高的电压,在设计时可以运用直流24V电压或12V电压供电,也可以直接使用市电220V交流供电。
从设计的要求可以看出,照明灯的亮灭是单独控制的,和消毒及加热等之间没有相互的影响。
且按一下A2,点亮照明灯LED5,再按一下A2,关闭照明灯LED5。
从为了使软件的编写和硬件电路的设计更简单等角度来说,在设计时,可以完全单独设计一个小电路来单独控制照明灯。
但考虑到本设计主要是基于单片机的设计并对单片机知识的掌握与应用的考查,且可以通过单片机来实现对所需要求的照明灯的控制。
所以设计时采用单片机的P1.6引脚的输出来控制照明灯。
从单片机输出的照明灯控制信号太小,不足以点亮照明灯。
考虑到实际中照明灯的开关频率不会很高,晶闸管不适合用于交流控制及成本造价等因素,将单片机输出的照明灯控制信号经过一个运放适当放大后来控制一个继电器,以便来控制照明灯。
4.2.4、电源模块设计
本系统的直流稳压电源采用通常的大电容滤波、端口固定输出的全波整流。
输入端输入市电220V/50Hz,经过变压器后,全波整流后加到三端稳压器的滤波电容上。
三端稳压器用7805。
为了方便简单,照明灯的供电采用市电220V交流,所以电源模块只需要提高+5V的直流即可。
但随着电子设备、计算机与家用电器的大量涌现和广泛普及,电网噪声干扰日益严重并形成一种公害。
特别是瞬态噪声干扰,其上升速度快、持续时间短、电压振幅度高(几百伏至几千伏)、随机性强,对微机和数字电路容易产生严重干扰,所以在设计时加入了电磁干扰滤波器(EMIFilter)。
如图3所示:
从形成特点看,噪声干扰分串模干扰与共模干扰两种。
串模干扰时两条电源线之间(简称线对线)的噪声,共模干扰则是两条电源线对大地(简称线对地)的噪声。
因此,电磁干扰滤波器应符合电磁兼容性(EMC)的要求,也必须是双向射频滤波器,一方面要滤除从交流电源线上引入的外部电磁干扰,另一方面还能避免本身设备向外部发出噪声干扰,以免影响同一电磁环境下其他电子设备的正常工作。
此外,电磁干扰滤波器应对串模、共模干扰都起到抑制作用。
图3所示EMI滤波器有两个输入端、两个输出端和一个接地端,使用时外壳应接大地。
电路中包括共模扼流圈(也称共模电感)L1和L2、滤波电容C3~C6。
L1和L2对串模干扰不起作用。
当出现共模干扰时,由于两个线圈的磁通方向相同,经过藕合后总电感量迅速增大,因此对共模信号呈现很大的感抗,使之不易通过。
C3和C4采用薄膜电容器,主要用来滤除串模干扰。
C5和C6跨接在输出端,并将电容器的中点接地,能有效地抑制共模干扰。
综上所述,设计出电源模块如图4所示:
4.3、系统软件设计
系统程序总流程图如图5所示:
4.3.1、延时子程序设计
设计要求中需要用到20s的延时,并要通过数码管显示消毒或加热的时间,从而从实质上可以认为是只需设计出1s的延时子程序即可。
这个可以通过定时器来精准的实现,但考虑到为了使程序简单化,并且从实际应用中可以知道,消毒柜消毒或加热的时间没必要很精准,所以采用一般的延时方法。
1s延时字程序如下:
voiddelay1s(void)
{
unsignedcharh,i,j,k;
for(h=5;
h>
0;
h--)
for(i=4;
i>
i--)
for(j=116;
j>
j--)
for(k=214;
k>
k--);
}
在实现20s的延时时,只需要每隔1s调用一次1s延时程序即可。
4.3.2、时间显示子程序设计
结合硬件设计,设计出时间显示子程序如下:
voiddisplay20s(void)
charg,s;
//g个位显示下标,s十位显示下标
g=0,s=2;
//倒计时20s
P0=tab[s];
P2=tab[g];
delay1s();
//延时1s
for(s=1;
s>
=0;
s--)//十位显示
{
P0=tab[s];
for(g=9;
g>
g--)
{
P2=tab[g];
delay1s();
}
}
五、系统调试
5.1、系统的硬件调试
由于课程设计的要求相比比较简单,故硬件电路设计也比较简单,在硬件设计完之后,进行仿真调试时,出现的问题主要只有一个,就是单片机的复位问题。
从所学的知识和实践经验中可以知道单片机的复位是高电平复位,但不知道什么原因,在Proteus中,单片机的复位是低电平,后在同学的帮助下,改变了复位方式,成功的实现的复位。
5.2、系统的软件调试
在将硬件电路图在Proteus中连接好后,将编写好的程序编译之后导入单片机中出现的问题主要有两个,一个是时间显示时出现的问题,另一个是模式选择时出现的问题。
在进行全局仿真时,当模式选择好后消毒柜开始工作时,数码管本应该显示20s的倒计时,但仿真结果是当完成10s的倒计时显示后,十位数码管显示1不变,而个位无任何数字显示。
在仔细查看程序后发现出现此问题的原因是数据类型设置错误。
在将数据类型更改后,仿真结果符合要求。
由于是通过外部中断来实现对模式的选择,在程序中开始时,就对外部中断进行初始化,即开总中断、中断方式选择和允许相应外部中断等,但在仿真时发现在设置工作模式时有一些小问题,如果由于误操作使按键次数多于本来所需要按键的次数,或者是操作者按键比较慢,而此时系统已经开始工作了(可能是按自己所需要的工作模式工作,也可能是还未达到所需要的工作模式就工作了,也有可能超过了自己所需要的工作模式的就开始工作了)。
在由于误操作使按键次数多于本来所需要按键的次数时,仿真时的现象是,当系统完成当前的工作后(这时系统的工作可能是正确的,也可能是错误的),系统不是马上进入停止状态,而是进入多余按键所指示的工作模式中,直到此工作模式结束时才停止。
为了解决这个问题,在一旦进入工作中,就将外部相应中断允许关闭,并且将模式选择存储变量清零。
针对操作者按键比较慢,使得在未将键按完就进入工作的这种情况,程序设计时,在主程序中加入4s的延时,即要求操作者在4s将所有需要按的键按好,按好后,再延时1s进入工作中。
六、系统仿真分析
借助Proteus对电路进行仿真分析。
6.1、时间显示模块仿真
根据前面时间显示模块设计的硬件电路图,在Proteus中连接好线路,导入程序后,在开启仿真后,得到在开启消毒柜或消毒柜复位后,数码管显示的情况,及开始消毒或加热情况下,数码管倒计时某时刻的情况分别如下两图所示:
从仿真结果中可以看出仿真结果完全满足设计的要求。
6.2、状态指示灯模块仿真
状态指示灯在工作模式的选择时可以显示当前所选择的工作模式以及在消毒或加热的工作过程中可以给用户提供当前消毒柜的工作状态等信息。
从本设计的要求中可以得知,状态指示灯在消毒柜开机时,所有的灯都熄灭,在工作过程中仅有一个指示灯是亮着的,其他均熄灭,根据要求得到状态指示灯仿真效果如右两图所示:
其中图8为消毒或加热过程中某时刻状态灯的情况,图9为开机时指示灯均熄灭的情况。
图8
图9
6.3、照明灯模块仿真
在实际情况下,照明灯的供电可以为市电220V交流,也可以为直流12V或24V等。
考虑到Proteus中没有220V交流电,故用一个12V直流电池为照明灯供电。
根据前面的设计,有如左图所示的照明电路及仿真效果图,其中照明灯为点亮状态。
图10照明电路及仿真效果
七、心得体会
通过这次课程设计,让我对c语言和单片机外部接线图有了更好的了解,也让我懂得了关于消毒柜控制系统的一些知识、软件的设计过程以及单片机控制设计和工作原理。
很多的设计理念源于实际,从中找出最合适的设计方法,在设计过程中,对利用可编程控制器进行控制系统的设计与开发有了深刻的认识,对控制系统的分析与设计有了切身的认识和深刻的体会,并在学习和实践过程中增长了知识、丰富了经验。
控制系统的开发设计是一项复杂的系统工程,必须严格按照系统分析、系统设计、系统实施、系统运行与调试的过程来进行。
虽然这次课程设计的课题比较容易,但我还是认真地对待。
虽然本次课程设计是要求自己独立完成,但是,彼此还是脱离不了集体的力量,遇到问题和同学互相讨论交流。
多和同学讨论。
在设计中,深刻体会到理论必须和实际相结合。
在开始设计之前收集的一些资料,但在实际应用中却有很多差异,出现了许多意想不到的问题。
许多问题都是书本上是这样,而在实际运用中却很不一样,在经过多次分析修改后,才设计出达到要求的系统。
如在之前所提到的单片机复位问题。
总的来说,这次设计不仅使我们对平时所学知识得以巩固,明白了不管学习什么知识都要精益求精,应该追根问底,做到学懂学通,在今后的学习和工作中都要严格要求自己,坚持到最后才会有好的结果,才能为社会做出贡献。
八、参考文献
[1]华中科技大学电子技术课程组编,康华光主编.电子技术基础:
数字部分(第五版).北京:
高等教育,2005
[2]清华大学电子学教研组编,华成英,童诗白主编.模拟电子技术基础(第四版).北京:
高等教育,2006
[3]曾屹,彭楚武.单片机原理与应用.:
中南大学,2009
[4]朱玉玺,崔如春,邝小磊.计算机控制技术.北京:
电子工业,2009
[5]戴永.微机控制技术.:
大学,2004
附录一:
系统总程序
#include<
reg51.h>
sbitled1=P1^0;
sbitled2=P1^1;
sbitled3=P1^2;
sbitled4=P1^3;
sbitrelay=P1^6;
//继电器控制输出
sbittest=P1^7;
//testswitch
sbitkey=P3^2;
unsignedcharmode,mod;
codeunsignedchartab[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//0123456789
/*---------------------------------
延时1s子程序
---------------------------------*/
消毒柜消毒或加热20s显示子程序
P0=tab[s];
for(g=9;
{
P2=tab[g];
delay1s();
}
/*-------------------------------
主程序
-------------------------------*/
voidmain()
EA=1;
//开总中断
EX0=1;
//消毒模式
EX1=1;
//允许使用外部中断
IT0=1;
IT1=1;
//选择负跳变来触发外部中断
relay=0;
while
(1)
{
delay1s();
//在4s将模式选择好
mod=mode;
EX0=0;
//开始消毒,消毒按键无效
mode=0;
switch(mod)
{
case1:
EX0=0;
led1=0;
display20s();
led1=1;
case2:
led2=0;
led2=1;
case3:
led3=0;
led3=1;
case4:
{
led4=0;
led4=1;
EX0=1;
//允许消毒模式选择
mode=0;
break;
default:
break;
}
/*------------------------------
外部中断0的中断服务程序,
作为消毒按键
------------------------------*/
voidit0(void)interrupt0
mode=mode+1;
switch(mode)
led1=0;
led2=led3=led4=1;
led2=0;
led1=led3=led4=1;
led3=0;
led2=led1=led4=1;
led4=0;
led2=led3=led1=1;
}
外部中断1的中断服务程序
作为照明灯控制键
voidit1(void)interrupt2
relay=~relay;
附录二:
系统总电路原理图