找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8605|回复: 6
收起左侧

51单片机+1602+时钟DS12C887程序

[复制链接]
ID:70976 发表于 2014-12-26 21:18 | 显示全部楼层 |阅读模式


  1. #include<reg52.h>
  2. #include<define.h>
  3. void delay(uint z)
  4. {
  5. uint x,y;
  6. for(x=z;x>0;x--)
  7.    for(y=110;y>0;y--);
  8. }

  9. void didi()
  10. {
  11. beep=0;
  12. delay(50);
  13. beep=1;
  14. delay(100);
  15. beep=0;
  16. delay(50);
  17. beep=1;
  18. }
  19. void write_com(uchar com)
  20. {
  21. rs=0;
  22. lcden=0;
  23. P0=com;
  24. delay(5);
  25. lcden=1;
  26. delay(5);
  27. lcden=0;
  28. }

  29. void write_date(uchar date)
  30. {
  31. rs=1;
  32. lcden=0;
  33. P0=date;
  34. delay(5);
  35. lcden=1;
  36. delay(5);
  37. lcden=0;
  38. }

  39. void init()
  40. {
  41. uchar num;
  42. EA=1;
  43. EX0=1;
  44. IT0=1;

  45. dula=0;
  46. wela=0;
  47. lcden=0;
  48. // set_time();
  49. set_alarm(14,13,10);
  50. write_ds(0x0B,0x26);
  51. read_ds(0x0c);
  52. // fen=59;
  53. // miao=53;
  54. // shi=23;
  55. write_com(0x38);
  56. write_com(0x0c);
  57. write_com(0x06);
  58. write_com(0x01);
  59. write_com(0x80);
  60. for(num=0;num<15;num++)
  61.    {
  62.     write_date(table[num]);
  63.     delay(5);
  64.    }
  65. write_com(0x80+0x40);
  66. for(num=0;num<12;num++)
  67.    {
  68.     write_date(table1[num]);
  69.     delay(5);
  70.    }

  71. }

  72. void write_sfm(uchar add,uchar date)
  73. {
  74. uchar shi,ge;
  75. shi=date/10;
  76. ge=date%10;
  77. write_com(0x80+0x40+add);
  78. write_date(0x30+shi);
  79. write_date(0x30+ge);
  80. }

  81. void keyscan()
  82. {
  83. rd=0;
  84. if(flag1==1)
  85. {
  86.    if(s2==0)
  87.    {
  88.     delay(5);
  89.     if(s2==0)
  90.     {
  91.      while(!s2);
  92.      flag1=0;
  93.     }
  94.    
  95.    }
  96.    if(s3==0)
  97.    {
  98.     delay(5);
  99.     if(s3==0)
  100.     {
  101.      while(!s3);
  102.      flag1=0;
  103.     }
  104.    
  105.    }
  106. }
  107.   
  108. if(s1==0)
  109. {
  110.    delay(5);
  111.    if(s1==0)
  112.    { s1num++;
  113.     flag=1;
  114.     flag1=0;
  115.     while(!s1);
  116.     if(s1num==1)
  117.     {
  118.      TR0=0;
  119.      write_com(0x80+0x40+10);
  120.      write_com(0x0f);
  121.     }
  122. }
  123.     if(s1num==2)
  124.     {
  125.      write_com(0x80+0x40+7);
  126.     }
  127.     if(s1num==3)
  128.     {
  129.      write_com(0x80+0x40+4);
  130.     }
  131.     if(s1num==4)
  132.     {
  133.      s1num=0;
  134.      write_com(0x0c);
  135.      flag=0;
  136.      write_ds(0,miao);
  137.      write_ds(2,fen);
  138.      write_ds(4,shi);
  139.     }

  140.    
  141.    }
  142.    if(s1num!=0)
  143.    {
  144.     if(s2==0)
  145.     {
  146.      delay(1);
  147.      if(s2==0)
  148.      {
  149.       while(!s2);
  150.       if(s1num==1)
  151.       {
  152.        miao++;
  153.        if(miao==60)
  154.         miao=0;
  155.        write_sfm(10,miao);
  156.        write_com(0x80+0x40+10);
  157.       
  158.       
  159.       }
  160.       if(s1num==2)
  161.       {
  162.        fen++;
  163.        if(fen==60)
  164.         fen=0;
  165.        write_sfm(7,fen);
  166.        write_com(0x80+0x40+7);
  167.       }
  168.       if(s1num==3)
  169.       {
  170.        shi++;
  171.        if(shi==24)
  172.         shi=0;
  173.        write_sfm(4,shi);
  174.        write_com(0x80+0x40+4);
  175.       }
  176.      }
  177.     }
  178.     if(s3==0)
  179.     {
  180.      delay(1);
  181.      if(s3==0)
  182.      {
  183.       while(!s3);
  184.       if(s1num==1)
  185.       {
  186.       /* if(miao==0)
  187.        {
  188.         miao=59;
  189.         write_sfm(10,miao);
  190.         write_com(0x80+0x40+10);
  191.        }*/
  192.        miao--;
  193.        if(miao==-1)
  194.         miao=59;
  195.        write_sfm(10,miao);
  196.        write_com(0x80+0x40+10);
  197.       }
  198.       if(s1num==2)
  199.       {
  200.        fen--;
  201.        if(fen==-1)
  202.         fen=59;
  203.        write_sfm(7,fen);
  204.        write_com(0x80+0x40+7);
  205.       }
  206.       if(s1num==3)
  207.       {
  208.        shi--;
  209.        if(shi==-1)
  210.         shi=23;
  211.        write_sfm(4,shi);
  212.        write_com(0x80+0x40+4);
  213.       }
  214.      }
  215.     }
  216.    }
  217. }

  218. void write_ds(uchar add,uchar date)
  219. {
  220. dscs=0;
  221. dsas=1;
  222. dsds=1;
  223. dsrw=1;
  224. P0=add;
  225. dsas=0;
  226. dsrw=0;
  227. P0=date;
  228. dsrw=1;
  229. dsas=1;
  230. dscs=1;   
  231. }

  232. uchar read_ds(uchar add)
  233. {
  234.    uchar ds_date;
  235. dsas=1;
  236. dsds=1;
  237. dsrw=1;
  238. dscs=0;
  239. P0=add;
  240. dsas=0;
  241. dsds=0;
  242. P0=0xff;
  243. ds_date=P0;
  244. dsds=1;
  245. dsas=1;
  246. dscs=1;
  247. return ds_date;
  248. }

  249. void set_time()
  250. {
  251. write_ds(4,10);
  252. write_ds(2,32);

  253. }

  254. void set_alarm(uchar ashi,uchar afen,uchar amiao)
  255. {
  256. write_ds(1,amiao);
  257. write_ds(3,afen);
  258. write_ds(5,ashi);
  259. }
  260. void main()
  261. {
  262. init();
  263. while(1)
  264. {
  265.    keyscan();
  266.    if(flag1==1)
  267.     didi();
  268.    if(flag==0)
  269.    {
  270.     miao=read_ds(0);
  271.     fen=read_ds(2);
  272.     shi=read_ds(4);
  273.     write_sfm(10,miao);
  274.     write_sfm(7,fen);
  275.     write_sfm(4,shi);
  276.    }
  277. }
  278. }

  279. void exter() interrupt 0
  280. { uchar c;
  281. flag1=1;
  282. c=read_ds(0x0c);
  283. }
