久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2992|回復: 0
打印 上一主題 下一主題
收起左側

ds1302使用 單片機加八位數碼管顯示

[復制鏈接]
跳轉到指定樓層
樓主


  1. //主函數
  2. #include <ds1302.h>
  3. u8 code smg[10]=
  4. {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  5. u8 dat2[8];
  6. void delay(u16 aaa)
  7. {
  8.          while(aaa--);
  9. }
  10. void dat2fp();
  11. void xs();
  12. void main()
  13. {        
  14.          writetime();
  15.          while(1)
  16.          { readtime();
  17.            delay(50);
  18.            dat2fp();
  19.            xs();
  20.          }
  21. }
  22. void dat2fp()
  23. {
  24.          
  25.          dat2[0]=smg[time[2]/16];
  26.          dat2[1]=smg[time[2]&0x0f];
  27.          dat2[2]=0x40;
  28.          dat2[3]=smg[time[1]/16];
  29.          dat2[4]=smg[time[1]&0x0f];
  30.          dat2[5]=0x40;
  31.          dat2[6]=smg[time[0]/16];
  32.          dat2[7]=smg[time[0]&0x0f];
  33. }
  34. void xs()
  35. {
  36.         u8 ii;
  37.         for(ii=0;ii<8;ii++)
  38.         {
  39.                 P0=dat2[ii];
  40.                 P1=ii;
  41.                 delay(100);
  42.                 P0=0x00;
  43.         }
  44. }

  45. //ds1302.h
  46. #ifndef _DS1302_H_
  47. #define _DS1302_H_

  48. #include<reg52.h>
  49. #include<intrins.h>

  50. #ifndef u8
  51. #define u8 unsigned char
  52. #endif

  53. #ifndef u16
  54. #define u16 unsigned int
  55. #endif
  56. sbit sclk=P3^6;
  57. sbit dsio=P3^4;
  58. sbit ce=P3^5;

  59. void readtime();
  60. void writetime();
  61. u8 read(u8 dzz);
  62. void write(u8 dz,u8 sj);

  63. extern u8 time[7];
  64. #endif
  65. //ds1302.c
  66. #include<ds1302.h>

  67. u8 code writedz[7]=
  68. {0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};                                        //秒 分 時 日 月 星期 年

  69. u8 code readdz[7]=
  70. {0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};
  71. u8 time[7]=
  72. {0x50,0x59,0x92,0x07,0x05,0x05,0x17};                                  //秒 分 時 日 月 星期 年
  73. void write(u8 dz,u8 sj)
  74. {
  75.          u8 a;
  76.          ce=0;
  77.          _nop_();                          //
  78.          sclk=0;
  79.          _nop_();
  80.          ce=1;
  81.          _nop_();
  82.          for(a=0;a<8;a++)
  83.          {
  84.                    dsio=dz&0x01;           //放入最低位
  85.                   dz>>=1;
  86.                   sclk=1;
  87.                   _nop_();
  88.                   sclk=0;
  89.                   _nop_();

  90.          }
  91.           for(a=0;a<8;a++)
  92.          {
  93.                    dsio=sj&0x01;           //放入最低位
  94.                   sj>>=1;
  95.                   sclk=1;
  96.                   _nop_();
  97.                   sclk=0;
  98.                   _nop_();

  99.          }
  100.          ce=0;
  101.          _nop_();
  102. }

  103. u8 read(u8 dzz)
  104. {
  105.          u8  aa,dd,dat1;
  106.          ce=0;
  107.          _nop_();                   //
  108.          sclk=0;
  109.          _nop_();
  110.          ce=1;
  111.          _nop_();
  112.          for(aa=0;aa<8;aa++)
  113.          {
  114.                    dsio=dzz&0x01;           //放入最低位
  115.                   dzz>>=1;
  116.                   sclk=1;
  117.                   _nop_();
  118.                   sclk=0;                          //ds1302輸出數據
  119.                   _nop_();

  120.          }
  121.          _nop_();
  122.          for(aa=0;aa<8;aa++)
  123.          {
  124.                    dd=dsio;
  125.                   dat1>>=1;
  126.                   dat1|=dd<<7;
  127.                   sclk=1;
  128.                   _nop_();
  129.                   sclk=0;
  130.                   _nop_();  
  131.          }
  132.         
  133.          ce=1;
  134.          _nop_();
  135.          sclk=1;
  136.          _nop_();
  137.          dsio=0;
  138.          _nop_();
  139.          dsio=1;
  140.          _nop_();
  141.          return dat1;
  142. }

  143. void writetime()
  144. {
  145.         u8 i;
  146.         write(0x8e,0x00);                 //                關閉寫保護
  147.         for(i=0;i<7;i++)
  148.         {
  149.                 write(writedz[i],time[i]);
  150.         }
  151.         write(0x8e,0x80);
  152. }

  153. void readtime()
  154. {
  155.         u8 g,aa;
  156.         for(g=0;g<7;g++)
  157.         {
  158.                 time[g]=read(readdz[g]);
  159.         }
  160.                 aa=time[2]<<3;
  161.                 time[2]=aa>>3;
  162. }
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产乱码久久久久久果冻传媒 | 少妇一区在线观看 | 91精品国产乱码久久久 | 午夜影院 | 国产精品不卡 | 亚洲中午字幕 | 欧美性高潮 | 欧美a v在线| 一区二区三区四区视频 | 91观看 | 成人免费淫片aa视频免费 | 男女免费网站 | 视频一二三区 | 国产一级一级毛片 | 久久久久中文字幕 | 福利国产 | 国产一区二区小视频 | 日本天天操 | 一区二区免费在线视频 | 日韩国产免费观看 | 久久久久免费精品国产 | 日韩欧美在线播放 | 国产精品视频久久 | 亚洲精品在 | 成人免费大片黄在线播放 | 国产aa| 亚洲另类视频 | 亚洲一区二区在线视频 | 中文字幕在线剧情 | av天天干 | 欧美精品综合在线 | 亚洲一区二区av | 亚洲精品免费在线 | 精品在线一区二区三区 | 成人精品久久久 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 久国产视频 | 中文字幕乱码一区二区三区 | 日本精品视频 | 国产成人精品久久 | 日韩一区在线观看视频 |