标题:
单片机立体车库 简易升降 自动控制C语言源代码 PCF8591芯片驱动
[打印本页]
作者:
huangminjie
时间:
2018-2-24 16:19
标题:
单片机立体车库 简易升降 自动控制C语言源代码 PCF8591芯片驱动
立体车库 简易升降 自动控制C51代码
0.png
(44.86 KB, 下载次数: 27)
下载附件
2018-2-25 04:50 上传
单片机源程序如下:
//-----------------------函数声明,变量定义------------------------
#include "REG51.h"
#include "oled.h"
#include "stdlib.h"
//#include "bmp.h"
#include <intrins.h>
#include <ctype.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
/***********************输入输出开关量信号定义 ***********************/
sbit P10=P1^0; // 自动手动切换 开关量SA
sbit P11=P1^1; // 上升到位开关量SU
sbit P12=P1^2; // 下降到位开关量SD
sbit P13=P1^3; // 防坠电磁铁微动开关量YA1
sbit P14=P1^4; // 热保护检测开关量FR
sbit P15=P1^5; // 启动信号
sbit P20=P2^0; // 上升接触器给电
sbit P21=P2^1; // 下降接触器给电
sbit P22=P2^2; // 防坠电磁铁给电
sbit P23=P2^3; // 报警蜂鸣器给电
int a;b;c; //定义中间变量
/***********************输入输出开关量信号定义**********************/
/***********************单片机程序烧写接口 ***********************/
sbit P30=P3^0; //RXD
sbit P31=P3^1; //TXD
/***********************单片机程序烧写接口 ***********************/
/****************************延时函数***************************/
void delay(int ms)
{
while(ms--)
{
uchar i;
for(i=0;i<250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
/****************************延时函数***************************/
test_FR()
{
if(P14==0) //热保护检测
{P20=1;P21=1;P22=1;P23=0;}//如果热保护继电器动作,报警蜂鸣器得电,其余失电
}
test_FZGG() //检测防坠挂钩是否打开
{
while(P13==1)//只要防坠电磁铁微动开关没有闭合
{P23=0; P20=1;P21=1;//报警蜂鸣器 一直报警 ,上升和下降接触器均失电
if(P13==0) // 当微动开关闭合
{P23=1;a=0; b=0; c=0;} //报警蜂鸣器 解除警报,中间变量恢复初始值
}
}
//-------------------------------------------------------------------
// 函数名称: main
// 函数功能: 主程序
//-------------------------------------------------------------------
void main()
{
a=0; //初始化启动中间变量a为0;
b=0; //初始化上升接触器给电中间变量b为0
c=0; //初始化下降接触器给电中间变量c为0
P20=1;P21=1;P22=1;P23=1;//初始化输出口为高电平,低电平触发继电器
while(1)
{
while (P10==0 && P14==1) //当自动/手动转换开关打到自动 且 热保护检测正常时,进入循环
{
if (P15==0) //按下启动按钮
{a=1;} //启动中间变量a置1;
if ( P12==0 && a==1) //如果此时下降到位开关闭合且中间变量a为1
{b=1;} //上升接触器线圈给电中间变量b置1
if ( P11==0 && a==1) //如果此时上升到位开关闭合且中间变量a为1
{c=1;} //上升接触器线圈给电中间变量c置1
while(a==1 && b==1)// 当启动中间变量a为1且上升接触器中间变量b为1 时
{ P20=0;P22=0; //上升接触器给电,载车板上升,防坠电磁铁给电,防坠挂钩打开
delay(100); //延时确保防坠挂钩微动开关闭合
while(P11==1)//在上升过程中,上升到位开关打开的时候
{
test_FR(); //热继电器检测
test_FZGG();
}//检测防坠挂钩是否打开
if(P11==0)//上升到位开关闭合,即载车板上升到位
{
{P20=1;P22=1;P21=1;a=0;b=0;} //上升接触器失电,防坠电磁铁失电,即停止上升,启动中间变量a和b均恢复为0
delay(100); //延时避免误触发报警蜂鸣器
}
}
while(a==1 && c==1)// 当启动中间变量a为1且上升接触器中间变量c为1 时
{ P21=0;P22=0; //下降接触器给电,载车板下降,防坠电磁铁给电,防坠挂钩打开
delay(100); //延时确保防坠挂钩微动开关闭合
while(P12==1);//下降过程中,下降到位开关打开的时候
{
test_FR(); //热继电器检测
test_FZGG();
} //检测防坠挂钩是否打开
if(P12==0) //下降到位开关闭合,即载车板下降到位
{
{P21=1;P22=1;P20=1;a=0;c=0;} //下降接触器失电,防坠电磁铁失电,即停止下降,启动中间变量a和c均恢复为0
delay(100); //延时避免误触发报警蜂鸣器
}
}
}
}
}
复制代码
所有资料51hei提供下载:
JYSJ.rar
(33.75 KB, 下载次数: 21)
2018-2-24 16:19 上传
点击文件名下载附件
C51源程序
下载积分: 黑币 -5
作者:
songxia8013
时间:
2018-2-25 16:45
连个电路图都没有,只有个程序!楼主记性不太好啊!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1