找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5568|回复: 9
收起左侧

单片机+DS1302+18B20+12864+音乐IC万年历制作

  [复制链接]
ID:140725 发表于 2016-10-12 11:30 | 显示全部楼层 |阅读模式
原理图是附件的DDB文件,用99SE,或者用DXP,Altium Designer 打开即可,附件里面有个DDB文件,请用99SE打开。

STC89C52RC+12864+DS1302+18B20+24C02+音乐IC。
1:支持调节时间!
2:显示年月日,时分秒,星期!
3:显示温度!
2:支持2个闹钟。可以随意控制开关!
5:支持24小时制和12小时制随意切换!
6:支持两个铃声!
7:所有的设置掉电后部丢失。包括闹铃,掉电后重启和原来工作一样,到时间后闹铃![table]

视频:


18302546k08248ggduq6k4.jpg.thumb.jpg

0.png

183010cuum7mxnwxft53i7.jpg.thumb.jpg


182958s02p3hrjse22xslj.jpg.thumb.jpg


1829406uoooaebbol6uuwo.jpg.thumb.jpg


182920x2kx7x1kzkyhnpr9.jpg.thumb.jpg
源程序:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit T_IO=P2^1;   
  6. sbit T_RST=P2^0;   
  7. sbit T_CLK=P2^2;
  8. sbit k1=P2^3;
  9. sbit k2=P2^4;
  10. sbit shu=P2^5;
  11. sbit k3=P2^6;
  12. sbit D=P2^7;
  13. sbit rs=P1^0; //数据/指令选择
  14. sbit rw=P1^1; //读写选择
  15. sbit e=P1^2;  //读写使能
  16. sbit psb=P1^3; //串并口选择
  17. sbit kzlb=P3^3;
  18. sbit scl=P3^4;
  19. sbit sda=P3^5;
  20. void delay(uint z)
  21. {
  22.     uint u,a0;
  23.     for(u=z;u>0;u--)
  24.         for(a0=124;a0>0;a0--);       
  25. }
  26. uchar code table[]="0123456789";
  27. uchar code we[]="年月日星期温度*C:.";
  28. uchar code uu[]="定时小时制铃声";
  29. uchar miao,fen,shi,yue,ri,nian,xq,count1,count2,time1,time2,temp;
  30. uchar eshi,efen,emiao,dshi,dfen,dmiao;
  31. uchar nian1,nian2,yue1,yue2,ri1,ri2,y,pp,mb,sc,ko,c,fp,j,
  32.         shi1,shi2,fen1,fen2,miao1,miao2;
  33. uchar w1,w2,w3,m1,nb,op,s1,aa,x,m,k,u,w,vv,ss,cb;
  34. uint a;
  35. uchar code week_code[]={0,3,3,6,1,4,6,2,5,0,3,5};
  36. void Write1302(unsigned char ); //向1302写一个字节数据
  37. void WriteSet1302(unsigned char ,unsigned char );//根据命令字,向1302写一个字节数据
  38. unsigned char Read1302(void);//从1302读一个字节数据
  39. unsigned  char  ReadSet1302(unsigned char Cmd);//根据命令字从1302读取一个字节数据
  40. void InitDS1302(void);//初始化1302
  41. void dingshi();
  42. void xiao();
  43. void xiaoshi();
  44. void sh();
  45. void init_i2c();
  46. void start();
  47. void ask();
  48. void write_byte(uchar da);
  49. uchar read_byte();
  50. void write_i2c(uchar add,uchar dat);
  51. uchar read_i2c(uchar add);
  52. void Conver_week()
  53. {
  54.         uchar temp1,temp2,year,month,day;       
  55.         year=nian&0x7f;
  56.         month=yue;
  57.         day=ri;
  58.         if(nian>>7==0)
  59.         {
  60.                 year+=0x64;
  61.         } //如果为21世纪,年份数加100
  62.         temp1=year/0x4; //所过闰年数只算1900年之后的
  63.         temp2=(year+temp1)%0x7; //为节省资源,先进行一次取余,避免数大于0xff
  64.         temp2=temp2+day+week_code[month-1];
  65.         if(year%0x4==0&&month<3)temp2-=1; //如果是闰年但不到3月则减一天
  66.         xq=temp2%0x7; //将星期数据写到指定星期变量Tim[9]
  67. }
  68. void Write1302(uchar dat)//向1302写指令
  69. {
  70.     uchar i;
  71.     T_CLK=0;            //拉低T_CLK,为脉冲上升沿写入数据做好准备
  72.     for(i=0;i<8;i++)      //连续写8个二进制位数据
  73.     {
  74.         T_IO=dat&0x01;    //取出dat的第0位数据写入1302
  75.         T_CLK=1;           //上升沿写入数据
  76.         T_CLK=0;           //重新拉低T_CLK,形成脉冲
  77.         dat>>=1;          //将dat的各数据位右移1位,准备写入下一个数据位
  78.     }   
  79. }

  80. void WriteSet1302(uchar Cmd,uchar dat)
  81. {
  82.     T_RST=0;           //禁止数据传递
  83.     T_CLK=0;          //确保写数居前T_CLK被拉低
  84.     T_RST=1;           //启动数据传输
  85.     Write1302(Cmd);  //写入命令字
  86.     Write1302((dat/10<<4)|(dat%10));  //写数据
  87.     T_CLK=1;          //将时钟电平置于已知状态
  88.     T_RST=0;           //禁止数据传递
  89. }
  90. uchar Read1302(void)
  91. {
  92.     uchar i,dat;
  93.     for(i=0;i<8;i++)   //连续读8个二进制位数据
  94.     {
  95.         dat>>=1;       //将dat的各数据位右移1位,因为先读出的是字节的最低位
  96.         if(T_IO==1)    //如果读出的数据是1
  97.         dat|=0x80;    //将1取出,写在dat的最高位
  98.         T_CLK=1;       //将T_CLK置于高电平,为下降沿读出
  99.         T_CLK=0;       //拉低T_CLK,形成脉冲下降沿
  100.      }     
  101.     return dat;        //将读出的数据返回
  102. }

  103. uchar  ReadSet1302(uchar Cmd)
  104. {
  105.     uchar temp,dat1,dat2;
  106.     T_RST=0;                 //拉低T_RST
  107.     T_CLK=0;                //确保写数居前T_CLK被拉低
  108.     T_RST=1;                 //启动数据传输
  109.     Write1302(Cmd);       //写入命令字
  110.     temp=Read1302();       //读出数据
  111.     T_CLK=1;              //将时钟电平置于已知状态
  112.     T_RST=0;               //禁止数据传递
  113.     dat1=temp/16;        //16进制转成BCD
  114.     dat2=temp%16;
  115.     temp=dat1*10+dat2;   //转换成10进制数字
  116.     return (temp);          //将读出的数据返回
  117. }

  118. void delay50us(uint t)
  119. {
  120.         uint j;
  121.         for(t;t>0;t--)
  122.                 for(j=19;j>0;j--);       
  123. }
  124. void delay50ms(uint t)
  125. {
  126.         uint j;
  127.         for(;t>0;t--)
  128.                 for(j=6245;j>0;j--);       
  129. }

  130. void w12864com(uint com)
  131. {
  132.         rw=0;
  133.         rs=0;
  134.         delay50us(1);
  135.         P0=com;
  136.         e=1;
  137.         delay50us(10);
  138.         e=0;
  139.         delay50us(2);
  140. }
  141. void w12864dat(uint dat)
  142. {
  143.         rw=0;
  144.         rs=1;
  145.         delay50us(1);
  146.         P0=dat;
  147.         e=1;
  148.         delay50us(10);
  149.         e=0;
  150.         delay50us(2);  
  151. }
  152. void initinal()
  153. {
  154.         delay50ms(2);
  155.         w12864com(0x30);
  156.         delay50us(4);
  157.         w12864com(0x30);
  158.         delay50us(4);
  159.         w12864com(0x0c);
  160.         delay50us(4);
  161.         w12864com(0x01);
  162.         delay50us(240);       
  163.         w12864com(0x06);
  164.         delay50us(10);
  165. }
  166. void display()
  167. {
  168.         uchar i;
  169.         w12864com(0x00);
  170.         delay(2);
  171.         w12864com(0x80);//
  172.         w12864dat(table[2]);
  173.         w12864dat(table[0]);

  174.         w12864com(0x82);//年
  175.         for(i=0;i<2;i++)
  176.         {
  177.                 w12864dat(we[i]);       
  178.         }       
  179.         w12864com(0x84);//月
  180.         for(i=0;i<2;i++)
  181.         {
  182.                 w12864dat(we[i+2]);       
  183.         }
  184.         w12864com(0x86);//日
  185.         for(i=0;i<2;i++)
  186.         {
  187.                 w12864dat(we[i+4]);       
  188.         }
  189.         w12864com(0x88);//星期
  190.         for(i=0;i<4;i++)
  191.         {
  192.                 w12864dat(we[i+6]);       
  193.         }
  194.         w12864com(0x9b);//温度
  195.         {
  196.                 for(i=0;i<4;i++)
  197.                 {
  198.                         w12864dat(we[i+10]);       
  199.                 }       
  200.         }
  201.         w12864com(0x9f);//*C
  202.         {
  203.                 for(i=0;i<2;i++)
  204.                 {
  205.                         w12864dat(we[i+12]);       
  206.                 }       
  207.         }
  208.         w12864com(0x93);//:::
  209.         for(i=0;i<1;i++)
  210.         {
  211.                 w12864dat(we[i+16]);       
  212.         }
  213.         w12864com(0x95);//:::
  214.         for(i=0;i<1;i++)
  215.         {
  216.                 w12864dat(we[i+16]);       
  217.         }                       
  218. }
  219. uchar w1,w2,w3,m1;
  220. void yan(uchar a)
  221. {
  222.         while(a--);
  223. }
  224. void fuwei()
  225. {
  226.         shu=1;
  227.         shu=0;
  228.         yan(60);
  229.         shu=1;
  230.         yan(8);
  231.         while(!shu);
  232. }
  233. void xie_byte(uchar a)
  234. {
  235.         uchar i=0;
  236.         for(i=8;i>0;i--)
  237.         {
  238.                 shu=1;
  239.                 _nop_();_nop_();
  240.                 shu = 0;
  241.                 _nop_();
  242.                 shu = a&0x01;          
  243.                 yan(9);
  244.                 a>>=1;
  245.         }         
  246. }
  247. uchar du_byte()
  248. {
  249.         uchar i,m;
  250.         for(i=0;i<8;i++)
  251.         {
  252.                 shu=1;
  253.                 _nop_();_nop_();
  254.                 shu = 0; // 给脉冲信号
  255.                 m>>=1;
  256.                 _nop_();
  257.                 shu=1; // 给脉冲信号
  258.                 yan(1);
  259.                 if(shu)
  260.                 m|=0x80;
  261.                 yan(9);
  262.         }
  263.         return m;
  264. }
  265. void jingdu()
  266. {
  267.         fuwei();
  268.         xie_byte(0xfe);
  269.         xie_byte(0xff);
  270.         xie_byte(0xff);
  271.         xie_byte(0x3f);
  272. }
  273. uchar du_bit()
  274. {
  275.         uchar dat=0;
  276.         shu=1;
  277.         _nop_();_nop_();
  278.         shu=0;
  279.         _nop_();_nop_();
  280.         shu=1;
  281.         _nop_();_nop_();
  282.         _nop_();_nop_();
  283.         dat=shu;
  284.         return dat;
  285. }
  286. void read18b20()
  287. {
  288.                    fuwei();
  289.                    xie_byte(0xcc);
  290.                    xie_byte(0x44);  
  291.                    while(!du_bit());
  292.                    fuwei();
  293.                    xie_byte(0xcc);
  294.                    xie_byte(0xbe);
  295.                    w1=du_byte();
  296.                    w2=du_byte();
  297.                    w3=w1;
  298.                    w1>>=4;
  299.                    w2<<=4;
  300.                    m1=w1+w2;

  301.                    w1=m1/10;   //十位
  302.                    w2=m1%10;   //个位
  303.                    w3&=0x0f;
  304.                    w3*=6.25;
  305.                    w3=w3/10;
  306. }
  307. void init_i2c()
  308. {
  309.         sda=1;
  310.         scl=1;
  311. }
  312. void start()
  313. {
  314.         sda=1;
  315.         scl=1;
  316.         sda=0;
  317. }

  318. void stop()
  319. {
  320.         sda=0;
  321.         scl=1;
  322.         sda=1;       
  323. }

  324. void ask()
  325. {
  326.         uchar i;
  327.         scl=1;
  328.         while((sda==1)&&(i<250))i++;
  329.         scl=0;
  330. }

  331. void write_byte(uchar da)
  332. {
  333.         uchar i,temp;
  334.         temp=da;
  335.         for(i=0;i<8;i++)
  336.         {
  337.                 temp<<=1;
  338.                 scl=0;       
  339.                 sda=CY;
  340.                 scl=1;               
  341.         }
  342.         scl=0;
  343.         sda=1;
  344. }

  345. uchar read_byte()
  346. {
  347.         uchar i,a;
  348.         scl=0;
  349.         sda=1;
  350.         for(i=0;i<8;i++)
  351.         {       
  352.                 scl=1;
  353.                 a=(a<<1)|sda;
  354.                 scl=0;
  355.         }
  356.         return a;
  357. }
  358. void write_i2c(uchar add,uchar dat)
  359. {
  360.         start();
  361.         write_byte(0xa0);//器件地址000
  362.         ask();
  363.         write_byte(add);
  364.         ask();
  365.         write_byte(dat);
  366.         ask();
  367.         stop();
  368. }
  369. uchar read_i2c(uchar add)
  370. {
  371.         uchar nu;
  372.         start();
  373.         write_byte(0xa0);
  374.         ask();
  375.         write_byte(add);
  376.         ask();
  377.         start();
  378.         write_byte(0xa1);
  379.         ask();
  380.         nu=read_byte();
  381.         stop();
  382.         return nu;
  383. }
  384. void main()
  385. {
  386.         init_i2c();
  387.         initinal();
  388.         display();
  389.         Write1302(0);//向1302写指令
  390.         WriteSet1302(0,0);
  391.         jingdu();
  392.                                 WriteSet1302(0x8e,0x00);    //允许写入
  393.                                 WriteSet1302(0x80,0x00);
  394.                                 WriteSet1302(0x90,0xa6);   //写充电控制寄存器.
  395.                                 WriteSet1302(0x8e,0x80);   //禁止写入
  396.         TMOD=0x11;
  397.         TH0=(65536-50000)/256;
  398.         TL0=(65536-50000)%256;
  399.         TH1=(65536-50000)/256;
  400.         TL1=(65536-50000)%256;
  401.         EA=1;
  402.         ET0=1;
  403.         ET1=1;
  404.         sc=read_i2c(0);delay(2);               
  405.         j=read_i2c(1);delay(2);               
  406.         fp=read_i2c(2);delay(2);               
  407.         ko=read_i2c(3);delay(2);               
  408.         k=read_i2c(4);delay(2);       
  409.         w=read_i2c(5);delay(2);
  410.                  ss=read_i2c(6);delay(2);         
  411.                  vv=read_i2c(7);delay(2);
  412.                  dshi=ss*10+vv;

  413.                  ss=read_i2c(8);delay(2);
  414.                  vv=read_i2c(9);delay(2);
  415.                  dfen=ss*10+vv;

  416.                  ss=read_i2c(10);delay(2);
  417.                  vv=read_i2c(11);delay(2);
  418.                  dmiao=ss*10+vv;
  419.                                 
  420.                  ss=read_i2c(12);delay(2);         
  421.                  vv=read_i2c(13);delay(2);
  422.                  eshi=ss*10+vv;

  423.                  ss=read_i2c(14);delay(2);
  424.                  vv=read_i2c(15);delay(2);
  425.                  efen=ss*10+vv;

  426.                  ss=read_i2c(16);delay(2);
  427.                  vv=read_i2c(17);delay(2);
  428.                  emiao=ss*10+vv;
  429.                  ss=vv=0;
  430.                  cb=read_i2c(18);delay(2);
  431.         while(1)
  432.         {

  433.                 if(y==1)
  434.                 {
  435.                         display();
  436.                         y=0;
  437.                 }
  438.                

  439.                 if(k==1)
  440.                 {
  441.                         if(ko==0)
  442.                         {
  443.                                 w12864com(0x91);
  444.                                 w12864dat(0x41);
  445.                         }
  446.                         if(ko==1)
  447.                         {
  448.                                 w12864com(0x91);
  449.                                 w12864dat(0x50);
  450.                         }
  451.                 }
  452.                 else
  453.                 {
  454.                         w12864com(0x91);
  455.                         w12864dat(0x02);
  456.                 }
  457.                 if(aa==1)
  458.                 {         
  459.                         w12864com(0x81);
  460.                         for(a=0;a<2;a++)
  461.                         {
  462.                                 w12864dat(0x20);                       
  463.                         }
  464.                         delay(80);

  465.                 }                               

  466.                         WriteSet1302(0x8e,0x00);
  467.                         nian=ReadSet1302(0x8d);
  468.                         WriteSet1302(0x8e,0x80);
  469.                                
  470.                 nian1=nian/10;
  471.                 nian2=nian%10;
  472.                 w12864com(0x81);
  473.                 for(a=0;a<2;a++)                         
  474.                 {
  475.                         if(a==0)
  476.                         {
  477.                                 w12864dat(table[nian1]);
  478.                         }
  479.                         if(a==1)                                 
  480.                         {
  481.                                 w12864dat(table[nian2]);
  482.                         }
  483.                 }
  484.                 if(aa==2)
  485.                 {
  486.                         w12864com(0x83);
  487.                         for(a=0;a<2;a++)
  488.                         {                                                  
  489.                                 w12864dat(0x20);       
  490.                         }
  491.                         delay(80);
  492.                 }                       


  493.                 WriteSet1302(0x8e,0x00);
  494.                 yue=ReadSet1302(0x89);
  495.                 WriteSet1302(0x8e,0x80);
  496.                 yue1=yue/10;
  497.                 yue2=yue%10;
  498.                 w12864com(0x83);
  499.                 for(a=0;a<2;a++)
  500.                 {
  501.                         if(a==0)
  502.                         {
  503.                                 w12864dat(table[yue1]);
  504.                         }
  505.                         if(a==1)
  506.                         {
  507.                                 w12864dat(table[yue2]);
  508.                         }       
  509.                 }

  510.                 if(aa==3)
  511.                 {
  512.                         w12864com(0x85);
  513.                         for(a=0;a<2;a++)
  514.                         {
  515.                                 w12864dat(0x20);
  516.                         }
  517.                         delay(80);
  518.                 }
  519.                 WriteSet1302(0x8e,0x00);
  520.                 ri=ReadSet1302(0x87);
  521.                 WriteSet1302(0x8e,0x80);
  522.                 ri1=ri/10;
  523.                 ri2=ri%10;
  524.                 w12864com(0x85);
  525.                 for(a=0;a<2;a++)
  526.                 {
  527.                         if(a==0)
  528.                         {
  529.                                 w12864dat(table[ri1]);
  530.                         }
  531.                         if(a==1)
  532.                         {               
  533.                                 w12864dat(table[ri2]);
  534.                         }       
  535.                 }
  536.                 Conver_week();
  537.                 w12864com(0x8a);
  538.                 if(xq==0)//日
  539.                 {
  540.                  w12864dat(0xc8);
  541.                  w12864dat(0xd5);
  542.                 }
  543.                 if(xq==1)//一
  544.                 {
  545.                  w12864dat(0xd2);
  546.                  w12864dat(0xbb);
  547.                 }
  548.                 if(xq==2)//二
  549.                 {
  550.                  w12864dat(0xb6);
  551.                  w12864dat(0xfe);
  552.                 }
  553.                 if(xq==3)//三
  554.                 {
  555.                  w12864dat(0xc8);
  556.                  w12864dat(0xfd);
  557.                 }
  558.                 if(xq==4)//四
  559.                 {
  560.                         w12864dat(0xcb);
  561.                         w12864dat(0xc4);
  562.                 }
  563.                 if(xq==5)//五
  564.                 {
  565.                  w12864dat(0xce);
  566.                  w12864dat(0xe5);
  567.                 }
  568.                 if(xq==6)//六
  569.                 {
  570.                  w12864dat(0xc1);
  571.                  w12864dat(0xf9);
  572.                 }
  573. if(aa==4)
  574. {
  575.                 w12864com(0x92);
  576.                 for(a=0;a<8;a++)
  577.                 {
  578.                         if(a==0)
  579.                         {

  580.                                 w12864dat(0x20);
  581.                         }
  582.                         if(a==1)
  583.                         {
  584.                                 w12864dat(0x20);
  585.                                 delay(40);
  586.                         }

  587.                         if(a==2)
  588.                         {
  589.                                 w12864dat(0x20);
  590.                         }
  591.                         if(a==3)
  592.                         {
  593.                                 WriteSet1302(0x8e,0x00);
  594.                                 fen=ReadSet1302(0x83);
  595.                                 WriteSet1302(0x8e,0x80);
  596.                                 fen1=fen/10;
  597.                                 fen2=fen%10;
  598.                                 w12864dat(table[fen1]);
  599.                         }
  600.                         if(a==4)
  601.                         {
  602.                                 w12864dat(table[fen2]);
  603.                         }
  604.                         if(a==5)
  605.                         {
  606.                                 w12864dat(we[16]);
  607.                         }
  608.                         if(a==6)
  609.                         {

  610.                                 WriteSet1302(0x8e,0x00);
  611.                                 miao=ReadSet1302(0x81);
  612.                                 WriteSet1302(0x8e,0x80);
  613.                                 miao1=miao/10;
  614.                                 miao2=miao%10;
  615.                                 w12864dat(table[miao1]);
  616.                         }
  617.                         if(a==7)
  618.                         {
  619.                                 w12864dat(table[miao2]);
  620.                         }                                                                               
  621.                 }
  622. }
  623. if(aa==5)
  624. {
  625.                 w12864com(0x92);
  626.                 for(a=0;a<8;a++)
  627.                 {
  628.                         if(a==0)
  629.                         {
  630.                                 WriteSet1302(0x8e,0x00);
  631.                                 shi=ReadSet1302(0x85);
  632.                                 WriteSet1302(0x8e,0x80);
  633.                                 if(k==1)
  634.                                 {
  635.                                          if(shi>=12)
  636.                                          {
  637.                                                  ko=1;
  638.                                                 write_i2c(3,ko);
  639.                                                 delay(2);
  640.                                                  if(shi>12)
  641.                                                 {
  642.                                                         pp=shi;
  643.                                                          pp=pp-12;
  644.                                                         shi1=pp/10;
  645.                                                         shi2=pp%10;          
  646.                                                 }
  647.                                                 else
  648.                                                 {
  649.                                                         shi1=shi/10;
  650.                                                         shi2=shi%10;
  651.                                                 }
  652.                                          }
  653.                                         else
  654.                                         {
  655.                                                 ko=0;
  656.                                                 write_i2c(3,ko);
  657.                                                 delay(2);
  658.                                                 shi1=shi/10;
  659.                                                 shi2=shi%10;
  660.                                         }
  661.                                 }
  662.                                 else
  663.                                 {
  664.                                         shi1=shi/10;
  665.                                         shi2=shi%10;
  666.                                 }
  667.                                 w12864dat(table[shi1]);
  668.                         }
  669.                         if(a==1)
  670.                         {
  671.                                 w12864dat(table[shi2]);
  672.                         }

  673.                         if(a==2)
  674.                         {
  675.                                 w12864dat(we[16]);
  676.                         }
  677.                         if(a==3)
  678.                         {
  679.                                 w12864dat(0x20);
  680.                         }
  681.                         if(a==4)
  682.                         {
  683.                                 w12864dat(0x20);
  684.                                 delay(40);
  685.                         }
  686.                         if(a==5)
  687.                         {
  688.                                 w12864dat(we[16]);
  689.                         }
  690.                         if(a==6)
  691.                         {

  692.                                 WriteSet1302(0x8e,0x00);
  693.                                 miao=ReadSet1302(0x81);
  694.                                 WriteSet1302(0x8e,0x80);
  695.                                 miao1=miao/10;
  696.                                 miao2=miao%10;
  697.                                 w12864dat(table[miao1]);
  698.                         }
  699.                         if(a==7)
  700.                         {
  701.                                 w12864dat(table[miao2]);
  702.                         }                                                                               
  703.                 }
  704. }

  705. if(aa==6)
  706. {
  707.                 w12864com(0x92);
  708.                 for(a=0;a<8;a++)
  709.                 {
  710.                         if(a==0)
  711.                         {
  712.                                 WriteSet1302(0x8e,0x00);
  713.                                 shi=ReadSet1302(0x85);
  714.                                 WriteSet1302(0x8e,0x80);
  715.                                 if(k==1)
  716.                                 {
  717.                                          if(shi>=12)
  718.                                          {
  719.                                                  ko=1;
  720.                                                 write_i2c(3,ko);
  721.                                                 delay(2);
  722.                                                  if(shi>12)
  723.                                                 {
  724.                                                         pp=shi;
  725.                                                          pp=pp-12;
  726.                                                         shi1=pp/10;
  727.                                                         shi2=pp%10;          
  728.                                                 }
  729.                                                 else
  730.                                                 {
  731.                                                         shi1=shi/10;
  732.                                                         shi2=shi%10;
  733.                                                 }
  734.                                          }
  735.                                         else
  736.                                         {
  737.                                                 ko=0;
  738.                                                 write_i2c(3,ko);
  739.                                                 delay(2);
  740.                                                 shi1=shi/10;
  741.                                                 shi2=shi%10;
  742.                                         }
  743.                                 }
  744.                                 else
  745.                                 {
  746.                                         shi1=shi/10;
  747.                                         shi2=shi%10;
  748.                                 }
  749.                                 w12864dat(table[shi1]);
  750.                         }
  751.                         if(a==1)
  752.                         {
  753.                                 w12864dat(table[shi2]);
  754.                         }

  755.                         if(a==2)
  756.                         {
  757.                                 w12864dat(we[16]);
  758.                         }
  759.                         if(a==3)
  760.                         {
  761.                                 WriteSet1302(0x8e,0x00);
  762.                                 fen=ReadSet1302(0x83);
  763.                                 WriteSet1302(0x8e,0x80);
  764.                                 fen1=fen/10;
  765.                                 fen2=fen%10;
  766.                                 w12864dat(table[fen1]);
  767.                         }
  768.                         if(a==4)
  769.                         {
  770.                                 w12864dat(table[fen2]);
  771.                         }
  772.                         if(a==5)
  773.                         {
  774.                                 w12864dat(we[16]);
  775.                         }
  776.                         if(a==6)
  777.                         {
  778.                                 w12864dat(0x20);
  779.                         }
  780.                         if(a==7)
  781.                         {
  782.                                 w12864dat(0x20);
  783.                                 delay(40);
  784.                         }                                                                               
  785.                 }       
  786. }                       

  787.                 w12864com(0x92);
  788.                 for(a=0;a<8;a++)
  789.                 {
  790.                         if(a==0)
  791.                         {
  792.                                 WriteSet1302(0x8e,0x00);
  793.                                 shi=ReadSet1302(0x85);
  794.                                 WriteSet1302(0x8e,0x80);
  795.                                 if(k==1)
  796.                                 {
  797.                                          if(shi>=12)
  798.                                          {
  799.                                                  ko=1;
  800.                                                 write_i2c(3,ko);
  801.                                                 delay(2);
  802.                                                  if(shi>12)
  803.                                                 {
  804.                                                         pp=shi;
  805.                                                          pp=pp-12;
  806.                                                         shi1=pp/10;
  807.                                                         shi2=pp%10;          
  808.                                                 }
  809.                                                 else
  810.                                                 {
  811.                                                         shi1=shi/10;
  812.                                                         shi2=shi%10;
  813.                                                 }
  814.                                          }
  815.                                         else
  816.                                         {
  817.                                                 ko=0;
  818.                                                 write_i2c(3,ko);
  819.                                                 delay(2);
  820.                                                 shi1=shi/10;
  821.                                                 shi2=shi%10;
  822.                                         }
  823.                                 }
  824.                                 else
  825.                                 {
  826.                                         shi1=shi/10;
  827.                                         shi2=shi%10;
  828.                                 }
  829.                                 w12864dat(table[shi1]);
  830.                         }
  831.                         if(a==1)
  832.                         {
  833.                                 w12864dat(table[shi2]);
  834.                         }

  835.                         if(a==2)
  836.                         {
  837.                                 w12864dat(we[16]);
  838.                         }
  839.                         if(a==3)
  840.                         {
  841.                                 WriteSet1302(0x8e,0x00);
  842.                                 fen=ReadSet1302(0x83);
  843.                                 WriteSet1302(0x8e,0x80);
  844.                                 fen1=fen/10;
  845.                                 fen2=fen%10;
  846.                                 w12864dat(table[fen1]);
  847.                         }
  848.                         if(a==4)
  849.                         {
  850.                                 w12864dat(table[fen2]);
  851.                         }
  852.                         if(a==5)
  853.                         {
  854.                                 w12864dat(we[16]);
  855.                         }
  856.                         if(a==6)
  857.                         {

  858.                                 WriteSet1302(0x8e,0x00);
  859.                                 miao=ReadSet1302(0x81);
  860.                                 WriteSet1302(0x8e,0x80);
  861.                                 miao1=miao/10;
  862.                                 miao2=miao%10;
  863.                                 w12864dat(table[miao1]);
  864.                         }
  865.                         if(a==7)
  866.                         {
  867.                                 w12864dat(table[miao2]);
  868.                         }                                                                               
  869.                 }
  870.                
  871.                 read18b20();
  872.                 w12864com(0x9d);
  873.                 for(a=0;a<4;a++)
  874.                 {
  875.                         if(a==0)
  876.                         {
  877.                                 w12864dat(table[w1]);
  878.                         }
  879.                         if(a==1)
  880.                         {
  881.                                 w12864dat(table[w2]);
  882.                         }
  883.                         if(a==2)
  884.                         {
  885.                                 w12864dat(we[17]);
  886.                         }
  887.                         if(a==3)
  888.                         {
  889.                                 w12864dat(table[w3]);
  890.                         }                                                       
  891.                 }
  892.                 if(s1==0)
  893.                 {
  894.                         x=0;
  895.                 }
  896.                 if(k1==0)
  897.                 {
  898.                         delay(2);
  899.                         while(!k1==1);
  900.                         s1++;
  901.                         if(s1==5)
  902.                         {
  903.                                 s1=0;
  904.                         }
  905.                 }
  906.                 if(s1==1)//设置时间
  907.                 {
  908.                         if(k2==0)       
  909.                         {
  910.                                 delay(2);
  911.                                 while(!k2==1);
  912.                                 aa++;
  913.                                 if(aa==7)
  914.                                 {
  915.                                         s1=0;
  916.                                         aa=0;                               
  917.                                 }                       
  918.                         }
  919.                 w12864com(0x91);
  920.                 w12864dat(0x20);
  921.                 delay(50);
  922.                 }
  923.                 if(s1==2)//定时
  924.                 {
  925.                         if((aa==1)||(aa==2)||(aa==3)||(aa==4)||(aa==5)||(aa==6))
  926.                         {s1--;}
  927.                         if(aa==0)
  928.                         {
  929.                                 u=1;
  930.                          dingshi();
  931.                          }
  932.                 }

  933.                 if(s1==0)//小时制设置
  934.                 {
  935.                         if(k2==0)
  936.                         {
  937.                                 while(!k2==1);
  938.                                 m=1;
  939.                                 xiaoshi();
  940.                         }
  941.                 }
  942.                 if(s1==0)
  943.                 {
  944.                          if(k3==0)
  945.                          {
  946.                                 while(!k3==1);
  947.                                  w++;
  948.                                 write_i2c(5,w);
  949.                                 delay(2);                                                                       
  950.                          }
  951.                  }
  952.                 vv=shi;
  953.                 if(k==1)//12小时
  954.                 {
  955.                         if(ko==1)//下午
  956.                         {
  957.                                 if(vv<12)
  958.                                 {
  959.                                         vv=vv+12;
  960.                                 }
  961.                         }
  962.                 }               
  963.                 if(w==1)//开定时1
  964.                 {
  965.                         w12864com(0x8c);
  966.                         w12864dat(0x41);
  967.                         w12864dat(0x03);
  968.                         w12864com(0x8e);
  969.                         w12864dat(0x20);
  970.                         w12864dat(0x20);

  971.                                 w12864com(0x97);
  972.                                 w12864dat(0x0e);

  973.                         if(dshi==vv)
  974.                         {       
  975.                                 if(dfen==fen)
  976.                                 {
  977.                                         if(dmiao==miao)
  978.                                         {
  979.                                                 if(cb==1)
  980.                                                 {
  981.                                                         TR0=1;
  982.                                                
  983.                                                 }
  984.                                                 if(cb==2)
  985.                                                 {
  986.                                                         TR1=1;
  987.                                                 }
  988.                                         }
  989.                                 }
  990.                         }                                                                                                                                               
  991.                 }
  992.                 if(w==2)//开定时2
  993.                 {
  994.                         w12864com(0x8c);
  995.                         w12864dat(0x20);
  996.                         w12864dat(0x20);
  997.                         w12864com(0x8e);
  998.                         w12864dat(0x42);
  999.                         w12864dat(0x03);

  1000.                         w12864com(0x97);
  1001.                         w12864dat(0x0e);
  1002.                         if(eshi==vv)
  1003.                         {
  1004.                                 if(efen==fen)
  1005.                                 {
  1006.                                         if(emiao==miao)
  1007.                                         {
  1008.                                                 if(cb==1)
  1009.                                                 {
  1010.                                                         TR0=1;
  1011.                                                 }
  1012.                                                 if(cb==2)
  1013.                                                 {
  1014.                                                         TR1=1;
  1015.                                                 }
  1016.                                         }
  1017.                                 }
  1018.                         }                                       
  1019.                 }
  1020.                 if(w==3)//定时双开
  1021.                 {
  1022.                         w12864com(0x8c);
  1023.                         w12864dat(0x41);
  1024.                         w12864dat(0x03);
  1025.                         w12864com(0x8e);
  1026.                         w12864dat(0x42);
  1027.                         w12864dat(0x03);

  1028.                                 w12864com(0x97);
  1029.                                 w12864dat(0x0e);
  1030.                         if(dshi==vv)
  1031.                         {
  1032.                                 if(dfen==fen)
  1033.                                 {
  1034.                                         if(dmiao==miao)
  1035.                                         {
  1036.                                                 if(cb==1)
  1037.                                                 {
  1038.                                                         TR0=1;
  1039.                                                 }
  1040.                                                 if(cb==2)
  1041.                                                 {
  1042.                                                         TR1=1;
  1043.                                                 }
  1044.                                         }
  1045.                                 }
  1046.                         }
  1047.                                                                                                
  1048.                         if(eshi==vv)
  1049.                         {
  1050.                                 if(efen==fen)
  1051.                                 {
  1052.                                         if(emiao==miao)
  1053.                                         {
  1054.                                                 if(cb==1)
  1055.                                                 {
  1056.                                                         TR0=1;
  1057.                                                 }
  1058.                                                 if(cb==2)
  1059.                                                 {
  1060.                                                         TR1=1;
  1061.                                                 }
  1062.                                         }
  1063.                                 }
  1064.                         }                                       
  1065.                 }
  1066.                 if(w==4)//定时关
  1067.                 {
  1068.                         w=0;
  1069.                         write_i2c(5,w);
  1070.                         delay(2);
  1071.                         w12864com(0x8c);
  1072.                         w12864dat(0x20);
  1073.                         w12864dat(0x20);
  1074.                         w12864com(0x8e);
  1075.                         w12864dat(0x20);
  1076.                         w12864dat(0x20);

  1077.                         w12864com(0x97);//定时指示
  1078.                         w12864dat(0x20);
  1079.                 }

  1080.                 if(aa==1)
  1081.                 {
  1082.                         if(k3==0)
  1083.                         {
  1084.                                 while(!k3==1);
  1085.                                 ss=nian;
  1086.                                 ss++;
  1087.                                 if(ss>=100)
  1088.                                 {ss=0;}
  1089.                                 WriteSet1302(0x8e,0x00);    //允许写入
  1090.                                 WriteSet1302(0x8c,ss);
  1091.                                 WriteSet1302(0x90,0xa6);   //写充电控制寄存器.
  1092.                                 WriteSet1302(0x8e,0x80);   //禁止写入  
  1093.        
  1094.                         }
  1095.                 }
  1096.                 if(aa==2)
  1097.                 {
  1098.                         if(k3==0)
  1099.                         {
  1100.                                 while(!k3==1);
  1101.                                 ss=yue;
  1102.                                 ss++;
  1103.                                 if(ss>=13)
  1104.                                 {
  1105.                                 ss=1;
  1106.                                 }
  1107.                                 WriteSet1302(0x8e,0x00);    //允许写入
  1108.                                 WriteSet1302(0x88,ss);
  1109.                                 WriteSet1302(0x90,0xa6);   //写充电控制寄存器.
  1110.                                 WriteSet1302(0x8e,0x80);   //禁止写入  
  1111.                         }
  1112.                 }
  1113.                 if(aa==3)
  1114.                 {
  1115.                         if(k3==0)
  1116.                         {
  1117.                                 while(!k3==1);
  1118.                                 ss=ri;
  1119.                                 ss++;
  1120.                                 if((yue==1)||(yue==3)||(yue==5)||(yue==7)||(yue==8)||(yue==10)||(yue==12))
  1121.                                 {
  1122.                                         if(ss>=32)
  1123.                                         ss=1;
  1124.                                 }
  1125.                                 if((yue==4)||(yue==6)||(yue==9)||(yue==11))
  1126.                                 {
  1127.                                         if(ss>=31)
  1128.                                         ss=1;
  1129.                                 }
  1130.                                 if(yue==2)
  1131.                                 {
  1132.                                         vv=nian%4;
  1133.                                         if(vv==0)
  1134.                                         {
  1135.                                                 if(ss>=30)
  1136.                                                 {
  1137.                                                         ss=1;
  1138.                                                 }
  1139.                                         }
  1140.                                         else
  1141.                                         {
  1142.                                                 if(ss>=29)
  1143.                                                 {
  1144.                                                         ss=1;
  1145.                                                 }                                       
  1146.                                         }
  1147.                                 }
  1148.                                 WriteSet1302(0x8e,0x00);    //允许写入
  1149.                                 WriteSet1302(0x86,ss);
  1150.                                 WriteSet1302(0x90,0xa6);   //写充电控制寄存器.
  1151.                                 WriteSet1302(0x8e,0x80);   //禁止写入  
  1152.                         }
  1153.                 }
  1154.                 if(aa==4)
  1155.                 {
  1156.                         if(k3==0)
  1157.                         {
  1158.                                 while(!k3==1);
  1159.                                 if(k==1)//12小时
  1160.                                 {
  1161.                                         if(ko==1)//下午
  1162.                                         {
  1163.                                                 if(shi<12)
  1164.                                                 {
  1165.                                                         shi=shi+12;
  1166.                                                 }
  1167.                                                 else
  1168.                                                 {
  1169.                                                         ss=shi;
  1170.                                                 }
  1171.                                         }
  1172.                                         else
  1173.                                         {
  1174.                                                 ss=shi;
  1175.                                         }
  1176.                                 }
  1177.                                 else
  1178.                                 {
  1179.                                         ss=shi;
  1180.                                 }
  1181.                                 ss++;
  1182.                                 if(ss>=24)
  1183.                                 {ss=0;}
  1184.                                 WriteSet1302(0x8e,0x00);    //允许写入
  1185.                                 WriteSet1302(0x84,ss);
  1186.                                 WriteSet1302(0x90,0xa6);   //写充电控制寄存器.
  1187.                                 WriteSet1302(0x8e,0x80);   //禁止写入  
  1188.                         }
  1189.                 }
  1190.                 if(aa==5)
  1191.                 {
  1192.                         if(k3==0)
  1193.                         {
  1194.                                 while(!k3==1);
  1195.                                 ss=fen;
  1196.                                 ss++;
  1197.                                 if(ss>=60)
  1198.                                 {ss=0;}
  1199.                                 WriteSet1302(0x8e,0x00);    //允许写入
  1200.                                 WriteSet1302(0x82,ss);
  1201.                                 WriteSet1302(0x90,0xa6);   //写充电控制寄存器.
  1202.                                 WriteSet1302(0x8e,0x80);   //禁止写入  
  1203.                         }
  1204.                 }
  1205.                 if(aa==6)
  1206.                 {
  1207.                         if(k3==0)
  1208.                         {
  1209.                                 while(!k3==1);
  1210.                                 ss=miao;
  1211.                                 ss++;
  1212.                                 if(ss>=60)
  1213.                                 {ss=0;}
  1214.                                 WriteSet1302(0x8e,0x00);    //允许写入
  1215.                                 WriteSet1302(0x80,ss);
  1216.                                 WriteSet1302(0x90,0xa6);   //写充电控制寄存器.
  1217.                                 WriteSet1302(0x8e,0x80);   //禁止写入  
  1218.                         }
  1219.                 }

  1220.                        
  1221.         }                                                                                                                                               
  1222. }
  1223. void dingshi()
  1224. {
  1225.         uchar e1,e2,f1,f2,g1,g2,u1,u2;
  1226.         uchar ee,ff,gg,z,ww,ab,mzk,es;
  1227.         uchar bb1,bb2,cc1,cc2,dd1,dd2;
  1228.         uchar bb3,bb4,cc3,cc4,dd3,dd4;
  1229.                  c=1;
  1230.                 mzk=0;                        
  1231.         w12864com(0x00);
  1232.         delay(2);

  1233.         w12864com(0x98);//定时1
  1234.                 for(z=0;z<4;z++)
  1235.                 {
  1236.                         w12864dat(uu[z]);       
  1237.                 }

  1238.                  if(c==1)
  1239.                  {
  1240.                         w12864com(0x9c);
  1241.                         w12864dat(0x41);
  1242.                         w12864dat(0x03);
  1243.                        
  1244.                         w12864com(0x9a);
  1245.                         w12864dat(table[1]);
  1246.                                          
  1247.                  }

  1248. if(c==1)
  1249. {
  1250.                  e1=bb3=read_i2c(6);delay(2);         
  1251.                  e2=bb4=read_i2c(7);delay(2);
  1252.                  f1=cc3=read_i2c(8);delay(2);
  1253.                  f2=cc4=read_i2c(9);delay(2);
  1254.                  g1=dd3=read_i2c(10);delay(2);
  1255.                  g2=dd4=read_i2c(11);delay(2);
  1256.         u1=ee=bb3*10+bb4;ff=cc3*10+cc4;gg=dd3*10+dd4;
  1257.         if(k==1)
  1258.         {
  1259.                 es=1;
  1260.                 if(u1>=12)
  1261.                 {
  1262.                         es=2;
  1263.                         if(u1>12)
  1264.                         {
  1265.                                 ab=u1;
  1266.                                 ab=ab-12;
  1267.                                  e1=bb3=ab/10;
  1268.                                  e2=bb4=ab%10;
  1269.                         }               
  1270.                 }
  1271.         }
  1272. }
  1273.                  bb1=read_i2c(12);delay(2);         
  1274.                  bb2=read_i2c(13);delay(2);
  1275.                  cc1=read_i2c(14);delay(2);
  1276.                  cc2=read_i2c(15);delay(2);
  1277.                  dd1=read_i2c(16);delay(2);
  1278.                  dd2=read_i2c(17);delay(2);
  1279.         u2=bb1*10+bb2;
  1280.         if(k==1)
  1281.         {
  1282.                 if(u2>=12)
  1283.                 {       
  1284.                         if(u2>12)
  1285.                         {
  1286.                                 ab=u2;
  1287.                                 ab=ab-12;
  1288.                                  bb1=ab/10;
  1289.                                  bb2=ab%10;
  1290.                         }
  1291.                 }
  1292.         }
  1293.                 w12864com(0x92);
  1294.                 for(a=0;a<8;a++)
  1295.                 {
  1296.                         if(a==0)
  1297.                         {

  1298.                                 w12864dat(table[bb1]);
  1299.                         }
  1300.                         if(a==1)
  1301.                         {
  1302.                                 w12864dat(table[bb2]);
  1303.                         }

  1304.                         if(a==2)
  1305.                         {
  1306.                                 w12864dat(we[16]);
  1307.                         }
  1308.                         if(a==3)
  1309.                         {

  1310.                                 w12864dat(table[cc1]);
  1311.                         }
  1312.                         if(a==4)
  1313.                         {
  1314.                                 w12864dat(table[cc2]);
  1315.                         }
  1316.                         if(a==5)
  1317.                         {
  1318.                                 w12864dat(we[16]);
  1319.                         }
  1320.                         if(a==6)
  1321.                         {

  1322.                                 w12864dat(table[dd1]);
  1323.                         }
  1324.                         if(a==7)
  1325.                         {
  1326.                                 w12864dat(table[dd2]);
  1327.                         }                                                                               
  1328.                 }

  1329. if(k==1)
  1330. {
  1331.         if(u1>=12)
  1332.         {
  1333.                 es=2;
  1334.                 w12864com(0x80);
  1335.                 w12864dat(0x50);
  1336.                 w12864com(0x89);
  1337.                 w12864dat(0x50);
  1338.         }
  1339.         else
  1340.         {
  1341.                 es=1;
  1342.                 w12864com(0x80);
  1343.                 w12864dat(0x41);
  1344.                 w12864com(0x89);
  1345.                 w12864dat(0x41);                               
  1346.         }

  1347.         if(u2>=12)
  1348.         {
  1349.                 w12864com(0x90);
  1350.                 w12864dat(0x50);
  1351.         }
  1352.         else
  1353.         {
  1354.                 w12864com(0x90);
  1355.                 w12864dat(0x41);               
  1356.         }
  1357. }

  1358.         while(u)
  1359.         {

  1360.                 w12864com(0x88);
  1361.                 w12864dat(0x03);
  1362.                 delay(2);
  1363.                  if(c==1)
  1364.                  {
  1365.                         w12864com(0x9c);
  1366.                         w12864dat(0x41);
  1367.                         w12864dat(0x03);       
  1368.                         w12864com(0x9a);
  1369.                         w12864dat(table[1]);
  1370.                        
  1371.                         w12864com(0x91);
  1372.                         w12864dat(0x20);
  1373.                         w12864dat(0x20);
  1374.                         w12864com(0x81);
  1375.                         w12864dat(0x20);
  1376.                         w12864dat(0x10);
  1377.                                          
  1378.                  }
  1379.                  if(c==2)
  1380.                  {
  1381.                         w12864com(0x9c);
  1382.                         w12864dat(0x42);
  1383.                         w12864dat(0x03);
  1384.                         w12864com(0x9a);
  1385.                         w12864dat(table[2]);
  1386.                        
  1387.                         w12864com(0x91);
  1388.                         w12864dat(0x20);
  1389.                         w12864dat(0x10);
  1390.                         w12864com(0x81);
  1391.                         w12864dat(0x20);
  1392.                         w12864dat(0x20);
  1393.                         if(mzk==0)
  1394.                         {
  1395.                                 mzk=1;
  1396.                                 w12864com(0x8a);
  1397.                                 for(a=0;a<8;a++)
  1398.                                 {
  1399.                                         if(a==0)
  1400.                                         {
  1401.                
  1402.                                                 w12864dat(table[bb1]);
  1403.                                         }
  1404.                                         if(a==1)
  1405.                                         {
  1406.                                                 w12864dat(table[bb2]);
  1407.                                         }
  1408.                
  1409.                                         if(a==2)
  1410.                                         {
  1411.                                                 w12864dat(we[16]);
  1412.                                         }
  1413.                                         if(a==3)
  1414.                                         {
  1415.                
  1416.                                                 w12864dat(table[cc1]);
  1417.                                         }
  1418.                                         if(a==4)
  1419.                                         {
  1420.                                                 w12864dat(table[cc2]);
  1421.                                         }
  1422.                                         if(a==5)
  1423.                                         {
  1424.                                                 w12864dat(we[16]);
  1425.                                         }
  1426.                                         if(a==6)
  1427.                                         {
  1428.                
  1429.                                                 w12864dat(table[dd1]);
  1430.                                         }
  1431.                                         if(a==7)
  1432.                                         {
  1433.                                                 w12864dat(table[dd2]);
  1434.                                         }                                                                               
  1435.                                 }
  1436.                                 e1=bb1;e2=bb2;f1=cc1;f2=cc2;g1=dd1;g2=dd2;
  1437.                                 ee=bb1*10+bb2;ff=cc1*10+cc2;gg=dd1*10+dd2;
  1438.                                 if(k==1)
  1439.                                 {
  1440.                                         es=1;
  1441.                                         if(u2>=12)
  1442.                                         {
  1443.                                                 es=2;
  1444.                                                 ee=ee+12;
  1445.                                         }
  1446.                                 }

  1447.                         }                                         
  1448.                  }         
  1449.                 if(k==1)
  1450.                 {
  1451.                         if(es==1)
  1452.                         {
  1453.                                 w12864com(0x89);
  1454.                                 w12864dat(0x41);               
  1455.                         }
  1456.                          if(es==2)
  1457.                         {
  1458.                                 w12864com(0x89);
  1459.                                 w12864dat(0x50);                                                       
  1460.                         }
  1461.                 }
  1462.                 if(x==1)
  1463.                 {
  1464.                         if(k3==0)
  1465.                         {
  1466.                                 while(!k3==1);
  1467.                                 ee++;
  1468.                                 if(ee>=24)
  1469.                                 {
  1470.                                  ee=0;
  1471.                                 }
  1472.                                 if(k==1)
  1473.                                 {
  1474.                                          if(ee==12)
  1475.                                          {
  1476.                                                  es=2;
  1477.                                                 e1=ee/10;
  1478.                                                 e2=ee%10;                                                                                                       
  1479.                                          }
  1480.        
  1481.                                          if(ee<12)
  1482.                                          {
  1483.                                                  es=1;
  1484.                                                 e1=ee/10;
  1485.                                                 e2=ee%10;               
  1486.                                          }

  1487.                                          if(ee>12)
  1488.                                         {
  1489.                                                 es=2;
  1490.                                                 ww=ee;
  1491.                                                  ww=ww-12;
  1492.                                                 e1=ww/10;
  1493.                                                 e2=ww%10;                                                                                                                                                                                                          
  1494.                                         }
  1495.                                 }
  1496.                                 else
  1497.                                 {
  1498.                                         e1=ee/10;
  1499.                                         e2=ee%10;
  1500.                                 }       

  1501.                                 if(c==1)
  1502.                                 {
  1503.                                         if(k==1)
  1504.                                         {
  1505.                                                 if(es==1)
  1506.                                                 {                                                       
  1507.                                                         w12864com(0x80);
  1508.                                                         w12864dat(0x41);
  1509.                                                 }
  1510.                                                 if(es==2)
  1511.                                                 {                                                       
  1512.                                                         w12864com(0x80);
  1513.                                                         w12864dat(0x50);
  1514.                                                 }
  1515.                                         }
  1516.                                         bb3=e1;
  1517.                                         bb4=e2;                                                                                                               
  1518.                                 }
  1519.                                 if(c==2)
  1520.                                 {
  1521.                                         if(k==1)
  1522.                                         {
  1523.                                                 if(es==1)
  1524.                                                 {                                                                                                       
  1525.                                                         w12864com(0x90);
  1526.                                                         w12864dat(0x41);
  1527.                                                 }
  1528.                                                 if(es==2)
  1529.                                                 {                                                                                                       
  1530.                                                         w12864com(0x90);
  1531.                                                         w12864dat(0x50);
  1532.                                                 }
  1533.                                         }                       

  1534.                                         bb1=e1;
  1535.                                         bb2=e2;                                                                                               
  1536.                                 }
  1537.                         }
  1538.                 }
  1539.                
  1540.                 if(x==2)
  1541.                 {
  1542.                         if(k3==0)
  1543.                         {
  1544.                                 while(!k3==1);
  1545.                                 ff++;
  1546.                                 if(ff>=60)
  1547.                                 {
  1548.                                  ff=0;
  1549.                                 }
  1550.                                 f1=ff/10;
  1551.                                 f2=ff%10;
  1552.                                 if(c==1)
  1553.                                 {
  1554.                                         cc3=f1;
  1555.                                         cc4=f2;                                               
  1556.                                 }
  1557.                                 if(c==2)
  1558.                                 {
  1559.                                         cc1=f1;
  1560.                                         cc2=f2;
  1561.                                 }
  1562.                         }
  1563.                 }
  1564.                 if(x==3)
  1565.                 {
  1566.                         if(k3==0)
  1567.                         {
  1568.                                 while(!k3==1);
  1569.                                 gg++;
  1570.                                 if(gg>=60)
  1571.                                 {
  1572.                                  gg=0;
  1573.                                 }
  1574.                                 g1=gg/10;
  1575.                                 g2=gg%10;
  1576.                                 if(c==1)
  1577.                                 {
  1578.                                         dd3=g1;
  1579.                                         dd4=g2;                                       
  1580.                                 }
  1581.                                 if(c==2)
  1582.                                 {
  1583.                                         dd1=g1;
  1584.                                         dd2=g2;
  1585.                                 }
  1586.                         }
  1587.                 }
  1588.        
  1589.                 w12864com(0x8a);
  1590.                 for(a=0;a<8;a++)
  1591.                 {
  1592.                         if(a==0)
  1593.                         {

  1594.                                 w12864dat(table[e1]);
  1595.                         }
  1596.                         if(a==1)
  1597.                         {
  1598.                                 w12864dat(table[e2]);
  1599.                         }

  1600.                         if(a==2)
  1601.                         {
  1602.                                 w12864dat(we[16]);
  1603.                         }
  1604.                         if(a==3)
  1605.                         {

  1606.                                 w12864dat(table[f1]);
  1607.                         }
  1608.                         if(a==4)
  1609.                         {
  1610.                                 w12864dat(table[f2]);
  1611.                         }
  1612.                         if(a==5)
  1613.                         {
  1614.                                 w12864dat(we[16]);
  1615.                         }
  1616.                         if(a==6)
  1617.                         {

  1618.                                 w12864dat(table[g1]);
  1619.                         }
  1620.                         if(a==7)
  1621.                         {
  1622.                                 w12864dat(table[g2]);
  1623.                         }                                                                               
  1624.                 }
  1625.                 delay(80);

  1626.                 if(x==1)
  1627.                 {
  1628.                         w12864com(0x8a);
  1629.                         for(a=0;a<8;a++)
  1630.                         {
  1631.                                 if(a==0)
  1632.                                 {
  1633.        
  1634.                                         w12864dat(0x20);
  1635.                                 }
  1636.                                 if(a==1)
  1637.                                 {
  1638.                                         w12864dat(0x20);
  1639.                                 }
  1640.        
  1641.                                 if(a==2)
  1642.                                 {
  1643.                                         w12864dat(we[16]);
  1644.                                 }
  1645.                                 if(a==3)
  1646.                                 {
  1647.        
  1648.                                         w12864dat(table[f1]);
  1649.                                 }
  1650.                                 if(a==4)
  1651.                                 {
  1652.                                         w12864dat(table[f2]);
  1653.                                 }
  1654.                                 if(a==5)
  1655.                                 {
  1656.                                         w12864dat(we[16]);
  1657.                                 }
  1658.                                 if(a==6)
  1659.                                 {
  1660.        
  1661.                                         w12864dat(table[g1]);
  1662.                                 }
  1663.                                 if(a==7)
  1664.                                 {
  1665.                                         w12864dat(table[g2]);
  1666.                                 }                                                                               
  1667.                         }
  1668.                 }

  1669.                 if(x==2)
  1670.                 {
  1671.                         w12864com(0x8a);
  1672.                         for(a=0;a<8;a++)
  1673.                         {
  1674.                                 if(a==0)
  1675.                                 {
  1676.        
  1677.                                         w12864dat(table[e1]);
  1678.                                 }
  1679.                                 if(a==1)
  1680.                                 {
  1681.                                         w12864dat(table[e2]);
  1682.                                 }
  1683.        
  1684.                                 if(a==2)
  1685.                                 {
  1686.                                         w12864dat(we[16]);
  1687.                                 }
  1688.                                 if(a==3)
  1689.                                 {
  1690.        
  1691.                                         w12864dat(0x20);
  1692.                                 }
  1693.                                 if(a==4)
  1694.                                 {
  1695.                                         w12864dat(0x20);
  1696.                                 }
  1697.                                 if(a==5)
  1698.                                 {
  1699.                                         w12864dat(we[16]);
  1700.                                 }
  1701.                                 if(a==6)
  1702.                                 {
  1703.        
  1704.                                         w12864dat(table[g1]);
  1705.                                 }
  1706.                                 if(a==7)
  1707.                                 {
  1708.                                         w12864dat(table[g2]);
  1709.                                 }                                                                               
  1710.                         }       
  1711.                 }

  1712.                 if(x==3)
  1713.                 {
  1714.                         w12864com(0x8a);
  1715.                         for(a=0;a<8;a++)
  1716.                         {
  1717.                                 if(a==0)
  1718.                                 {
  1719.        
  1720.                                         w12864dat(table[e1]);
  1721.                                 }
  1722.                                 if(a==1)
  1723.                                 {
  1724.                                         w12864dat(table[e2]);
  1725.                                 }
  1726.        
  1727.                                 if(a==2)
  1728.                                 {
  1729.                                         w12864dat(we[16]);
  1730.                                 }
  1731.                                 if(a==3)
  1732.                                 {
  1733.        
  1734.                                         w12864dat(table[f1]);
  1735.                                 }
  1736.                                 if(a==4)
  1737.                                 {
  1738.                                         w12864dat(table[f2]);
  1739.                                 }
  1740.                                 if(a==5)
  1741.                                 {
  1742.                                         w12864dat(we[16]);
  1743.                                 }
  1744.                                 if(a==6)
  1745.                                 {
  1746.        
  1747.                                         w12864dat(0x20);
  1748.                                 }
  1749.                                 if(a==7)
  1750.                                 {
  1751.                                         w12864dat(0x20);
  1752.                                 }                                                                               
  1753.                         }               
  1754.                 }
  1755.                   delay(50);


  1756.                 w12864com(0x92);
  1757.                 for(a=0;a<8;a++)
  1758.                 {
  1759.                         if(a==0)
  1760.                         {

  1761.                                 w12864dat(table[bb1]);
  1762.                         }
  1763.                         if(a==1)
  1764.                         {
  1765.                                 w12864dat(table[bb2]);
  1766.                         }

  1767.                         if(a==2)
  1768.                         {
  1769.                                 w12864dat(we[16]);
  1770.                         }
  1771.                         if(a==3)
  1772.                         {

  1773.                                 w12864dat(table[cc1]);
  1774.                         }
  1775.                         if(a==4)
  1776.                         {
  1777.                                 w12864dat(table[cc2]);
  1778.                         }
  1779.                         if(a==5)
  1780.                         {
  1781.                                 w12864dat(we[16]);
  1782.                         }
  1783.                         if(a==6)
  1784.                         {

  1785.                                 w12864dat(table[dd1]);
  1786.                         }
  1787.                         if(a==7)
  1788.                         {
  1789.                                 w12864dat(table[dd2]);
  1790.                         }                                                                               
  1791.                 }


  1792.                 w12864com(0x82);
  1793.                 for(a=0;a<8;a++)
  1794.                 {
  1795.                         if(a==0)
  1796.                         {

  1797.                                 w12864dat(table[bb3]);
  1798.                         }
  1799.                         if(a==1)
  1800.                         {
  1801.                                 w12864dat(table[bb4]);
  1802.                         }

  1803.                         if(a==2)
  1804.                         {
  1805.                                 w12864dat(we[16]);
  1806.                         }
  1807.                         if(a==3)
  1808.                         {

  1809.                                 w12864dat(table[cc3]);
  1810.                         }
  1811.                         if(a==4)
  1812.                         {
  1813.                                 w12864dat(table[cc4]);
  1814.                         }
  1815.                         if(a==5)
  1816.                         {
  1817.                                 w12864dat(we[16]);
  1818.                         }
  1819.                         if(a==6)
  1820.                         {

  1821.                                 w12864dat(table[dd3]);
  1822.                         }
  1823.                         if(a==7)
  1824.                         {
  1825.                                 w12864dat(table[dd4]);
  1826.                         }                                                                               
  1827.                 }
  1828.                 if(k2==0)
  1829.                 {
  1830.                         while(!k2==1);
  1831.                         x++;
  1832.                         if(x==4)
  1833.                         {
  1834.                                 x=0;
  1835.                                 u=0;
  1836.                                 mzk=0;
  1837.                                 s1=0;
  1838.                                 y=1;

  1839.                                 if(c==1)
  1840.                                 {
  1841.                                         w=1;
  1842.                                         write_i2c(5,w);
  1843.                                         delay(2);
  1844.                                         e1=ee/10;
  1845.                                         e2=ee%10;
  1846.                                          f1=ff/10;
  1847.                                         f2=ff%10;
  1848.                                         g1=gg/10;
  1849.                                         g2=gg%10;
  1850.                                         write_i2c(6,e1);delay(2);               
  1851.                                         write_i2c(7,e2);delay(2);
  1852.                                         write_i2c(8,f1);delay(2);
  1853.                                         write_i2c(9,f2);delay(2);
  1854.                                         write_i2c(10,g1);delay(2);                               
  1855.                                         write_i2c(11,g2);delay(2);               
  1856.                                         dshi=ee;
  1857.                                         dfen=ff;
  1858.                                         dmiao=gg;
  1859.                                         delay(5);                                                                                                                                                                                                                                                       
  1860.                                 }
  1861.                                 if(c==2)
  1862.                                 {
  1863.                                         w=2;
  1864.                                         write_i2c(5,w);
  1865.                                         delay(2);

  1866.                                         e1=ee/10;
  1867.                                         e2=ee%10;
  1868.                                          f1=ff/10;
  1869.                                         f2=ff%10;
  1870.                                         g1=gg/10;
  1871.                                         g2=gg%10;
  1872.                                         write_i2c(12,e1);delay(2);               
  1873.                                         write_i2c(13,e2);delay(2);
  1874.                                         write_i2c(14,f1);delay(2);
  1875.                                         write_i2c(15,f2);delay(2);
  1876.                                         write_i2c(16,g1);delay(2);                               
  1877.                                         write_i2c(17,g2);delay(2);
  1878.                                         eshi=ee;
  1879.                                         efen=ff;
  1880.                                         emiao=gg;                                       
  1881.                                         delay(5);                                               
  1882.                                 }
  1883.                         }
  1884.                 }
  1885.                 if(k1==0)
  1886.                 {
  1887.                         delay(2);
  1888.                         while(!k1==1);
  1889.                         s1++;
  1890.                         if(s1==3)
  1891.                         {
  1892.                                 c++;
  1893.                                 if(c==3)
  1894.                                 {
  1895.                                         c=1;
  1896.                                 }
  1897.                         }
  1898.                         if(s1==4)
  1899.                         {
  1900.                                 x=0;
  1901.                                 u=0;
  1902.                                 y=1;
  1903.                                 s1=0;
  1904.                                 mzk=0;
  1905.                         }
  1906.                 }

  1907.          }
  1908. }
  1909. void xiaoshi()
  1910. {
  1911.         uchar tt;
  1912.         w12864com(0x00);
  1913.         delay(2);

  1914.                 w12864com(0x82);
  1915.                 w12864dat(table[1]);
  1916.                 w12864dat(table[2]);
  1917.                 for(tt=0;tt<6;tt++)
  1918.                 {
  1919.                         w12864dat(uu[tt+4]);
  1920.                 }
  1921.                
  1922.                 w12864com(0x92);
  1923.                 w12864dat(table[2]);
  1924.                 w12864dat(table[4]);
  1925.                 for(tt=0;tt<6;tt++)
  1926.                 {
  1927.                         w12864dat(uu[tt+4]);
  1928.                 }


  1929.                 w12864com(0x8a);
  1930.                 for(tt=0;tt<4;tt++)
  1931.                 {
  1932.                         w12864dat(uu[tt+10]);
  1933.                 }
  1934.                 w12864dat(table[1]);
  1935.                 delay(1);

  1936.                 w12864com(0x9a);
  1937.                 for(tt=0;tt<4;tt++)
  1938.                 {
  1939.                         w12864dat(uu[tt+10]);
  1940.                 }
  1941.                 w12864dat(table[2]);
  1942.                  delay(1);
  1943.                  if(sc==1)
  1944.                  {
  1945.                         w12864com(0x80);
  1946.                         w12864dat(0x12);
  1947.                         w12864com(0x88);
  1948.                         w12864dat(0x20);
  1949.                  }
  1950.                  if(sc==2)
  1951.                  {
  1952.                                 w12864com(0x80);
  1953.                                 w12864dat(0x20);
  1954.                                 w12864com(0x99);
  1955.                                 w12864dat(0x12);
  1956.                  }
  1957.                         if(j==1)
  1958.                         {
  1959.                                 w12864com(0x81);
  1960.                                 w12864dat(0x10);
  1961.                                 w12864com(0x91);
  1962.                                 w12864dat(0x20);
  1963.                         }
  1964.                         if(j==2)
  1965.                         {
  1966.                                 w12864com(0x81);
  1967.                                 w12864dat(0x20);
  1968.                                 w12864com(0x91);
  1969.                                 w12864dat(0x10);               
  1970.                         }
  1971.                         if(fp==1)
  1972.                         {
  1973.                                 w12864com(0x89);
  1974.                                 w12864dat(0x10);
  1975.                                 w12864com(0x99);
  1976.                                 w12864dat(0x20);

  1977.                         }
  1978.                         if(fp==2)
  1979.                         {
  1980.                                 w12864com(0x89);
  1981.                                 w12864dat(0x20);
  1982.                                 w12864com(0x99);
  1983.                                 w12864dat(0x10);       
  1984.                         }

  1985.         while(m)
  1986.         {

  1987.            if(k2==0)
  1988.            {
  1989.                            while(!k2==1);
  1990.                         sc++;
  1991.                          if(sc==3)
  1992.                          {
  1993.                                  sc=1;
  1994.                          }
  1995.                          write_i2c(0,sc);       
  1996.            }
  1997.                 if(k3==0)
  1998.                 {
  1999.                         while(!k3==1);
  2000.                         if(sc==1)
  2001.                         {
  2002.                                 j++;
  2003.                                 if(j==3)
  2004.                                 {
  2005.                                         j=1;
  2006.                                 }
  2007.                                 write_i2c(1,j);delay(2);
  2008.                         }
  2009.                         if(sc==2)
  2010.                         {
  2011.                                 fp++;
  2012.                                 if(fp==3)
  2013.                                 {
  2014.                                         fp=1;
  2015.                                 }
  2016.                                 write_i2c(2,fp);delay(2);
  2017.                         }
  2018.                 }
  2019.                 if(k1==0)
  2020.                 {
  2021.                         while(!k1==1);
  2022.                         y=1;
  2023.                         m=0;
  2024.                         s1=0;
  2025.                 }
  2026.                  if(sc==1)
  2027.                  {
  2028.                         w12864com(0x80);
  2029.                         w12864dat(0x12);
  2030.                         w12864com(0x88);
  2031.                         w12864dat(0x20);
  2032.                         if(j==1)
  2033.                         {
  2034.                                 w12864com(0x81);
  2035.                                 w12864dat(0x10);
  2036.                                 w12864com(0x91);
  2037.                                 w12864dat(0x20);
  2038.                                 k=1;
  2039.                                 write_i2c(4,k);
  2040.                                 delay(2);
  2041.                         }
  2042.                         if(j==2)
  2043.                         {
  2044.                                 w12864com(0x81);
  2045.                                 w12864dat(0x20);
  2046.                                 w12864com(0x91);
  2047.                                 w12864dat(0x10);
  2048.                                 k=0;
  2049.                                 write_i2c(4,k);
  2050.                                 delay(2);                                               
  2051.                         }
  2052.                 }
  2053.                  if(sc==2)
  2054.                  {
  2055.                         w12864com(0x80);
  2056.                         w12864dat(0x20);
  2057.                         w12864com(0x88);
  2058.                         w12864dat(0x12);       
  2059.                         if(fp==1)
  2060.                         {
  2061.                                 w12864com(0x89);
  2062.                                 w12864dat(0x10);
  2063.                                 w12864com(0x99);
  2064.                                 w12864dat(0x20);
  2065.                                 cb=1;
  2066.                                 write_i2c(18,cb);delay(2);
  2067.                         }
  2068.                         if(fp==2)
  2069.                         {
  2070.                                 w12864com(0x89);
  2071.                                 w12864dat(0x20);
  2072.                                 w12864com(0x99);
  2073.                                 w12864dat(0x10);
  2074.                                 cb=2;
  2075.                                 write_i2c(18,cb);delay(2);       
  2076.                         }
  2077.                 }                                       
  2078.         }       
  2079. }
  2080. void time0() interrupt 1
  2081. {
  2082.         TH0=(65536-50000)/256;
  2083.         TL0=(65536-50000)%256;
  2084.         count2++;
  2085.         if(count2==20)//验证时间为1s
  2086.         {
  2087.                 count2=0;
  2088.                 time2++;
  2089.                 if(time2==20)
  2090.                 {
  2091.                         time2=0;
  2092.                         TR0=0;
  2093.                 }
  2094.                 D=~D;
  2095.                 delay(30);
  2096.         }               
  2097. }
  2098. void t0() interrupt 3
  2099. {
  2100.         TH1=(65536-50000)/256;
  2101.         TL1=(65536-50000)%256;
  2102.         count1++;
  2103.         if(count1==20)//验证时间为1s
  2104.         {
  2105.                 count1=0;
  2106.                 time1++;
  2107.                 if(time1==1)
  2108.                 {       
  2109.                         kzlb=0;
  2110.                 }
  2111.                 if(time1==20)
  2112.                 {
  2113.                         time1=0;
  2114.                         TR1=0;
  2115.                         mb=0;
  2116.                         y=1;
  2117.                         kzlb=1;
  2118.                 }
  2119.         }
  2120. }
