计算机控制技术实验一实验报告

实验内容:

1、  八字段LED数码管驱动显示工作原理

2、  74LS138三—八译码器工作原理及如何控制数码管工作原理

3、  数码管动态显示工作原理分析与计算

4、  数码管多种显示实验

实验任务:

1、让Y0所对应的数码管显示“0”—“9”,间隔1秒

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

int a,num;

sbit A0=P2^0;

sbit A1=P2^1;

sbit A3=P2^2;

void init();

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void main()

{

       init();

       num=0;

       P0=table[0];

       while(1)

       {

              A0=0;

              A1=0;

              A3=0;

              if(a==20)

                     {    

                            a=0;

                            num++;

                            if(num==10)

                                   num=0;

                            P0=table[num];

                           

                     }

       }

}

void timer0() interrupt 1

{

       TH0=(65536-50000)/256;

       TL0=(65536-50000)%256;

       a++;

      

}

void init()

{

       TMOD=0x01;

       TH0=(65536-50000)/256;

       TL0=(65536-50000)%256;

       EA=1;

       ET0=1;

       TR0=1;

      

}

2、让Y0所对应的数码管显示“0”,Y1显示“1”,Y2显示“2”…………以此类推最后Y7显示“7”,间隔1秒

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

int a,num;

sbit A0=P2^0;

sbit A1=P2^1;

sbit A2=P2^2;

void init();

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void main()

{

       init();

       num=0;

       P0=table[0];

       while(1)

       {

              if(a==20)

                     {    

                            a=0;

                            num++;

                            if(num==8)

                                   num=0;  

                           

                     }

                     switch(num)   //位选,选择点亮的数码管,

              {

                     case(0):

                            A0=0;A1=0;A2=0; break;

                     case(1):

                            A0=1;A1=0;A2=0; break;

                     case(2):

                            A0=0;A1=1;A2=0; break;

                     case(3):

                            A0=1;A1=1;A2=0; break;

                     case(4):

                            A0=0;A1=0;A2=1; break;

                     case(5):

                            A0=1;A1=0;A2=1; break;

                     case(6):

                            A0=0;A1=1;A2=1; break;

                     case(7):

                            A0=1;A1=1;A2=1; break;    

              }

              P0=table[num];

       }

}

void timer0() interrupt 1

{

       TH0=(65536-50000)/256;

       TL0=(65536-50000)%256;

       a++;

      

}

void init()

{

       TMOD=0x01;

       TH0=(65536-50000)/256;

       TL0=(65536-50000)%256;

       EA=1;

       ET0=1;

       TR0=1;

      

}

3、让Y0所对应的数码管显示“0”,Y1显示“1”,Y2显示“2”…………以此类推最后Y7显示“7”,间隔4毫秒,注意观察现象,和实验2有何区别

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

int a,num;

sbit A0=P2^0;

sbit A1=P2^1;

sbit A2=P2^2;

void init();

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void main()

{

       init();

       num=0;

       P0=table[0];

       while(1)

       {

              if(a==4)

                     {    

                            a=0;

                            num++;

                            if(num==8)

                                   num=0;  

                           

                     }

                     switch(num)   //位选,选择点亮的数码管,

              {

                     case(0):

                            A0=0;A1=0;A2=0; break;

                     case(1):

                            A0=1;A1=0;A2=0; break;

                     case(2):

                            A0=0;A1=1;A2=0; break;

                     case(3):

                            A0=1;A1=1;A2=0; break;

                     case(4):

                            A0=0;A1=0;A2=1; break;

                     case(5):

                            A0=1;A1=0;A2=1; break;

                     case(6):

                            A0=0;A1=1;A2=1; break;

                     case(7):

                            A0=1;A1=1;A2=1; break;    

              }

              P0=table[num];

       }

}

void timer0() interrupt 1

{

       TH0=(65536-1000)/256;

       TL0=(65536-1000)%256;

       a++;

      

}

void init()

{

       TMOD=0x01;

       TH0=(65536-50000)/256;

       TL0=(65536-50000)%256;

       EA=1;

       ET0=1;

       TR0=1;

      

}

4、让Y0所对应的数码管显示“5”,停留1秒,再让Y1显示“5”,…………以此类推最后Y7显示“5”,移动字幕

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

int a,num;

sbit A0=P2^0;

sbit A1=P2^1;

sbit A2=P2^2;

void init();

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void main()

{

       init();

       num=0;

       P0=table[0];

       while(1)

       {

              if(a==20)

                     {    

                            a=0;

                            num++;

                            if(num==8)

                                   num=0;  

                           

                     }

                     switch(num)   //位选,选择点亮的数码管,

              {

                     case(0):

                            A0=0;A1=0;A2=0; break;

                     case(1):

                            A0=1;A1=0;A2=0; break;

                     case(2):

                            A0=0;A1=1;A2=0; break;

                     case(3):

                            A0=1;A1=1;A2=0; break;

                     case(4):

                            A0=0;A1=0;A2=1; break;

                     case(5):

                            A0=1;A1=0;A2=1; break;

                     case(6):

                            A0=0;A1=1;A2=1; break;

                     case(7):

                            A0=1;A1=1;A2=1; break;    

              }

              P0=table[5];

       }

}

