找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3027|回复: 2
打印 上一主题 下一主题
收起左侧

单片机立体车库 简易升降 自动控制C语言源代码 PCF8591芯片驱动

[复制链接]
跳转到指定楼层
楼主
立体车库 简易升降 自动控制C51代码


单片机源程序如下:

  1. //-----------------------函数声明,变量定义------------------------
  2. #include "REG51.h"
  3. #include "oled.h"
  4. #include "stdlib.h"
  5. //#include "bmp.h"
  6. #include <intrins.h>
  7. #include <ctype.h>
  8. #include <math.h>
  9. #define uchar unsigned char
  10. #define uint  unsigned int
  11. /***********************输入输出开关量信号定义 ***********************/
  12. sbit P10=P1^0;    // 自动手动切换 开关量SA
  13. sbit P11=P1^1;    // 上升到位开关量SU
  14. sbit P12=P1^2;           // 下降到位开关量SD
  15. sbit P13=P1^3;           // 防坠电磁铁微动开关量YA1
  16. sbit P14=P1^4;           // 热保护检测开关量FR
  17. sbit P15=P1^5;                // 启动信号
  18. sbit P20=P2^0;                // 上升接触器给电
  19. sbit P21=P2^1;                // 下降接触器给电
  20. sbit P22=P2^2;                // 防坠电磁铁给电
  21. sbit P23=P2^3;                // 报警蜂鸣器给电
  22. int a;b;c;          //定义中间变量
  23. /***********************输入输出开关量信号定义**********************/

  24. /***********************单片机程序烧写接口 ***********************/
  25. sbit P30=P3^0;        //RXD
  26. sbit P31=P3^1; //TXD
  27. /***********************单片机程序烧写接口 ***********************/



  28. /****************************延时函数***************************/                                                         
  29. void delay(int ms)
  30. {
  31.     while(ms--)
  32.         {
  33.       uchar i;
  34.           for(i=0;i<250;i++)  
  35.            {
  36.             _nop_();                          
  37.                 _nop_();
  38.                 _nop_();
  39.                 _nop_();
  40.            }
  41.         }
  42. }       
  43. /****************************延时函数***************************/       
  44. test_FR()
  45. {
  46.   if(P14==0) //热保护检测
  47.     {P20=1;P21=1;P22=1;P23=0;}//如果热保护继电器动作,报警蜂鸣器得电,其余失电
  48.                          
  49. }



  50. test_FZGG() //检测防坠挂钩是否打开
  51. {
  52.            while(P13==1)//只要防坠电磁铁微动开关没有闭合
  53.             {P23=0;        P20=1;P21=1;//报警蜂鸣器 一直报警 ,上升和下降接触器均失电
  54.                           
  55.                   if(P13==0) //        当微动开关闭合
  56.                   {P23=1;a=0; b=0; c=0;} //报警蜂鸣器 解除警报,中间变量恢复初始值  
  57.                          
  58.                         }
  59.          
  60. }



  61. //-------------------------------------------------------------------
  62. // 函数名称: main
  63. // 函数功能: 主程序
  64. //-------------------------------------------------------------------
  65. void main()
  66. {   
  67.     a=0; //初始化启动中间变量a为0;
  68.     b=0; //初始化上升接触器给电中间变量b为0
  69.     c=0; //初始化下降接触器给电中间变量c为0
  70.     P20=1;P21=1;P22=1;P23=1;//初始化输出口为高电平,低电平触发继电器
  71.        
  72.         while(1)
  73.           {          
  74.              
  75.                   while (P10==0 && P14==1) //当自动/手动转换开关打到自动 且 热保护检测正常时,进入循环
  76.                
  77.                      {
  78.                
  79.                       if (P15==0)  //按下启动按钮
  80.                                  {a=1;}                //启动中间变量a置1;
  81.                
  82.                           if ( P12==0 && a==1) //如果此时下降到位开关闭合且中间变量a为1
  83.                                  {b=1;}  //上升接触器线圈给电中间变量b置1
  84.                
  85.                           if ( P11==0 && a==1) //如果此时上升到位开关闭合且中间变量a为1
  86.                                  {c=1;}  //上升接触器线圈给电中间变量c置1
  87.                
  88.                            while(a==1 && b==1)// 当启动中间变量a为1且上升接触器中间变量b为1 时
  89.                                    {  P20=0;P22=0; //上升接触器给电,载车板上升,防坠电磁铁给电,防坠挂钩打开
  90.                                       delay(100); //延时确保防坠挂钩微动开关闭合
  91.                                      
  92.                                   while(P11==1)//在上升过程中,上升到位开关打开的时候
  93.                                                {
  94.                                                      test_FR(); //热继电器检测
  95.                                                      test_FZGG();
  96.                                                    }//检测防坠挂钩是否打开
  97.                                      


  98.                                           if(P11==0)//上升到位开关闭合,即载车板上升到位
  99.                                                 {
  100.                                               {P20=1;P22=1;P21=1;a=0;b=0;} //上升接触器失电,防坠电磁铁失电,即停止上升,启动中间变量a和b均恢复为0
  101.                                                delay(100); //延时避免误触发报警蜂鸣器
  102.                                              }
  103.                                    }       
  104.                
  105.                            while(a==1 && c==1)// 当启动中间变量a为1且上升接触器中间变量c为1 时
  106.                                    {    P21=0;P22=0; //下降接触器给电,载车板下降,防坠电磁铁给电,防坠挂钩打开                                    
  107.                                                  delay(100); //延时确保防坠挂钩微动开关闭合
  108.                                          
  109.                                             while(P12==1);//下降过程中,下降到位开关打开的时候
  110.                                                  {
  111.                                                            test_FR(); //热继电器检测
  112.                                                            test_FZGG();
  113.                                                          }   //检测防坠挂钩是否打开

  114.                                                   if(P12==0)                   //下降到位开关闭合,即载车板下降到位
  115.                                              {
  116.                                               {P21=1;P22=1;P20=1;a=0;c=0;} //下降接触器失电,防坠电磁铁失电,即停止下降,启动中间变量a和c均恢复为0
  117.                                                       delay(100); //延时避免误触发报警蜂鸣器
  118.                                          }
  119.                                
  120.                             }       
  121.                         
  122.                         
  123.                    }
  124.           }
  125. }
复制代码

所有资料51hei提供下载:
JYSJ.rar (33.75 KB, 下载次数: 21)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:102963 发表于 2018-2-25 16:45 | 只看该作者
连个电路图都没有,只有个程序!楼主记性不太好啊!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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