<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 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 中文自拍日本综合| 国产香蕉久久精品综合网| 亚洲丁香婷婷综合久久| 色综合久久88色综合天天| 亚洲伊人成无码综合网| 色婷婷综合久久久中文字幕| 狠狠色综合一区二区| 亚洲伊人久久综合中文成人网| 久久91精品久久91综合| 国产色产综合色产在线观看视频 | 亚洲国产精品综合久久一线| 伊人色综合久久88加勒| 在线精品国产成人综合| 99久久综合精品免费| 国产美女亚洲精品久久久综合| 亚洲国产综合AV在线观看| 人人妻人人狠人人爽天天综合网| 狠狠色综合7777久夜色撩人| 91丁香亚洲综合社区| 久久久久青草线蕉综合超碰| 91久久婷婷国产综合精品青草| 熟天天做天天爱天天爽综合网| 久久综合久久美利坚合众国| 狠狠色狠狠色综合伊人| 伊人久久中文大香线蕉综合| 亚洲国产精品综合久久一线| 区二区三区激情综合| HEYZO无码综合国产精品227| 国产一区二区三区亚洲综合| 国产综合成色在线视频| 亚洲av综合日韩| 综合久久久久久中文字幕| 色噜噜狠狠色综合中国| 亚洲国产aⅴ综合网| 亚洲综合久久夜AV | 五月丁香综合缴情六月小说| 亚洲欧洲日韩综合| 色综合久久综合网| 国产成人综合亚洲亚洲国产第一页| 国产综合成人久久大片91| 亚洲综合精品一二三区在线|