找回密码
 立即注册
查看: 1013|回复: 0

基于STC15W408AS单片机设计的双路输入双路输出可编程工控板可做上下限位控制

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-17 16:39:04

43

主题

7

回帖

253

积分

中级会员

积分
253
发表于 2023-9-2 16:00:31 | 显示全部楼层 |阅读模式

GYJ-0027-B 淘宝描述_01.jpg


GYJ-0027-B 淘宝描述_02.jpg

GYJ-0027-B 淘宝描述_06.jpg


【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!  
*********************************************************************

测试功能程序
*********************************************************************/
#include "STC15W408AS.h"
#include <intrins.H>
#define uchar unsigned char //宏定义字符型变量
#define uint  unsigned int        //宏定义整型变量

/********************************************************************
                            初始定义
*********************************************************************/
//uchar keycnt=0;//按下次数值
uint tcnt1,tcnt2; //键值判断
bit flag;
uint bjz=0;//设置报警值
uint tcnt=0;
//sfr WDT_CONTR=0XC1;                    //看门狗设置寄存器
uint bjsj=0;
uint bjsj1=0;
bit bjbz=0;
bit bjkz=0;
/********************************************************************
                            I/O定义
*********************************************************************/
sbit OUT1=P5^4; //继电器输出控制端
sbit OUT2=P5^5; //继电器输出控制端
sbit IN1=P3^6;  //输入端
sbit IN2=P3^7;  //输入端
sbit S1=P1^2;  //检测时间调节
sbit S2=P1^3;  //检测时间调节
sbit S3=P1^4;  //检测时间调节
sbit S4=P1^5;  //检测时间调节

sbit D0=P3^3;  //遥控接口
sbit D1=P3^2;  //遥控接口
sbit D2=P1^1;  //遥控接口
sbit D3=P1^0;  //遥控接口


bit bz1=0;
bit bz2=0;
uchar k=50;
/********************************************************************
                            函数声明
*********************************************************************/
void delay(uint t);
void timer0_init();
void jctime();
void KEY();
/********************************************************************
                            延时函数
*********************************************************************/
void delay(uint t)
{
  uint i,j;
   for(i=0;i<t;i++)
   {
            for(j=130;j>0;j--);
         { ;
         }
   }
}
/********************************************************************
                          定时器T0初始化
*********************************************************************/
void timer0_init()
{
        TMOD=0x02; //定时器工作在方式2
        TH0=0x06; //对TH0 TL0 赋值
        TL0=0x06;
        TR0=1; //开始定时
        ET0=1;
        EA=1;
}
/********************************************************************
                           检测时间设置函数
*********************************************************************/
void jctime()
{
        if((S1==1)&&(S2==1)&&(S3==1)&&(S4==1)){bjz=100;}//1秒
        if((S1==0)&&(S2==1)&&(S3==1)&&(S4==1)){bjz=200;}//2秒
        if((S1==1)&&(S2==0)&&(S3==1)&&(S4==1)){bjz=300;}//3秒
        if((S1==0)&&(S2==0)&&(S3==1)&&(S4==1)){bjz=400;}//4秒
        if((S1==1)&&(S2==1)&&(S3==0)&&(S4==1)){bjz=500;}//5秒
        if((S1==0)&&(S2==1)&&(S3==0)&&(S4==1)){bjz=600;}//6秒
        if((S1==1)&&(S2==0)&&(S3==0)&&(S4==1)){bjz=700;}//7秒
        if((S1==0)&&(S2==0)&&(S3==0)&&(S4==1)){bjz=800;}//8秒
        if((S1==1)&&(S2==1)&&(S3==1)&&(S4==0)){bjz=900;}//9秒
        if((S1==0)&&(S2==1)&&(S3==1)&&(S4==0)){bjz=1000;}//10秒
        if((S1==1)&&(S2==0)&&(S3==1)&&(S4==0)){bjz=1100;}//11秒
        if((S1==0)&&(S2==0)&&(S3==1)&&(S4==0)){bjz=1200;}//12秒
        if((S1==1)&&(S2==1)&&(S3==0)&&(S4==0)){bjz=1300;}//13秒
        if((S1==0)&&(S2==1)&&(S3==0)&&(S4==0)){bjz=1400;}//14秒
        if((S1==1)&&(S2==0)&&(S3==0)&&(S4==0)){bjz=1500;}//15秒
        if((S1==0)&&(S2==0)&&(S3==0)&&(S4==0)){bjz=1600;}//16秒
}

/********************************************************************
                            遥控函数
*********************************************************************/
void KEY()
{
if((D0==1)&&(D1==0)&&(D2==0)&&(D3==0)&&(bjbz==0)){delay(k);bjbz=1;tcnt1=0;OUT1=0;delay(k);}//A
if((D0==0)&&(D1==1)&&(D2==0)&&(D3==0)&&(bjbz==0)){delay(k);bjbz=1;tcnt1=0;OUT2=0;delay(k);}//B
if((D0==0)&&(D1==0)&&(D2==1)&&(D3==0)&&(bjbz==0)){delay(k);bjbz=1;tcnt1=0;OUT1=0;OUT2=0;delay(k);}//C
if((D0==0)&&(D1==0)&&(D2==0)&&(D3==1)){delay(k);tcnt1=0;bjbz=0;OUT1=1;OUT2=1;delay(k);}//D
if((D0==0)&&(D1==0)&&(D2==0)&&(D3==0))
{
delay(k);delay(k);
if((D0==0)&&(D1==0)&&(D2==0)&&(D3==0)){}//按键谈起
}
}
/********************************************************************
                            主函数
*********************************************************************/
void main()
{  

S1=1;
S2=1;
S3=1;
S4=1;
timer0_init();
while(1)
{
jctime();
KEY();       
if((IN1==0)&&(bz1==0)){delay(1);if((IN1==0)&&(bz1==0)){OUT1=0;bz1=1;}}
if((IN1==1)&&(bz1==1)){OUT1=1;bz1=0;}

if((IN2==0)&&(bz2==0)){delay(k);if((IN2==0)&&(bz2==0)){OUT2=0;bz2=1;}}
if((IN2==1)&&(bz2==1)){OUT2=1;bz2=0;}       
}
}

/********************************************************************
                                    定时器T0中断服务函数
*********************************************************************/
void t0(void) interrupt 1 using 0 //定时中断服务函数
{
        tcnt++; //每过250ust tcnt 加一
        if(tcnt==40) //计满400 次(1/10 秒)时
        {
        tcnt=0; //重新再计
               
        if(bjbz==1)
        {
        tcnt1++;
        if(tcnt1>=bjz){OUT1=1;OUT2=1;tcnt1=0;bjbz=0;}
        }

        }
}

/********************************************************************
                              结束
*********************************************************************/




GYJ-0027-A_双路传感器比较控制器测试程序.zip

48.58 KB, 下载次数: 80

回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 03:41 , Processed in 0.141696 second(s), 49 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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