找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2358|回复: 7
打印 上一主题 下一主题
收起左侧

江湖救急!定时开关电机的程序 不能调整时间 求各位大神帮忙

  [复制链接]
跳转到指定楼层
楼主
ID:154739 发表于 2017-3-21 14:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我做一个定时开关电机的程序并显示时间。但小弟写了时间程序然而并不能调整时间,求各位大神帮忙修改一下。最好顺便告诉一下设置定时开关的思路#include <reg52.h>#include <intrins.h>#include <string.h>#define uint unsigned int#define uchar unsigned charsbit IO = P1^0;sbit SCLK = P1^1;sbit RST = P1^2;sbit RS = P2^0;sbit RW = P2^1;sbit EN = P2^2;sbit KEY1=P3^4;sbit KEY2=P3^5;sbit KEY3=P3^6;uchar *WEEK[]={"SUN","***","MON","TUS","WEN","THU","FRI","SAT"};uchar LCD_DSY_BUFFER1[]={"DATE 00-00-00 "};uchar LCD_DSY_BUFFER2[]={"TIME 00:00:00 "};uchar DateTime[7]; //秒,分,时,日,月,周,年uchar flag,flag_1,i,miao,fen,shi,ri,yue,zhou,nian;void DelayMS(uint ms){ uchar i; while(ms--) { for(i=0;i<120;i++); }} /*****************************************************///函数名称: Write_A_Byte_TO_DS1302(uchar x)//函数功能: 向1302写入一个字节//入口参数: x//出口参数: 无//调用子程序: 无/*****************************************************/ void Write_A_Byte_TO_DS1302(uchar x){ uchar i; for(i=0;i<8;i++) { IO=x&0x01; SCLK=1; SCLK=0; x>>=1; }}void Write_DS1302(uchar add,uchar num){ SCLK=0; RST=0; RST=1; Write_A_Byte_TO_DS1302(add); Write_A_Byte_TO_DS1302(num); RST=0; SCLK=1;}/*****************************************************///函数名称: Get_A_Byte_FROM_DS1302()//函数功能: 从1302读一个字节//入口参数: 无//出口参数: b/16*10+b%16//调用子程序: 无/*****************************************************/uchar Get_A_Byte_FROM_DS1302(){ uchar i,b=0x00; for(i=0;i<8;i++) { b |= _crol_((uchar)IO,i); SCLK=1;SCLK=0; } return b/16*10+b%16;}/*****************************************************///函数名称: Read_Data(uchar addr)//函数功能: 指定位置读数据//入口参数: addr//出口参数: dat//调用子程序: Write_Abyte_1302(addr)/*****************************************************/uchar Read_Data(uchar addr){ uchar dat; RST = 0;SCLK=0;RST=1; Write_A_Byte_TO_DS1302(addr); dat = Get_A_Byte_FROM_DS1302(); SCLK=1;RST=0; return dat;}/*****************************************************///函数名称: GetTime()//函数功能: 读取时间//入口参数: 无//出口参数: 无//调用子程序: 无 /*****************************************************/void GetTime(){ uchar i,addr = 0x81; for(i=0;i<7;i++) { DateTime[ i]=Read_Data(addr);addr+=2; }}uchar Read_LCD_State(){ uchar state; RS=0;RW=1;EN=1;DelayMS(1); state=P0; EN = 0;DelayMS(1); return state;}void LCD_Busy_Wait(){ while((Read_LCD_State()&0x80)==0x80); DelayMS(5);}void Write_LCD_Data(uchar dat) //写数据到1602{ LCD_Busy_Wait(); RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1);EN=0; }void Write_LCD_Command(uchar cmd) //写命令{ LCD_Busy_Wait(); RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayMS(1);EN=0; }void Init_LCD() //1602 初始化{ Write_LCD_Command(0x38); DelayMS(1);  Write_LCD_Command(0x01); DelayMS(1);  Write_LCD_Command(0x06); DelayMS(1);  Write_LCD_Command(0x0c); DelayMS(1); }void Set_LCD_POS(uchar p){ Write_LCD_Command(p|0x80); }void Display_LCD_String(uchar p,uchar *s) //1602显示{ uchar i; Set_LCD_POS(p); for(i=0;i<16;i++) { Write_LCD_Data(s[ i]); DelayMS(1);  }}void write_com(uchar com){ RS=0; P0=com; DelayMS(5); EN=1; DelayMS(5); EN=0;}void write_date(uchar date){ RS=1; P0=date; DelayMS(5); EN=1; DelayMS(5); EN=0;}void display(uchar add,uchar date){ uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);}void display1(uchar add,uchar date){ uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(0x30+shi); write_date(0x30+ge);}void Format_DateTime(uchar d,uchar *a){ a[0]=d/10+'0'; a[1]=d%10+'0';}uchar ZH(uchar dat){ uchar tmp; tmp=dat/10; dat=dat%10; dat=dat+tmp*16; return dat;}void Keyscan(){ flag_1=1; while(flag_1) { if(KEY1==0) { DelayMS(5); while(!KEY1); flag=(flag+1)%8; switch(flag) {  case(1): Write_LCD_Command(0x0f); Write_LCD_Command(0x80+0x40+11); break; case(2): Write_LCD_Command(0x80+0x40+8); break; case(3): Write_LCD_Command(0x80+0x40+5); break; case(4): Write_LCD_Command(0x80+13); break; case(5): Write_LCD_Command(0x80+11); break; case(6): Write_LCD_Command(0x80+8); break; case(7): Write_LCD_Command(0x80+5); break; case(0): flag_1=0; Write_LCD_Command(0x0c); //miao Write_DS1302(0x8e,0x00); Write_DS1302(0x80,ZH(DateTime[0])); Write_DS1302(0x8e,0x80); //fen Write_DS1302(0x8e,0x00); Write_DS1302(0x82,ZH(DateTime[1])); Write_DS1302(0x8e,0x80); //shi Write_DS1302(0x8e,0x00); Write_DS1302(0x84,ZH(DateTime[2])); Write_DS1302(0x8e,0x80); //ri Write_DS1302(0x8e,0x00); Write_DS1302(0x86,ZH(DateTime[3])); Write_DS1302(0x8e,0x80); // yue Write_DS1302(0x8e,0x00); Write_DS1302(0x88,ZH(DateTime[4])); Write_DS1302(0x8e,0x80); //nian Write_DS1302(0x8e,0x00); Write_DS1302(0x8c,ZH(DateTime[6])); Write_DS1302(0x8e,0x80);   break; } } if(flag!=0) { if(KEY2==0) { DelayMS(5); if(KEY2==0) while(!KEY2); if(flag==1) //miao { DateTime[0]++; if(DateTime[0]==60) DateTime[0]=0; write_com(0x80+0x40+11); display(11,DateTime[0]); } if(flag==2) //fen { DateTime[1]++; if(DateTime[1]==60) DateTime[1]=0; write_com(0x80+0x40+8); display(8,DateTime[1]); }  if(flag==3) //shi { DateTime[2]++; if(DateTime[2]==24) DateTime[2]=0; write_com(0x80+0x40+5); display(5,DateTime[2]); }  /* if(flag==4) //zhou { DateTime[0]++; if(DateTime[0]==60) DateTime[0]=0; write_com(0x80+0x40+11); display(11,DateTime[0]); } */ if(flag==5) // ri { DateTime[3]++; if(DateTime[3]==30) DateTime[3]=0; write_com(0x80+11); display1(11,DateTime[3]); }  if(flag==6) //yue { DateTime[4]++; if(DateTime[4]==13) DateTime[4]=0; write_com(0x80+8); display1(8,DateTime[4]); }  if(flag==7) //nian { DateTime[6]++; if(DateTime[6]==100) DateTime[6]=0; write_com(0x80+5); display1(5,DateTime[6]); }   } } if(flag!=0) { if(KEY3==0) { DelayMS(5); if(KEY3==0) while(!KEY3); if(flag==1) //miao { DateTime[0]--; if(DateTime[0]==-1) DateTime[0]=0; write_com(0x80+0x40+11); display(11,DateTime[0]); } if(flag==2) //fen { DateTime[1]--; if(DateTime[1]==-1) DateTime[1]=0; write_com(0x80+0x40+8); display(8,DateTime[1]); }  if(flag==3) //shi { DateTime[2]--; if(DateTime[2]==-1) DateTime[2]=0; write_com(0x80+0x40+5); display(5,DateTime[2]); }  /* if(flag==4) //zhou { DateTime[0]++; if(DateTime[0]==60) DateTime[0]=0; write_com(0x80+0x40+11); display(11,DateTime[0]); } */ if(flag==5) // ri { DateTime[3]--; if(DateTime[3]==-1) DateTime[3]=0; write_com(0x80+11); display1(11,DateTime[3]); }  if(flag==6) //yue { DateTime[4]--; if(DateTime[4]==-1) DateTime[4]=0; write_com(0x80+8); display1(8,DateTime[4]); }  if(flag==7) //nian { DateTime[6]--; if(DateTime[6]==-1) DateTime[6]=0; write_com(0x80+5); display1(5,DateTime[6]); }   } } }}void main(){ Init_LCD(); while(1) { EA=1; EX0=1; GetTime(); Format_DateTime(DateTime[6],LCD_DSY_BUFFER1+5); //年 Format_DateTime(DateTime[4],LCD_DSY_BUFFER1+8); //月 Format_DateTime(DateTime[3],LCD_DSY_BUFFER1+11); //日 strcpy(LCD_DSY_BUFFER1+13,WEEK[DateTime[5]]); //周 串拷贝 包含于STRING.H Format_DateTime(DateTime[2],LCD_DSY_BUFFER2+5); //时 Format_DateTime(DateTime[1],LCD_DSY_BUFFER2+8); //分 Format_DateTime(DateTime[0],LCD_DSY_BUFFER2+11); //秒 Display_LCD_String(0x00,LCD_DSY_BUFFER1); Display_LCD_String(0x40,LCD_DSY_BUFFER2); }}void int0() interrupt 0{ Keyscan();}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2017-3-21 16:58 | 只看该作者
应该吧代码用 编辑栏的代码框  框起来  这样没法看啊,楼主重新编辑一下帖子吧

