迅维网

查看: 7121|回复: 8
打印 上一主题 下一主题

求1-10小时可电子断电定时器电路

[复制链接]
跳转到指定楼层
1#
发表于 2013-3-31 12:47:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 广西南宁 来自 广西南宁

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
想自制一个定时器用作控制电动车电瓶充电时间,简单就好,谢谢

来自 8#
发表于 2014-11-18 20:20:37 | 只看该作者 来自: 湖南 来自 湖南
本帖最后由 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;
    }
}


评分

参与人数 1下载分 +20 收起 理由
yzz163 + 20 支持发帖

查看全部评分

回复 支持 反对

使用道具 举报

2#
发表于 2013-3-31 13:04:33 | 只看该作者 来自: 重庆 来自 重庆
电子市场买个定时器不就完了吗  定时充电都可以

回复 支持 反对

使用道具 举报

3#
发表于 2013-3-31 18:47:36 | 只看该作者 来自: 广西南宁 来自 广西南宁
自己制作可以多学啊

回复 支持 反对

使用道具 举报

4#
发表于 2013-3-31 22:18:20 | 只看该作者 来自: 广东深圳 来自 广东深圳
百度的答案比这多吧

回复 支持 反对

使用道具 举报

5#
发表于 2013-3-31 23:25:49 | 只看该作者 来自: 中国 来自 中国
这个应该用时基电路。。好像是NE555就可以实现。。忘了别的了。。楼主到网上收下看看。。。

回复 支持 反对

使用道具 举报

6#
发表于 2013-4-4 20:29:22 | 只看该作者 来自: 北京 来自 北京
买一个吧    做这个也学不到什么

回复 支持 反对

使用道具 举报

7#
发表于 2014-3-26 15:16:52 | 只看该作者 来自: 吉林长春 来自 吉林长春
其实这么简单的功能用555就可以实现的,如果用单片机就要学习一下延时,按键判断,定时器中断等。有点复杂呵呵

回复 支持 反对

使用道具 举报

9#
发表于 2014-11-25 17:29:07 | 只看该作者 来自: 湖北十堰 来自 湖北十堰
要想方便的话直接买个定时插座,喜欢折腾就自己用定时IC做一个

回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复