标题: 大佬帮看看,怎么把这三个程序无误的合在一起 [打印本页]
作者: ChenSir. 时间: 2020-5-13 18:52
标题: 大佬帮看看,怎么把这三个程序无误的合在一起
电磁阀控制程序sbit a=P1^0;//下开关
sbit b=P1^1;//上升
sbit c=P1^2;//下降
sbit d=P1^3;//上线位
sbit e=P1^4;//下限位
void main()
{
a=1;// 上开关 常开
b=1;// 上升 常开
c=1;// 下降 常开
d=1;// 上限位开关 常开
e=1;// 下限位开关 常开
while(1) //循环
{
if(a==0) // 判定上开关闭合 执行语句
{
a=1; //断开开关信号 依旧执行 下降 直到碰到下限位开关
c=0; // 2 启动下降
}
if(e==0) // 4碰到下限位开关启动
{
e=1; // 下限位信号保持 依旧执行 上升
c=1; // 2断开下降电磁阀
b=0; // 1一直启动上升电磁阀 直到碰到上限位开关
} //
if(d==0) // 3碰到上限位开关
{
P1=0xff; // 断开所有
}
}
}
限位开关控制程序
sbit k3=P2^2; //停止按钮
sbit k5=P2^4; //右限位开关
sbit k6=P2^5; //左限位开关
if(k5==0)
{
delay(1000);
if(k5==0)
{
while(k3!=0||k6!=0) {
P1=0x0a;
delay(SPEED);
P1=0x0e;
delay(SPEED);
P1=0x0d;
delay(SPEED);
if(k3==0||k6==0)
break;
} }
}
if(k3==0) //检测按键K3是否按下
{
delay(1000); //消除抖动一般大约10ms
if(k3==0) //再次判断按键是否按下
{ P1=0xff; //电磁阀停止
}
}
if(k6==0) //检测按键K6是否按下
{
delay(1000); //消除抖动 一般大约10ms
if(k6==0) //再次判断按键是否按下
{
while(k3!=0||k5!=0) //当k3不等于0或k5不等于0时
{ P1=0x0a; delay(SPEED); P1=0x0e; delay(SPEED); P1=0x0d; delay(SPEED); if(k3==0||k5==0)
break; //如果k3=0或k5=0,跳出循环
}
}
}
真空压力传感器控制程序#include<reg51.h>
#defineuint unsigned int
#defineuchar unsigned char
ucharcode table[]
={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xf6,0xee,
0x3e,0x9c,0x7a,0x9e,0x8e}; //七段共阴数码管编码表
sbitSTART=P3^0;
sbitEOC=P3^1;
sbitOE=P3^2;
sbitONOFF=P3^3; //控制放气门开或关
voiddelay(uint m) //LED显示延时子程序
{
while(m--);
}
delay1(uintc) //循环间隔延时C毫秒子程序
{
uchar a,b;
for( ;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
voidfun1(uint i) //AD转换及数据处理子程序
{
uint P;
extern uint PP; //定义全局变量PP
START=1;
START=0;
while(i>0) //fun1只执行i次
{
if(i>0)
{
OE=1; //转换结束输出使能
P=P0; //AD转换结果赋给P
P=P*1.0/255*207; //完成75~150mA到0~207kPa的转换
OE=0; //停止输出
P2=0xfe; //个位位选
P1=table[P%10]; //个位段选
delay(500); //个位显示延时约1ms
P2=0xfd; //十位位选
P1=table[P/10%10]; //十位段选
delay(500); //十位显示延时约1ms
P2=0xfb; //百位位选
P1=table[P/100%10]; //百位段选
delay(500); //百位显示延时约1ms
if(P>176)ONOFF=1; //打开放气阀
if(P<64)ONOFF=0; //关闭放气阀
i=i-1;
delay1(100); //每次转换后延时100ms(0.1s)
START=1; //启动下一次转换
START=0;
}
}
}
voidmain() //主程序
{
ONOFF=0; //初始时放气阀关闭
START=0; //初始时不进行AD转换
OE=0;
while(1) //死循环
{
fun1(1); //调用一次转换子程序
PP=P; //转换处理结果(压力值)给PP
if(PP>176||PP<64) //判断压力是否超限
{
fun1(100); //压力超限则调用转换子程序100次,用时约0.1*100=10s
PP=P;
}
}
}
作者: man1234567 时间: 2020-5-14 13:51
再用心学习一周自己就能做到这三个程序无误的合在一起,没人回答因为别人不知道你是啥意思 
作者: tian1qing 时间: 2020-5-14 17:16
这是典型的懒人啊
,程序肯定是找来的,想拼凑到一起用,这也算了,可你连这个东西是要怎么控制流程都懒得说明,图也懒得给,让大神们想帮也帮不了啊,

作者: 51hei团团 时间: 2020-5-14 19:08
由于论坛有版规 不允许直接解题给答案 我发个教程吧: 单片机程序合并教程:http://www.51hei.com/bbs/dpj-157117-1.html
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |