找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12385|回复: 2
收起左侧

单片机多功能电子时钟(五个功能)

[复制链接]
ID:366468 发表于 2018-7-6 19:19 | 显示全部楼层 |阅读模式
这是我做的多功能电子时钟,基于ds1302和ds18b20的电子时钟,附带温度计功能,还有基于内部定时器的秒表功能。当温度超过某一设定值的时候,发生报警,并且启动直流电机,实现温控。
电路原理图如下:

电路原理图

电路原理图

画好的PCB

画好的PCB


程序源码:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar code table[]="MONTUEWEDTHUFRISATSUNMAX TEMPMIN TEMPALARM!      ";
  6. int i;//存放温度的值的变量
  7. char settempmax,settempmin,n;
  8. uchar temp,sumup,count,hundredms,L,M,C_qian,C_bai,C_shi,C_ge,tempmax;
  9. uchar shi=3,fen=3,miao=3,nian=3,yue=3,week=3,ri=3,s1num=0,s2num,s3num,s4num,num,fiftyms;
  10. float f_temp;
  11. uint Int_temp;
  12. sbit du=P2^6;
  13. sbit we=P2^7;
  14. sbit di=P2^3;
  15. sbit lcdrs=P3^5;
  16. sbit lcdwr=P3^6;
  17. sbit lcden=P3^4;
  18. sbit s1=P3^0;
  19. sbit s2=P3^1;
  20. sbit s3=P3^2;
  21. sbit s4=P3^3;
  22. sbit rd=P3^7;
  23. sbit TSCLK=P1^0;
  24. sbit TIO=P1^1;
  25. sbit TRST=P1^2;
  26. sbit ds=P2^2;

  27. void delay(uint xms)
  28. {
  29.         uint i,j;
  30.         for(i=xms;i>0;i--)
  31.                 for(j=110;j>0;j--);
  32. }

  33. void delay_us(uchar us)
  34. {
  35.         while(us--);
  36. }
  37. void write_com(uchar com)
  38. {
  39.         lcdrs=0;
  40.         lcden=0;
  41.         P0=com;
  42.         delay(5);
  43.         lcden=1;
  44.         delay(5);
  45.         lcden=0;
  46. }
  47. void write_date(uchar date)
  48. {
  49.         lcdrs=1;
  50.         lcden=0;                                                                                                                  
  51.         P0=date;
  52.         delay(5);
  53.         lcden=1;
  54.         delay(5);
  55.         lcden=0;
  56. }  

  57. void lcdinit()
  58. {
  59.         du=0;
  60.         we=0;
  61.         lcdwr=0;
  62.         lcden=0;
  63.         write_com(0x38);
  64.         write_com(0x0c);
  65.         write_com(0x06);
  66.         write_com(0x01);
  67. }


  68. void write_sfm(uchar add,uchar date)
  69. {
  70.         uchar shi,ge;
  71.         shi=date/10;
  72.         ge=date%10;
  73.         write_com(0x80+0x40+add);
  74.         write_date(0x30+shi);
  75.         write_date(0x30+ge);
  76. }
  77. void write_nyr(uchar add,uchar date)
  78. {
  79.         uchar shi,ge;
  80.         shi=date/10;
  81.         ge=date%10;
  82.         write_com(0x80+add);
  83.         write_date(0x30+shi);
  84.         write_date(0x30+ge);
  85. }
  86. void write_miaobiao(uchar add,uchar date)
  87. {
  88.         uchar shi,ge;
  89.         shi=date/10;
  90.         ge=date%10;
  91.         write_com(0x80+0x40+add);
  92.         write_date(0x30+shi);
  93.         write_date(0x30+ge);
  94. }

  95. void write_wendu(uchar add,uchar date)
  96. {
  97.         write_com(0x80+add);
  98.         write_date(0x30+date);
  99. }

  100. void wendufuhaoinit()
  101. {
  102.         write_com(0x80+0x40+7);//写一个字母T
  103.         write_date(0x54);
  104.         write_com(0x80+0x40+8);//写一个等号=
  105.         write_date(0x3d);
  106.         write_com(0x80+0x40+11);//写小数点
  107.         write_date(0x2e);
  108.         write_com(0x80+0x40+14);//设置摄氏度符号
  109.         write_date(0xdf);
  110.         write_com(0x80+0x40+15);
  111.         write_date(0x43);
  112. }

  113. void wendufuhao2init()
  114. {
  115.         write_com(0x80+7);//写一个字母T
  116.         write_date(0x54);
  117.         write_com(0x80+8);//写一个等号=
  118.         write_date(0x3d);
  119.         write_com(0x80+11);//写小数点
  120.         write_date(0x2e);
  121.         write_com(0x80+14);//设置摄氏度符号
  122.         write_date(0xdf);
  123.         write_com(0x80+15);
  124.         write_date(0x43);
  125. }
  126. void write_ds1302(uchar cmd,uchar dat)
  127. {
  128.         uchar i;
  129.         TRST=0;
  130.         TSCLK=0;
  131.         TRST=1;
  132.         for(i=0;i<8;i++)
  133.         {
  134.                 TSCLK=0;
  135.                 TIO=cmd&0x01;
  136.                 TSCLK=1;
  137.                 cmd>>=1;
  138.         }
  139.         for(i=0;i<8;i++)
  140.         {
  141.                 TSCLK=0;
  142.                 TIO=dat&0x01;
  143.                 TSCLK=1;
  144.                 dat>>=1;
  145.         }
  146.         TRST=0;
  147. }

  148. uchar read_ds1302(uchar cmd)
  149. {
  150.         uchar i,dat;
  151.         TRST=0;
  152.         TSCLK=0;
  153.         TRST=1;
  154.         for(i=0;i<8;i++)
  155.         {
  156.                 TSCLK=0;
  157.                 TIO=cmd&0x01;
  158.                 TSCLK=1;
  159.                 cmd>>=1;
  160.         }
  161.         for(i=0;i<8;i++)
  162.         {
  163.                 TSCLK=0;
  164.                 dat>>=1;
  165.                 if(TIO)
  166.                 dat=dat|0x80;        
  167.                 TSCLK=1;
  168.         }
  169.         TRST=0;
  170.         return dat;
  171. }

  172. //数据转BCD码
  173. uchar dat_chg_bcd(uchar dat)
  174. {
  175.         uchar dat1,dat2;
  176.         dat1=dat/10;
  177.         dat2=dat%10;
  178.         dat2=dat2+dat1*16;
  179.         return dat2;
  180. }
  181. //bcd码转数据
  182. uchar bcd_chg_dat(uchar dat)
  183. {
  184.         uchar dat1,dat2;
  185.         dat1=dat/16;
  186.         dat2=dat%16;
  187.         dat2=dat2+dat1*10;
  188.         return dat2;
  189. }

  190. void ds1302_init()
  191. {
  192.         write_ds1302(0x8e,0);
  193.         write_ds1302(0x80,dat_chg_bcd(miao));
  194.         write_ds1302(0x82,dat_chg_bcd(fen));
  195.         write_ds1302(0x84,dat_chg_bcd(shi));
  196.         write_ds1302(0x86,dat_chg_bcd(ri));
  197.         write_ds1302(0x88,dat_chg_bcd(yue));
  198.         write_ds1302(0x8a,dat_chg_bcd(week));
  199.         write_ds1302(0x8c,dat_chg_bcd(nian));
  200.         write_ds1302(0x8e,0x80);
  201. }

  202. bit ds18b20_init()
  203. {
  204.         bit i;
  205.         ds=1;
  206.         _nop_();
  207.         ds=0;
  208.         delay_us(75);
  209.         ds=1;
  210.         delay_us(4);
  211.         i=ds;
  212.         delay_us(20);
  213.         ds=1;
  214.         _nop_();
  215.         return (i);
  216. }

  217. void write_ds(uchar dat)
  218. {
  219.         uchar i;
  220.         for(i=0;i<8;i++)
  221.         {
  222.                 ds=0;
  223.                 _nop_();
  224.                 ds=dat&0x01;
  225.                 delay_us(10);
  226.                 ds=1;
  227.                 _nop_();
  228.                 dat>>=1;
  229.         }
  230. }

  231. uchar read_ds()
  232. {
  233.         uchar i,j,dat;
  234.         for(i=0;i<8;i++)
  235.         {
  236.                 ds=0;
  237.                 _nop_();
  238.                 ds=1;
  239.                 _nop_();
  240.                 j=ds;
  241.                 delay_us(10);
  242.                 ds=1;
  243.                 _nop_();
  244.                 dat=(j<<=7)|dat>>1;        
  245.         }        
  246.         return (dat);
  247. }

  248. void keyscan()
  249. {
  250.         rd=0;
  251.         if(s1==0)
  252.         {
  253.                 delay(5);
  254.                 if(s1==0)
  255.                 {        
  256.                         while(!s1);
  257.                         s1num++;
  258.                         di=0;        
  259.                         delay(800);        
  260.                         di=1;
  261.                         while(s1num==1)
  262.                         {        
  263.                                 if(s1==0)
  264.                                 {
  265.                                         delay(5);
  266.                                         if(s1==0)
  267.                                         {
  268.                                                 s1num++;
  269.                                         }
  270.                                 }        
  271.                                 if(s2==0)
  272.                                 {
  273.                                         delay(5);
  274.                                         if(s2==0)
  275.                                         {
  276.                                                 di=0;
  277.                                                 while(!s2);
  278.                                                 di=1;
  279.                                                 s2num++;
  280.                                                 if(s2num==1)
  281.                                                 {
  282.                                                         write_com(0x80+0x40+10);//把指针定到秒的位置
  283.                                                         write_com(0x0f);//开光标闪烁(开一次就行了)
  284.                                                 }
  285.                                                 if(s2num==2)
  286.                                                 {
  287.                                                         write_com(0x80+0x40+7);
  288.                                                 }
  289.                                                 if(s2num==3)
  290.                                                 {
  291.                                                         write_com(0x80+0x40+4);
  292.                                                 }
  293.                                                 if(s2num==4)
  294.                                                 {
  295.                                                         write_com(0x80+13);
  296.                                                 }
  297.                                                 if(s2num==5)
  298.                                                 {
  299.                                                         write_com(0x80+11);
  300.                                                 }
  301.                                                 if(s2num==6)
  302.                                                 {
  303.                                                         write_com(0x80+8);
  304.                                                 }
  305.                                                 if(s2num==7)
  306.                                                 {
  307.                                                         write_com(0x80+5);
  308.                                                 }
  309.                                                 if(s2num==8)
  310.                                                 {
  311.                                                         write_com(0x80+0x40+10);
  312.                                                         s2num=0;
  313.                                                 }
  314.                                         }
  315.                                 }
  316.                                 if(s3==0)
  317.                                 {
  318.                                         delay(5);
  319.                                         if(s3==0)
  320.                                         {
  321.                                                 di=0;
  322.                                                 while(!s3);
  323.                                                 di=1;
  324.                                                 if(s2num==1)
  325.                                                 {
  326.                                                         miao++;
  327.                                                         if(miao==60)
  328.                                                         miao=0;
  329.                                                         write_sfm(9,miao);
  330.                                                 }
  331.                                                 if(s2num==2)        
  332.                                                 {
  333.                                                         fen++;
  334.                                                         if(fen==60)
  335.                                                         fen=0;
  336.                                                         write_sfm(6,fen);
  337.                                                 }
  338.                                                 if(s2num==3)
  339.                                                 {
  340.                                                         shi++;
  341.                                                         if(shi==24)
  342.                                                         shi=0;
  343.                                                         write_sfm(3,shi);
  344.                                                 }
  345.                                                 if(s2num==4)
  346.                                                 {
  347.                                                         week++;
  348.                                                         if(week==8)
  349.                                                         week=1;
  350.                                                         write_nyr(13,week);
  351.                                                 }
  352.                                                 if(s2num==5)
  353.                                                 {
  354.                                                         ri++;
  355.                                                         if(ri==32)
  356.                                                         ri=1;
  357.                                                         write_nyr(10,ri);
  358.                                                 }
  359.                                                 if(s2num==6)        
  360.                                                 {
  361.                                                         yue++;
  362.                                                         if(yue==13)
  363.                                                         yue=1;
  364.                                                         write_nyr(7,yue);
  365.                                                 }
  366.                                                 if(s2num==7)
  367.                                                 {
  368.                                                         nian++;
  369.                                                         if(nian==99)
  370.                                                         nian=0;
  371.                                                         write_nyr(4,nian);
  372.                                                 }
  373.                                         }
  374.                                 }
  375.                                 if(s4==0)
  376.                                 {                     
  377.                                         delay(5);
  378.                                         if(s4==0)
  379.                                         {
  380.                                                 di=0;
  381.                                                 while(!s4);
  382.                                                 di=1;
  383.                                                 if(s2num==1)
  384.                                                 {
  385.                                                         miao--;
  386.                                                         if(miao==0)
  387.                                                         miao=59;
  388.                                                         write_sfm(9,miao);
  389.                                                 }
  390.                                                 if(s2num==2)        
  391.                                                 {
  392.                                                         fen--;
  393.                                                         if(fen==0)
  394.                                                         fen=59;
  395.                                                         write_sfm(6,fen);
  396.                                                 }
  397.                                                 if(s2num==3)
  398.                                                 {
  399.                                                         shi--;
  400.                                                         if(shi==0)
  401.                                                                 shi=23;
  402.                                                         write_sfm(3,shi);
  403.                                                 }
  404.                                                 if(s2num==4)
  405.                                                 {
  406.                                                         week--;
  407.                                                         if(week==0)
  408.                                                                 week=7;
  409.                                                         write_nyr(13,week);
  410.                                                 }
  411.                                                 if(s2num==5)
  412.                                                 {
  413.                                                         ri--;
  414.                                                         if(ri==1)
  415.                                                         ri=31;
  416.                                                         write_nyr(10,ri);
  417.                                                 }
  418.                                                 if(s2num==6)        
  419.                                                 {
  420.                                                         yue--;
  421.                                                         if(yue==1)
  422.                                                         yue=12;
  423.                                                         write_nyr(7,yue);
  424.                                                 }
  425.                                                 if(s2num==7)
  426.                                                 {
  427.                                                         nian--;
  428.                                                         if(nian==0)
  429.                                                         nian=99;
  430.                                                         write_nyr(4,nian);
  431.                                                 }
  432.                                         }
  433.                                  }               
  434.                         }
  435.                         write_ds1302(0x8e,0);
  436.                         write_ds1302(0x80,dat_chg_bcd(miao));
  437.                         write_ds1302(0x82,dat_chg_bcd(fen));
  438.                         write_ds1302(0x84,dat_chg_bcd(shi));
  439.                         write_ds1302(0x8a,dat_chg_bcd(week));
  440.                         write_ds1302(0x86,dat_chg_bcd(ri));
  441.                         write_ds1302(0x88,dat_chg_bcd(yue));
  442.                         write_ds1302(0x8c,dat_chg_bcd(nian));
  443.                         write_ds1302(0x8e,0x80);
  444.                         s1num=0;
  445.                         s2num=0;
  446.                         write_com(0x0c);//清除光标闪烁
  447.                 }
  448.         }
  449.         if(s4==0)
  450.         {
  451.                 delay(5);
  452.                 if(s4==0)
  453.                 {
  454.                         while(!s4);
  455.                         s4num++;
  456.                         write_com(0x01);
  457.                         write_com(0x80);//写字母MAXTEMP
  458.                         for(i=21;i<29;i++)
  459.                                 write_date(table[i]);
  460.                         write_com(0x80+8);//写等号
  461.                         write_date(0x3d);
  462.                         write_nyr(9,settempmax);//写温度的初始状态
  463.                         write_com(0x80+11);//写摄氏度符号
  464.                         write_date(0xdf);
  465.                         write_com(0x80+12);
  466.                         write_date(0x43);


  467.                         write_com(0x80+0x40);//写字母MINTEMP
  468.                         for(i=29;i<37;i++)
  469.                                 write_date(table[i]);
  470.                         write_com(0x80+0x40+8);//写等号
  471.                         write_date(0x3d);
  472.                         write_sfm(9,settempmin);
  473.                         write_com(0x80+0x40+12);//写摄氏度符号
  474.                         write_date(0xdf);
  475.                         write_com(0x80+0x40+13);
  476.                         write_date(0x43);
  477.                         while(s4num==1)
  478.                         {
  479.                                 if(s4==0)
  480.                                 {
  481.                                         delay(5);
  482.                                         if(s4==0)
  483.                                         {
  484.                                                 while(!s4);
  485.                                                 s4num++;
  486.                                         }
  487.                                 }
  488.                                 if(s1==0)
  489.                                 {
  490.                                         delay(5);
  491.                                         if(s1==0)
  492.                                         {
  493.                                                 while(!s1);
  494.                                                 settempmax++;
  495.                                                 if(settempmax==38)
  496.                                                 settempmax=25;                                                
  497.                                                 write_nyr(9,settempmax);        
  498.                                         }
  499.                                 }
  500.                                 if(s2==0)
  501.                                 {
  502.                                         delay(5);
  503.                                         if(s2==0)
  504.                                         {
  505.                                                 while(!s2);
  506.                                                 settempmin--;
  507.                                                 if(settempmin==-1)
  508.                                                 settempmin=25;
  509.                                                 write_sfm(9,settempmin);        
  510.                                         }
  511.                                 }               
  512.                         }
  513.                         write_com(0x01);
  514.                         s4num=0;        
  515.                 }
  516.         }
  517.         else
  518.         {
  519.                 if(s2==0)
  520.                 {
  521.                         delay(5);
  522.                         if(s2==0)
  523.                         {        
  524.                                 while(!s2);
  525.                                 s2num++;
  526.                                 write_com(0x01);
  527.                                 di=0;
  528.                                 delay(100);
  529.                                 di=1;
  530.                                 delay(100);
  531.                                 di=0;
  532.                                 delay(100);
  533.                                 di=1;               
  534.                                 TR0=1;
  535.                                 while(s2num==1)
  536.                                 {
  537.                                         if(num==20)
  538.                                         {
  539.                                                 num=0;
  540.                                                 fiftyms++;
  541.                                                 if(fiftyms==20)
  542.                                                 {
  543.                                                         fiftyms=0;
  544.                                                         miao++;
  545.                                                         if(miao==60)
  546.                                                         {
  547.                                                                 miao=0;
  548.                                                                 fen++;
  549.                                                                 write_miaobiao(5,fen);
  550.                                                         }
  551.                                                         write_miaobiao(11,miao);
  552.                                                 }
  553.                                                 write_miaobiao(14,fiftyms);
  554.                                         }
  555.                                         if(s2==0)
  556.                                         {
  557.                                                 delay(5);
  558.                                                 if(s2==0)
  559.                                                 {
  560.                                                         while(!s2);
  561.                                                         s2num++;
  562.                                                 }
  563.                                         }
  564.                                         if(s3==0)
  565.                                         {
  566.                                                 delay(5);
  567.                                                 if(s3==0)
  568.                                                 {
  569.                                                         di=0;
  570.                                                         while(!s3);
  571.                                                         di=1;
  572.                                                         s3num++;
  573.                                                         if(s3num==1)
  574.                                                         {
  575.                                                                 write_nyr(0,miao);
  576.                                                                 write_nyr(3,fiftyms);        
  577.                                                         }
  578.                                                         if(s3num==2)
  579.                                                         {
  580.                                                                 write_nyr(11,miao);
  581.                                                                 write_nyr(14,fiftyms);
  582.                                                         }
  583.                                                         if(s3num==3)
  584.                                                         {
  585.                                                                 write_sfm(0,miao);
  586.                                                                 write_sfm(3,fiftyms);
  587.                                                                 s3num=0;
  588.                                                         }
  589.                                                 }
  590.                                         }        
  591.                                 }
  592.                                 s2num=0;
  593.                                 TR0=0;              
  594.                                 write_com(0x01);
  595.                                 num=0;
  596.                                 fiftyms=0;
  597.                                 miao=0;
  598.                                 fen=0;               
  599.                         }               
  600.                 }
  601.                 if(s3==0)
  602.                 {
  603.                         delay(5);
  604.                         if(s3==0)
  605.                         {
  606.                                 while(!s3);
  607.                                 s3num++;
  608.                                 write_com(0x01);
  609.                                 wendufuhaoinit();
  610.                                 while(s3num==1)
  611.                                 {
  612.                                         ds18b20_init();
  613.                                         write_ds(0xcc);
  614.                                         write_ds(0x44);
  615.                                         ds18b20_init();
  616.                                         write_ds(0xcc);
  617.                                         write_ds(0xbe);
  618.                                         L=read_ds();
  619.                                         M=read_ds();
  620.                                         i=0;
  621.                                         i=M;
  622.                                         i<<=8;
  623.                                         i|=L;
  624.                                         f_temp=i*0.0625;
  625.                                         if(f_temp>settempmax)  //如果超过报警温度,则蜂鸣器闹响,
  626.                                         {                                           //而且闪烁alarm提醒词
  627.                                                 di=0;
  628.                                                 write_com(0x80+0x40); //写入警报提醒单词,又能有延时效果
  629.                                                 for(n=37;n<43;n++)
  630.                                                 {
  631.                                                         write_date(table[n]);
  632.                                                 }
  633.                                         }
  634.                                         di=1;
  635.                                         if(f_temp<settempmin)
  636.                                         {
  637.                                                 di=0;
  638.                                                 write_com(0x80+0x40);
  639.                                                 for(n=37;n<43;n++)
  640.                                                 {
  641.                                                         write_date(table[n]);
  642.                                                 }
  643.                                         }
  644.                                         di=1;
  645.                                         delay(100);
  646.                                         write_com(0x80+0x40);//写空格清除提醒词达到闪烁效果
  647.                                         for(n=43;n<49;n++)
  648.                                         {
  649.                                                 write_date(table[n]);
  650.                                         }
  651.                                         Int_temp=i*0.0625*100+0.5;
  652.                                         C_qian=Int_temp/1000;
  653.                                         C_bai=Int_temp%1000/100;
  654.                                         C_shi=Int_temp%100/10;
  655.                                         C_ge =Int_temp%10;
  656.                                         write_wendu(0x40+9,C_qian);
  657.                                         write_wendu(0x40+10,C_bai);
  658.                                         write_wendu(0x40+12,C_shi);
  659.                                         write_wendu(0x40+13,C_ge);
  660.                                         if(s3==0)
  661.                                         {
  662.                                                 delay(5);
  663.                                                 if(s3==0)
  664.                                                 {
  665.                                                         while(!s3);
  666.                                                         s3num++;
  667.                                                 }
  668.                                         }
  669.                                         if(s4==0)
  670.                                         {
  671.                                                 delay(5);
  672.                                                 if(s4==0)
  673.                                                 {
  674.                                                         di=0;
  675.                                                         while(!s4);
  676.                                                         di=1;
  677.                                                         s4num++;
  678.                                                         if(s4num==1)
  679.                                                         {
  680.                                                                 miao=bcd_chg_dat(read_ds1302(0x81));
  681.                                                                 fen=bcd_chg_dat(read_ds1302(0x83));
  682.                                                                 write_nyr(3,miao);
  683.                                                                 write_nyr(0,fen);
  684.                                                                 wendufuhao2init();
  685.                                                                 write_wendu(9,C_qian);
  686.                                                                 write_wendu(10,C_bai);
  687.                                                                 write_wendu(12,C_shi);
  688.                                                                 write_wendu(13,C_ge);
  689.                                                                 s4num=0;        
  690.                                                         }
  691.                                                 }
  692.                                         }
  693.                                 }
  694.                                 s3num=0;
  695.                                 write_com(0x01);
  696.                         }
  697.                 }

  698.         }               
  699. }

  700. void t0_init()
  701. {
  702.         TMOD=0x02;
  703.         TH0=6;
  704.         TL0=6;
  705.         EA=1;
  706.         ET0=1;
  707. }

  708. void main()
  709. {
  710.         uchar miao,fen,shi,nian,yue,ri,week;
  711.         settempmax=37;
  712.         settempmin=0;
  713.         lcdinit();
  714.         ds1302_init();
  715.         t0_init();
  716.         while(1)
  717.         {
  718.                 keyscan();
  719.                 write_ds1302(0x8e,0);//关闭写保护
  720.                 miao=bcd_chg_dat(read_ds1302(0x81));
  721.                 fen=bcd_chg_dat(read_ds1302(0x83));
  722.                 shi=bcd_chg_dat(read_ds1302(0x85));
  723.                 ri=bcd_chg_dat(read_ds1302(0x87));
  724.                 yue=bcd_chg_dat(read_ds1302(0x89));
  725.                 week=bcd_chg_dat(read_ds1302(0x8b));
  726.                 nian=bcd_chg_dat(read_ds1302(0x8d));
  727.                 write_ds1302(0x8e,0x80); //打开写保护
  728.                 if(week==1)
  729.                 {
  730.                         write_com(0x80+13);
  731.                         for(num=0;num<3;num++)        
  732.                                 write_date(table[num]);
  733.                 }
  734.                 if(week==2)
  735.                 {
  736.                         write_com(0x80+13);
  737.                         for(num=3;num<6;num++)
  738.                                 write_date(table[num]);
  739.                 }
  740.                 if(week==3)
  741.                 {
  742.                         write_com(0x80+13);
  743.                         for(num=6;num<9;num++)
  744.                                 write_date(table[num]);
  745.                 }
  746.                 if(week==4)
  747.                 {
  748.                         write_com(0x80+13);
  749.                         for(num=9;num<12;num++)
  750.                                 write_date(table[num]);
  751.                 }
  752.                 if(week==5)
  753.                 {
  754.                         write_com(0x80+13);
  755.                         for(num=12;num<15;num++)
  756.                                 write_date(table[num]);
  757.                 }
  758.                 if(week==6)
  759.                 {
  760.                         write_com(0x80+13);
  761.                         for(num=15;num<18;num++)
  762.                                 write_date(table[num]);
  763.                 }
  764.                 if(week==7)
  765.                 {
  766.                         write_com(0x80+13);
  767.                         for(num=18;num<21;num++)
  768.                                 write_date(table[num]);
  769.                 }
  770.                
  771.                 write_sfm(9,miao);
  772.                 write_sfm(6,fen);
  773.                 write_sfm(3,shi);
  774.                 write_nyr(10,ri);
  775.                 write_nyr(7,yue);
  776.                 write_nyr(4,nian);
  777.                 write_nyr(2,20);
  778.         }            
  779. }

  780. void t0_time() interrupt 1
  781. {
  782.         num++;
  783. }        
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:525478 发表于 2019-7-12 01:12 | 显示全部楼层
支持 先收藏   
回复

使用道具 举报

ID:282095 发表于 2019-7-12 09:30 | 显示全部楼层
比较适合新人上手
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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