㈠ 51單片機做數字電子鍾
這么復雜的東西給這么少分 暈死了 你也太小氣了吧,分多的話還可能幫你動動腦
㈡ 51單片機時鍾程序設計
朋友以下是本人歷時一個月殫精竭慮自主開發的一個8位51單片機時鍾程序,望吾之兄弟姐妹習之,此程序乃採用一鍵控制,通過感知按下鍵持續時間的長短來進行調整時間,鬧鈴,6隻共陽數碼管輸出顯示,此外還包括整點鈴聲功能,在看程序之前我先交代一下運行該程序的硬體要求:12M晶振,P0埠驅動顯示,P2.0到P2.5控制顯示掃描,P2.7輸出鈴聲,注意:鈴聲功放三極體應採用pnp管。以下是該程序:
ORG 00H
SETB TR0
JMP START
ORG 000BH
LJMP T0
START: MOV IE,#82H
MOV TMOD,#01H
MOV DPTR,#TAB
MOV SP,#60H
MOV 20H,#0
MOV R0,#0
MOV R1,#0
MOV R2,#0
MOV R3,#0
MOV R4,#0
MOV R5,#0
MOV R6,#0
MOV R7,#0
MOV 50H,#0
MOV 51H,#0
MOV 52H,#0
MOV 53H,#0
MOV 54H,#0
MOV 55H,#0
MOV A,TL0
ADD A,0B5H
MOV TL0,A
MOV TH0,#3CH
LOOP: ANL 20H,#08H
UNSV: MOV R1,#0
LCALL DISPLAY
JB 03H,LOP1
LCALL SOUND
LCALL HDLY
LOP1: MOV P3,#0FEH ;按鍵監視
MOV A,P3
CJNE A,#0FEH,LOP2
MOV R1,#0
JMP LOOP
LOP2: MOV R1,#2 ;誤按判斷
LOP3: LCALL HD
DJNZ R1,LOP3
JNB 04H,LOOP
CLR 04H
LOP4: INC R1
MOV C,00H ;調秒
CPL C
MOV 00H,C
LCALL HDLY
CJNE R1,#40,LOP5
JMP LOOP
LOP5: JNB 05H,LOP4
CLR 05H
MOV R1,#0
LCALL HD
CLR 00H
JB 04H,TF
MOV R2,#0
MOV R3,#0
JMP LOP4
TF: CLR 04H
LOP6: INC R1
MOV C,01H ;調分
CPL C
MOV 01H,C
LCALL HDLY
CJNE R1,#40,LOP7
JMP LOOP
LOP7: JNB 05H,LOP6
CLR 05H
MOV R1,#0
LCALL HD
CLR 01H
JB 04H,TS
INC R4
MOV R1,#0
CJNE R4,#10,LOP6
MOV R4,#0
INC R5
CJNE R5,#6,LOP6
MOV R5,#0
JMP LOP6
TS: CLR 04H
LOP8: INC R1
MOV C,02H ;調時
CPL C
MOV 02H,C
LCALL HDLY
CJNE R1,#40,LOP9
JMP LOOP
LOP9: JNB 05H,LOP8
CLR 05H
MOV R1,#0
LCALL HD
CLR 02H
JB 04H,TN
INC R6
CJNE R7,#2,NO2
CJNE R6,#4,LOP8
MOV R7,#0
MOV R6,#0
NO2: CJNE R6,#10,LOP8
MOV R6,#0
INC R7
JMP LOP8
TN: CLR 04H ;調鬧鈴
SETB RS0
CLR RS1
MOV R2,#0
MOV R3,#0
MOV R4,#0
MOV R5,#0
MOV R6,#0
MOV R7,#0
NS: INC R1 ;鬧鈴秒調整
MOV C,00H
CPL C
MOV 00H,C
LCALL HDLY
CJNE R1,#40,NS1
JMP NH2
NS1: JNB 05H,NS
CLR 05H
MOV R1,#0
LCALL HD
CLR 00H
JB 04H,NF
INC R2
CJNE R2,#10,NS
MOV R2,#0
INC R3
CJNE R3,#6,NS
MOV R3,#0
JMP NS
NF: CLR 04H ;鬧鈴分
NF1: INC R1
MOV C,01H
CPL C
MOV 01H,C
LCALL HDLY
CJNE R1,#40,NF2
LJMP NH2
NF2: JNB 05H,NF1
CLR 05H
MOV R1,#0
LCALL HD
CLR 01H
JB 04H,NH
INC R4
CJNE R4,#10,NF1
MOV R4,#0
INC R5
CJNE R5,#6,NF1
MOV R5,#0
JMP NF1
NH: CLR 04H ;鬧鈴時調整
NH1: INC R1
MOV C,02H
CPL C
MOV 02H,C
LCALL HDLY
CJNE R1,#40,NH3
NH2: MOV 50H,R2
MOV 51H,R3
MOV 52H,R4
MOV 53H,R5
MOV 54H,R6
MOV 55H,R7
CLR RS0
CLR RS1
LJMP LOOP
NH3: JNB 05H,NH1
CLR 05H
MOV R1,#0
LCALL HD
CLR 02H
JB 04H,NH2
INC R6
CJNE R7,#2,NOT2
CJNE R6,#4,NH1
MOV R6,#0
MOV R7,#0
JMP NH1
NOT2: CJNE R6,#10,NH1
MOV R6,#0
INC R7
JMP NH1
;子程序區
TIMES: CJNE R0,#20,LOOP16
MOV R0,#0
INC R2
CJNE R2,#10,LOOP16
MOV R2,#0
INC R3
CJNE R3,#6,LOOP16
MOV R3,#0
ADMINI: INC R4
CJNE R4,#10,LOOP16
MOV R4,#0
INC R5
CJNE R5,#6,LOOP16
MOV R5,#0
HOUR: INC R6
LCALL SOUND ;整點鈴聲
CJNE R7,#2,LOOP14
CJNE R6,#4,LOOP16
MOV R6,#0
MOV R7,#0
JMP LOOP16
LOOP14: CJNE R6,#10,LOOP16
MOV R6,#0
INC R7
LOOP16: RET
DISPLAY:MOV P2,#0FFH
MOV A,R2
MOVC A,@A+DPTR
MOV P0,A
MOV C,00H
MOV P2.0,C
MOV P2,#0FFH
MOV A,R3
MOVC A,@A+DPTR
MOV P0,A
MOV P2.1,C
MOV P2,#0FFH
MOV A,R4
MOVC A,@A+DPTR
MOV P0,A
MOV C,01H
MOV P2.2,C
MOV P2,#0FFH
MOV A,R5
MOVC A,@A+DPTR
MOV P0,A
MOV P2.3,C
MOV P2,#0FFH
MOV A,R6
MOVC A,@A+DPTR
MOV P0,A
MOV C,02H
MOV P2.4,C
MOV P2,#0FFH
MOV A,R7
MOVC A,@A+DPTR
MOV P0,A
MOV P2.5,C
MOV P2,#0FFH
RET
HDLY: MOV 40H,#2
HDL1: MOV 41H,#25
HDL2: MOV 42H,#100
HDL3: DJNZ 42H,HDL4
DJNZ 41H,HDL2
DJNZ 40H,HDL1
JMP HDOT
SOUT: SETB 05H
HDOT: RET
HDL4: MOV P3,#0FEH
MOV A,P3
CJNE A,#0FEH,SOUT
CLR 05H
LCALL DISPLAY
JMP HDL3
HD: MOV 30H,#5
HD1: MOV 31H,#50
HD2: MOV 32H,#100
HD3: LCALL DISPLAY
DJNZ 32H,HD4
DJNZ 31H,HD2
DJNZ 30H,HD1
SETB 04H ;計滿標志位
JMP HDOUT
HD4: MOV P3,#0FEH
MOV A,P3
CJNE A,#0FEH,HD3
MOV 33H,#50
HD5: MOV 34H,#100
DJNZ 34H,$
DJNZ 33H,HD5
MOV P3,#0FEH
MOV A,P3
CJNE A,#0FEH,HD3
CLR 04H
HDOUT: RET
SOUND: MOV 30H,#10
SO1: MOV 31H,#100
SO2: MOV 32H,#3
MOV C,P2.7
CPL C
MOV P2.7,C
SO3: MOV 33H,#25
DJNZ 33H,$
DJNZ 32H,SO3
DJNZ 31H,SO2
DJNZ 30H,SO1
RET
T0: PUSH PSW
PUSH ACC
CLR RS1
CLR RS0
MOV A,TL0
ADD A,#0B5H
MOV TL0,A
MOV TH0,#3CH
INC R0
LCALL TIMES
MOV A,R2
CJNE A,50H,TO
SETB 03H
MOV A,R3
CJNE A,51H,TO
MOV A,R7
CJNE A,55H,TO
MOV A,R6
CJNE A,54H,TO
MOV A,R5
CJNE A,53H,TO
MOV A,R4
CJNE A,52H,TO
MOV A,R2
ADD A,R3
ADD A,R4
ADD A,R5
ADD A,R6
ADD A,R7
JZ TO
CLR 03H
TO: POP ACC
POP PSW
RETI
TAB: DB 0C0H 0F9H 0A4H 0B0H 099H
DB 092H 082H 0F8H 080H 090H
END
㈢ 求C51單片機數字電子時鍾課程設計
#include<reg52.h>
#include<absacc.h>
#include<intrins.h>
#define
unit
unsigned
int
#define
uchar
unsigned
char
//#define
HZ
12
sbit
key0=P0^0;
//
分鍾調整
sbit
key1=P0^1;
//
小時調整
sbit
P2_0=P2^7;
//秒
指示燈
sbit
MN_RXD=P3^6;
sbit
MN_TXD=P3^7;
uchar
data
CLOCK[4]={0,0,0,12};//存放時鍾時間(百分秒,秒,分,和時位)
//數碼管顯示表0-f
滅
uchar
code
TABLE[]={0xBE,0x06,0xEA,0x6E,0x56,0x7C,0xFC,0x0E,0xFE,0x7E,0x00};
//**********************************
//模擬串口發送一個位元組數據
函數
//**********************************
void
SendData(unsigned
char
senddata)
{
unsigned
char
i;
for(i=0;i<8;i++)
{
if((senddata&0x01)==0)
MN_RXD=0;
else
MN_RXD=1;
_nop_();
MN_TXD=0;
_nop_();
MN_TXD=1;
senddata=senddata>>1;
}
}
//**********************************
//顯示程序函數
//**********************************
void
display(void)
{
//
unsigned
int
n;
uchar
temp;
temp=CLOCK[1];
temp=temp%10;
SendData(TABLE[temp]);
temp=CLOCK[1];
temp=temp/10;
SendData(TABLE[temp]);
temp=CLOCK[2];
temp=temp%10;
SendData(TABLE[temp]);
temp=CLOCK[2];
temp=temp/10;
SendData(TABLE[temp]);
temp=CLOCK[3];
temp=temp%10;
SendData(TABLE[temp]);
temp=CLOCK[3];
temp=temp/10;
SendData(TABLE[temp]);
/*
for(n=0;n<5000;n++);
for(n=0;n<6;n++)
{
SendData(TABLE[10]);
}
*/
}
//**********************************
//按鍵控制函數
//**********************************
void
keycan()
{
unsigned
int
n;
EA=0;
if(key0==0)
//
分鍾調整
{
for(n=0;n<10000;n++);
//延時去抖動
while(key0==0);
CLOCK[2]=CLOCK[2]+1;
if(CLOCK[2]==60)
//到一時
{
CLOCK[2]=0;
}
display();
}
if(key1==0)
//
小時調整
{
for(n=0;n<10000;n++);
//延時去抖動
while(key1==0);
CLOCK[3]=CLOCK[3]+1;
if(CLOCK[3]==24)
{
CLOCK[3]=0;
}
display();
}
EA=1;
}
//**********************************
//T0中斷服務函數
//**********************************
void
time0()
interrupt
1
//using
1
{
TH0=0xD8;
TL0=0xF0;
//重置初值
//
TH0=0xB1;
TL0=0xE0;
//時鍾處理
CLOCK[0]=CLOCK[0]+1;
}
//**********************************
//主函數
//**********************************
void
main()
{
EA=1;
ET0=1;
TMOD=0x01;
//T0方式1定時
TH0=0xD8;
TL0=0xF0;
//D8F0
定時10ms
//
TH0=0xB1;
TL0=0xE0;
//定時
20ms
TR0=1;
for(;;)
{
if(CLOCK[0]==100)
//到一秒
10ms*100
{
CLOCK[0]=0;
P2_0=~P2_0;
CLOCK[1]=CLOCK[1]+1;
if(CLOCK[1]==60)
//到一分
{
CLOCK[1]=0;
CLOCK[2]=CLOCK[2]+1;
if(CLOCK[2]==60)
//到一時
{
CLOCK[2]=0;
CLOCK[3]=CLOCK[3]+1;
if(CLOCK[3]==24)
{
CLOCK[3]=0;
}
}
}
display();
}
keycan();
}
}
㈣ 51單片機簡易電子鍾設計。匯編語言編寫
KEYVALEQU 30H
KEYTMEQU 31H
KEYSCANEQU 32H
DATEQU 33H
SCANLEDEQU 39H
CLKEQU 77H
SECEQU 78H
MINEQU 79H
HOUREQU 7AH
PAUSEBIT 00H
DOTBIT 01H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR;50ms定時
ORG 001BH
LJMP T1ISR;掃描顯示
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#11H
MOV TH0,#03CH
MOV TL0,#0B0H
MOV TH1,#0ECH
MOV TL1,#078H
MOV KEYVAL,#0
MOV SCANLED,#0
MOV 33H,#10H
MOV 34H,#10H
MOV 35H,#10H
MOV 36H,#10H
MOV 37H,#10H
MOV 38H,#10H
MOV SEC,#0
MOV MIN,#0
MOV HOUR,#0
MOV CLK,#0
CLR PAUSE
SETB EA
SETB ET1
SETB TR1
LOOP:
LCALL KEYSEL
MOV A,KEYVAL
CJNE A,#0FFH,LOOP1
SJMP LOOP
LOOP1:
CJNE A,#10,LOOP2;「ON」啟動
SETB TR0
SETB ET0
SETB PAUSE
SJMP LOOP
LOOP2:
CJNE A,#11,LOOP3;「=」清零
MOV SEC,#0
MOV MIN,#0
MOV HOUR,#0
LCALL DISCHG
SJMP LOOP
LOOP3:
CJNE A,#15,LOOP4;「+」暫停
CLR TR0
CLR ET0
CLR PAUSE
SJMP LOOP
LOOP4:
CJNE A,#14,LOOP5;「-」清顯示暫停
MOV 33H,#10H
MOV 34H,#10H
MOV 35H,#10H
MOV 36H,#10H
MOV 37H,#10H
MOV 38H,#10H
CLR TR0
CLR ET0
CLR PAUSE
SJMP LOOP
LOOP5:
CJNE A,#10,LOOP6;數字鍵
LOOP6:
JC LOOP7
LJMP LOOP
LOOP7:
JNB PAUSE,LOOP8;暫停狀態可以輸入數字鍵
LJMP LOOP
LOOP8:
MOV 33H,34H
MOV 34H,35H
MOV 35H,36H
MOV 36H,37H
MOV 37H,38H
MOV 38H,KEYVAL
MOV A,33H
SWAP A
ORL A,34H
LCALL BCDH
MOV HOUR,A
MOV A,35H
SWAP A
ORL A,36H
LCALL BCDH
MOV MIN,A
MOV A,37H
SWAP A
ORL A,38H
LCALL BCDH
MOV SEC,A
LJMP LOOP
;------------------
;BCD轉換為十六進制
BCDH:
MOV B,#10H
DIV AB
MOV R7,B
MOV B,#10
MUL AB
ADD A,R7
RET
;------------------
;十六進制轉換為BCD
HBCD:
MOV B,#10
DIV AB
SWAP A
ORL A,B
RET
;------------------
KEYSEL:
MOVKEYVAL,#0
MOVKEYSCAN,#0EFH
LCALLGETKEY
MOVA,KEYTM
JZKEYS1
MOVKEYVAL,A
SJMPKEYRTN
KEYS1:
MOVKEYSCAN,#0DFH
LCALLGETKEY
MOVA,KEYTM
JZKEYS2
CLRC
ADDA,#4
MOVKEYVAL,A
SJMPKEYRTN
KEYS2:
MOVKEYSCAN,#0BFH
LCALLGETKEY
MOVA,KEYTM
JZKEYS3
CLRC
ADDA,#8
MOVKEYVAL,A
SJMPKEYRTN
KEYS3:
MOVKEYSCAN,#7FH
LCALLGETKEY
MOVA,KEYTM
JZKEYRTN
CLRC
ADDA,#12
MOVKEYVAL,A
KEYRTN:
LCALL CHGKEY
RET
;--------------------
GETKEY:
MOV KEYTM,#0
MOVA,KEYSCAN
MOVP3,A
NOP
MOVA,P3
ANLA,#0FH
XRLA,#0FH
JZNOKEY
MOV R2,#10
LCALL DELAY
MOVA,P3
ANLA,#0FH
XRLA,#0FH
JZNOKEY
MOVA,P3
ANLA,#0FH
MOVR7,A
SF:
MOVA,P3
ANLA,#0FH
XRLA,#0FH
JNZSF
MOVA,R7
CJNEA,#0EH,NK1
MOVKEYTM,#1
SJMPNOKEY
NK1:
CJNEA,#0DH,NK2
MOVKEYTM,#2
SJMPNOKEY
NK2:
CJNEA,#0BH,NK3
MOVKEYTM,#3
SJMPNOKEY
NK3:
CJNEA,#07H,NOKEY
MOVKEYTM,#4
NOKEY:RET
;--------------------
DELAY:
MOV R3,#50
DELAY1:
MOV R4,#100
DJNZ R4,$
DJNZ R3,DELAY1
DJNZ R2,DELAY
RET
;--------------------
T0ISR:
PUSH ACC
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
INC CLK
MOV A,CLK
CJNE A,#20,T0ISRE
MOV CLK,#0
INC SEC
MOV A,SEC
CJNE A,#60,T0ISRE
MOV SEC,#0
INC MIN
MOV A,MIN
CJNE A,#60,T0ISRE
MOV MIN,#0
INC HOUR
MOV A,HOUR
CJNE A,#24,T0ISRE
MOV SEC,#0
MOV MIN,#0
MOV HOUR,#0
T0ISRE:
LCALL DISCHG
POP ACC
RETI
;--------------------
DISCHG:
MOV A,HOUR
LCALL HBCD
PUSH ACC
ANL A,#0FH
MOV 34H,A
POP ACC
ANL A,#0F0H
SWAP A
MOV 33H,A
MOV A,MIN
LCALL HBCD
PUSH ACC
ANL A,#0FH
MOV 36H,A
POP ACC
ANL A,#0F0H
SWAP A
MOV 35H,A
MOV A,SEC
LCALL HBCD
PUSH ACC
ANL A,#0FH
MOV 38H,A
POP ACC
ANL A,#0F0H
SWAP A
MOV 37H,A
RET
;--------------------
T1ISR:
PUSH ACC
CLR TR1
MOV TH1,#0ECH
MOV TL1,#78H
SETB TR1
MOV DPTR,#LEDTAB
T100:
MOV R0,#DAT
MOV A,SCANLED
ADD A,R0
MOV R0,A
MOV A,SCANLED
JNZ T101
MOV P2,#01H
CLR DOT
SJMP T1DIS
T101:
DEC A
JNZ T102
MOV P2,#02H
SETB DOT
SJMP T1DIS
T102:
DEC A
JNZ T103
MOV P2,#04H
CLR DOT
SJMP T1DIS
T103:
DEC A
JNZ T104
MOV P2,#08H
SETB DOT
SJMP T1DIS
T104:
DEC A
JNZ T105
MOV P2,#10H
CLR DOT
SJMP T1DIS
T105:
MOV P2,#20H
CLR DOT
T1DIS:
MOV A,@R0
MOVC A,@A+DPTR
JNB DOT,T1DIS1
ORL A,#01H
T1DIS1:
CPL A
MOV P0,A
INC SCANLED
MOV A,SCANLED
CJNE A,#6,T1END
MOV SCANLED,#0
T1END:
POP ACC
RETI
;--------------------
CHGKEY:
MOV A,KEYVAL
JZ KV16
DEC A
JNZ KV01
MOV KEYVAL,#7
RET
KV01:
DEC A
JNZ KV02
MOV KEYVAL,#4
RET
KV02:
DEC A
JNZ KV03
MOV KEYVAL,#1
RET
KV03:
DEC A
JNZ KV04
MOV KEYVAL,#10
RET
KV04:
DEC A
JNZ KV05
MOV KEYVAL,#8
RET
KV05:
DEC A
JNZ KV06
MOV KEYVAL,#5
RET
KV06:
DEC A
JNZ KV07
MOV KEYVAL,#2
RET
KV07:
DEC A
JNZ KV08
MOV KEYVAL,#0
RET
KV08:
DEC A
JNZ KV09
MOV KEYVAL,#9
RET
KV09:
DEC A
JNZ KV10
MOV KEYVAL,#6
RET
KV10:
DEC A
JNZ KV11
MOV KEYVAL,#3
RET
KV11:
DEC A
JNZ KV12
MOV KEYVAL,#11
RET
KV12:
DEC A
JNZ KV13
MOV KEYVAL,#12
RET
KV13:
DEC A
JNZ KV14
MOV KEYVAL,#13
RET
KV14:
DEC A
JNZ KV15
MOV KEYVAL,#14
RET
KV15:
DEC A
JNZ KV16
MOV KEYVAL,#15
RET
KV16:
MOV KEYVAL,#0FFH
RET
;--------------------
LEDTAB:DB 0FCH;"0"00H
DB 60H;"1"01H
DB 0DAH;"2"02H
DB 0F2H;"3"03H
DB 66H;"4"04H
DB 0B6H;"5"05H
DB 0BEH;"6"06H
DB 0E0H;"7"07H
DB 0FEH;"8"08H
DB 0F6H;"9"09H
DB 0EEH;"A"0AH
DB 3EH;"B"0BH
DB 9CH;"C"0CH
DB 7AH;"D"0DH
DB 9EH;"E"0EH
DB 8EH;"F"0FH
DB 00H;" "10H
;--------------------
END
㈤ 51單片機控制的電子時鍾系統 畢業設計
可以用1302做
我有現成的
LCD1602
顯示的,51做的
基本思路是用單片機讀取1302裡面的信息,處理,然後送LCD1602顯示。
有興趣可以去我博客看,裡面還上傳了之前我做的實物圖片和PCB,可以照著做。
㈥ 51單片機設計電子時鍾。
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^0;
sbit key2=P3^1;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar shi,fen,miao,num1 ,num2,num3,num4,num5,num6,num7;
void delayms (uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void miaodisplay (uchar num6,uchar num5)
{
P2=0x00;
P2=0x80;
P1=table[num6];
delayms(5);
P2=0x00;
P2=0x40;
P1=table[num5];
delayms(5);
}
void fendisplay(uchar num4,uchar num3)
{
P2=0x00;
P2=0x10;
P1=table[num4];
delayms(5);
P2=0x00;
P2=0x08;
P1=table[num3];
delayms(5);
}
void shidisplay(uchar num2,uchar num1)
{
P2=0x00;
P2=0x02;
P1=table[num2];
delayms(5);
P2=0x00;
P2=0x01;
P1=table[num1];
delayms(5);
}
void main ()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
shi=0;
fen=0;
miao=0;
num7=0;
while (1)
{
num1=shi/10;
num2=shi%10;
num3=fen/10;
num4=fen%10;
num5=miao/10;
num6=miao%10;
miaodisplay(num6,num5);
P2=0x00;
P2=0x20;
P1=0xbf;
delayms(5);
fendisplay(num4,num3);
P2=0x00;
P2=0x04;
P1=0xbf;
delayms(5);
shidisplay(num2,num1);
}
}
void T0_time () interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num7++;
if(num7==20)
{
num7=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
fen=0;
miao=0;
}
}
}
}
}
㈦ C51單片機電子時鍾設計思路
用定時器,設置定時時間為20毫秒,50次累加=1秒,累加秒數據60次=1分,依次類推。每次中斷完成累加和顯示(動態,刷新頻率50HZ,應該不會閃爍)
㈧ 51單片機 匯編語言 電子鍾設計
1.關鍵詞規范
關鍵詞是反映論文主題概念的詞或片語,通常以與正文不同的字體字型大小編排在摘要下方。一般每篇可選3~8個,多個關鍵詞之間用分號分隔,按詞條的外延(概念范圍)層次從大到小排列。
關鍵詞一般是名詞性的詞或片語,個別情況下也有動詞性的詞或片語。
應標注與中文關鍵詞對應的英文關鍵詞。編排上中文在前,外文在後。中文關鍵詞前以「關鍵詞:」或「[關鍵詞]」作為標識;英文關鍵詞前以「Key words:」作為標識。
關鍵詞應盡量從國家標准《漢語主題詞表》中選用;未被詞表收錄的新學科、新技術中的重要術語和地區、人物、文獻等名稱,也可作為關鍵詞標注。關鍵詞應採用能覆蓋論文主要內容的通用技術詞條。
2.選擇關鍵詞的方法
關鍵詞的一般選擇方法是:由作者在完成論文寫作後,從其題名、層次標題和正文(出現頻率較高且比較關鍵的詞)中選出來。
論文正文
要點
⑴引言:引言又稱前言、序言和導言,用在論文的開頭。引言一般要概括地寫出作者意圖,說明選題的目的和意義,並指出論文寫作的范圍。引言要短小精悍、緊扣主題。
〈2)論文正文:正文是論文的主體,正文應包括論點、論據、論證過程和結論。主體部分包括以下內容:
a.提出問題-論點;
b.分析問題-論據和論證;
c.解決問題-論證方法與步驟;
d.結論。
為了做到層次分明、脈絡清晰,常常將正文部分分成幾個大的段落。這些段落即所謂邏輯段,一個邏輯段可包含幾個小邏輯段,一個小邏輯段可包含一個或幾個自然段,使正文形成若干層次。論文的層次不宜過多,一般不超過五級。
㈨ 用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電容如圖連接,你自己去寫方案把,分數給那麼少,就只幫你那麼多了