<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發網

      電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
      搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

      單片機 LED顯示電子鐘

      作者:佚名    文章來源:本站原創    點擊數:    更新時間:2010-8-8
      本例介紹一種用LED制作的電腦電子鐘(電腦萬年歷)。其制作完成裝潢后的照片如下圖:
      電子鐘
        上圖中,年、月、日及時間選用的是1.2寸共陽數碼管,星期選用的是2.3寸數碼管,溫度選用的是0.5寸數碼管,也可根據個人的愛好選用不同規格的數碼管。原理圖如下圖所示:
      數字電子鐘電路圖
        上圖中,CPU選用的是AT89C2051,時鐘芯片選用的是Dallas公司的DS1302, 溫度傳感器選用的是Dallas公司的數字溫度傳感器DS1820,顯示驅動芯片選用的是德州儀器公司的TPIC6B595,也可選用與其兼容的芯片NC595或 國產的AMT9595。整個電子鐘用兩個鍵來調節時間和日期。一個是位選 鍵,一個是數字調節鍵。按一下位選鍵,頭兩位數字開始閃動,進入設 定調節狀態,此時按數字調節鍵,當前閃動位的數字就可改變。全部參 數調節完后,五秒鐘內沒有任何鍵按下,則數字停止閃動,退出設定調節狀態。源程序清單如下(無溫度顯示程序):
      start:do;
      $include(reg51.dcl)
      declare (sclk,io,rst) bit at (0b3h) register; /* p33,p34,p35 */
      declare (command,data,n,temp1,num) byte;
      declare a(9) byte;
      declare ab(6) byte;
      declare aco(11) byte constant (0fdh,60h,0dah,0f2h,66h,0b6h,0beh,
      0e0h,0feh,0f6h,00h);
      declare week(11) byte constant (0edh,028h,0dch,7ch,39h,75h,0f5h,
      2ch,0fdh,7dh,00h);
      declare da literally 'p15',clk literally 'p16',ale literally 'p17',
      mk literally 'p11',sk literally 'p12';
      clear:procedure;
      sclk=0;io=0;rst=0;
      end clear;
      send1302:procedure(comm);
      declare (i,comm) byte;
      do i=0 to 7;
      comm=scr(comm,1);
      io=cy;
      call time(1);
      sclk=0;
      call time(1);
      sclk=1;
      end;
      end send1302;
      wbyt1:procedure(com,dat);/*字節寫過程*/
      declare (com,dat) byte;
      call clear;
      rst=1;
      call send1302(com);
      call send1302(dat);
      call clear;
      end wbyt1;
      wbyt8:procedure;/*時鐘多字節突發模式寫過程*/
      declare j byte;
      call clear;
      a(7)=A(6);a(6)=a(0);
      rst=1;
      call send1302(command);
      do j=1 to 8;
      call send1302(a(j));
      end;
      call clear;
      end wbyt8;
      RBYT1:PROCEDURE;
      DECLARE I BYTE;
      CALL CLEAR;
      RST=1;
      call send1302(0c1h);
      IO=1;
      DO I=0 TO 7;
      SCLK=1;
      SCLK=0;
      CY=IO;
      N=SCR(N,1);
      END;
      A(8)=N;
      CALL CLEAR;
      END RBYT1;
      send595:procedure;
      declare k byte;
      do k=0 to 7;
      data=scr(data,1);
      da=cy;
      clk=1;
      clk=0;
      end;
      end send595;
      send595_1:procedure;
      declare k byte;
      do k=0 to 7;
      data=scr(data,1);
      da1=cy;
      clk1=1;
      clk1=0;
      end;
      end send595_1;
      rb1:procedure(abc,j);
      DECLARE (I,j,abc) BYTE;
      CALL CLEAR;
      RST=1;
      call send1302(abc);
      IO=1;
      DO I=0 TO 7;
      SCLK=1;
      SCLK=0;
      CY=IO;
      N=SCR(N,1);
      END;
      ab(j)=N;
      ab(j)=dec(ab(j));
      CALL CLEAR;
      end rb1;
      rbyt6:procedure;
      call rb1(0f1h,0);
      call rb1(0f3h,1);
      call rb1(0f5h,2);
      call rb1(0f7h,3);
      call rb1(0f9h,4);
      call rb1(0fbh,5);
      call rb1(0fdh,6);
      end rbyt6;
      wbyt6:procedure;
      call wbyt1(8eh,0); /* write enable */
      call wbyt1(0f0h,ab(0));
      call wbyt1(0f2h,ab(1));
      call wbyt1(0f4h,ab(2));
      call wbyt1(0f6h,ab(3));
      call wbyt1(0f8h,ab(4));
      call wbyt1(0fah,ab(5));
      call wbyt1(0fch,ab(6));
      call wbyt1(8eh,80h); /* write disable */
      end wbyt6;
      rbyt8:procedure;/*時鐘多字節突發模式讀過程*/
      declare (i,j) byte;
      call clear;
      rst=1;
      call send1302(command);
      io=1;
      do j=1 to 8;
      do i=0 to 7;
      sclk=1;
      call time(1);
      sclk=0;
      cy=io;
      n=scr(n,1);
      end;
      a(j)=n;
      end;
      call clear;
      a(0)=a(6);a(6)=A(7);
      a(0)=a(0) and 0fh;
      if a(0)>6 then a(0)=0;
      CALL RBYT1;
      if (a(1)=0 and a(2)=0 and a(3)=0) then
      do;
      do num=0 to 35;
      call time(250);
      end;
      temp1=1;
      end;
      if temp1=1 then
      do;
      temp1=0;
      ab(4)=ab(4)+1;
      if ab(4)>99h then
      do;
      ab(4)=0;
      ab(5)=ab(5)+1;
      if ab(5)>99h then ab(5)=0;
      end;
      call wbyt6;
      end;
      end rbyt8;
      display:procedure; /*jieya,yima,fasong*/
      declare (i,n,m) byte;
      n=a(0) and 0fh; /* send week */
      data=week(n);
      call send595;
      n=a(4); /* send date */
      n=n and 0fh;
      data=aco(n);
      call send595;
      n=a(4);
      n=shr(n,4);
      data=aco(n);
      call send595;
      do i=1 to 3; /* send second,minute,hour */
      n=a(i);
      n=n and 0fh;
      data=aco(n);
      call send595;
      n=a(i);
      n=shr(n,4);
      data=aco(n);
      call send595;
      end;
      do i=5 to 6; /* send month,year */
      n=a(i);
      n=n and 0fh;
      data=aco(n);
      call send595;
      n=a(i);
      n=shr(n,4);
      data=aco(n);
      call send595;
      end;
      n=a(8); /* send 19 or 20 */
      n=n and 0fh;
      data=aco(n);
      call send595;
      n=a(8);
      n=shr(n,4);
      data=aco(n);
      call send595;
      do m=0 to 5;
      n=ab(m);
      n=n and 0fh;
      data=aco(n);
      call send595_1;
      n=ab(m);
      n=shr(n,4);
      data=aco(n);
      call send595_1;
      end;
      ale=0;
      ale=1;
      end display;
      beginset:procedure;
      a(0)=06h;a(1)=58h;a(2)=59h;a(3)=23h;
      a(4)=30h;a(5)=06h;a(6)=97h;a(7)=00;
      a(8)=19h; /* set date/time (1997,7,1,8:00:00,week 3) */
      call wbyt1(8eh,0); /* write enable*/
      call wbyt1(80h,00h);/* start colock */
      call wbyt1(0beh,0abh);/*兩個二極管與8K電阻串聯充電*/
      command=0beh; /* write colock/date */
      call wbyt8;
      call wbyt1(0c0h,a(8));
      call wbyt1(8eh,80h); /* set write protect bit */
      end beginset;
      key:procedure;
      declare (i,time1,k1,tem) byte;
      call time(100);
      k1=7;time1=30;
      if mk=0 then
      do;
      do while time1>0;
      week: if k1=0 then
      do;
      do i=0 to 5;
      /* call hz(a(0)); */
      end;
      do i=0 to 3;
      /* call hz0; */
      end;
      end;
      tem=a(k1);
      if k1=7 then tem=a(8);
      a(k1)=0aah;
      if k1=7 then a(8)=0aah;
      call display;
      call time(254);
      call time (254);
      a(k1)=tem;
      if k1=7 then a(8)=tem;
      call display;
      call time(254);
      call time(254);
      call time(254);
      time1=time1-1;
      if mk=0 then
      do;call time(100); /*MOD KEY PROCESS*/
      TIME1=30;
      IF MK=0 THEN
      DO;
      k1=k1-1;
      DO WHILE K1=0FFH;
      K1=7;
      END;
      END;
      end;
      IF SK=0 THEN
      DO;CALL TIME(100); /*SET KEY PROCESS*/
      TIME1=30;
      IF SK=0 THEN
      DO;
      tem=tem+1;
      tem=dec(tem);
      DO CASE K1;
      DO WHILE tem=7;/*week*/
      tem=0;
      END;
      DO WHILE tem=60H;/*scond*/
      tem=0;
      END;
      DO WHILE tem=60H;/*minute*/
      tem=0;
      END;
      DO WHILE tem=24H;/*hour*/
      tem=0;
      END;
      DO WHILE tem=32H;/*date*/
      tem=1;
      END;
      DO WHILE tem=13H;/*month*/
      tem=1;
      END;
      DO while tem=100h; /* YEAR */
      tem=00;
      END;
      DO WHILE TEM>=21H;
      tem=19H;
      END;
      END;
      A(K1)=tem;
      if k1=7 then a(8)=tem;
      END;
      END;
      END;
      END;
      end key;
      main$program:
      mk=1;sk=1;temp1=0;num=0;p32=1;
      if sk=0 then call beginset;
      clk=0;da=0;ale=1;
      loop:
      do while mk=1 ;
      if a(0)>6 then a(0)=0;
      command=0bfh;
      call rbyt8;
      call display;
      do while mk=0;
      call key;
      call wbyt1(8eh,0);
      command=0beh;
      call wbyt8;
      call wbyt1(0C0H,A(8));
      call wbyt1(8eh,80h);
      end;
      end;
      goto loop;
      end start
      Tags:led電子鐘,單片機,電子鐘  
      責任編輯:admin
      請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 亚洲日韩久久综合中文字幕| 久久本道久久综合伊人| 一本久久a久久精品vr综合| 狠狠色丁香久久综合婷婷| 2021精品国产综合久久| 91精品国产综合久久久久久| 国产精品综合久成人 | 色综合色综合色综合色综合网 | 色欲老女人人妻综合网| 色噜噜狠狠色综合久| 亚洲精品综合一二三区在线 | 五月天综合色激情| 久久一日本道色综合久| 伊人久久成人成综合网222| 久久99国产综合精品免费| 青青草原综合久久大伊人 | 青青热久久久久综合精品| 色噜噜狠狠色综合欧洲selulu| HEYZO无码综合国产精品227| 亚洲国产欧洲综合997久久| 亚洲婷婷第一狠人综合精品| 婷婷久久香蕉五月综合加勒比| 国产精品综合久成人 | 91精品国产综合久久四虎久久无码一级| 亚洲国产成人久久综合区| 色天使久久综合网天天| 五月综合激情婷婷六月色窝| 亚洲av无码兔费综合| 亚洲免费综合色在线视频| 鲁一鲁一鲁一鲁一曰综合网| 无码专区久久综合久中文字幕 | 亚洲av无码国产综合专区| 亚洲国产国产综合一区首页| 97久久国产综合精品女不卡 | 亚洲av日韩综合一区二区三区| 久久精品国产91久久综合麻豆自制| 激情综合色综合啪啪开心| 国产在线五月综合婷婷| 国产精品亚洲综合五月天| 亚洲综合无码一区二区痴汉| 国产性天天综合网|