找回密码
 立即注册

QQ登录

只需一步,快速开始

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

开源分享一款GYJ-0306_可编程多功能延时时间控制模块 时分秒可以设置

[复制链接]
跳转到指定楼层
楼主




















【声明】此程序仅用于学习与参考!     
*********************************************************************/
#include <STC8F2K08S2.h>
#include <intrins.h>
#include <string.h>
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int  //宏定义无符号整型

/**************************************************
                                 IO口定义
***************************************************/
sbit led = P1^0;
sbit IN1 = P5^4;
sbit set1= P1^7;
sbit set2= P1^6;
sbit set3= P1^1;

sbit ten1= P3^7;
sbit ten2= P3^6;
sbit ten3= P3^5;
sbit ten4= P3^4;

sbit b1 = P3^3;
sbit b2 = P3^2;
sbit b3 = P3^1;
sbit b4 = P3^0;
sbit OUT = P5^5;
bit bz=0,bk=0,kk=0,bt=0,kz=0,bs1=0,bs2=0,bs3=0,ss=0,g=0;
uchar ba=0;
uint dat=0,dat1=0,dat2=0,jsu=0,js=0,js1=0,js2=0;

/**************************************************
                                配置t0
***************************************************/
void Timer0Init(void)                //1毫秒@11.0592MHz
{
        AUXR |= 0x80;                //定时器时钟1T模式
        TMOD &= 0xF0;                //设置定时器模式
    TL0 = 0xCD;                //设置定时初值
        TH0 = 0xD4;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        ET0 = 1;
        TR0 = 1;                //定时器0开始计时
}

