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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機按鍵控制DS1302芯片時鐘

[復制鏈接]
跳轉到指定樓層
樓主
ID:244206 發表于 2018-1-24 22:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
按鍵控制芯片時鐘

單片機源程序如下:
  1. #include "STC15F2K60S2.H"
  2. #include "INTRINS.H"
  3. #include "DS1302.H"

  4. #define  uchar unsigned char
  5. #define uint unsigned int
  6. #define wela 0xcf
  7. #define dula 0xef

  8. #define wendul 0xa7        //c

  9. uchar gang=0xbf;        //-
  10. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段選共陰數碼管
  11. uchar code table1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//位選

  12. uchar shi,fen,miao;
  13. uchar temp,num;
  14. uchar f,ff;
  15. bit key4_flag=1;
  16. bit bb=1;
  17. void key();
  18. void Delay1ms(uint m)                //@11.0592MHz
  19. {
  20.         unsigned char i, j;
  21.         uint z;
  22.         for(z=m;z>0;z--)
  23.         {
  24.                 _nop_();
  25.                 _nop_();
  26.                 _nop_();
  27.                 i = 11;
  28.                 j = 190;
  29.                 do
  30.                 {
  31.                         while (--j);
  32.                 } while (--i);
  33.         }
  34. }
  35. void show_1()//界面一 時鐘界面
  36. {
  37.         P2 = ((P2&0x1f)|dula);
  38.         P0 = table[shi%100/10];
  39.         P2 &= 0x1f;                                                //shi
  40.         P2 = ((P2&0x1f)|wela);
  41.         P0 = table1[0];
  42.         P2 &= 0x1f;
  43.         Delay1ms(1);

  44.         P2 = ((P2&0x1f)|dula);
  45.         P0 = table[shi%10];
  46.         P2 &= 0x1f;                                                //shi
  47.         P2 = ((P2&0x1f)|wela);
  48.         P0 = table1[1];
  49.         P2 &= 0x1f;
  50.         Delay1ms(1);

  51.         P2 = ((P2&0x1f)|dula);
  52.         P0 = gang;
  53.         P2 &= 0x1f;
  54.         P2 = ((P2&0x1f)|wela);                        //-
  55.         P0 = table1[2];
  56.         P2 &= 0x1f;
  57.         Delay1ms(1);

  58.         P2 = ((P2&0x1f)|dula);
  59.         P0 = table[fen%100/10];
  60.         P2 &= 0x1f;                                           //fen
  61.         P2 = ((P2&0x1f)|wela);
  62.         P0 = table1[3];
  63.         P2 &= 0x1f;
  64.         Delay1ms(1);

  65.         P2 = ((P2&0x1f)|dula);
  66.         P0 = table[fen%10];
  67.         P2 &= 0x1f;
  68.         P2 = ((P2&0x1f)|wela);                  //fen
  69.         P0 = table1[4];
  70.         P2 &= 0x1f;
  71.         Delay1ms(1);

  72.         P2 = ((P2&0x1f)|dula);
  73.         P0 = gang;
  74.         P2 &= 0x1f;
  75.         P2 = ((P2&0x1f)|wela);                   //-
  76.         P0 = table1[5];
  77.         P2 &= 0x1f;
  78.         Delay1ms(1);

  79.         P2 = ((P2&0x1f)|dula);
  80.         P0 = table[miao%100/10];                         //miao
  81.         P2 &= 0x1f;
  82.         P2 = ((P2&0x1f)|wela);
  83.         P0 = table1[6];
  84.         P2 &= 0x1f;
  85.         Delay1ms(1);

  86.         P2 = ((P2&0x1f)|dula);
  87.         P0 = table[miao%10];
  88.         P2 &= 0x1f;
  89.         P2 = ((P2&0x1f)|wela);                 //miao
  90.         P0 = table1[7];
  91.         P2 &= 0x1f;
  92.         Delay1ms(1);
  93. }
  94. void show()
  95. {
  96.         P2 &=0x1f;
  97.         P2 = ((P2&0x1f)|0x80);
  98.         P0 = 0xff;
  99.         P2 &= 0x1f;
  100.         Delay1ms(1000);

  101. }

  102. void init()
  103. {
  104.         TMOD = 0X01;//模式
  105.         TL0 = 0X00;
  106.         TH0 = 0X4C;
  107.         ET0 = 1; //中斷允許位
  108.         TR0 = 1;//開始計數
  109.         EA = 1;        //打開總中斷
  110. }
  111. void main()
  112. {
  113.         init();
  114.         show();
  115.         Initial();
  116.         while(1)
  117.         {
  118.                 show_1();
  119.                 key();
  120.                 if(bb==1)
  121.                 {
  122.                         shi = read_1302(0x85);
  123.                         fen = read_1302(0x83);
  124.                         miao = read_1302(0x81);
  125.                 }

  126.                
  127.         }
  128. }
  129. void time() interrupt 1        //
  130. {
  131.         TL0 = 0X00;
  132.         TH0 = 0X4C;
  133.         temp++;
  134.         if(temp==20)
  135.         {       
  136.                 temp=0;
  137.                 num++;
  138.                 gang = (num<<6)|0xbf;
  139.         //        11_flag = 1;
  140.                 if(num==10)
  141.                 {
  142.                         num=0;
  143.                 }
  144.         }
  145. }
  146. void key()
  147. {

  148.         if(P30==0&&key4_flag==1)
  149.         {
  150.                 Delay1ms(20);
  151.                 if(P30==0)
  152.                 {
  153.                         while(!P30);
  154.                         f++;
  155.                         switch(f)
  156.                         {
  157.                                 case 1:        bb=0;
  158.                                                 Write1302 (0x8E,0X00); //允許寫,禁止寫保護
  159.                                                 Write1302 (0x80,0x00|(miao)/10*16+(miao)%10); //向DS1302內寫秒寄存器80H寫入初始秒數據00
  160.                                                 Write1302 (0x8E,0x80); //打開寫保護
  161.                                                 if(P31==0)
  162.                                                 {
  163.                                                         EA=0;                  
  164.                                                         Delay1ms(20);
  165.                                                         if(P31==0)
  166.                                                         {                         
  167.                                                          while(!P31);
  168.                                                           
  169.                                                             miao++;
  170.                                                                 if(miao==60)
  171.                                                                 {
  172.                                                                         miao=0;
  173.                                                                 }               
  174.                                                           
  175.                                                          
  176.                                                         }
  177.                                                 }
  178.                                                
  179.                                                 break;
  180.                                 case 2:bb=0;
  181.                                                 Write1302 (0x8E,0X00); //允許寫,禁止寫保護
  182.                                                 Write1302 (0x80,0x00|(fen)/10*16+(fen)%10); //向DS1302內寫秒寄存器80H寫入初始秒數據00
  183. ……………………

  184. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
按鍵控制芯片時鐘.rar (36.12 KB, 下載次數: 15)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2018-1-25 00:34 | 只看該作者
有電路圖嗎?
回復

使用道具 舉報

板凳
ID:422804 發表于 2018-11-11 20:09 | 只看該作者
為什么我的按鍵不頂用呢
回復

使用道具 舉報

地板
ID:760161 發表于 2021-5-15 23:29 來自手機 | 只看該作者
只有程序嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人国产精品久久 | 欧美韩一区二区 | 亚洲 欧美 另类 日韩 | 国产成人精品免费视频大全最热 | 精品在线一区二区三区 | 青草青草久热精品视频在线观看 | 爱综合| 中文字幕一区在线观看视频 | 色综网 | 高清免费av| 一级黄色片免费 | 亚洲网站在线观看 | 国产成人精品网站 | av免费看在线 | 中文字幕在线一区二区三区 | 伊人天堂网 | 97精品超碰一区二区三区 | 精品美女视频在免费观看 | av 一区二区三区 | 欧美一区二区三区日韩 | 碰碰视频 | 视频一区二区在线 | 欧美999 | 资源首页二三区 | 精品少妇一区二区三区在线播放 | 国产精品久久国产精品 | 久久不卡| 精品中文字幕久久 | 可以看黄的视频 | 久久精品一级 | 色爱综合网 | 欧美精品国产精品 | 激情六月丁香婷婷 | 免费视频一区 | 九九在线视频 | 久久成人免费 | 欧美在线视频观看 | 日韩欧美一级片 | 国产精品久久久久久久午夜 | 精品国产精品三级精品av网址 | 欧美视频精品 |