電子鍾設計
『壹』 用51單片機設計一個電子鍾
巧了,國親無聊做了一個玩玩,給你看看把,其實電子鍾挺簡單的,下面是程序:
#include<reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitch=P3^2;
sbitkey=P3^5;
sbitkey1=P3^4;
uchart0,numn,numy,numr,nums,numf,numm,sw,w,q,b,s,g,sw1,w1,q1,b1,s1,g1,rq,temp,x;
uintu;
voidinit();
voiddisplay(uchar,uchar,uchar,uchar,uchar,uchar);
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=70;y>0;y--);
}
voidmain()
{
init();
while(1)
{
if(rq==1)
{
if(rq==1)
display(sw,w,q,b,s,g);
}
elseif(rq==2)
{
if(rq==2)
display(sw1,w1,q1,b1,s1,g1);
}
elseif(rq==3)
{
if(rq==3)
display(w,w,w,w,w,w);
}
elseif(rq==4)
{
uchari;
temp=0x01;
for(i=0;i<8;i++)
{
P1=~temp;
delay(100);
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++)
{
P1=~temp;
delay(100);
temp>>=1;
}
temp=0x01;
for(i=0;i<8;i++)
{
P1=temp;
delay(100);
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++)
{
P1=temp;
delay(100);
temp>>=1;
}
}
else
rq=1;
}
}
voidinit()
{
rq=1;
x=1;
nums=22;
numf=0;
numm=0;
numn=9;
numy=10;
numr=15;
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
IT0=1;
IT0=2;
EA=1;
EX0=1;
EX1=1;
ET0=1;
TR0=1;
ET1=1;//IE=0x82//CPU開中斷,CT0開中斷
}
voidtimer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0++;
if(key==0)
{
delay(50);
if(key==0)
{
x++;
while(key==0);
}
}
if(x==2&rq==1)
{
//P0=0xf3;
if(key1==0)
{
numf++;
while(key1==0);
}
}
elseif(x==3&rq==1)
{
//P0=0xfc;
if(key1==0)
{
nums++;
while(key1==0);
}
}
elseif(x==2&rq==2)
{
//P0=0xcf;
if(key1==0)
{
numr++;
while(key1==0);
}
}
elseif(x==3&rq==2)
{
//P0=0xf3;
if(key1==0)
{
numy++;
while(key1==0);
}
}
elseif(x==4&rq==2)
{
//P0=0xfc;
if(key1==0)
{
numn++;
while(key1==0);
}
}
else
{
x=1;
}
if(t0==20)
{
t0=0;
numm++;
}
if(numm==60)
{
numm=0;
numf++;
}
if(numf==60)
{
for(u=500;u>0;u--)
{
bell=0;
delay(1);
bell=1;
delay(1);
}
numf=0;
nums++;
}
if(nums==24)
{
nums=0;
numr++;
}
if(numr==30)
{
numr=0;
numy++;
}
if(numy==12)
{
numy=0;
numn++;
}
if(numn==100)
{
numn=0;
}
g=numm%10;
s=numm/10;
b=numf%10;
q=numf/10;
w=nums%10;
sw=nums/10;
g1=numr%10;
s1=numr/10;
b1=numy%10;
q1=numy/10;
w1=numn%10;
sw1=numn/10;
}
voidexert0()interrupt0
{
delay(50);
rq++;
while(ch==0);
}
voidt0int()interrupt3
{
TR1=0;
bell=!bell;
TH1=timer0h;
TL1=timer0l;
TR1=1;
}
voidexert1()interrupt2
{
rq=100;
}
voiddisplay(ucharsw,ucharw,ucharq,ucharb,uchars,ucharg)
{
P2=tab[sw];
P0=tabwe[0];
delay(5);
P0=0xff;
P2=tab[w];
P0=tabwe[1];
delay(5);
P0=0xff;
P2=tab[q];
P0=tabwe[2];
delay(5);
P0=0xff;
P2=tab[b];
P0=tabwe[3];
delay(5);
P0=0xff;
P2=tab[s];
P0=tabwe[4];
delay(5);
P0=0xff;
P2=tab[g];
P0=tabwe[5];
delay(5);
P0=0xff;
}
下面這個是電路圖,圖我沒有畫啊,不過我用模擬去做,應該跟電路圖差不多了,你可以參考下,可以實現流水燈,鬧鈴,日期,時間,等功能,上面給你的是按照你的要求,另外我懶得改了所以多了個功能就是可以看日期,你看上面的程序,第一個按鈕ch,按一下查看日期,再按一下查看溫度(被刪了,隨機現在是隨機顯示一個數字),再按一下是流水燈,再按一下又回到時間,另外兩個鍵key/key1;按key是選擇鎖定分還是時,如果你當前顯示的是日期的話就是順序鎖定日,月,年,按key1調整,圖上顯示的是22點00分09秒,就這樣了
設計方案的話..........呵呵,AT89S52+6個數碼管+11.0592晶振+2個30P電容+3個按鈕+1個10UF電容如圖連接,你自己去寫方案把,分數給那麼少,就只幫你那麼多了
『貳』 數子電子時鍾設計,使用160晶元,如何設計它的年月日
有兩種可能來:一這個設計被人修改自了,原設計是基於8031的由於片內沒有rom故要外接儲存電路,但是設計電路卻沒有大的改動!這個可能性比較大!二:由於程序比較大,或者對儲存的一些要求需要加儲存電路(可能性較小)。其實用AT89C51程序在2KB可以不加外部儲存電路的!
『叄』 數字電子鍾設計用匯編
有一個8086的給你借鑒一下,希望對你有用。
.486
DATA SEGMENTAT0USE16
ZDXL EQU20H ;中斷向量(20H)
OPORTEQU3A0H ;8259偶地址
JPORTEQU3A8H ;8259奇地址
PORT1EQU340H ;段地址
PORT2EQU360H ;位地址
DS0 EQU300H ;8253通道0
DSC EQU30CH ;8253控制口
COUNT EQU50
ORG 4000H
DATA1 DB6DUP(?)
ORG 4040H
DATA2 DB3DUP(?)
DATA ENDS
CODE SEGMENTUSE16
ASSUMECS:CODE,DS:DATA,ES:DATA
ORG2000H
BEG:CLI
JMPSTART
TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,
DB7FH,67H,77H,7CH,39H,5EH,79H,71H;段碼表
TIMERDB0 ;延時、計數初值
START:
MOVAX,DATA ;初始化
MOVDS,AX
MOVES,AX
MOVAX,0
MOVSS,AX
MOVSP,1000H
INIT8253:
MOVDX,DSC
MOVAL,00010110B ;方式3,方波發生器
OUTDX,AL
MOVDX,DS0
MOVAL,0BH
OUTDX,AL
MOVAL,0E9H
OUTDX,AL
SETVECT:
MOVDI,0
MOVDX,OFFSETSERVER ;中斷服務子程序偏移地址
MOVZDXL[DI],DX;送中斷向量低位
MOVDX,CS ;中斷服務子程序段地址
MOVZDXL[DI+2],DX;送中斷向量高位
INIT8259:
MOVAL,00010011B ;ICW1
MOVDX,OPORT
OUTDX,AL
MOVAL,00001000B ;ICW2
MOVDX,JPORT
OUTDX,AL
MOVAL,00001101B ;ICW4
MOVDX,JPORT
OUTDX,AL
MOVAL,11111110B ;OCW1
MOVDX,JPORT
OUTDX,AL
MOVAL,20H ;EOI(20H)
MOVDX,OPORT
OUTDX,AL
AGAIN:
STI ;開中斷
CALLCZ ;調拆字
CALLDISP ;調顯示
JMPAGAIN
CZPROC
PUSHCX
LEASI,DATA1 ;SI=拆字,取數
LEADI,DATA2 ;DI=顯示緩沖區首址
CZ0:
MOVBL,[SI]
ANDBL,0F0H;BL=
MOVCL,4
ROLBL,CL
MOV[DI],BL;(DI)=
INCDI
MOVBL,[SI]
ANDBL,0FH;BL=
MOV[DI],BL
INCSI
INCDI
CMPSI,08H;....
JBECZ0
POPCX
RET
CZ ENDP
DISP PROC ;顯示子程序
PUSHCX
PUSHDX
LEABX,TAB
LEASI,DATA2
MOVAH,0C1H
DISP1:
MOVDX,PORT2
MOVAL,AH
OUTDX,AL ;AL=,AL=位輸出
MOVDX,PORT1
MOVAL,[SI]
XLAT
OUTDX,AL ;AL=,AL=段輸出
MOVCX,0200H
LOOP$
INCSI
SALAH,1
ORAH,0C0H
CMPAH,0C0H
JNZDISP1
POPDX
POPCX
RET
DISPENDP
SERVERPROC ;8253中斷入口
CLI
PUSHAX
PUSHCX
PUSHDX
PUSHSI
PUSHDI
LEASI,TIMER
MOVAL,[SI]
INCAL
CMPAL,… ;與延時、計數值終值比較
JBWORK ;大於、等於(到1秒)轉移
MOV[SI],AL ;[SI]=,[SI]=,[SI]=
JMPEXIT
WORK:
MOVAL,0
MOV[SI],AL
LEASI,DATA2+2
MOVAL,[SI]
INCAL
AAA ;..十進制調整
CMPAL,60 ;...與60秒比較
JBMINUTE ;...大於、等於(60秒)轉移
MOV[SI],AL
JMPEXIT
MINUTE:
MOVAL,0
MOV[SI],AL
LEASI,DATA2+1
MOVAL,[SI]
INCAL
AAA ;...十進制調整
CMPAL,60 ;...與60分比較
JBHOURE ;...大於、等於(60分)轉移
MOV[SI],AL
JMPEXIT
HOURE:
MOVAL,0
MOV[SI],AL
LEASI,DATA2
MOVAL,[SI]
INCAL
AAA ;...十進制調整
CMPAL,24 ;...與24小時比較
JBNEXT ;...大於、等於(24小時)轉移
MOV[SI],AL
JMPEXIT
NEXT:
MOVAL,0
MOV[SI],AL
EXIT:
MOVAL,20H
MOVDX,OPORT
OUTDX,AL
POPDI
POPSI
POPDX
POPCX
POPAX
RET
SERVERENDP
CODE ENDS
ENDBEG
『肆』 基於單片機的電子鍾的設計
非常簡單,這是隨著大自然的一個搖擺計算
『伍』 電子鍾設計原理圖
設計題目 電子鍾
具有6個led 顯示器,分別顯示 時,分,秒
要求能設置時間,並且時間精度,每天誤差小於30秒。
主要任務
1) 設計控制系統數字電子電路部分的電原理圖
2) 按照電原理圖製作實物(制線路版,焊接)
3) 編制單片機控製程序
4) 綜合調式
以上設計先把電原理圖和程序用電子郵件寄來,然後再做樣機調式。
程序范列
;實用單片機電子鍾的製作
;主程序(MAIN),如下:
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIME
ORG 0300H
MAIN:
mov 20h,#00h
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
MOV IP,#02H ;IP,IE初始化
MOV IE,#82H
MOV TMOD,#01H ;設定定時器工作方式?
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0 ;啟動定時?
MOV SP,#40H ;重設堆棧指針
NEXT: LCALL DISP ;調用顯示子程序?
LCALL KEY ;調用按鍵檢測子程序
JZ NEXT ;
LCALL ANKEY ;調用按鍵處理子程序
SJMP NEXT ;重新循環
NOP
NOP
NOP
;定時中斷處理程序:
TIME: PUSH ACC ;保護現場
PUSH PSW
MOV TL0,#0B4H ;賦定時初值
MOV TH0,#3CH
INC 20H ;
MOV A,20H
CJNE A,#20,RETI1
MOV 20H,#00H ;一秒鍾時間到
MOV A,21H
ADD A,#01H
DA A
MOV 21H,A
CJNE A,#60H,RETI1
MOV 21H,#00H ;一分鍾時間到
MOV A,22H
ADD A,#01H
DA A
MOV 22H,A
CJNE A,#60H,RETI1
MOV 22H,#00H ;一小時時間到
MOV A,23H
ADD A,#01H
DA A
MOV 23H,A
CJNE A,#24H,RETI1
MOV 23H,#00H ;到時間達到24小時,清零.
RETI1: POP PSW ;恢復現場
POP ACC
RETI ;中斷返回?
NOP
NOP
;顯示子程序
DISP: ANL 2FH,#10H ;處理小數點
MOV A,21H ;處理秒21H-->2DH,2EH
ANL A,#0FH
ORL A,2FH
MOV 2FH,A
MOV A,21H
ANL A,#0F0H
SWAP A
MOV 2EH,A
ANL 2DH,#10H
MOV A,22H ;處理分鍾22H-->2CH,2DH
ANL A,#0FH
ORL A,2DH
MOV 2DH,A
MOV A,22H
ANL A,#0F0H
SWAP A
MOV 2CH,A
ANL 2BH,#10H
MOV A,23H ;處理小時23H-->2AH,2BH
ANL A,#0FH
ORL A,2BH
MOV 2BH,A
MOV A,23H
ANL A,#0F0H
SWAP A
MOV 2AH,A
MOV R0,#2FH ;顯示偏移量
MOV R3,#06H
MOV DPTR,#TABLE
MOV A,#0BFH
LOOP1: MOV B,A ;
MOV P2,a
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,a ;送顯示
MOV R2,#80H ;延時
DJNZ R2,$
DEC R0
MOV A,B
RR A
DJNZ R3,LOOP1 ;循環顯示
RET
TABLE: db 28h,7eh,0a2h,62h,74h,61h,21h ;不帶小數點
DB 7ah,20h,60h,00,00,00,00,00,00
DB 8H,5eH,82H,42H,54H,41H,1H,5aH ;帶小數點
DB 00H,40H,00,00,00,00,00,00
NOP
NOP
;按鍵判斷程序
KEY: MOV P3,#0FFH ;
MOV A,P3
CPL A
ANL A,#3CH
JZ RETX ;無鍵按下則返回
LCALL DISP ;
LCALL DISP
MOV A,P3
CPL A
ANL A,#3CH
JZ RETX ;鍵盤去抖動。
MOV R6,A ;將鍵值存入R6。
LOOP2: LCALL DISP ;
MOV A,P3
CPL A
ANL A,#3CH
JNZ LOOP2 ;等待鍵釋放
MOV A,R6
RETX: RET
NOP
NOP
;按鍵處理子程序
ANKEY: CLR EA ;關中斷
LX: MOV A,R6
JB ACC.2,L1 ;是功能鍵轉L1
JB ACC.3,L2 ;是確認鍵轉L2
JB ACC.4,L3 ;是減1鍵轉L3
JNB ACC.5,L12 ;不是增1鍵,轉L12
JB 2BH.4,L6 ;判斷使哪一位(時、分、秒)的值加1
JB 2DH.4,L8
JB 2FH.4,L9
L12: LCALL DISP
LCALL DISP
LCALL KEY ;判斷有無鍵按下。
JZ L12
LJMP LX
L2: MOV 25H,#00H ;確認鍵處理程序
CLR 2BH.4
CLR 2DH.4
CLR 2FH.4
SETB EA
RET
L3: JB 2BH.4,L61 ;增一鍵處理程序
JB 2DH.4,L81
JB 2FH.4,L91
AJMP L12
L1: MOV A,25H ;功能鍵處理程序
JZ LB1
JB ACC.0,LB2
JB ACC.1,LB3
JNB ACC.2,L12
LB1: MOV 25H,#01H ;25H單元是標志位,(25H)=01H調節時單元的值
SETB 2BH.4
CLR 2DH.4
CLR 2FH.4
AJMP L12
LB3: MOV 25H,#04H ;25H單元是標志位,(25H)=01H調節秒單元的值
SETB 2FH.4
CLR 2DH.4
CLR 2BH.4
AJMP L12
LB2: MOV 25H,#02H ;25H單元是標志位,(25H)=01H調節分單元的值
SETB 2DH.4
CLR 2BH.4
CLR 2FH.4
AJMP L12
L61: AJMP L611 ;
L81: AJMP L811 ;
L91: AJMP L911
L6: MOV A,23H ;時加一
ADD A,#01H
DA A
MOV 23H,A
CJNE A,#24H,L15
L15: JC L112
MOV 23H,#00H
L112: AJMP L12
L8: MOV A,22H ;分加一
ADD A,#01H
DA A
MOV 22H,A
CJNE A,#60H,L16
L16: JC L112
MOV 22H,#00H
AJMP L12
L9: MOV A,21H ;秒加一
ADD A,#01H
DA A
MOV 21H,A
CJNE A,#60H,L17
L17: JC L112
MOV 21H,#00H
AJMP L12
L611: MOV A,23H ;時減一
ADD A,#99H
DA A
MOV 23H,A
CJNE A,#99H,L112
MOV 23H,#23H
AJMP L12
L811: MOV A,22H ;分減一
ADD A,#99H
DA A
MOV 22H,A
CJNE A,#99H,L112
MOV 22H,#59H
AJMP L12
L911: MOV A,21H ;秒減一
ADD A,#99H
DA A
MOV 21H,A
CJNE A,#99H,L112
MOV 21H,#59H
AJMP L12
NOP
NOP
END
『陸』 多功能電子時鍾的設計與製作
一般來說數字鍾要完成的基本功能是利用數碼管、按鍵、蜂鳴器完成版24小時制時間顯示權(輸入時鍾脈沖一般要求為1024Hz),時間調節,鬧鍾設定,整點報時。我不知道你是用vhdl和實驗箱做還是直接用現有元件完成電路板,後者可能要麻煩一點我沒做過,前一種方法可能容易一定,可以自己增加一些功能,比如日期顯示,和鬧鍾開關。難度在於要利用設計軟體進行設計或模擬,需要摸清軟體的脾性,vhdl並沒有c語言那麼容易掌握。我不清楚你到底哪個地方有問題,能不能再說清楚點?
『柒』 誰有電子鍾的設計原理圖
http://www.scuec.e.cn/jsj/zidonghua/article/uploadfile/200712/20071208015119289.jpg http://www.picavr.com/upload/2008_01/08010721328954.jpg http://www.picavr.com/n1729c24.aspx 網頁上有詳細的做法和程序
記得採納啊
『捌』 電子鍾設計
一、數字鍾的組成與基本原理
一、課程名稱:數字電子鍾的設計。
二、內容:設計並製作一台數字電子鍾,完成設計說明書。
三、設計內容及要求:
設計內容:要求由所學的數字電子知識以及查閱有關資料設計並製作出一台數字電子鍾。而且要完成電路的裝配和調試。設計基本框圖如下:
.......
四、要求:1>.採用位數碼管,顯示範圍0分00秒——23時59分59秒。
2>.提出至少兩種設計實現方案,並優選方案進行設計。
3>.詳細說明設計方案,並計算元件參數。包括選擇的依據和原理,參數確定的根據。
4>當電路發生走時誤差時,要求電路具有校時功能。3、要求電路具有整點報時功能,報時聲響為四低一高,最後一響正好為整點。
五、數字鍾的基本原理
數字電子鍾的原理方框圖如圖1所示。干電路系統由秒信號發生器,"時、分、秒計數器、解碼器及顯示器、校時電路、整點報時電路組成。秒信號產生器是整個系統的時基信號,它直接決定計時系統的精度,一般用石英晶體振盪器加分頻器來實現。將標准秒信號送入"秒計數器","秒計數器"採用60進制計數器,每累計60秒發一個"分脈沖"信號,該信號將作為"分計數器"的時鍾脈沖。"分計數器"也採用60進制計數器,每累計60分鍾,發出一個"時脈沖"信號,該信號將被送到"時計數器"。"時計數器"採用24進制計時器,可實現對一天24小時的累計。解碼顯示電路將"時"、"分"、"秒"計數器的輸出狀態菁七段顯示解碼器解碼,通過六位LED七段顯示器顯示出來。整點報時電路時根據計時系統的輸出狀態產生一脈沖信號,然後去觸發一音頻發生器實現報時。校時電路時用來對"時"、"分"、"秒"顯示數字進行校對調整的