欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: DIY定時(shí)插座 附單片機(jī)程序原理圖 [打印本頁(yè)]

作者: 1860774xxxx    時(shí)間: 2024-5-2 17:59
標(biāo)題: DIY定時(shí)插座 附單片機(jī)程序原理圖
雖然定時(shí)插座很便宜 但diy是一種樂(lè)趣 現(xiàn)在的手機(jī)都是快充 很快充滿 適合睡覺(jué)用 也適合電車用
最大可以設(shè)置12小時(shí)定時(shí) 5個(gè)LED燈組合顯示時(shí)間 如程序圖所示  
帶記憶功能 為了減少不必要的刷寫(xiě) 長(zhǎng)按按鍵約3秒儲(chǔ)存 看到LED燈閃爍就表示儲(chǔ)存好了  下次點(diǎn)擊按鍵就可以直接進(jìn)入所保存的時(shí)間了




大意了 前面發(fā)的電路圖畫(huà)錯(cuò)了  現(xiàn)在是已修改好的電路圖

hh.jpg (5.53 MB, 下載次數(shù): 41)

hh.jpg

定時(shí)插座 -EEPROM.zip

69.38 KB, 下載次數(shù): 39, 下載積分: 黑幣 -5


作者: 1860774xxxx    時(shí)間: 2024-5-3 12:16
昨晚用了一次 晚上LED有限刺眼 LED限流電阻已換成5K 這個(gè)可以跟據(jù)自己須求改動(dòng)
作者: bd5fna    時(shí)間: 2024-5-3 13:49
原理圖和程序?qū)Σ簧,按鍵和繼電器畫(huà)錯(cuò)了。
#include <STC8G.H>         //此文件中定義了單片機(jī)的一些特殊功能寄存器   
#include "STC8G_EEPROM.h"  //STC8G內(nèi)部EEPROM驅(qū)動(dòng)

sbit anjian1=P1^7;   //按鍵引腳定義
sbit jidianqi=P1^0;  //繼電器引腳定義

typedef unsigned char u8;   //無(wú)符號(hào)字符形數(shù)據(jù)類型進(jìn)行聲明定義 定義名稱u8 所占位數(shù)8位 范圍0~255
typedef unsigned int u16;   //無(wú)符號(hào)整形數(shù)據(jù)類型進(jìn)行聲明定義 定義名稱u16 所占位數(shù)16位 范圍0~65535

u8 fen,miao; //分 秒 變量
bit ajyxzz1,EP_num; //條件允許終止 用于每次操作只允許執(zhí)行一次 防止重復(fù)執(zhí)行
u16 weimiao;


/*1T 12M晶振 延時(shí)函數(shù) Delay_ms(1)時(shí)大約1ms*/
void Delay_ms(u16 ms)
{

    u8 i,j;
    while(ms--)
    {
        for(i=0; i<7; i++)
            for(j=0; j<99; j++);
    }
}


/*io端口配置*/
void STCIO_in()
{
    P1M0 = 0x00;
    P1M1 = 0x00; //配置P1為準(zhǔn)雙向輸出輸入
    P3M0 = 0x00;
    P3M1 = 0x00; //配置P3為準(zhǔn)雙向輸出輸入
    //P5M0 = 0x00;
    //P5M1 = 0x00; //配置P5為準(zhǔn)雙向輸出輸入
}

/*定時(shí)計(jì)數(shù)器配置*/
void Timer0_Init(void)                //1毫秒@12.000MHz 16位自動(dòng)重裝
{
    AUXR |= 0x80;                        //定時(shí)器時(shí)鐘1T模式
    TMOD &= 0xF0;                        //設(shè)置定時(shí)器模式
    TL0 = 0x20;                                //設(shè)置定時(shí)初始值
    TH0 = 0xD1;                                //設(shè)置定時(shí)初始值
    TF0 = 0;                                //清除TF0標(biāo)志
    //TR0 = 1;                                //定時(shí)器0開(kāi)始計(jì)時(shí)
    ET0 = 1;                                //使能定時(shí)器0中斷
    EA=1;                   //定時(shí)器總開(kāi)關(guān)
}

