迅维网

标题: 求1-10小时可电子断电定时器电路 [打印本页]

作者: 风胜    时间: 2013-3-31 12:47
标题: 求1-10小时可电子断电定时器电路
想自制一个定时器用作控制电动车电瓶充电时间,简单就好,谢谢
作者: 340216606    时间: 2013-3-31 13:04
电子市场买个定时器不就完了吗  定时充电都可以
作者: 风胜    时间: 2013-3-31 18:47
自己制作可以多学啊
作者: cs247007856    时间: 2013-3-31 22:18
百度的答案比这多吧
作者: dahai    时间: 2013-3-31 23:25
这个应该用时基电路。。好像是NE555就可以实现。。忘了别的了。。楼主到网上收下看看。。。
作者: njyjh    时间: 2013-4-4 20:29
买一个吧    做这个也学不到什么
作者: 加速器    时间: 2014-3-26 15:16
其实这么简单的功能用555就可以实现的,如果用单片机就要学习一下延时,按键判断,定时器中断等。有点复杂呵呵
作者: 299995384    时间: 2014-11-18 20:20
本帖最后由 299995384 于 2014-11-18 20:23 编辑

STC15F104E 1--10小时定时器饮水机程序   
            #include <REG2051.H>
sbit KEY=P3^0;           //定义按键
sbit OUT=P3^5;           //定义输出
sbit LED1=P3^1;           //1小时LED显示
sbit LED2=P3^2;           //2小时LED显示
sbit LED3=P3^3;           //3小时LED显示
sbit LED4=P3^4;           //4小时LED显示

unsigned char hour=0; //初始计时时间
unsigned char count;  //10ms中断计数 同时也是按键消抖时间
unsigned char keystatus=0;     //按键状态
#define nokey 0           //没有按键按下
#define keydown 1       //按键按下
#define keyup 2           //按键松开


void display(void);
void keyscan()
{
    static unsigned char sec=0,min=0;       //静态局部变量保存分钟和秒钟值
    switch(keystatus)              //识别按键状态
    {
        case nokey:
            if(!KEY) keystatus=keydown;
            break;
        case keydown:
            if(!KEY)
            {
                keystatus=keyup;      //如果确定有按键按下
                hour++;                  //定时时间+1
                sec=0;                  //秒钟清零
                min=0;                  //分钟清零
                if(hour>10) hour=0;      //如果时间超过10小时,则清零
            }
            else
                keystatus=nokey;      //没有按键按下,则按键状态归零
            break;
        case keyup:
            if(KEY) keystatus=nokey;
            break;
    }
    count++;                          //10ms计数加1
    if(count<50) display();              //如果计数时间在0.5S之内,则LED显示当前时间
    else                               //如果计数计时没有在0.5S之内,则LED关闭
    {
        LED1=1;
        LED2=1;
        LED3=1;
        LED4=1;
    }
    if(count==100)                       //如果计时到1S时间,则进行计时运算
        {
            count=0;
            sec++;
            if(sec==60)
            {
                sec=0;
                min++;
                if(min==60)
                    {
                        min=0;
                        if(hour!=0) hour--;
                    }
            }
        }   
}
void timer0_init()                      //定时器0初始化,定时时间10ms
{
    TH0=(65536-10000)/256;
    TL0=(65536-10000)%256;
    TMOD=0x01;
    ET0=1;
    TR0=1;
    EA=1;
}
void timer0() interrupt 1              //定时器中断服务程序
{
    TH0=(65536-10000)/256;
    TL0=(65536-10000)%256;
    keyscan();   
}                                      //键盘扫描,计数,显示
void display()                          //显示时间
{
    switch(hour)
    {
        case 1:
            LED1=0;
            LED2=1;
            LED3=1;
            LED4=1;
            break;
        case 2:
            LED1=1;
            LED2=0;
            LED3=1;
            LED4=1;
            break;
        case 3:
            LED1=1;
            LED2=1;
            LED3=0;
            LED4=1;
            break;
        case 4:
            LED1=1;
            LED2=1;
            LED3=1;
            LED4=0;
            break;
        case 5:
            LED1=0;
            LED2=1;
            LED3=1;
            LED4=0;
            break;
        case 6:
            LED1=1;
            LED2=0;
            LED3=1;
            LED4=0;
            break;
        case 7:
            LED1=1;
            LED2=1;
            LED3=0;
            LED4=0;
            break;
        case 8:
            LED1=0;
            LED2=1;
            LED3=0;
            LED4=0;
            break;
        case 9:
            LED1=1;
            LED2=0;
            LED3=0;
            LED4=0;
            break;
        case 10:
            LED1=0;
            LED2=0;
            LED3=0;
            LED4=0;
            break;
        default:
            break;
    }
   
}
void main()
{
    P3=0xff;                           
    timer0_init();
    while(1)
    {
        if(hour==0)
        {
            OUT=1;
        }
        else
            OUT=0;
    }
}


作者: zhuzy555    时间: 2014-11-25 17:29
要想方便的话直接买个定时插座,喜欢折腾就自己用定时IC做一个




欢迎光临 迅维网 (https://www.chinafix.com/) Powered by Discuz! X3.4