找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13176|回复: 34
收起左侧

12864时钟电路,带全部资料

  [复制链接]
ID:101531 发表于 2016-11-20 22:11 | 显示全部楼层 |阅读模式
DSC_0374.jpg

DSC_0372.jpg


DSC_0375.jpg


12864.rar (98.65 KB, 下载次数: 428)

评分

参与人数 4黑币 +66 收起 理由
slhslhhao + 8 共享资料的黑币奖励!
vvv64 + 5
兰亭序 + 3 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:140183 发表于 2016-11-21 05:13 | 显示全部楼层
下载啦。很好。谢谢!
回复

使用道具 举报

ID:1 发表于 2016-12-5 03:35 | 显示全部楼层
下面是楼主的程序
  1. /*---------------------------------------------------------------------------
  2.         黄历电子智能时钟程序
  3.         单 片 机:STC89C52RC
  4.         晶    振:12MHz
  5.         时钟芯片:DS1302
  6.         液 晶 屏:LCM-12864-ST7920
  7.         功能描述: 大数字显示时间;能显示农历、温度和设置闹铃;有整点报时功能
  8.                           红外遥控和按键都能设置时间和闹铃
  9.         时    间:2011年2月2日修改完成,今天大年三十,算是给自己的礼物吧!呵呵...
  10.         说          明:LCM12864使用并口连接方式,PSB、RST接高电平
  11.         修改日志:

  12. ------------------------------------------------------------------------------*/

  13. /*-------------------------------头文件---------------------------------------*/
  14. #include <reg52.h>
  15. #include <intrins.h>
  16. #include "LCD12864.h"
  17. #include "DS1302.h"
  18. #include "DS18B20.h"
  19. #include "nongli.h"
  20. #include "displaytime.h"
  21. #include "zk.h"
  22. #include "bell.h"
  23. #include "HW.H"
  24. #include "delay.h"

  25. #define uint  unsigned int
  26. #define uchar unsigned char

  27. /*--------------------定义按键-----------------------------------------------*/
  28. sbit K1  = P1^0; //K1-设置
  29. sbit K2  = P1^1; //K2-确认、返回
  30. sbit K3  = P1^2; //K3-加
  31. sbit K4  = P1^3; //K4-减
  32. //K5=P1^4,K5-控制闹钟的打开与关闭,在"hw.h"中定义

  33. /*---------------------函数声明------------------------------*/             
  34. void ds_w0(void);
  35. void ds_w(void);
  36. void Conver_week(bit c,uchar year,uchar month,uchar day);
  37. /*-----------------------------定义全局变量------------------------------*/
  38. bit  w=0;    //调时标志位

  39. unsigned char yy,mo,dd,xq,hh,mm,ss,month_moon,day_moon,week,tiangan,dizhi,moontemp1,moontemp2;//定义时间映射全局变量(专用寄存器)
  40. signed char address,item,item0,max,mini;
  41. unsigned char clk_ala[2]={0x00,0x00};//闹钟数据存放初,始值为00:00
  42. unsigned char hour,minute,time;//用于闹铃的设置



  43. /*-----------------------------日期、时间设置函数-----------------------------*/

  44. void tiaozheng(void){
  45.         yy = read_clock(0x8d);//调用1302时钟数据中的年数据,从地址0x8d中
  46.         mo = read_clock(0x89);//调用1302时钟数据中的月数据,从地址0x89中
  47.         dd = read_clock(0x87);//从1302芯片中读取日数据,从地址0x87中
  48.         week = read_clock(0x8b);//从1302芯片中读取星期数据,从地址0x8b中
  49.         //----------------------------------
  50.         lcm_w_test(0,0x80);
  51.         lcm_w_word("20");//显示内容字符20
  52.         lcm_w_test(1,(yy/16)+0x30);//函数参数1,代表本行写数据,YY/16+0X30得出年十位数字的显示码地址,送显示       
  53.         lcm_w_test(1,yy%16+0x30);//函数
  54.         lcm_w_word("年");
  55.         //----------------------------------
  56.         lcm_w_test(1,(mo/16)+0x30);
  57.         lcm_w_test(1,mo%16+0x30);//与16取余数,得到月份的个位数,加0x30得到该数字的液晶内定显示码送显示
  58.         lcm_w_word("月");//调用字符显示函数,显示文字 月
  59.         //----------------------------------
  60. /*
  61.         lcm_w_test(0,0x88);//第一个参数0,表示本行写入LCM的是指令,指定显示位置88H(第三行左端)
  62.         lcm_w_word("星期");//调用字符显示函数,显示文字 星期
  63.         lcm_w_test(1,mo%16+0x30);//与16取余数,得到月份的个位数,加0x30得到该数字的液晶内定显示码送显示
  64. */
  65.         //----------------------------------
  66.         lcm_w_test(1,(dd/16)+0x30);
  67.         lcm_w_test(1,dd%16+0x30);//第一个1参数,表示本行写数据,日数据与16取余得个位数,加0x30得到显示码
  68.         lcm_w_word("日");//显示字符 日
  69.         //----------------------------------
  70.         if(read_clock(0x85) != hh){//如果程序中的小时与1302芯片中的不同,
  71.                 hh = read_clock(0x85);//刷新程序中的小时数据
  72.         }
  73.         lcm_w_test(0,0x91);//第一个参数0,表示本行写入LCM的是指令,指定显示位置88H(第三行左端)
  74.         lcm_w_test(1,(hh/16)+0x30);//显示十位
  75.         lcm_w_test(1,hh%16+0x30);//显示个位
  76.         lcm_w_word("时");
  77.         //----------------------------------
  78.         if(read_clock(0x83) != mm){//如果1302芯片中的分钟数据与程序中的分钟变量不相等               
  79.                 mm = read_clock(0x83);//刷新程序中的分钟数据
  80.         }
  81.         lcm_w_test(1,(mm/16)+0x30);//向液晶写数据,显示分钟的十位数
  82.         lcm_w_test(1,mm%16+0x30);//向液晶写数据,显示分钟的个位数
  83.         lcm_w_word("分");
  84.         //----------------------------------
  85.         if(read_clock(0x81) != ss){//如果1302芯片中的分钟数据与程序中的秒钟变量不相等(0x81为读秒数据0x80为写秒数据)               
  86.                 ss = read_clock(0x81);//刷新程序中的秒钟数据
  87.         }
  88.         lcm_w_test(1,(ss/16)+0x30);//向液晶写数据,显示分钟的十位数
  89.         lcm_w_test(1,ss%16+0x30);//向液晶写数据,显示分钟的个位数
  90.         lcm_w_word("秒");

  91. //////////////////////////////////////////////////////////////////////
  92.         //=========显示闹钟的设置时间===================       
  93.        
  94.         hour=clk_ala[0];        //取出上一次的闹钟小时值
  95.         minute=clk_ala[1];         //取出上一次的闹钟分钟值
  96.        
  97.         lcm_w_test(0,0x88);
  98.         lcm_w_word("闹钟---");
  99.         //----------------------------       
  100.         lcm_w_test(1,(hour/10)+0x30);//显示小时十位
  101.         lcm_w_test(1,(hour%10)+0x30);//显示小时个位
  102.         //----------------------------
  103.           lcm_w_word(":");
  104.         //----------------------------
  105.         lcm_w_test(1,(minute/10)+0x30);//显示分钟的十位
  106.         lcm_w_test(1,(minute%10)+0x30);//显示分钟的个位
  107.         //----------------------------
  108.         lcm_w_word("----");


  109. /////////////////////////////////////////////////////////////////////////

  110. }
  111. /*****************************************************************************/
  112. //被调数据加一或减一,并检查数据范围,写入1302指定地址保存
  113. void ds_w(void)
  114. {
  115.         item0=time;
  116.         item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;//时间的调整
  117.         if(K3 == 0||key_add==1){//如果按动上调键
  118.          item++;//数加 1  
  119.         }
  120.         if(K4 == 0||key_minish==1){//如果按动下调键
  121.            item--;//数减 1
  122.         }
  123.         if(item>max)  item=mini;//查看数值是否在有效范围之内   
  124.         if(item<mini) item=max;//如果数值小于最小值,则自动等于最大值           
  125.         write_clock(0x8e,0x00);//允许写1302芯片操作
  126.         write_clock(address,(item/10)*16+item%10);//转换成16进制写入1302
  127.         write_clock(0x8e,0x80);//写保护,禁止写操作
  128. }

  129. /********************************************************************/
  130. //===============闹钟时间的加减设置======================
  131. void ds_w0(void)
  132. {
  133.   item0=time;

  134.   if(K3 == 0||key_add==1){//如果按动上调键
  135.         item0++;//数加 1
  136.         }
  137.   if(K4 == 0||key_minish==1){//如果按动下调键
  138.         item0--;//数减 1
  139.         }
  140.   if(item0>max) item0=mini;//查看数值是否在有效范围之内
  141.   if(item0<mini)item0=max;//如果数值小于最小值,则自动等于最大值
  142.   time=item0;//调整后的时间重新赋值给time(time为hour或minute),这步很重要,没有将无法更新闹钟数据
  143. }


  144. /**********************************************************************************************************/
  145. //调整时间子函数,设置键、数据范围、上调加一,下调减一功能。
  146. void Set_time(unsigned char sel){ //根据选择调整的相应项目加1并写入DS1302,函数参数是按动设置键的次数
  147.   
  148.         write_com(0x30); write_com(0x06);

  149.         lcm_w_test(0,0x98);//第一参数0表示本行写入指令,指定下面行的 调整 显示起始位置为9AH
  150.         lcm_w_word(">>调整>>    <<<<");//调用字符显示函数,显示 调整字样
  151.   
  152. /*        if(sel==8)  {lcm_w_word("星期");address=0x8a; max=7;mini=1;          
  153.      tiaozheng();
  154.      ds_w();
  155.      tiaozheng();
  156.           }
  157. */
  158. //================================================================
  159.         lcm_w_test(0,0x9c);
  160.         if(sel==7)  {lcm_w_word("闹钟分"); time=minute;max=59;mini=0;        
  161.          tiaozheng();//显示调整前的内容
  162.      ds_w0();//设置闹钟
  163.          clk_ala[1]=time;//把更新后的分钟数据重新保存
  164.      tiaozheng();//显示调整后的内容
  165.           }//按动8次显示 调整闹钟的分钟部分
  166.         if(sel==6)  {lcm_w_word("闹钟时");time=hour; max=23;mini=0;
  167.      tiaozheng();
  168.      ds_w0();
  169.          clk_ala[0]=time;//把更新后的小时数据重新保存
  170.      tiaozheng();
  171.           }//按动7次显示 调整闹钟的小时部分
  172. //================================================================

  173.         if(sel==5)  {lcm_w_word("秒钟");address=0x80; max=59;mini=0;          
  174.         tiaozheng();  //调用日期、时间调整函数
  175.            ds_w();                  //被调数据加一或减一函数
  176.            tiaozheng();
  177.    
  178.         }        //秒6,按动6次显示 调整秒钟   
  179.                 //并指定秒钟数据写入1302芯片的写入地址是0x80,秒钟数据的最大值是59,最小值是0

  180.         if(sel==4)  {lcm_w_word("分钟");address=0x82; max=59;mini=0;
  181.            tiaozheng();
  182.            ds_w();
  183.            tiaozheng();
  184.   
  185.         }        //分钟5,按动5次显示 调整分钟
  186.                 //并指定分钟数据写入1302芯片的地址是0x82,分钟数据的最大值是59,最小值是0

  187.         if(sel==3)  {lcm_w_word("小时");address=0x84; max=23;mini=0;
  188.   
  189.             tiaozheng();
  190.            ds_w();
  191.            tiaozheng();
  192.   
  193.         }        //小时4,按动4次显示 调整小时
  194.                 //规定小时数据写入1302芯片的位置是0x84,小时数据最大值23,最小值是0
  195.   

  196.         if(sel==2)  {lcm_w_word("日期");address=0x86;
  197.                 mo = read_clock(0x89);//读月数据
  198.                 moontemp1=mo/16;
  199.                 moontemp2=mo%16;
  200.                 mo=moontemp1*10+moontemp2;//转换成10进制月份数据

  201.       yy = read_clock(0x8d);//读年数据
  202.       moontemp1=yy/16;
  203.                 moontemp2=yy%16;
  204.                 yy=moontemp1*10+moontemp2;//转换成10进制年份数据

  205.       if(mo==2&&yy%4!=0){max=28;mini=1;}//平年2月28天
  206.                 if(mo==2&&yy%4==0){max=29;mini=1;}//闰年2月29天
  207.                 if(mo==1||mo==3||mo==5||mo==7||mo==8||mo==10||mo==12){max=31;mini=1;}//31天的月份
  208.                 if(mo==4||mo==6||mo==9||mo==11){max=30;mini=1;}//30天的月份
  209.                 tiaozheng();
  210.                 ds_w();
  211.                 tiaozheng(); //调用日期、时间调整函数

  212.   }        //日3,按动3次显示 调整日期
  213.                 //规定日期数据写入1302的位置地址是0x86,日期最大值31,最小值是1



  214.   if(sel==1)  {lcm_w_word("月份");address=0x88; max=12;mini=1;
  215.      tiaozheng();
  216.      ds_w();
  217.      tiaozheng();
  218.   
  219.    }        //月2,按动2次显示 调整月份
  220.                 //规定月份写入1302的位置地址是0x88,月份最大值12,最小值1


  221.   if(sel==0)  {lcm_w_word("年份");address=0x8c; max=99; mini=0;
  222.          tiaozheng();
  223.      ds_w();                //被调数据加一或减一函数
  224.      tiaozheng();        //调用日期、时间调整函数

  225.    }        //年1,按动1次显示 调整年份,
  226.                 //规定年份写入1302的地址是0x8c,年份的最大值99,最小值0

  227. }

  228. /*********************************************************************
  229. **********************************************************************
  230. **************             主函数                                  ****************
  231. **********************************************************************
  232. /********************************************************************/
  233. void main()
  234. {       
  235.         unsigned char e=0,f=0,tmp,i;                     

  236.     IE = 0x81;    //允许总中断中断,使能 INT0 外部中断
  237.     TCON = 0x01;  //触发方式为脉冲负边沿触发   
  238.     IRIN=1;       //IO口初始化
  239.     BEEP=1;
  240.         K1=1;K2=1;K3=1;K4=1;
  241.        
  242.        
  243.         Init_1302();                //时钟芯片初始化
  244.         lcm_init();                        //液晶初始化
  245.         welcome0();  //调用欢迎信息1
  246.         DelayM(2000);//延时
  247.         //welcome();DelayM(1000);  //调用欢迎信息2                
  248.         lcm_clr();            //清屏
  249.         Clean_12864_GDRAM();         //清屏
  250.         while(1)
  251.         {


  252.                 if (w == 0)                  //正常走时
  253.                 {
  254.                         displaydate();         //显示日期
  255.                         displaynl();         //显示农历
  256.                         displaytime();         //显示时间
  257.                         read_temp();         //读取温度
  258.                         ds1820disp();          //显示温度
  259.                         displayxq();         //显示星期
  260.                                
  261.                 //=================以下是闹钟的相关处理===================
  262.                        
  263.                         if(ala_flag==1){//闹钟标志位               
  264.                         set1616pic(6,1,0,2);} //显示"闹钟图标"               
  265.                     else{                                                                               
  266.                         set1616pic(6,1,0,3);}//关闭"闹钟图标"显示

  267.                         //----------------------------------------
  268.                         tmp=read_clock(0x85);//取出1302小时
  269.                         i = tmp/16;
  270.                         tmp = tmp&0x0f;
  271.                         tmp = tmp + i*10;
  272.                         if(clk_ala[0]==tmp)//与闹钟设定的小时值相同
  273.                                 {
  274.                                 tmp=read_clock(0x83);//取出1302分钟
  275.                                 i = tmp/16;
  276.                                 tmp = tmp&0x0f;
  277.                                 tmp = tmp + i*10;
  278.                                         if(clk_ala[1]==tmp)//与闹钟设定的分钟值相同
  279.                                           {
  280.                                                 if(ala_flag==1)//闹钟打开
  281.                                                   {
  282.                                                         alarmbeep();//闹铃声响1分钟后自动关闭,
  283.                                                         DelayM(200);//控制闹钟响的间隔即频率
  284.                                                    }
  285.                                                 else BEEP=1;//关闭蜂鸣器
  286.                                            }
  287.                                          else BEEP=1;//关闭蜂鸣器
  288.                                 }
  289.                         //==============闹钟处理结束=======================
  290.                 }       
  291.                 else {} //========否则启动调时=========================
  292.          
  293.      
  294. /*---------------按键及红外遥控设置时间------------------------------*/               
  295.                 if (K1 == 0||key_manue==1)         
  296.                 {                 
  297.                        
  298.                         DelayM(8);                       //按键消抖
  299. /*当是调时状态 本键用于调整下一项---------------------------------------------------*/               
  300.                         if((K1 == 0 && w == 1)||(key_manue==1&&w==1))      //
  301.                         {
  302.                                        
  303.                                 e++;
  304.                                 if (e >= 8 ) {e = 0;}
  305.                              while(! K1 );            //等待键松开
  306.                           key_manue=0;
  307.                                 Set_time(e); beep();          //调整                               
  308.                         }
  309. /*当是正常状态时就进入调时状态---------------------------------------------------*/               
  310.                         if((K1 == 0 && w == 0)||(key_manue==1&&w==0))  //
  311.                         {       
  312.                                 key_manue=0;
  313.                                 lcm_clr();            
  314.                                 Clean_12864_GDRAM();   //清屏
  315.                                 w=1;                       //进入调时
  316.                                 Set_time(e);beep();
  317.                         }
  318.                            while(K1 == 0);            //等待键松开
  319.                 }
  320. /*当在调时状态时就退出调时---------------------------------------------------*/               
  321.                 if (K2 == 0||key_ok==1)                   //
  322.                 {        beep();
  323.                         DelayM(8);
  324.                         if((K2 == 0 && w == 1)||(key_ok==1&&w==1))
  325.                         {                       
  326.                                 w = 0;                       //退出调时
  327.                                 e = 0;                           //"下一项"计数器清0                                                               
  328.                         }
  329.                         if((K2 == 0 && w == 0)||(key_ok==1&&w==0))
  330.                         {
  331.                                 lcm_clr(); Clean_12864_GDRAM();
  332.                                 write_com(0x30); write_com(0x06);
  333.                                 welcome();       
  334.                                 while(K2 == 0); //按下K2是显示欢迎信息
  335.                                 DelayM(500);key_ok=0;//红外"OK"按键按下时显示0.5秒钟的欢迎界面2                                 
  336.                         }
  337.                         lcm_clr(); Clean_12864_GDRAM();
  338. //                        ds_write(0x0a,0x20);       //调时完毕,开启时钟振荡器                               
  339.                         displaydate();
  340.                         displayxq();
  341.                         displaynl();
  342.                         displaytime();
  343.                         read_temp();
  344.                         ds1820disp();
  345.                         while(K2 == 0);  
  346.                 }
  347. /*加调整--------------------------------------------------------------------*/               
  348.                 if ((K3 == 0 && w == 1)||(key_add==1&&w==1))
  349.                 {        
  350.                          DelayM(8);
  351.                         if((K3 == 0 && w == 1)||(key_add==1&&w==1))
  352.                                 {
  353.                                   Set_time(e);
  354.                                   beep();
  355.                                   while(!K3);
  356.                                   key_add=0;
  357.                                 }
  358.                         key_add=0;
  359.                         while(! K3 );
  360.                 }
  361. /*减调整--------------------------------------------------------------------*/               
  362.                 if ((K4 == 0 && w == 1)||(key_minish==1&&w==1))
  363.                 {             
  364.                         DelayM(10);          
  365.                         if((K4 == 0 && w == 1)||(key_minish==1&&w==1))
  366.                           {
  367.                                 Set_time(e);
  368.                             beep();
  369.                                 while(! K4 );
  370.                                 key_minish=0;
  371.                           }
  372.                         key_minish=0;
  373.                         while(! K4 );
  374.                 }
  375. /*----------------------------------------------------------------*/
  376.        if(K5==0||key_alarm==1)//闹钟的开与关的设置标志位
  377.            {
  378.                 DelayM(20);
  379.                 if(K5==0||key_alarm==1)
  380.                   { beep();
  381.                         while(!K5);//松手检测
  382.                         key_alarm=0;
  383.                         ala_flag=~ala_flag;
  384.                   }
  385.                 while(!K5);//松手检测
  386.                 key_alarm=0;
  387.            }

  388.      EX0 = 1; //开中断
  389. }
  390.         }




  391. /*结束----------------------------------------------------------------------*/
