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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4335|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)+DS3231+74hc595共陽(yáng)數(shù)碼管制作的時(shí)鐘和倒計(jì)時(shí)日期程序Proteus仿真

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:705074 發(fā)表于 2021-12-30 22:04 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
制作出來(lái)的實(shí)物圖如下:

DS3231時(shí)鐘仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
/****************************************************************************************************************
2021年12月4日
共陽(yáng)一芯數(shù)碼管,1.2寸白色和和1寸翠綠色,制作的時(shí)鐘和倒計(jì)時(shí)日期。
型號(hào):21-12-1
****************************************************************************************************************/  
#include "STC15F2K.h"
#include "I2C.h"
#include <intrins.h>
#include <hc595.h>
#include "epprom1.h"
#include "count_hanshu.h"


#define uchar unsigned char
#define uint unsigned int
/*************
epprom 讀取的變量
******************/
uchar B1,B2,B3,B4,key_nmb;
uint jishu,DJS,chuzhi=0x0000,fanhui;
sbit led=P1^3;
sbit Kadd =P3^4;
sbit Kfun=P3^5;
//sbit Ksub=P1^6;
sbit shuangdian=P3^7;
uint day_count(uchar Years,uchar Months,uchar Days);
//--定義全局變量--//   
uchar fen1,fen10,shi1,shi10,ri1,ri10,yue1,yue10,zhou,jishi,miao1,miao10,djs100,djs10,djs1;

unsigned char code DIG_CODE[19]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x54,0x6e,0x50};
                          //0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,n,y,r