/**************************************************
                                t0
***************************************************/
void InterruptTimer0() interrupt 1{//T0中断服务函数,执行串口接收监控
             dat2=dat+dat1;
          if(dat2==0){kz=1;}else{kz=0;}        //kz当没有拨时间时不让定时器计数
          if((kk==1)&&(bk==0)&&(kz==0)){jsu++;}        //bk执行完毕后停止计数器计数,jsu计数
          if(ba==0)//秒
          {
            if((jsu==100)&&(g==0)){g=1;if(bt==0){OUT=1;}else{OUT=0;}}//控制上电继电器吸合还是断开
            if(jsu==800){led=0;}
            if(jsu==1000)//1s
            {
               
              jsu=0;
                  led=1;
                  js++;
                   if((js==dat2)&&(ss==0))
                   {
            js=0;
//                    bk=1;
//                    kk=0;
//                    led=0;
                    OUT=!OUT;
                        jsu=0;
                        ss=1;
                   }
                  if((js==dat2)&&(ss==1))
                   {
            js=0;
                    bk=1;
                    kk=0;
                    led=0;
                    OUT=!OUT;
                        jsu=0;
                   }
             }
          }

          if(ba==1)//分
          {
            if((jsu==100)&&(g==0)){g=1;if(bt==0){OUT=1;}else{OUT=0;}}
            if(jsu==800){led=0;}
            if(jsu==1000)//1s
            {
               
              jsu=0;
                  led=1;
                  js++;
                  if(js==60)//1分
                   {
                      js=0;
                          js1++;
                      if((js1==dat2)&&(ss==0))
                      {
               js1=0;
//                       bk=1;
//                       kk=0;
//                       led=0;
                       OUT=!OUT;
                           ss=1;
                           jsu=0;
                           js=0;
                      }
                         if((js1==dat2)&&(ss==1))
                      {
               js1=0;
                       bk=1;
                       kk=0;
                       led=0;
                       OUT=!OUT;
                           jsu=0;
                           js=0;
                     }
                   }
             }
          }

         if(ba==2)//时
          {
            if((jsu==100)&&(g==0)){g=1;if(bt==0){OUT=1;}else{OUT=0;}}
            if(jsu==800){led=0;}
            if(jsu==1000)//1秒
            {
               
              jsu=0;
                  led=1;
                  js++;
                  if(js==60)//1分钟
                   {
                      js=0;
                          js1++;
                          if(js1==60)//1小时
                          {
                            js1=0;
                            js2++;
                         if((js2==dat2)&&(ss==0))
                        {
                 js2=0;
//                         bk=1;
//                         kk=0;
//                         led=0;
                         OUT=!OUT;
                                 ss=1;
                                 js=0;
                                 js1=0;
                                 jsu=0;
                        }
                                if((js2==dat2)&&(ss==1))
                        {
                 js2=0;
                         bk=1;
                         kk=0;
                         led=0;
                         OUT=!OUT;
                                 js=0;
                                 js1=0;
                                 jsu=0;
                        }
                          }
                    }
              }
           }
}
/**************************************************
                                主函数
***************************************************/
void main()
{
  Timer0Init();
  EA=1;
  ba=0;
  OUT=1;
  while(1)
  {
        if((IN1==0)&&(bz==0)){bz=1;kk=1;bk=0;ss=0;g=0;jsu=0;js=0;js1=0;js2=0;led=1;} //        bz控制输入一次标志位,KK控制定时器计数,
        if((IN1==1)&&(bz==1)){bz=0;}
        if(set1==0){bt=1;}else{bt=0;} //拨上拨码开关设置延时断开,不拨延时接通
        if((set2==1)&&(set3==1)&&(bs1==0)){ba=0;bs1=1;bs2=0;bs3=0;}          //秒 ba=0
        if((set2==0)&&(set3==1)&&(bs2==0)){ba=1;bs1=0;bs2=1;bs3=0;}          //分 ba=1
        if((set2==0)&&(set3==0)&&(bs3==0)){ba=2;bs1=0;bs2=0;bs3=1;}          //时 ba=2

        if((b1==1)&&(b2==1)&&(b3==1)&&(b4==1)){dat=0;}//1秒
        if((b1==0)&&(b2==1)&&(b3==1)&&(b4==1)){dat=1;}
        if((b1==1)&&(b2==0)&&(b3==1)&&(b4==1)){dat=2;}
        if((b1==0)&&(b2==0)&&(b3==1)&&(b4==1)){dat=3;}
        if((b1==1)&&(b2==1)&&(b3==0)&&(b4==1)){dat=4;}
        if((b1==0)&&(b2==1)&&(b3==0)&&(b4==1)){dat=5;}
        if((b1==1)&&(b2==0)&&(b3==0)&&(b4==1)){dat=6;}
        if((b1==0)&&(b2==0)&&(b3==0)&&(b4==1)){dat=7;}
        if((b1==1)&&(b2==1)&&(b3==1)&&(b4==0)){dat=8;}
        if((b1==0)&&(b2==1)&&(b3==1)&&(b4==0)){dat=9;}
        if((b1==1)&&(b2==0)&&(b3==1)&&(b4==0)){dat=10;}
        if((b1==0)&&(b2==0)&&(b3==1)&&(b4==0)){dat=11;}
        if((b1==1)&&(b2==1)&&(b3==0)&&(b4==0)){dat=12;}
        if((b1==0)&&(b2==1)&&(b3==0)&&(b4==0)){dat=13;}
        if((b1==1)&&(b2==0)&&(b3==0)&&(b4==0)){dat=14;}
        if((b1==0)&&(b2==0)&&(b3==0)&&(b4==0)){dat=15;}//15秒

        if((ten1==1)&&(ten2==1)&&(ten3==1)&&(ten4==1)){dat1=0;}//0s
        if((ten1==0)&&(ten2==1)&&(ten3==1)&&(ten4==1)){dat1=10;}//10s
        if((ten1==1)&&(ten2==0)&&(ten3==1)&&(ten4==1)){dat1=20;}//20s
        if((ten1==0)&&(ten2==0)&&(ten3==1)&&(ten4==1)){dat1=30;}//30s
        if((ten1==1)&&(ten2==1)&&(ten3==0)&&(ten4==1)){dat1=40;}//40s
        if((ten1==0)&&(ten2==1)&&(ten3==0)&&(ten4==1)){dat1=50;}//50s
        if((ten1==1)&&(ten2==0)&&(ten3==0)&&(ten4==1)){dat1=60;}//60s
        if((ten1==0)&&(ten2==0)&&(ten3==0)&&(ten4==1)){dat1=70;}//70s
        if((ten1==1)&&(ten2==1)&&(ten3==1)&&(ten4==0)){dat1=80;}//80s
        if((ten1==0)&&(ten2==1)&&(ten3==1)&&(ten4==0)){dat1=90;}//90s
        if((ten1==1)&&(ten2==0)&&(ten3==1)&&(ten4==0)){dat1=100;}//100s
        if((ten1==0)&&(ten2==0)&&(ten3==1)&&(ten4==0)){dat1=110;}//110s
        if((ten1==1)&&(ten2==1)&&(ten3==0)&&(ten4==0)){dat1=120;}//120s
        if((ten1==0)&&(ten2==1)&&(ten3==0)&&(ten4==0)){dat1=130;}//130s
        if((ten1==1)&&(ten2==0)&&(ten3==0)&&(ten4==0)){dat1=140;}//140s
        if((ten1==0)&&(ten2==0)&&(ten3==0)&&(ten4==0)){dat1=150;}//150s
  }
}

/*********************************************************************************************/

J-0306_可编程多功能延时时间控制模块.7z

906.45 KB, 下载次数: 17, 下载积分: 黑币 -5

Keil代码下载

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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