/*主函數(shù)*/
void main()
{
    u8 nj_num;    //按鍵累計(jì)變量
    u16 cn_num;   //按鍵長(zhǎng)短按累計(jì)變量
    u16 fne_num;  //分鐘累計(jì)變量

    STCIO_in();   //io端口初始化

    jidianqi=1;     //關(guān)閉繼電器 此時(shí)斷電
    P3=0x00;        //開(kāi)機(jī)LED全撿 開(kāi)
    Delay_ms(1000); //延時(shí)約1秒
    P3=0xff;        //開(kāi)機(jī)LED全撿 關(guān)

    Timer0_Init(); //定時(shí)計(jì)數(shù)器初始化
    while(1)
    {
        if(anjian1==0)//判斷時(shí)加按鍵是否按下
        {
            Delay_ms(5); //延時(shí)消抖
            if(anjian1==0) //再次判斷時(shí)加按鍵是否按下
            {
                                ajyxzz1=0; //按鍵條件復(fù)位 等待下一次按鍵操作
                cn_num++;  //長(zhǎng)按累計(jì)器開(kāi)始計(jì)數(shù)
                if(cn_num>1000)  //長(zhǎng)按操作 約3秒
                {
                    P3=0xff;
                                        if(EP_num==0) //這里添加一個(gè)條件允許終止 不能它一直重復(fù)擦除寫(xiě)數(shù)據(jù)
                                        {
                                                IapErase(0x0400);           //擦除EEPROM
                                            IapProgram(0x0400, nj_num); //寫(xiě)數(shù)據(jù)到EEPROM
                                                EP_num=1;                   //數(shù)據(jù)寫(xiě)好了 馬上終止 防止程序循環(huán)重復(fù)執(zhí)行
                                        }
                    Delay_ms(200);
                }
            }
        }
        else
        {
            if(cn_num>0&&cn_num<500&&ajyxzz1==0) //短按操作
            {
                                if(nj_num==0)
                                {
                                        nj_num = IapRead(0x0400);  //讀EEPROM
                                        nj_num = nj_num-1;
                                }
                if(nj_num<12)nj_num=nj_num+1;
                else(nj_num=1);

                 miao=0;     //清零秒
                 fen=0;      //清零分
                 jidianqi=0; //啟動(dòng)繼電器 此時(shí)開(kāi)始通電
                 TR0 = 1;    //定時(shí)器開(kāi)始計(jì)數(shù)
                 ajyxzz1=1;  //執(zhí)行完畢 條件終止 防止重復(fù)執(zhí)行
            }
            cn_num=0;  //按鍵長(zhǎng)短按累計(jì)變量復(fù)位 等待下一次執(zhí)行
                        EP_num=0;  //EEPROM條件允許終止復(fù)位 等待下一次執(zhí)行
        }

        if(nj_num>0)
        {
                        switch(nj_num) //顯示LED燈與時(shí)長(zhǎng)選擇
            {
                case 1:P3=0x7f;fne_num=60;break;   //0111 1111  1小時(shí)
                case 2:P3=0xbf;fne_num=120;break;  //1011 1111  2小時(shí)
                case 3:P3=0xdf;fne_num=180;break;  //1101 1111  3小時(shí)
                case 4:P3=0xef;fne_num=240;break;  //1110 1111  4小時(shí)
                case 5:P3=0xf7;fne_num=300;break;  //1111 0111  5小時(shí)
                case 6:P3=0x77;fne_num=360;break;  //0111 0111  6小時(shí)  5+1
                case 7:P3=0xb7;fne_num=420;break;  //1011 0111  7小時(shí)  5+2
                case 8:P3=0xd7;fne_num=480;break;  //1101 0111  8小時(shí)  5+3
                case 9:P3=0xe7;fne_num=540;break;  //1110 0111  9小時(shí)  5+4
                case 10:P3=0x67;fne_num=600;break; //0110 0111  10小時(shí) 5+4+1
                case 11:P3=0xa7;fne_num=660;break; //1010 0111  11小時(shí) 5+4+2
                case 12:P3=0xc7;fne_num=720;break; //1100 0111  12小時(shí) 5+4+3
        }
            if(fen==fne_num) //判斷時(shí)間是否到了
            {
                TR0 = 0;      //關(guān)閉定時(shí)器
                P3 = 0xff;    //關(guān)閉所有LED燈
                jidianqi=1;   //關(guān)閉繼電器 此時(shí)斷電
                weimiao = 0;  //毫秒清零
                miao = 0;     //清零秒
                fen = 0;      //清零分
                nj_num = 0;   //按鍵累計(jì)變量清零
            }
        }
    }
}

