久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

DIY定時插座 附單片機(jī)程序原理圖

查看數(shù): 2511 | 評論數(shù): 11 | 收藏 9
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2024-5-2 17:59

正文摘要:

雖然定時插座很便宜 但diy是一種樂趣 現(xiàn)在的手機(jī)都是快充 很快充滿 適合睡覺用 也適合電車用 最大可以設(shè)置12小時定時 5個LED燈組合顯示時間 如程序圖所示   帶記憶功能 為了減少不必要的刷寫 長按按鍵 ...

回復(fù)

ID:468209 發(fā)表于 2024-8-26 12:32
lkc8210 發(fā)表于 2024-8-26 11:35
正確寫法是else {nj_num=1;}

else執(zhí)行一條與執(zhí)行多條的區(qū)別 就一條else(xxx;)毛病
ID:161164 發(fā)表于 2024-8-26 11:35
ouco123 發(fā)表于 2024-8-25 10:30
請問樓主:這里代碼正確嗎?  紅筆標(biāo)記的。

正確寫法是else {nj_num=1;}
ID:468209 發(fā)表于 2024-8-25 23:52
ouco123 發(fā)表于 2024-8-25 10:30
請問樓主:這里代碼正確嗎?  紅筆標(biāo)記的。

這句和
nj_num++;
if(nj_num>8)nj_num=1;
一樣  循環(huán)一周又從1開句 而不是從0開始
ID:1111684 發(fā)表于 2024-8-25 10:30

請問樓主:這里代碼正確嗎?  紅筆標(biāo)記的。
ID:468209 發(fā)表于 2024-5-19 07:48
zmc419 發(fā)表于 2024-5-18 18:57
四個燈用不同顏色更好

晚上睡覺用的 太耀眼了不好
ID:137736 發(fā)表于 2024-5-18 18:57
1860774xxxx 發(fā)表于 2024-5-3 15:55
可以啊 現(xiàn)在也是二進(jìn)制 有空間的話 有多的IO口 上12個也夠
自己喜歡貝

四個燈用不同顏色更好
ID:468209 發(fā)表于 2024-5-3 15:55
黑色蜂鳥 發(fā)表于 2024-5-3 14:22
直接4個指示燈,按二進(jìn)制編碼

可以啊 現(xiàn)在也是二進(jìn)制 有空間的話 有多的IO口 上12個也夠
自己喜歡貝
ID:468209 發(fā)表于 2024-5-3 15:53
bd5fna 發(fā)表于 2024-5-3 13:49
原理圖和程序?qū)Σ簧希存I和繼電器畫錯了。#include          //此文件中定義了單片機(jī)的一些特殊功能寄存器 ...

哦 是哦 我都沒注意看
ID:1057925 發(fā)表于 2024-5-3 14:22
直接4個指示燈,按二進(jìn)制編碼
ID:76027 發(fā)表于 2024-5-3 13:49
原理圖和程序?qū)Σ簧希存I和繼電器畫錯了。
#include <STC8G.H>         //此文件中定義了單片機(jī)的一些特殊功能寄存器   
#include "STC8G_EEPROM.h"  //STC8G內(nèi)部EEPROM驅(qū)動

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

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

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


/*1T 12M晶振 延時函數(shù) Delay_ms(1)時大約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ù)器配置*/
void Timer0_Init(void)                //1毫秒@12.000MHz 16位自動重裝
{
    AUXR |= 0x80;                        //定時器時鐘1T模式
    TMOD &= 0xF0;                        //設(shè)置定時器模式
    TL0 = 0x20;                                //設(shè)置定時初始值
    TH0 = 0xD1;                                //設(shè)置定時初始值
    TF0 = 0;                                //清除TF0標(biāo)志
    //TR0 = 1;                                //定時器0開始計時
    ET0 = 1;                                //使能定時器0中斷
    EA=1;                   //定時器總開關(guān)
}

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

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

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

    Timer0_Init(); //定時計數(shù)器初始化
    while(1)
    {
        if(anjian1==0)//判斷時加按鍵是否按下
        {
            Delay_ms(5); //延時消抖
            if(anjian1==0) //再次判斷時加按鍵是否按下
            {
                                ajyxzz1=0; //按鍵條件復(fù)位 等待下一次按鍵操作
                cn_num++;  //長按累計器開始計數(shù)
                if(cn_num>1000)  //長按操作 約3秒
                {
                    P3=0xff;
                                        if(EP_num==0) //這里添加一個條件允許終止 不能它一直重復(fù)擦除寫數(shù)據(jù)
                                        {
                                                IapErase(0x0400);           //擦除EEPROM
                                            IapProgram(0x0400, nj_num); //寫數(shù)據(jù)到EEPROM
                                                EP_num=1;                   //數(shù)據(jù)寫好了 馬上終止 防止程序循環(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; //啟動繼電器 此時開始通電
                 TR0 = 1;    //定時器開始計數(shù)
                 ajyxzz1=1;  //執(zhí)行完畢 條件終止 防止重復(fù)執(zhí)行
            }
            cn_num=0;  //按鍵長短按累計變量復(fù)位 等待下一次執(zhí)行
                        EP_num=0;  //EEPROM條件允許終止復(fù)位 等待下一次執(zhí)行
        }

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

/*定時器0*/
void Timer0_Isr(void) interrupt 1
{
    weimiao++;
    if(weimiao==1000) //1000毫秒=1秒
    {
        miao++;       //秒
        weimiao=0;    //毫秒清零
        if(miao==60)  //60秒=1分鐘
        {
            fen++;    //分
            miao=0;   //分清零
        }
    }
}
ID:468209 發(fā)表于 2024-5-3 12:16
昨晚用了一次 晚上LED有限刺眼 LED限流電阻已換成5K 這個可以跟據(jù)自己須求改動

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品麻豆 | 亚洲激情一区二区 | 天堂а√在线中文在线新版 | 国产福利av | 一区二区三区四区国产 | av手机在线免费观看 | 日本欧美在线 | 亚洲日本中文字幕 | 国产成人精品三级麻豆 | 国产三级视频 | 亚洲经典一区 | 日韩精品欧美 | 成年人在线播放 | 精品伊人| 欧洲精品一区 | 特级黄色大片 | 色婷婷狠狠 | www.成人在线 | 老司机午夜影院 | 麻豆精品一区 | 天天综合av | 欧美视频精品 | 国产小视频在线观看 | 欧美不卡在线 | 成人动漫在线看 | avxxxxx | 青青草免费观看 | 国产精品一品二区三区的使用体验 | 91日韩在线| 97视频国产 | 国产精品欧美在线 | 亚洲精品观看 | 一区二区在线免费观看 | 懂色av一区二区三区 | 91国内视频| 在线播放国产精品 | 欧美在线视频一区 | brazzers疯狂作爱 | 成人一区二区三区 | 欧美综合网| 成人观看视频 |