void timer0() interrupt 1

{

       TH0=(65536-50000)/256;

       TL0=(65536-50000)%256;

       a++;

      

}

void init()

{

       TMOD=0x01;

       TH0=(65536-50000)/256;

       TL0=(65536-50000)%256;

       EA=1;

       ET0=1;

       TR0=1;

      

}

5、在8个数码管上稳定显示“i love you”

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

int a,num;

sbit A0=P2^0;

sbit A1=P2^1;

sbit A2=P2^2;

void init();

uchar code table[]={0x30,0x38,0x3f,0x3e,0x79,0x6e,0x3f,0x3e};

void main()

{

       init();

       num=0;

       P0=table[0];

       while(1)

       {

              if(a==2)

                     {    

                            a=0;

                            num++;

                            if(num==8)

                                   num=0;  

                           

                     }

                     switch(num)   //位选,选择点亮的数码管,

              {

                     case(0):

                            A0=0;A1=0;A2=0; break;

                     case(1):

                            A0=1;A1=0;A2=0; break;

                     case(2):

                            A0=0;A1=1;A2=0; break;

                     case(3):

                            A0=1;A1=1;A2=0; break;

                     case(4):

                            A0=0;A1=0;A2=1; break;

                     case(5):

                            A0=1;A1=0;A2=1; break;

                     case(6):

                            A0=0;A1=1;A2=1; break;

                     case(7):

                            A0=1;A1=1;A2=1; break;    

              }

              P0=table[num];

       }

}

void timer0() interrupt 1

{

       TH0=(65536-1000)/256;

       TL0=(65536-1000)%256;

       a++;

      

}

void init()

{

       TMOD=0x01;

       TH0=(65536-50000)/256;

       TL0=(65536-50000)%256;

       EA=1;

       ET0=1;

       TR0=1;

      

}

 

第二篇:计算机控制技术实验1实验报告

计算机控制技术实验报告

基础实验


实验目的

(1) 了解工业控制机与微机的相同点和不同点。

(2) 掌握利用工业控制语言(梯形图)编写控制循环。

(3) 理解PLC输入点和输出点的关系,模拟量输入与开关量输入的区别,学会在实验室模拟现场调试。

实验要求

利用Step7编程软件编写梯形图程序,实现工作台的顺序控制过程,通过输入点和输出点的二极管显示变化调试程序。

实现当按下某一个开关时,模拟控制工作台快速向前的输出灯点亮,说明工作台正在快速向前运动;当拨动另一开关时,模拟快速向前的灯灭,而指示慢速向前的灯亮;当拨第三个开关时,指示慢速向前的灯亮一定的时间后(5秒),指示快速后退的灯亮同时慢速向前的灯灭,直到模拟后退到位开关拨到位后,后退指示灯自动熄灭。

解题思路

用I0.0,I0.1,I0.2,I0.3这四个拨动开关控制输出灯的变化,输出灯有Q0.0,Q0.1,Q0.2

I0.0 : 控制第一个灯亮

I0.1:第二个灯亮的同时第一个灯熄灭

I0.2:  2秒后第三个灯亮

I0.3: 重置操作,在任何状态下都可以重置,所有灯灭。

下面展示梯形图:

图1

图2

图3

图4

图1中显示网络1、2、3,由网络1确定Q0.0的亮灭,当I0.0有输入时,由于I0.1、I0.3为常闭,所以Q0.0会点亮。添加

会使Q0.0常亮,不会因I0.0的断开而熄灭。

同理网络2完成Q0.1的点亮功能,I0.3是常闭,完成复位操作,如图2中的网络6。实现当按下某一个开关时,模拟控制工作台快速向前的输出灯点亮,说明工作台正在快速向前运动;

网络3中按下I0.2时,触发M0.0,开始计时,如图2网络4所示,为计时器状态。当计时时间到达2S时,网络5通,Q0.2亮,同时Q0.1灭,实现当拨第三个开关时,指示慢速向前的灯亮一定的时间后(5秒),指示快速后退的灯亮同时慢速向前的灯灭.

网络6中,按下I0.3时,对网络实现重置,所有的灯在按下I0.3时都会熄灭。

实验结果

结果情况详见附件中的视频。

总结与收获

通过本次实验,我们实现了简单的开关对输出灯的控制,并且运用了定时器的定时功能。了解了工业控制机与微机的相同点和不同点。初步掌握利用工业控制语言(梯形图)编写控制循环。深入理解PLC输入点和输出点的关系,模拟量输入与开关量输入的区别,学会在实验室模拟现场调试。

总之,计算机控制技术很有趣,希望在以后的课程中更加深入地学习到新的知识,并且能够实际运用。

相关推荐