您当前的位置:五五电子网电子知识单片机-工控设备51单片机继电器定时器程序 正文
继电器定时器程序

继电器定时器程序

点击数:7888 次   录入时间:03-04 11:59:12   整理:http://www.55dianzi.com   51单片机

继电器定时器程序

#include <AT89x051.H>        //器件配置文件
#define uchar unsigned char        //变量类型的宏定义
#define uint unsigned int
uchar DATA_7SEG[10]={0xfc,0x60,0xda,0xf2,0x66,
                    0xb6,0xbe,0xe0,0xfe,0xf6};    /*0~9的数码管段码*/
uchar x[4];                    /* 存放走时的数组*/
uchar y[4]={0,0,0,0};            /* 存放定时1的数组*/
uchar z[4]={0,0,0,0};            /* 存放定时2的数组*/
uchar act[4]={0xfe,0xfd,0xfb,0xf7};    /*四位数码管的位选码*/
void delay(uint k);                //延时子函数声明
void conv();                        //走时转换子函数声明
void p_out();                        //判别定时到否子函数声明
void p_out1();                        //判别定时到否子函数1声明
void t_adj();                        //走时调整子函数声明
uchar dEDA=0;       /*100mS计数单元清零*/ 
bit d_05s=0;            /*0.5秒标志*/
bit o_f1=0;         /*定时1启/停标志*/
bit o_f2=0;         /*定时2启/停标志*/
uchar set=0;        /*功能键标志*/
uchar h=0;
uchar n=0;
uchar m=0;
uchar flag;
uchar left=0;
uchar sec=0;
uchar min=0;
uchar hour=0;
uchar min1=0;
uchar hour1=0;
uchar min2=0;
uchar hour2=0;
uchar up=0;
bit flag1=0; 
bit flag2=0; 

/*显示走时*/
void time()
{
for(h=0;h<4;h++)            
    {P1=DATA_7SEG[x[h]];    //输出数码管的字形码
        P3=act[h];p_out();        //输出数码管的位码。判断输出
if(P3_2==0){if(d_05s==1)P1_0=1;else P1_0=0;}        /* 百位数码管点亮时,控制小数点
(秒点)闪烁*/
        delay(2);}             //每位数码管点亮2ms
if(o_f1==1){P1=0x01;P3_3=1;P3_2=1;P3_1=0;P3_0=1;}/* 若定时1启动,
点亮十位数码管小数点*/
    else{P1=0x00;P3_3=1;P3_2=1;P3_1=1;P3_0=1;}p_out();/*否则十位数码管
小数点不亮*/
delay(2);
if(o_f2==1){P1=0x01;P3_3=1;P3_2=1;P3_1=1;P3_0=0;} /* 若定时2启动,
点亮个位数码管小数点*/
    else{P1=0x00;P3_3=1;P3_2=1;P3_1=1;P3_0=1;}p_out();/*否则个位数码管
小数点不亮*/
delay(2);
}

/*定时器T0初始化*/
void init_timer0()
{
TMOD=0x11;
TH0=-(50235/256);
TL0=-(50235%256);
IE=0x8a;
TR0=1;
}

/*定时器T1初始化*/
void init_timer1()
{
TH1=-(5000/256);
TL1=-(5000%256);
}


/*延时k*1ms子函数*/
void delay(uint k)
{
uint i,j;
for(i=0;i<k;i++){
for(j=0;j<60;j++)
{;}}
}

/*100mS定时中断服务子函数*/
void zd0(void) interrupt 1 
{
TH0=-(50235/256);        //重装100ms定时初值
TL0=-(50235%256);
deda++;                    //100ms计时单元递增
}

/*10mS定时中断服务子函数*/
void zd1(void) interrupt 3 
{uchar i,j;i=P1;j=P3;
    TH1=-(5000/256);
    TL1=-(5000%256);
if(m==1)n++;
if(n>=30){n=0;m=0;}
P3_7=0;
P1=0xff;
if(P1!=0xff)
{
if(n==0)m=1;
{if(n==1)
{
if(P1_0==0){set++;left=0;}
if(set>=4)set=0;
if(set==1)flag=0x55;
if(P1_1==0)left++;
if(left>=4)left=0;
if(P1_2==0){up++;
switch(left)
{
case 0:{if(up>=10)up=0;}break;
case 1:{if(up>=6)up=0;}break;
case 2:{if(up>=10)up=0;}break; 
case 3:{if(up>=3)up=0;}break;
default:break;
}
}
if(P1_2==0){
switch(set)
{case 0:break;
case 1:x[left]=up;break;
case 2:{y[left]=up;if(P1_3==0)o_f1=!o_f1;}break; 
case 3:{z[left]=up;if(P1_3==0)o_f2=!o_f2;}break;
default:break;}
            }
else {
switch(set)
{case 0:break;
case 1:up=x[left];break;
case 2:{up=y[left];if(P1_3==0)o_f1=!o_f1;}break; 
case 3:{up=z[left];if(P1_3==0)o_f2=!o_f2;}break;
default:break;}
    }}
}}
P1=i;P3=j;
}

/*显示调整走时*/
void t_adj()
{p_out1();
for(h=0;h<4;h++)    //四位数码管每位点亮3ms
    {if(h==left)P1=0x00;
    else {P1=DATA_7SEG[x[h]];
    P3=act[h];p_out();
    delay(3);}}
    P1=DATA_7SEG[up];P3=act[left];
    hour=x[3]*10+x[2];min=x[1]*10+x[0];
    p_out();
    delay(12);    //需调整的数码管点亮12ms
if(o_f1==1){P1=0x01;P3_3=1;P3_2=1;P3_1=0;P3_0=1;} /*若定时1启动,
点亮十位数码管小数点*/
    else{P1=0x00;P3_3=1;P3_2=1;P3_1=1;P3_0=1;}p_out();/*否则十位数码管
小数点不亮*/
delay(12);        //需调整的数码管点亮12ms
if(o_f2==1){P1=0x01;P3_3=1;P3_2=1;P3_1=1;P3_0=0;} /*若定时2启动,
点亮个位数码管小数点*/
    else{P1=0x00;P3_3=1;P3_2=1;P3_1=1;P3_0=1;}p_out();/*否则个位数码管
小数点不亮*/
delay(12);        //需调整的数码管点亮12ms
}

/*显示调整定时1*/
void t1_adj()
{p_out1();
for(h=0;h<4;h++)        //四位数码管每位点亮3ms
    {if(h==left)P1=0x00;
    else {P1=DATA_7SEG[y[h]];
    P3=act[h];p_out();
    delay(3);}}
    P1=DATA_7SEG[up];P3=act[left];    //需调整的数码管点亮18ms
    hour1=y[3]*10+y[2];min1=y[1]*10+y[0];
    p_out();
delay(18);
if(o_f1==1){P1=0x01;P3_3=0;P3_2=1;P3_1=0;P3_0=1;} /*若定时1启动,

[1] [2]  下一页


本文关键字:继电器  程序  定时器  51单片机单片机-工控设备 - 51单片机

《继电器定时器程序》相关文章>>>