复制代码
回复

使用道具 举报

ID:73762 发表于 2017-1-4 14:07 | 显示全部楼层
顶楼住一个,不错的东西
回复

使用道具 举报

ID:140183 发表于 2017-1-6 05:59 | 显示全部楼层
下载啦,很好.谢谢分享!
回复

使用道具 举报

ID:161289 发表于 2017-1-11 17:28 | 显示全部楼层
程序很好,感谢楼主奉献
回复

使用道具 举报

ID:96218 发表于 2017-1-11 20:45 | 显示全部楼层
发个PCB文件
回复

使用道具 举报

ID:98992 发表于 2017-4-3 19:06 | 显示全部楼层
好复杂啊 真心厉害了
回复

使用道具 举报

ID:192180 发表于 2017-4-21 22:38 | 显示全部楼层
给力。我也要做一个。
回复

使用道具 举报

ID:200657 发表于 2017-5-14 16:49 | 显示全部楼层

没有黑B!
回复

使用道具 举报

ID:200657 发表于 2017-5-15 11:13 | 显示全部楼层
有原理图吗???还有元器件清单
回复

使用道具 举报

ID:140489 发表于 2017-6-6 12:31 | 显示全部楼层
这个不错 ,修改一下端口就可以用,遥控很方便
回复

使用道具 举报

