Proteus仿真实验
矩阵式键盘识别一
一、实验目的
通过对实验环境调试程序的使用设计出满足指标要求的电源电路熟悉Proteus对电源电路的仿真、测试过程。
设计一个4x4的矩阵键盘,以P3.0~P3.3作为行线,以P3.4~P3.7作为列线,在数码管上显示每个按键的0~F序号。
二、实验器件
单片机AT89C51、瓷片电容CAP22Pf、晶振CRYSTAL 11.0592MHz、电解电容CAP-ELEC、电阻RES、排阻RESPACLK-7、按钮BUTTON、共阳数码管7SEG-COM-AM-GRN。
三、实验原理
程序:
#include"reg51.h"
#define uchar unsigned char #define uint unsigned int
uchar buff,times,j;
uchar code dispcode[]={0xC0,0xF9,0xA4,0 xB0,0x99,0x92,0x82,0xF8,0x8 0,0x90,0x88,0x83,0xC6,0xA1, 0x86,0x8E};
uchar idata value[8];
void delay1ms(void)
{ uchar i;
for(i=200;i>0;i--);
}
void delay5ms(void)
{
unsigned char i,j;
for(i=5;i>0;i--)
for(j=230;j>0;j--);
}
void key_scan(void)
{
uchar hang,lie,key;
P3=0xf0;
if((P3&0xf0)!=0xf0)
{
delay1ms();
if((P3&0xf0)!=0xf0)
{hang=0xfe;
times++;
if(times=9)
times=1;
while((hang&0x10)!=0)
{P3=hang;
if((P3&0xf0)!=0xf0) {lie=(P3&0xf0)|0x0f;
buff=((~hang)+(~lie));
switch(buff)
{
case 0x11:key=0;break; case 0x21:key=1;break; case 0x41:key=2;break; case 0x81:key=3;break; case 0x12:key=4;break; case 0x22:key=5;break; case 0x42:key=6;break; case 0x82:key=7;break; case 0x14:key=8;break; case 0x24:key=9;break; case 0x44:key=10;break; case 0x84:key=11;break; case 0x18:key=12;break; case 0x28:key=13;break; case 0x48:key=14;break; case 0x88:key=15;break;
}
value[times-1]=key;
}
else
hang=(hang<<1)|0x01;
}
}
}
}
void main(void)
{
while(1)
{
key_scan();
P0=dispcode[value[times-1]];
} }
四、原理图:
五、实验结果
六、结论:通过本次培训基本熟悉了protues软件,使我在今后的工作中添加了一门新的技能。
本次培训由于自己掌握的知识有限所以只能在网上找一些相关的质料来弥补自己的不足。
在本次培训中遇到的困难在老师和同学的帮助下逐一解决了。
随着对该软件的熟悉,发现这个软件是一个很有趣的软件,在通过一段时间设计出一个电路觉得自己很有成就感。
很快培训时间结束了,在这里要感谢老师的尽心教导。
PLC仿真实验
十字路口交通灯控制的模拟实验报告
一、实验目的
1、熟练使用各基本指令,定时器,计数器,内部指令等。
2、根据控制要求,掌握PLC的编程方法和程序调试方法。
3、掌握交通灯的实验设计与三菱PLC的连线方法。
二、实验要求
交通灯模拟控制实验区中,下框中的南北红、黄、绿灯R、Y、G分别接主机的输出点Y2、Y1、Y0,东西红、黄、绿灯R、Y、G分别接主机的输出点Y5、Y4、Y3,模拟南北向行驶车的灯接主机的输出点Y6,模拟东西向行驶车的灯接主机的输出点Y7;下框中的SD接主机的输入端X0。
上框中的东西南北三组红绿黄三色发光二极管模拟十字路口的交通灯。
信号灯受一个启动开关控制,当启动开关接通时,信号灯系统开始空座,且先南北红灯亮,东西绿灯亮。
当启动开关断开时,所有信号灯都熄灭。
南北红灯亮维持25秒,在南北红灯亮的同时东西绿灯也亮,并维持20秒。
到20秒时,东西绿灯闪亮,闪亮3秒后熄灭。
在东西绿灯熄灭时,东西黄灯亮,并维持2秒。
到2秒时,东西黄灯熄灭,东西红灯亮,同时,南北红灯熄灭,绿灯亮。
东西红灯亮维持30秒。
南北绿灯亮维持25秒,然后闪亮3秒后熄灭。
同时南北黄灯亮,维持2秒后熄灭,这时南北红灯亮,东西绿灯亮。
周而复始。
三、程序设计步骤
1、过程分析:
过程一:东西向车行驶
2、设置定时器
注:①设置T12、T13的原因是:
当司机看到红灯变为绿灯的时候需要有时间反应,启动车辆等。
因此在车子行驶和交通灯变化之间设置1s的间隔。
②设置T22、T222、T221、T223的原因是:
T2和T7只能控制交通灯的闪亮时间,并不能使其控制。
T22一个定时器并不能同时控制东西绿灯与南北绿灯的闪烁,要分别设置控制器,所以通过T22、T222的分别作用,使东西绿灯与南北绿灯分别在高、低电平交替的时候闪亮。
4、按照设置的I/O分配进行接线。
5、打开PLC实验箱和实验面板上的电源开关,将预先编好的实验程序写入计算机,再下载到PLC中。
下载时,RUN/STOP开关拨到STOP位置。
6、下载完毕后,将RUN/STOP开关拨到RUN状态,若程序无逻辑错误则主机上的RUN运行指示灯亮,否则出错指示灯亮,需要修改程序。
7、当PLC指示RUN状态时,表面程序开始运行,观察运行的结果。
若结果与控制要求不符合,则根据观察到的现象修改程序,重新下载进行调试,直至满足控制要求为止。
四、梯形图
五、指令表
通过前面编的梯形图,用PLC软件转换成下面的指令代码:六、时序图
七、测试结果及其分析
最终程序工作过程:
当启动开关SD合上时,X0触电接通,Y42得电,南北红灯亮;
同时Y42的动合触点闭合,Y43得电,东西绿灯亮。
维持到20秒,T6的动合触点接通,与该触点串联的T22合动触点每隔0.5秒,从而使东西绿灯闪烁。
又过3秒,即开始到现在过了23s,T7的动断触点断开,Y43线圈失电,东西绿灯灭;
此时T7的动合触点闭合,T10的动断触点断开,Y44线圈得电,东西黄灯亮,Y47线圈失电,模拟东西向行驶车的灯灭。
再过2秒后,T5的动断触点断开,Y44线圈失电,东西黄灯灭;
此时启动累计时间达25秒,T0的动断触点断开,Y42线圈失电,南北红灯灭,T0的动合触点闭合,Y45线圈得电,东西红灯亮,Y45的动合触点闭合,Y40线圈得电,南北绿灯亮。
1秒后,T13的动合触点闭合,Y46线圈得电,模拟南北向行驶车的灯亮。
又经过25秒,即启动累计时间为50秒时,T1动合触点闭合,与该触点串联的T222的触点每隔0.5秒导通0.5秒,从而使南北绿灯闪烁;
闪烁3秒,T2动断触点断开,Y40线圈失电,南北黄灯灭。
这是启动累计时间达55秒,T4的动断触点断开,T0复位,Y43线圈失电,即维持了30秒的东西红灯灭。
还有一点重要的步骤,就是我设置的定时器T0,T1,T12,T4,T6,T7,T10都是串接到X0上的,所以,最后每个定时器都要分别复位,然后再周而复始的循环。
经过现场调试,达到实验要求。
程序的编写过程主要分为各个定时器的设置,然后通过定时器的值控制输出量的状态。
八、心得体会
PLC实验的梯形图表面上看起来像电工学上的电路控制,但是它有自己的特点,所以在某些特殊场合显得特别重要。
现在PLC实验已经结束,我对三菱PLC 的结构及其工作原理有了初步的了解,并且能够用三菱PLC进行一些简单的编程控制,能用定时器与计时器,以及内部指令在程序中,使得程序能够显得简洁并正确的运行。
在刚开始编程时还是挺困难的,因为都不知道那些代码到底有什么用,怎么用。
为此我在图书馆去借了一本关于三菱PLC的100例的程序的书。
经过一次次的实验,逐步熟悉了编程与线路的接法。
在编程的过程中,基本上对简单的变成和数码显示模拟操作有了一定的了解,并且能够独立运用PLC软件和独立编写简单的PLC程序。
还有要能很好的把书本知识运用到实验中,才能使实验得以正确的运行。
在这点上,我感觉做得很吃力,所以在以后的学习过程中,在学习书本知识的时候还要注重实践运用。
这样才会使学到的知识有实际的效果。