复制代码

ds1302中文资料:http://www.51hei.com/bbs/dpj-56632-1.html
12864液晶中文资料:http://www.51hei.com/bbs/dpj-56633-1.html

版本1:
AT89C51+DS1302+18B20+12864;
支持功能:
1:时钟显示,年,月,日,星期,温度,以及调时。
2:支持定时闹钟,可以设置两个定时闹钟,支持单开,双开与关闭。
3:支持24小时制与12小时制切换。
4:支持两个铃声切换
程序.rar (80.67 KB, 下载次数: 124)
回复

使用道具 举报

ID:143871 发表于 2016-10-23 17:46 | 显示全部楼层
很好,但是不能下载,恨
回复

使用道具 举报

ID:143871 发表于 2016-10-23 17:48 | 显示全部楼层
我要帛币,我要我要
回复

使用道具 举报

ID:111101 发表于 2016-11-2 22:01 | 显示全部楼层
楼主我想把第二屏显示改成4个定时。然后前3个都是同一个I/O口输出信号,后一个换一个口,我需要改哪块啊。请给指点一下。
回复

使用道具 举报

ID:61840 发表于 2016-11-2 22:12 | 显示全部楼层
为结构化的程序代码,太牛了!
佩服佩服
回复

使用道具 举报

ID:146026 发表于 2016-11-4 00:50 | 显示全部楼层
不错,谢谢分享
回复

使用道具 举报

ID:130231 发表于 2017-4-19 10:28 | 显示全部楼层
很给力
回复

使用道具 举报

ID:191195 发表于 2017-4-19 21:49 来自手机 | 显示全部楼层
楼主辛苦了,谢谢楼主的资料收下了!!
回复

使用道具 举报

ID:360050 发表于 2018-6-27 12:20 | 显示全部楼层
有没有protues电路图啊
回复

使用道具 举报

ID:496678 发表于 2019-3-24 13:56 | 显示全部楼层
原理图下载用不了啊,楼主能发个清楚的原理图吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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