回复

使用道具 举报

板凳
ID:155507 发表于 2017-3-21 19:51 | 只看该作者
  1. //我做一个定时开关电机的程序并显示时间。但小弟写了时间程序然而并不能调整时间,求各位大神帮忙修改一下。最好顺便告诉一下设置定时开关的思路
  2. #include <reg52.h>
  3. #include <intrins.h>
  4. #include <string.h>
  5. #define uint unsigned int
  6. #define uchar unsigned char

  7. sbit IO = P1^0;
  8. sbit SCLK = P1^1;
  9. sbit RST = P1^2;
  10. sbit RS = P2^0;
  11. sbit RW = P2^1;
  12. sbit EN = P2^2;
  13. sbit KEY1=P3^4;
  14. sbit KEY2=P3^5;
  15. sbit KEY3=P3^6;

  16. uchar *WEEK[]={"SUN","***","MON","TUS","WEN","THU","FRI","SAT"};
  17. uchar LCD_DSY_BUFFER1[]={"DATE 00-00-00 "};
  18. uchar LCD_DSY_BUFFER2[]={"TIME 00:00:00 "};
  19. uchar DateTime[7]; //秒,分,时,日,月,周,年
  20. uchar flag,flag_1,i,miao,fen,shi,ri,yue,zhou,nian;

  21. void DelayMS(uint ms)
  22. {
  23.         uchar i;

  24.         while(ms--)
  25.         {
  26.                 for(i=0;i<120;i++);
  27.         }
  28. }

  29. /*****************************************************/
  30. //函数名称: Write_A_Byte_TO_DS1302(uchar x)
  31. //函数功能: 向1302写入一个字节
  32. //入口参数: x
  33. //出口参数: 无
  34. //调用子程序: 无
  35. /*****************************************************/
  36. void Write_A_Byte_TO_DS1302(uchar x)
  37. {
  38.         uchar i;
  39.         for(i=0;i<8;i++)
  40.         {
  41.                 IO=x&0x01;
  42.                 SCLK=1;
  43.                 SCLK=0;
  44.                 x>>=1;
  45.         }
  46. }

  47. void Write_DS1302(uchar add,uchar num)
  48. {
  49.         SCLK=0;
  50.         RST=0;
  51.         RST=1;
  52.         Write_A_Byte_TO_DS1302(add);
  53.         Write_A_Byte_TO_DS1302(num);
  54.         RST=0;
  55.         SCLK=1;
  56. }

  57. /*****************************************************/
  58. //函数名称: Get_A_Byte_FROM_DS1302()
  59. //函数功能: 从1302读一个字节
  60. //入口参数: 无
  61. //出口参数: b/16*10+b%16
  62. //调用子程序: 无
  63. /*****************************************************/
  64. uchar Get_A_Byte_FROM_DS1302()
  65. {
  66.         uchar i,b=0x00;
  67.         for(i=0;i<8;i++)
  68.         {
  69.                 b |= _crol_((uchar)IO,i);
  70.                 SCLK=1;
  71.                 SCLK=0;
  72.         }
  73.         return b/16*10+b%16;
  74. }

  75. /*****************************************************/
  76. //函数名称: Read_Data(uchar addr)
  77. //函数功能: 指定位置读数据
  78. //入口参数: addr
  79. //出口参数: dat
  80. //调用子程序: Write_Abyte_1302(addr)
  81. /*****************************************************/
  82. uchar Read_Data(uchar addr)
  83. {
  84.         uchar dat;
  85.         RST = 0;
  86.         SCLK=0;
  87.         RST=1;
  88.         Write_A_Byte_TO_DS1302(addr);
  89.         dat = Get_A_Byte_FROM_DS1302();
  90.         SCLK=1;
  91.         RST=0;
  92.         return dat;
  93. }

  94. /*****************************************************/
  95. //函数名称: GetTime()
  96. //函数功能: 读取时间
  97. //入口参数: 无
  98. //出口参数: 无
  99. //调用子程序: 无
  100. /*****************************************************/
  101. void GetTime()
  102. {
  103.         uchar i,addr = 0x81;
  104.         for(i=0;i<7;i++)
  105.         {
  106.                 DateTime[ i]=Read_Data(addr);
  107.                 addr+=2;
  108.         }
  109. }

  110. uchar Read_LCD_State()
  111. {
  112.         uchar state;
  113.         RS=0;
  114.         RW=1;
  115.         EN=1;
  116.         DelayMS(1);
  117.         state=P0;
  118.         EN = 0;
  119.         DelayMS(1);
  120.         return state;
  121. }

  122. void LCD_Busy_Wait()
  123. {
  124.         while((Read_LCD_State()&0x80)==0x80);
  125.         DelayMS(5);
  126. }

  127. void Write_LCD_Data(uchar dat) //写数据到1602
  128. {
  129.         LCD_Busy_Wait();
  130.         RS=1;
  131.         RW=0;
  132.         EN=0;
  133.         P0=dat;
  134.         EN=1;
  135.         DelayMS(1);
  136.         EN=0;
  137. }

  138. void Write_LCD_Command(uchar cmd) //写命令
  139. {
  140.         LCD_Busy_Wait();
  141.         RS=0;
  142.         RW=0;
  143.         EN=0;
  144.         P0=cmd;
  145.         EN=1;
  146.         DelayMS(1);
  147.         EN=0;
  148. }

  149. void Init_LCD() //1602 初始化
  150. {
  151.         Write_LCD_Command(0x38);
  152.         DelayMS(1);
  153.         Write_LCD_Command(0x01);
  154.         DelayMS(1);
  155.         Write_LCD_Command(0x06);
  156.         DelayMS(1);
  157.         Write_LCD_Command(0x0c);
  158.         DelayMS(1);
  159. }

  160. void Set_LCD_POS(uchar p)
  161. {
  162.         Write_LCD_Command(p|0x80);
  163. }

  164. void Display_LCD_String(uchar p,uchar *s) //1602显示
  165. {
  166.         uchar i;
  167.         Set_LCD_POS(p);
  168.         for(i=0;i<16;i++)
  169.         {
  170.                 Write_LCD_Data(s[ i]);
  171.                 DelayMS(1);
  172.         }
  173. }

  174. void write_com(uchar com)
  175. {
  176.         RS=0;
  177.         P0=com;
  178.         DelayMS(5);
  179.         EN=1;
  180.         DelayMS(5);
  181.         EN=0;
  182. }

  183. void write_date(uchar date)
  184. {
  185.         RS=1;
  186.         P0=date;
  187.         DelayMS(5);
  188.         EN=1;
  189.         DelayMS(5);
  190.         EN=0;
  191. }

  192. void display(uchar add,uchar date)
  193. {
  194.         uchar shi,ge;
  195.         shi=date/10;
  196.         ge=date%10;
  197.         write_com(0x80+0x40+add);
  198.         write_date(0x30+shi);
  199.         write_date(0x30+ge);
  200. }

  201. void display1(uchar add,uchar date)
  202. {
  203.         uchar shi,ge;
  204.         shi=date/10;
  205.         ge=date%10;
  206.         write_com(0x80+add);
  207.         write_date(0x30+shi);
  208.         write_date(0x30+ge);
  209. }

  210. void Format_DateTime(uchar d,uchar *a)
  211. {
  212.         a[0]=d/10+'0';
  213.         a[1]=d%10+'0';
  214. }

  215. uchar ZH(uchar dat)
  216. {
  217.         uchar tmp;
  218.         tmp=dat/10;
  219.         dat=dat%10;
  220.         dat=dat+tmp*16;
  221.         return dat;
  222. }

  223. void Keyscan()
  224. {
  225.         flag_1=1;
  226.         while(flag_1)
  227.         {
  228.                 if(KEY1==0)
  229.                 {
  230.                         DelayMS(5);
  231.                         while(!KEY1);
  232.                         flag=(flag+1)%8;
  233.                         switch(flag)
  234.                         {  
  235.                         case(1):
  236.                                 Write_LCD_Command(0x0f);
  237.                                 Write_LCD_Command(0x80+0x40+11);
  238.                                 break;
  239.                         case(2):
  240.                                 Write_LCD_Command(0x80+0x40+8);
  241.                                 break;
  242.                         case(3):
  243.                                 Write_LCD_Command(0x80+0x40+5);
  244.                                 break;
  245.                         case(4):
  246.                                 Write_LCD_Command(0x80+13);
  247.                                 break;
  248.                         case(5):
  249.                                 Write_LCD_Command(0x80+11);
  250.                                 break;
  251.                         case(6):
  252.                                 Write_LCD_Command(0x80+8);
  253.                                 break; case(7):
  254.                                 Write_LCD_Command(0x80+5);
  255.                                 break;
  256.                         case(0):
  257.                                 flag_1=0;
  258.                                 Write_LCD_Command(0x0c); //miao
  259.                                 Write_DS1302(0x8e,0x00);
  260.                                 Write_DS1302(0x80,ZH(DateTime[0]));
  261.                                 Write_DS1302(0x8e,0x80); //fen
  262.                                 Write_DS1302(0x8e,0x00);
  263.                                 Write_DS1302(0x82,ZH(DateTime[1]));
  264.                                 Write_DS1302(0x8e,0x80); //shi
  265.                                 Write_DS1302(0x8e,0x00);
  266.                                 Write_DS1302(0x84,ZH(DateTime[2]));
  267.                                 Write_DS1302(0x8e,0x80); //ri
  268.                                 Write_DS1302(0x8e,0x00);
  269.                                 Write_DS1302(0x86,ZH(DateTime[3]));
  270.                                 Write_DS1302(0x8e,0x80); // yue
  271.                                 Write_DS1302(0x8e,0x00);
  272.                                 Write_DS1302(0x88,ZH(DateTime[4]));
  273.                                 Write_DS1302(0x8e,0x80); //nian
  274.                                 Write_DS1302(0x8e,0x00);
  275.                                 Write_DS1302(0x8c,ZH(DateTime[6]));
  276.                                 Write_DS1302(0x8e,0x80);
  277.                                 break;
  278.                         }
  279.                 }
  280.                 if(flag!=0)
  281.                 {
  282.                         if(KEY2==0)
  283.                         {
  284.                                 DelayMS(5);
  285.                                 if(KEY2==0)
  286.                                 while(!KEY2);
  287.                                 if(flag==1) //miao
  288.                                 {
  289.                                         DateTime[0]++;
  290.                                         if(DateTime[0]==60) DateTime[0]=0;
  291.                                         write_com(0x80+0x40+11);
  292.                                         display(11,DateTime[0]);
  293.                                 }
  294.                                 if(flag==2) //fen
  295.                                 {
  296.                                         DateTime[1]++;
  297.                                         if(DateTime[1]==60) DateTime[1]=0;
  298.                                         write_com(0x80+0x40+8);
  299.                                         display(8,DateTime[1]);
  300.                                 }
  301.                                 if(flag==3) //shi
  302.                                 {
  303.                                         DateTime[2]++;
  304.                                         if(DateTime[2]==24)
  305.                                                 DateTime[2]=0;
  306.                                         write_com(0x80+0x40+5);
  307.                                         display(5,DateTime[2]);
  308.                                 }
  309.                                 /* if(flag==4) //zhou
  310.                                 {
  311.                                 DateTime[0]++;
  312.                                 if(DateTime[0]==60)
  313.                                 DateTime[0]=0;
  314.                                 write_com(0x80+0x40+11);
  315.                                 display(11,DateTime[0]);
  316.                                 } */
  317.                                 if(flag==5) // ri
  318.                                 {
  319.                                         DateTime[3]++;
  320.                                         if(DateTime[3]==30)
  321.                                                 DateTime[3]=0;
  322.                                         write_com(0x80+11);
  323.                                         display1(11,DateTime[3]);
  324.                                 }
  325.                                 if(flag==6) //yue
  326.                                 {
  327.                                         DateTime[4]++;
  328.                                         if(DateTime[4]==13)
  329.                                                 DateTime[4]=0;
  330.                                         write_com(0x80+8);
  331.                                         display1(8,DateTime[4]);
  332.                                 }
  333.                                 if(flag==7) //nian
  334.                                 {
  335.                                         DateTime[6]++;
  336.                                         if(DateTime[6]==100)
  337.                                                 DateTime[6]=0;
  338.                                         write_com(0x80+5);
  339.                                         display1(5,DateTime[6]);
  340.                                 }
  341.                         }
  342.                 }
  343.                 if(flag!=0)
  344.                 {
  345.                         if(KEY3==0)
  346.                         {
  347.                                 DelayMS(5);
  348.                                 if(KEY3==0)
  349.                                 while(!KEY3);
  350.                                 if(flag==1) //miao
  351.                                 {
  352.                                         DateTime[0]--;
  353.                                         if(DateTime[0]==-1)
  354.                                         DateTime[0]=0;
  355.                                         write_com(0x80+0x40+11);
  356.                                         display(11,DateTime[0]);
  357.                                 }
  358.                                 if(flag==2) //fen
  359.                                 {
  360.                                         DateTime[1]--;
  361.                                         if(DateTime[1]==-1)
  362.                                         DateTime[1]=0;
  363.                                         write_com(0x80+0x40+8);
  364.                                         display(8,DateTime[1]);
  365.                                 }
  366.                                 if(flag==3) //shi
  367.                                 {
  368.                                         DateTime[2]--;
  369.                                         if(DateTime[2]==-1)
  370.                                         DateTime[2]=0;
  371.                                         write_com(0x80+0x40+5);
  372.                                         display(5,DateTime[2]);
  373.                                 }
  374.                                 /* if(flag==4) //zhou
  375.                                 {
  376.                                         DateTime[0]++;
  377.                                         if(DateTime[0]==60)
  378.                                                 DateTime[0]=0;
  379.                                         write_com(0x80+0x40+11);
  380.                                         display(11,DateTime[0]);
  381.                                 }
  382.                                         */
  383.                                 if(flag==5) // ri
  384.                                 {
  385.                                         DateTime[3]--;
  386.                                         if(DateTime[3]==-1)
  387.                                                 DateTime[3]=0;
  388.                                         write_com(0x80+11);
  389.                                         display1(11,DateTime[3]);
  390.                                 }
  391.                                 if(flag==6) //yue
  392.                                 {
  393.                                         DateTime[4]--;
  394.                                         if(DateTime[4]==-1)
  395.                                                 DateTime[4]=0;
  396.                                         write_com(0x80+8);
  397.                                         display1(8,DateTime[4]);
  398.                                 }
  399.                                 if(flag==7) //nian
  400.                                 {
  401.                                         DateTime[6]--;
  402.                                         if(DateTime[6]==-1)
  403.                                                 DateTime[6]=0;
  404.                                         write_com(0x80+5);
  405.                                         display1(5,DateTime[6]);
  406.                                 }
  407.                         }
  408.                 }
  409.         }
  410. }

  411. void main()
  412. {
  413.         Init_LCD();
  414.         while(1)
  415.         {
  416.                 EA=1;
  417.                 EX0=1;
  418.                 GetTime();
  419.                 Format_DateTime(DateTime[6],LCD_DSY_BUFFER1+5); //年
  420.                 Format_DateTime(DateTime[4],LCD_DSY_BUFFER1+8); //月
  421.                 Format_DateTime(DateTime[3],LCD_DSY_BUFFER1+11); //日
  422.                 strcpy(LCD_DSY_BUFFER1+13,WEEK[DateTime[5]]); //周 串拷贝 包含于STRING.H
  423.                 Format_DateTime(DateTime[2],LCD_DSY_BUFFER2+5); //时
  424.                 Format_DateTime(DateTime[1],LCD_DSY_BUFFER2+8); //分
  425.                 Format_DateTime(DateTime[0],LCD_DSY_BUFFER2+11); //秒
  426.                 Display_LCD_String(0x00,LCD_DSY_BUFFER1);
  427.                 Display_LCD_String(0x40,LCD_DSY_BUFFER2);
  428.         }
  429. }

  430. void int0() interrupt 0
  431. {
  432.         Keyscan();
  433. }