复制代码


回复

使用道具 举报

ID:73002 发表于 2015-2-20 19:12 | 显示全部楼层
不错 顶顶顶顶
回复

使用道具 举报

ID:48413 发表于 2015-2-23 22:22 | 显示全部楼层
回复

使用道具 举报

ID:77387 发表于 2015-5-10 11:59 | 显示全部楼层
不好复制啊
回复

使用道具 举报

ID:91888 发表于 2015-11-9 20:38 | 显示全部楼层
创建目标 '目标 1'
编译 12c8875.c ...
12c8875.c(4): 警告 C318: can't open file 'define.h'
12C8875.C(5): 错误 C141: syntax error near 'z', expected ')'
12C8875.C(7): 错误 C141: syntax error near 'x'
12C8875.C(7): 错误 C202: 'x': undefined identifier
12C8875.C(8): 错误 C202: 'x': undefined identifier
12C8875.C(9): 错误 C202: 'y': undefined identifier
12C8875.C(14): 错误 C202: 'beep': undefined identifier
12C8875.C(16): 错误 C202: 'beep': undefined identifier
12C8875.C(18): 错误 C202: 'beep': undefined identifier
12C8875.C(20): 错误 C202: 'beep': undefined identifier
12C8875.C(22): 错误 C141: syntax error near 'com', expected ')'
12C8875.C(24): 错误 C202: 'rs': undefined identifier
12C8875.C(25): 错误 C202: 'lcden': undefined identifier
12C8875.C(26): 错误 C202: 'com': undefined identifier
12C8875.C(28): 错误 C202: 'lcden': undefined identifier
12C8875.C(30): 错误 C202: 'lcden': undefined identifier
12C8875.C(33): 错误 C141: syntax error near 'date', expected ')'
12C8875.C(35): 错误 C202: 'rs': undefined identifier
12C8875.C(36): 错误 C202: 'lcden': undefined identifier
12C8875.C(37): 错误 C202: 'date': undefined identifier
12C8875.C(39): 错误 C202: 'lcden': undefined identifier
12C8875.C(41): 错误 C202: 'lcden': undefined identifier
12C8875.C(46): 错误 C202: 'uchar': undefined identifier
12C8875.C(46): 错误 C141: syntax error near 'num'
12C8875.C(51): 错误 C202: 'dula': undefined identifier
12C8875.C(52): 错误 C202: 'wela': undefined identifier
12C8875.C(53): 错误 C202: 'lcden': undefined identifier
目标未产生
回复

使用道具 举报

ID:92746 发表于 2015-12-2 15:06 | 显示全部楼层
不错 顶顶顶顶,不完整
回复

使用道具 举报

ID:80736 发表于 2016-4-16 22:10 | 显示全部楼层
为啥没有原理图
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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