找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2895|回复: 0
收起左侧

51单片机电梯控制

[复制链接]
ID:324007 发表于 2018-5-7 10:39 | 显示全部楼层 |阅读模式
第二章 电梯控制的原理
2.1基于MSC-51单片机的简单电梯控制
方案一:为了更有效的进行电梯控制,现在使用最左边的数码管表示电梯上升和下降状态,使用“∧”表示上升状态,是同“∨“表示下降状态,使用另外一个一个数码管表示电梯此时所在的楼层,使用按键K1和K2来控制电梯上升或者下降的状态。
在每层楼之后需要进行判断上升或者下降。如果是在上升过程中,应先判断是否继续上升,然后在判断是否下降。如果是在下降过程中,应先判断是否继续下降,在判断是否上升。在上升改变为下降状态时,或者下降改变为上升状态时。
数码管的状态应该相应改变。
方案二:依然使用最左边的数码管表示电梯上升和下降状态,使用“∧”表示上升状态,是同“∨“表示下降状态,使用另外一个一个数码管表示电梯此时所在的楼层,不过此时又八个按键来代表电梯的层数,使用k11代表1楼,k12代表2楼,k13代表3楼,k14代表4楼,k21代表5楼,k22代表6楼,k23代表7楼,k24代表8楼。
如果默认电梯在一楼,比如按下k22按键,数码管则由1变化到6,此时是上升状态。然后数码管就显示6,直至再次按键。如果按的是k13,则数码管从6变化到3,此时是下降状态。数码管显示3,直到再次按键才改变当前状态。
2.2方案一的讨论
2.2.1方案一的优点
1.方案一的思路十分清晰明了。仅有由1至8的上升状态或者8至1的下降状态,程序书写比较简单。
2.方案一对于初学者来说比较友好,会基础C语言语句以及51单片机定时器的使用方法就可以比较轻松的做出程序。
    3.因为上升过程中,仅计数8次,定时器的参数就可以使用一个宏定义的常数代替,定时器的程序也可以大大化简。
2.2.2方案一的缺点
方案一最大的缺点是对于电梯的运行过程过于简化,仅仅考虑了上升或者下降的两个过程。而实际的电梯运行时,仅有在有人使用的时候才会运行,不然是会一直停靠在某层楼的。为了简化过程编写程序的便利而牺牲了电梯本来可以实现的功能,是这个方案最大的缺陷。
2.3方案二的讨论
2.3.1方案的优点
1.方案二是方案一的强化改良版本,基本可以实现真实电梯的功能
2.方案二可以按照所需要去的楼层数的不同而数码管的变化不同,这是方案一所无法达到的。
3.方案二的思路也比较清晰,默认电梯在一楼,去了6楼之后便停在6楼,然后从6楼在去其他楼层,在停靠在某个楼层。
2.3.2方案二的缺点
方案二最大的缺点是虽然思路清晰,但是编写程序的过程还是比较复杂的。首先默认电梯在某楼,将此楼作为参数进入子函数1中,然后对8个按键哪个按键按下进行判断,然后进入子程序2中,先判断要去的楼层和现在所在的楼层的大小关系,有三种情况,对应三个条件语句。然后执行完子函数2之后,在将去的层数作为参数再次进入子函数1中。而且因为所去楼层不同,定时器的参数也会相应改变,编写程序比较繁杂。
2.4两种方法的比较以及选择
根据实际编写程序者的水平以及对于操作者水平的可行性来说,方案一对于新手来说相对友好了很多,不需要考虑过于复杂的情况只需要想一个相对来说很理想,电梯只从1楼上升到8楼,在每层楼只停相同的时间。而方案二则对于编写者的水平要求就要高了很多,对于新手来说在两天到三天过程几乎是个不可能完成的任务,所以还是决定选择方案一。