/*定時(shí)器0*/
void Timer0_Isr(void) interrupt 1
{
    weimiao++;
    if(weimiao==1000) //1000毫秒=1秒
    {
        miao++;       //秒
        weimiao=0;    //毫秒清零
        if(miao==60)  //60秒=1分鐘
        {
            fen++;    //分
            miao=0;   //分清零
        }
    }
}
作者: 黑色蜂鳥(niǎo)    時(shí)間: 2024-5-3 14:22
直接4個(gè)指示燈,按二進(jìn)制編碼
作者: 1860774xxxx    時(shí)間: 2024-5-3 15:53
bd5fna 發(fā)表于 2024-5-3 13:49
原理圖和程序?qū)Σ簧希存I和繼電器畫(huà)錯(cuò)了。#include          //此文件中定義了單片機(jī)的一些特殊功能寄存器 ...

哦 是哦 我都沒(méi)注意看
作者: 1860774xxxx    時(shí)間: 2024-5-3 15:55
黑色蜂鳥(niǎo) 發(fā)表于 2024-5-3 14:22
直接4個(gè)指示燈,按二進(jìn)制編碼

可以啊 現(xiàn)在也是二進(jìn)制 有空間的話 有多的IO口 上12個(gè)也夠
自己喜歡貝
作者: zmc419    時(shí)間: 2024-5-18 18:57
1860774xxxx 發(fā)表于 2024-5-3 15:55
可以啊 現(xiàn)在也是二進(jìn)制 有空間的話 有多的IO口 上12個(gè)也夠
自己喜歡貝

四個(gè)燈用不同顏色更好
作者: 1860774xxxx    時(shí)間: 2024-5-19 07:48
zmc419 發(fā)表于 2024-5-18 18:57
四個(gè)燈用不同顏色更好

晚上睡覺(jué)用的 太耀眼了不好
作者: ouco123    時(shí)間: 2024-8-25 10:30

請(qǐng)問(wèn)樓主:這里代碼正確嗎?  紅筆標(biāo)記的。

作者: 1860774xxxx    時(shí)間: 2024-8-25 23:52
ouco123 發(fā)表于 2024-8-25 10:30
請(qǐng)問(wèn)樓主:這里代碼正確嗎?  紅筆標(biāo)記的。

這句和
nj_num++;
if(nj_num>8)nj_num=1;
一樣  循環(huán)一周又從1開(kāi)句 而不是從0開(kāi)始
作者: lkc8210    時(shí)間: 2024-8-26 11:35
ouco123 發(fā)表于 2024-8-25 10:30
請(qǐng)問(wèn)樓主:這里代碼正確嗎?  紅筆標(biāo)記的。

正確寫(xiě)法是else {nj_num=1;}
作者: 1860774xxxx    時(shí)間: 2024-8-26 12:32
lkc8210 發(fā)表于 2024-8-26 11:35
正確寫(xiě)法是else {nj_num=1;}

else執(zhí)行一條與執(zhí)行多條的區(qū)別 就一條else(xxx;)毛病




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1