uchar ridian,yuedian;
uchar nnn[7]={0x00,0x01,0x02,0x03,0x04,0x05,0x06};
uchar aa[7];
uchar low[7]={0,0,1,1,1,1,21};
uchar hi[7]={59,59,24,7,31,12,30};
void chushihua();
uchar read_time,shanshuo,KKEEYY,xish;
uchar read_byte(uchar random_addr);
void anjian();
void TIME_read()
{
uchar djsks;
//TIME(key_nmb)=0;   
// if(key_nmb!=0)Ds1302ReadTime();
    if(read_time==1){read_time=0;
aa[0]=BCD2HEX(    read_byte(0x00));
aa[1]=BCD2HEX(    read_byte(0x01));
aa[2]=BCD2HEX(    read_byte(0x02));
aa[3]=BCD2HEX(    read_byte(0x03));
aa[4]=BCD2HEX(    read_byte(0x04));
aa[5]=BCD2HEX(    read_byte(0x05));
aa[6]=BCD2HEX(    read_byte(0x06));
if(djsks!=aa[4]){DJS= day_count(B1,B2,B3);djsks=aa[4];}

                    
                         miao1    =DIG_CODE[aa[0]%10];
                        miao10   =DIG_CODE[aa[0]/10];
                        fen1     =DIG_CODE[aa[1]%10];
                        fen10    =DIG_CODE[aa[1]/10];
                        shi1     =DIG_CODE[aa[2]%10];
                        shi10    =DIG_CODE[aa[2]/10];
                        zhou     =DIG_CODE[aa[3]%10];
                        ri1      =DIG_CODE[(aa[4]%10)]|ridian;
                        ri10     =DIG_CODE[aa[4]/10];
                        yue1     =DIG_CODE[(aa[5]%10)]|yuedian;
                        yue10    =DIG_CODE[aa[5]/10];
                        djs1     =DIG_CODE[DJS%10];
                        djs10    =DIG_CODE[DJS/10%10];
                        djs100   =DIG_CODE[DJS/100%10];
         
//miao1    =DIG_CODE[TIME[0]%16];
//miao10   =DIG_CODE[TIME[0]/16];
//fen1     =DIG_CODE[TIME[1]%16];
//fen10    =DIG_CODE[TIME[1]/16];
//shi1     =DIG_CODE[TIME[2]%16];
//shi10    =DIG_CODE[TIME[2]/16];
//ri1      =DIG_CODE[TIME[3]%16]|ridian;
//ri10     =DIG_CODE[TIME[3]/16];
//yue1     =DIG_CODE[TIME[4]%16]|yuedian;
//yue10    =DIG_CODE[TIME[4]/16];
//zhou     =DIG_CODE[TIME[5]%16];
//djs1     =DIG_CODE[DJS%10];
//djs10    =DIG_CODE[DJS/10%10];
//djs100   =DIG_CODE[DJS/100%10];

    if(key_nmb==6)
    {
    shi1     =DIG_CODE[aa[6]%10];
    shi10    =DIG_CODE[aa[6]/10];
    }
    if(key_nmb==7)
    {
    djs100   =DIG_CODE[16];
    djs1     =DIG_CODE[B1%10];
    djs10    =DIG_CODE[B1/10%10];
    }
    if(key_nmb==8)
    {
    djs100   =DIG_CODE[17];
    djs1     =DIG_CODE[B2%10];
    djs10    =DIG_CODE[B2/10%10];
    }
    if(key_nmb==9)
    {
    djs100   =DIG_CODE[18];
    djs1     =DIG_CODE[B3%10];
    djs10    =DIG_CODE[B3/10%10];
    }
     }   
    if(xish)
    {
    if (key_nmb==0) {miao1=0x00;miao10=0x00;}
    if (key_nmb==1) {fen1=0x00;fen10=0x00;}
    if (key_nmb==2) {shi1=0x00;shi10=0x00;}
    if (key_nmb==4) {ri1=0x00;ri10=0x00;}
    if (key_nmb==5) {yue1=0x00;yue10=0x00;}
    if (key_nmb==3) {zhou=0x00;}
    if (key_nmb==6) {fen1=0x00;fen10=0x00;miao1=0x00;miao10=0x00;ri1=0x00;ri10=0x00;yue1=0x00;yue10=0x00;zhou=0x00;}
    if (key_nmb>6 && key_nmb<10){djs1=0x00;djs10=0x00;}
    }
if(led){miao1=miao10=fen1=fen10=shi1=shi10=ri1=ri10=yue1=yue10=zhou=djs100=djs10=djs1=0x00;}
}
/****************************************************************************************************************
* 函 數(shù) 名         : key_sm
* 函數(shù)功能           : 掃描三個(gè)按鍵
****************************************************************************************************************/
void key_sm()
{
uchar temp;
if (KKEEYY==3){KKEEYY=0;
        key_nmb=key_nmb+1;
        fanhui=0;
        }
        if (key_nmb>10) key_nmb=0;
if (KKEEYY==6){KKEEYY=0;
        if(key_nmb<7) {
        temp= aa[key_nmb]+1    ;
        if(key_nmb==0) temp=0;
        if (temp >hi[key_nmb])temp=low[key_nmb];
        if (temp <low[key_nmb])temp=hi[key_nmb];
        write_byte(nnn[key_nmb], HEX2BCD(temp));
        read_time=1;
//        bbb(miao1,miao10);
//        HC595SendData(~djs100,~djs10,~djs1,~/*DIG_CODE[key_nmb]*/zhou, ~ri1,~ri10,~yue1,~yue10,~shi10,~shi1,~fen10,~fen1);

        }
            
        else
        {
                if (key_nmb==7)    B1++;
                if (key_nmb==8)    B2++;
                if (key_nmb==9)    B3++;
                if (B1>30)B1=21;
                if (B2>12)B2=1;
                if (B3>31)B3=1;
                shanchu(chuzhi);
                xieru(chuzhi+1,B1);
                xieru(chuzhi+2,B2);
                xieru(chuzhi+3,B3);
                B1=duqu(chuzhi+1);
                B2=duqu(chuzhi+2);
                B3=duqu(chuzhi+3);
         read_time=1;
        }
        DJS= day_count(B1,B2,B3);
        fanhui=0;                           
        }
if (KKEEYY>0){};
}
//按鈕掃描     需在定時(shí)中斷中調(diào)用
void anjian()
{
   
    static uint JiShu=0;
    static uint JiShu1=0;
    static uchar keybuf = 0xff;
    static uchar keybuf1 = 0xff;
    uchar nm=28;
//
    keybuf = (keybuf <<1) |Kfun;
    if(keybuf == 0x00)
    { JiShu++; if(JiShu>=nm) {JiShu=0;KKEEYY=3/*下鍵*/;} }
    else keybuf=0;
   
//    keybuf1 = 0xff;
    keybuf1 = (keybuf1 <<1) |Kadd;
    if(keybuf1 == 0x00)
    { JiShu1++; if(JiShu1>=nm) {JiShu1=0;KKEEYY=6/*上鍵*/;} }
      
    else keybuf1=0;


}
                     