ID:249886 发表于 2017-11-15 22:02 | 显示全部楼层
不错  学习了
回复

使用道具 举报

ID:250820 发表于 2017-11-19 16:45 | 显示全部楼层
上电不走时啊
回复

使用道具 举报

ID:276675 发表于 2018-1-16 17:42 | 显示全部楼层
学习学习,看看
回复

使用道具 举报

ID:272625 发表于 2018-1-25 02:34 | 显示全部楼层
图2,楼主的PCB是怎么做出来的?好漂亮!
回复

使用道具 举报

ID:270854 发表于 2018-1-28 09:52 | 显示全部楼层
怎么不显示啊
回复

使用道具 举报

ID:279835 发表于 2018-2-16 18:05 | 显示全部楼层
给力非常感谢
回复

使用道具 举报

ID:289510 发表于 2018-3-31 16:05 | 显示全部楼层
楼主甚是厉害,佩服佩服!学习了。
回复

使用道具 举报

ID:272874 发表于 2018-4-2 09:44 | 显示全部楼层
貌似没有原理图的哦
回复

使用道具 举报

ID:272874 发表于 2018-4-2 10:23 | 显示全部楼层
液晶的PSB和RST接单片机哪里呀?
回复

使用道具 举报

ID:220936 发表于 2018-4-3 15:22 | 显示全部楼层
已下载,楼主要是有个元件清单或原理图就好了
回复