复制代码
回复

使用道具 举报

地板
ID:151348 发表于 2017-3-21 20:40 | 只看该作者
确实,真的没法看。。。。。,叫别人怎么帮你
回复

使用道具 举报

5#
ID:96682 发表于 2017-3-21 22:46 | 只看该作者
LZ,没说到问题的重点及想怎么改?
回复

使用道具 举报

6#
ID:111634 发表于 2017-3-22 17:47 | 只看该作者
本帖最后由 zl2168 于 2017-3-22 17:48 编辑

希望以后不要贴出冗长的程序,没人看的。有那么多时间看么?能看得懂(没有注释没头没脑)吗?别以为都是“大神”,“大神”也看不懂!提问要明确而简单,才能有人愿意帮你。
回复

使用道具 举报

7#
ID:154739 发表于 2017-3-23 13:26 | 只看该作者

你这个用的是外部中断0来扫描键盘,只需在硬件上加一个开关在P3^2上,在开关摁下的时候就可以调节时间
回复

使用道具 举报

8#
ID:472242 发表于 2019-2-9 04:57 | 只看该作者
确实,你自己都不整好别人为什么就该给你整呢?又不欠你的!

评分

参与人数 13黑币 +348 收起 理由
zhengchong60 + 15
sheng7533967 + 15
还有谁? + 8
找人PK + 15
钻牛尖滴刘尖尖 + 15
yoxi + 35
Sawardeakar + 35
Trump1438 + 35
#include51.h + 35
shuisheng + 35
jinsheng7533967 + 35
areyouok + 35
刀刀见红 + 35

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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