/****************************************************************************************************************
* 函 數(shù) 名         : main
* 函數(shù)功能           : 主函數(shù)
****************************************************************************************************************/
//uint BB;
void main()
{      
    key_nmb=10;   
    EA = 1;      //開(kāi)總中斷
    ConfigTimer0(5);   //配置T0定時(shí)
    write_byte(DS3231_CONTROL, 0x1C);          //控制寄存器  DS3231_CONTROL       這兩行寫(xiě)入main函數(shù)里
    write_byte(DS3231_STATUS, 0x00);           //狀態(tài)寄存器  DS3231_STATUS
//    write_byte(DS3231_SECOND,HEX2BCD(20));  //修改秒
//        write_byte(DS3231_MINUTE,HEX2BCD(58));  //修改分
//        write_byte(DS3231_HOUR,HEX2BCD(8));     //修改時(shí)
//        write_byte(DS3231_WEEK,HEX2BCD(6));     //修改周
//        write_byte(DS3231_DAY,HEX2BCD(18));     //修改日
//        write_byte(DS3231_MONTH,HEX2BCD(12));   //修改月
//        write_byte(DS3231_YEAR,HEX2BCD(21));    //修改
        B1=duqu(chuzhi+1) ;
        B2=duqu(chuzhi+2) ;
        B3=duqu(chuzhi+3) ;
        DJS= day_count(B1,B2,B3);      
        chushihua();
        while(1)
            {           if(fanhui==20){key_nmb=10;}
                        key_sm();
                           TIME_read();
                        bbb(miao1,miao10);
//                        if(!shanshuo)    {      //
                         HC595SendData(~djs100,~djs10,~djs1,~/*DIG_CODE[key_nmb]*/zhou, ~ri1,~ri10,~yue1,~yue10,~shi10,~shi1,~fen10,~fen1);
//                        }  
              }     
}
//中斷定義為5毫秒
    void InterruptTimer0() interrupt 1
{   
    static    uchar Di;
     //非編輯模式進(jìn)入
//     if(BianJi==0)
//     {     anjian();
         Di++;
         shanshuo++     ;
         if(shanshuo==30)shanshuo=0;
         if(Di%100<90) {xish=0;}else {xish=1;}
         if(Di==100)
         {
         read_time=0;
         
         }      //秒顯示賦值 0.5秒
         if(Di==200)
         {   
        Di=0;
        read_time=1; //一秒一次讀DS3231時(shí)間,并寫(xiě)入數(shù)碼管緩沖區(qū)的標(biāo)記
        if(!led)shuangdian=~shuangdian;
        if(led) shuangdian=1;
        yuedian=yuedian^0x80;
        ridian=yuedian^0x80;
        fanhui++;
         }
//     }
     anjian();     //按鍵掃描
     WDT_CONTR=0x37;       //看門(mén)狗刷新  8.4S

}

Keil代碼與Proteus仿真下載: 74hc595 共陽(yáng)數(shù)碼管20211204 型號(hào):21-12-1 - 改裝DS3231 - 副本.rar (1.4 MB, 下載次數(shù): 131)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:499081 發(fā)表于 2022-1-18 11:07 來(lái)自手機(jī) | 只看該作者
高大上,面板是什么材料,
回復(fù)

使用道具 舉報(bào)

板凳
ID:705074 發(fā)表于 2022-2-7 01:32 | 只看該作者
irico58 發(fā)表于 2022-1-18 11:07
高大上,面板是什么材料,

4mm的亞克力和玻璃膜。
回復(fù)

使用道具 舉報(bào)

地板
ID:928738 發(fā)表于 2022-3-2 09:30 | 只看該作者
功能最好介紹一下。我下載打開(kāi)后你顯示的差別太大了
回復(fù)

使用道具 舉報(bào)

5#
ID:76133 發(fā)表于 2022-3-4 14:23 | 只看該作者
DS3231精度高時(shí)鐘芯片
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄网站免费在线看 | www.99热.com| 国产一区二区三区在线 | 色综合久久天天综合网 | 国产欧美精品一区二区三区 | 精品一区二区三区在线观看国产 | av福利网 | 国产成人精品一区二区三区四区 | 亚洲综合视频一区 | 一区二区国产精品 | 国产乱精品一区二区三区 | 天天操天天天干 | 久久精品视频网站 | 欧美亚洲第一区 | 91高清在线观看 | 天天干 夜夜操 | 春色av | 日本黄色大片免费 | 日本三级日产三级国产三级 | 国产在线视频一区二区 | 久久国产日韩 | 一区二区久久 | 99综合| 亚洲视频精品 | 中文字幕精品一区久久久久 | 午夜性视频| 中文字幕精品一区久久久久 | 最新毛片网站 | 日日操夜夜操天天操 | 婷婷综合色 | 天天操综合网站 | 中文精品视频 | 天天艹日日干 | 日韩欧美视频 | 国产在线一区二区三区 | 91精品国产91久久久久福利 | 国产精品美女久久久久aⅴ国产馆 | 美女露尿口视频 | 久久亚洲欧美日韩精品专区 | 日本特黄特色aaa大片免费 | 91视频久久久久 |