使用道具 举报

ID:171111 发表于 2018-4-5 20:40 | 显示全部楼层
得用遥控器设置时间什么的? 就一个按键是闹钟的啊
回复

使用道具 举报

ID:171111 发表于 2018-4-5 20:44 | 显示全部楼层
我的也是上电不走时呢 就开机有个画面什么智能电子钟 然后就显示00:00:00不动了 按键也不管用 这是什么情况呢?
回复

使用道具 举报

ID:260833 发表于 2018-6-27 21:43 | 显示全部楼层
我的也是上电不走时呢 就开机有个画面什么智能电子钟 然后就显示00:00:00不动了 按键也不管用 这是什么情况呢?
回复

使用道具 举报

ID:161151 发表于 2018-11-22 16:07 | 显示全部楼层
下载学习一下,谢谢分享
回复

使用道具 举报

ID:432568 发表于 2018-11-24 21:43 | 显示全部楼层
对呀,哪里程序有问题吧,只显示几个0
回复

使用道具 举报

ID:446408 发表于 2018-12-14 16:26 | 显示全部楼层
很漂亮的作品
回复

使用道具 举报

ID:483160 发表于 2019-12-20 12:22 | 显示全部楼层
资料里没看到原理图,没看到PCB图,没看到元件清单,资料不全啊
回复

使用道具 举报

ID:721707 发表于 2020-4-22 19:50 | 显示全部楼层
有没原理图啊?
回复

使用道具 举报

ID:459560 发表于 2020-4-22 21:57 | 显示全部楼层
谢谢楼主,我在收集材料,也准备做一个时钟,有没有原理图呢?
回复

使用道具 举报

ID:231831 发表于 2020-4-30 15:55 | 显示全部楼层
这个厉害了,不知道是不是那个说精度很高的那个程序!!!
回复

使用道具 举报

ID:704585 发表于 2020-5-29 14:16 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

ID:755390 发表于 2020-5-30 15:39 | 显示全部楼层
再加上自动授时就好了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表