0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用LED制作的電腦電子鐘

電子設(shè)計 ? 來源:xx ? 2019-02-11 17:23 ? 次閱讀

本例介紹一種用LED制作的電腦電子鐘(電腦萬年歷)。其制作完成裝潢后的照片如下圖:

上圖中,年、月、日及時間選用的是1.2寸共陽數(shù)碼管,星期選用的是2.3寸數(shù)碼管,溫度選用的是0.5寸數(shù)碼管,也可根據(jù)個人的愛好選用不同規(guī)格的數(shù)碼管。原理圖如下圖所示:

上圖中,CPU選用的是AT89C2051,時鐘芯片選用的是Dallas公司的DS1302, 溫度傳感器選用的是Dallas公司的數(shù)字溫度傳感器DS1820,顯示驅(qū)動芯片選用的是德州儀器公司的TPIC6B595,也可選用與其兼容的芯片NC595或 國產(chǎn)的AMT9595。整個電子鐘用兩個鍵來調(diào)節(jié)時間和日期。一個是位選 鍵,一個是數(shù)字調(diào)節(jié)鍵。按一下位選鍵,頭兩位數(shù)字開始閃動,進入設(shè) 定調(diào)節(jié)狀態(tài),此時按數(shù)字調(diào)節(jié)鍵,當(dāng)前閃動位的數(shù)字就可改變。全部參 數(shù)調(diào)節(jié)完后,五秒鐘內(nèi)沒有任何鍵按下,則數(shù)字停止閃動,退出設(shè)定調(diào)節(jié)狀態(tài)。源程序清單如下(無溫度顯示程序):

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);/*字節(jié)寫過程*/

declare (com,dat) byte;

call clear;

rst=1;

call send1302(com);

call send1302(dat);

call clear;

end wbyt1;

wbyt8:procedure;/*時鐘多字節(jié)突發(fā)模式寫過程*/

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;/*時鐘多字節(jié)突發(fā)模式讀過程*/

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電阻串聯(lián)充電*/

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


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    22991

    瀏覽量

    654693
  • 電子鐘
    +關(guān)注

    關(guān)注

    7

    文章

    189

    瀏覽量

    36876
收藏 人收藏

    評論

    相關(guān)推薦

    電子制作:LED流動顯示電子鐘

    筆者設(shè)計制作了一款LED流動顯示電子鐘,體積小巧,字形美觀,且每天有4次鬧鈴,每次定時時間一到,蜂鳴器響20s,非常實用。
    發(fā)表于 03-26 11:13 ?4100次閱讀
    <b class='flag-5'>電子</b><b class='flag-5'>制作</b>:<b class='flag-5'>LED</b>流動顯示<b class='flag-5'>電子鐘</b>

    LED數(shù)字電子鐘制作方法

    本文介紹的LED電子鐘克服了以往的弊端,而且采用了家電通用的紅外遙控器進行控制,方便使用。有一路鬧鈴輸出,可以通過遙控器設(shè)置鬧鈴時間及允許與否。
    發(fā)表于 02-27 10:48 ?2.6w次閱讀

    智能電子鐘制作

    智能電子鐘制作 [hide][/hide]
    發(fā)表于 10-10 15:10

    沒有誤差的電子鐘設(shè)計并制作

    沒有誤差的電子鐘設(shè)計并制作
    發(fā)表于 08-20 16:59

    51做的電子鐘

    51做的電子鐘51做的電子鐘
    發(fā)表于 11-12 17:54

    單片機制作LED流動顯示電子鐘

    04年《無線電》雜志第1期上有篇文章《LED流動顯示電子鐘》,AT89C2051單片機控制,還有74LS373作驅(qū)動,74LS244按三態(tài)緩沖和線驅(qū)動作按鍵驅(qū)動。 05年,花了幾天
    發(fā)表于 07-19 01:52

    LCD1602制作可調(diào)電子鐘的設(shè)計資料分享

    LCD1602制作可調(diào)電子鐘制作一種采用LCD1602顯示的電子鐘,在LCD上顯示當(dāng)前的時間。顯示格式為“時時:分分:秒秒”。設(shè)有4個功能
    發(fā)表于 02-07 07:10

    3208LED電子鐘電路原理圖

    3208LED電子鐘原理圖,3208 LED電子鐘電路圖
    發(fā)表于 11-01 15:17 ?495次下載
    3208<b class='flag-5'>LED</b><b class='flag-5'>電子鐘</b>電路原理圖

    基于單片機控制的電子鐘的電路及制作

    基于單片機控制的電子鐘的電路及制作
    發(fā)表于 05-17 00:00 ?4931次閱讀
    基于單片機控制的<b class='flag-5'>電子鐘</b>的電路及<b class='flag-5'>制作</b>

    LED顯示電腦電子鐘

    LED顯示電腦電子鐘 本例介紹一種LED制作電腦
    發(fā)表于 10-05 10:04 ?7537次閱讀

    LED顯示電腦電子鐘電路原理圖

    本例介紹一種LED制作電腦電子鐘(電腦萬年歷)。其制作
    發(fā)表于 07-17 10:05 ?9064次閱讀

    3208LED點陣屏電子鐘制作全資料

    3208LED點陣屏電子鐘制作全資料,很好設(shè)計資料,快來學(xué)習(xí)吧。
    發(fā)表于 05-09 16:11 ?35次下載

    基于STC89C52單片機的LED顯示電子鐘制作講解

    基于STC89C52單片機的LED顯示電子鐘制作講解(單片機價格)-該文檔為基于STC89C52單片機的LED顯示電子鐘
    發(fā)表于 07-22 14:35 ?87次下載
    基于STC89C52單片機的<b class='flag-5'>LED</b>顯示<b class='flag-5'>電子鐘</b>的<b class='flag-5'>制作</b>講解

    LCD1602制作可調(diào)電子鐘

    LCD1602制作可調(diào)電子鐘制作一種采用LCD1602顯示的電子鐘,在LCD上顯示當(dāng)前的時間。顯示格式為“時時:分分:秒秒”。設(shè)有4個功能
    發(fā)表于 12-04 10:36 ?33次下載
    <b class='flag-5'>用</b>LCD1602<b class='flag-5'>制作</b>可調(diào)<b class='flag-5'>電子鐘</b>

    LED顯示電腦電子鐘

    電子發(fā)燒友網(wǎng)站提供《LED顯示電腦電子鐘.doc》資料免費下載
    發(fā)表于 11-06 08:31 ?0次下載
    <b class='flag-5'>LED</b>顯示<b class='flag-5'>電腦</b><b class='flag-5'>電子鐘</b>