第三章硬件电路设备及软件流程代码
3.1控制芯片简介
本设计中,AT89S52 是Atmel公司生产的一种低功耗、高性能CMOS 8位微控制器,具有8 位在系统可编程Flash存储器。AT89S52 使用Atme  公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash 允许程序存储器在系统可编程,也适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。  AT89S52 具有PDIP、PLCC、TQFP3 种封装形式以适用于不同的使用场合。
AT89S52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,内含2k字节的可反复擦写的Flash只读程序存储器和128字节的随机存取数据存储器(RAM),其擦写周期约1000次。器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,内置通用8位中央处理器和Flash存储单元,功能强大。AT89S52单片机的工作电压范围较宽,可在2.7V~6V电压范围内工作。它的工作频率为0Hz~24MHz,支持降至0Hz的静态逻辑操作,并支持两种可选的节电工作模式(低功耗空闲和掉电模式),空闲方式下停止CPU的工作,但允许RAM、定时/计数器、串行通信口及中断系统继续工作。掉电方式下保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。AT89S52还具有两级加密程序存储器,使用者可以根据需要对程序进行加密,实现版权保护的目的。考虑到在单片机的很多应用中,需要使用发光二极管(LED)进行指示,AT89S52的输出端口被设计成可直接驱动LED,可以省去外加的驱动电路,节省资源[6]。
AT89S52内部资源主要有:2k字节Flash闪速存储器,128字节内部RAM,15个I/O口线(其中P1是一个完整的8位双向I/O口),两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口(可编程串行UART通道),精密模拟比较器,片内振荡器以及时钟电路。
AT89S52引脚如图3.1所示。

主程序流程图如下图所示:
图3.2 主程序流程图
3.2主程序代码设计
根据流程图,设计主程序代码如下:
首先是主函数,主函数比较简单,仅需判断按键k1或者k2是否按下,来判断对应的上升还是下降的状态。
void main()
{
         init();
         while(1)  
        {
            if(k1==0)      //按下K1键,启动定时器,进入子函数up中
           {
               TR0=1;   
                h=1;
            }
            if(h==1)
            {
up();
}
      
             if(k2==0)    //按下K2键,启动定时器,进入子函数down中
            {
               TR0=1;
                h=0;
             }
              if(h==0)
             {
down();
}
         }
}
然后根据按键的结果进入对应的两个子函数up或者down中。
下面就是这两个子函数的程序:
void up()   
{                 
      W1=0;
      P0= DIG4_CODE;    //给右边的数码管附上相应的数字
      delay(1);
      W1=1;
      W2=0;
      P0= DIG1_CODE [0];   //给左边的数码管附上相应上升的标记。
      delay(1);
      W2=1;
      if(i==7)               //上升到第八层的时候,停止定时器
      {TR0=0;}
      j=i+1;
}
void down()
{
      W1=0;
      P0= DIG4_CODE [j-1];    //给右边的数码管附上相应的数字
      delay(1);
      W1=1;
      W2=0;
      P0= DIG1_CODE [1];     //给左边的数码管附上相应下降的标记
      delay(1);
      W2=1;
      if(j==1)                 //下降到第一层的时候,停止定时器
      {TR0=0;}
      i=j-1;
}
第三部分就是定时器所相对应的函数。
程序如下:
void time0()interrupt 1         
{
      TH0=(65535-50000)/256;
      TL0=(65535-50000)%256;
      num++;           
      if(num==40)              //计算一次5ms,40次恰好2S
      {
     num=0;
       j--;
       if(j==0)
        {
j=8;
}
               
     i++;
    if(i==8)               
       {
        i=0;
        }
      }     
}         
3.3功能测试
经过测试发现完成了方案一所要完成的功能。
    可以在由一楼上升到八楼过程中,按下下降按键则可以改变上升状态变为下降状态。然后在八楼到一楼的下降过程中,按下上升按键则可以改变下降状态为上升状态。在任意楼层按下上升或者下降按键,都可以产生相应的上升或者下降的状态。
这说明此次的实验比较成功,因为程序比较简单,使用的功能也比较简单让我比较容易的完成了该实验。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表