當前位置:首頁 » 課程大全 » 99秒倒計時課程設計

99秒倒計時課程設計

發布時間: 2021-02-04 19:59:43

A. 99秒倒計時設計

什麽語言的?

B. 單片機99秒倒計時

用定時器,很簡單的,我這里有個程序你可以參考一下
#include "clock.h"

void delay(uint t)
{
uint i;
while(t--)
{
/* 對於12M時鍾,約延時1ms */
for (i=0;i<100;i++)
{}
}
}

void main()
{
initial();
P0=0x00;
sec=min=hour=0;
flag=1;

while(1)
{
while(flag)
{
display(0,hour/10);
display(1,hour%10);
//display(2,3);
display(3,min/10);
display(4,min%10);
//display(5,6);
display(6,sec/10);
display(7,sec%10);
flag=0;
}
}
}

void display(uchar digit,uchar num)
{
P2=0x00;
P1=n[num];
P2=m[digit];
delay(1);
}

void initial(void)
{
//--INT0的配置----------
IT0=1; // INT0為0低電平觸發(為1則為下降沿觸發)
EX0=1; // INT0中斷開,允許INT0中斷

//--T0的配置:定時器------------
TMOD = 0x11; //定時器0,1 定時,工作方式1(16位裝載方式)

TH0 = 0x3c;//定時50ms,12M晶體振盪器
TL0 = 0xb0;
TR0 = 1; //允許T0中斷
ET0 = 1;

EA=1; // CPU所有中斷開(IE最高位MSB)
}

void timer_0() interrupt 1 using 2
{
FT0++;
if(FT0==20)
{
sec++;
FT0=0;
}

if(sec>59)
{
min++;
sec=0;
}

if(min>59)
{
hour++;
min=0;
}

if(hour>24)hour=0;

TH0 = 0x3c;//定時50ms,12M晶體振盪器
TL0 = 0xb0;

flag=1;
}

//INT0中斷 由P3.2引腳產生
void int_0() interrupt 0 using 0
{
if(key1==0)hour++;
if(key2==0)hour--;
if(key3==0)min++;
if(key4==0)min--;
if(hour<0)hour=0;
if(min<0)min=0;
}

#include <reg51.h>

#define uchar unsigned char
#define uint unsigned int

uchar n[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar m[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

uchar FT0,sec,min,hour,flag;

sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^6;
sbit key4=P3^7;

void display(uchar,uchar);
void timer_0();
void initial(void);
void int_0(); //外部中斷0

C. 數字電路課程設計「短跑計時器」,1分59秒99

TRJRTNHJNNTBRJSNBVMA;LML;ED,;LAWmefc;mawLVNKVNNV WNkNV EWl 我可冷肯v

D. 99秒倒計時器數字電路模擬圖

給你個參考

555脈沖發生器電路,就請你自己去完成好了

E. 99秒倒計時電路圖

可鍵盤設置倒計時時間

#include<reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitp20=P2^0;

sbitp21=P2^1;

sbitp30=P3^0;

sbitp31=P3^1;

sbitp32=P3^2;

#definekey_00x18

#definekey_10x14

#definekey_20x12

#definekey_30x11

#definekey_40x28

#definekey_50x24

#definekey_60x22

#definekey_70x21

#definekey_80x48

#definekey_90x44

#definekey_reset0x42

#definekey_stop0x88

#definekey_start0x84

#definekey_shi0x82

#definekey_ge0x81

uchart;

ucharct=10;

uchardh=1,dl=0;

uchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽極時的0~9

ucharkey_table[]={0x18,0x14,0x12,0x11,0x28,0x24,0x22,0x21,0x48,0x44};

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidinit(void)

{

TMOD=0x01;//選擇方式1

TH0=0x3c;//12M晶振,定時時間50ms

TL0=0xb0;

EA=1;//開啟總中斷

ET0=1;//開啟定時器0溢出中斷

TR0=1;//啟動定時器0

}

voiddisplay(void)

{

P0=tab[dh];

p20=1;

delay(2);

p20=0;

P0=tab[dl];

p21=1;

delay(2);

p21=0;

}

voiddisplay0(void)

{

P0=tab[dh];

p20=1;

delay(2);

p20=0;

P0=tab[dl];

p21=1;

delay(100);

p21=0;

}

voiddisplay1(void)

{

P0=tab[dh];

p20=1;

delay(100);

p20=0;

P0=tab[dl];

p21=1;

delay(2);

p21=0;

}

voidtimer0(void)interrupt1//定時器中斷

{

uchart;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t++;

dh=ct/10;

dl=ct%10;

display();

if(t==20)//每秒進一次中斷

{

t=0;

ct--;

if(ct==-1)

{

TR0=0;

p32=1;p31=1;p30=0;

}

}

}

voiddlms(void)

{uchari;

for(i=200;i>0;i--)

{}

}

ucharkbscan(void)

{ucharscode,recode;

P1=0xf0;

if((P1&0xf0)!=0xf0)

{dlms();

if((P1&0xf0)!=0xf0)

{scode=0xfe;

while((scode&0x10)!=0)

{P1=scode;

if((P1&0xf0)!=0xf0)

{recode=(P1&0xf0)|0x0f;

return((~scode)+(~recode));

}

else

scode=(scode<<1)|0x01;

}

}

}

return(0);

}

voidkey_process(ucharkey,uchar*dh,uchar*dl,uchar*ct)

{

staticuchark;

if(key==key_reset)

{*dh=0;

*dl=0;

*ct=(*dh)*10+(*dl);

p32=1;p31=1;p30=0;

}

if(key==key_0||key==key_1||key==key_2||key==key_3||key==key_4||key==key_5||key==key_6||key==key_7||key==key_8||key==key_9)

{k=0;

while(1)

{if(key==key_table[k])

break;

k++;

}

}

if(key==key_stop)

{TR0=0;

p32=1;p31=0;p30=1;

}

if(key==key_start)

{TR0=1;

p32=0;p31=1;p30=1;

}

if(key==key_shi)

{*dh=k;

display0();

*ct=(*dh)*10+(*dl);

}

if(key==key_ge)

{*dl=k;

display1();

*ct=(*dh)*10+(*dl);

}

}

voidmain()

{

ucharkey;

p32=0;p31=1;p30=1;

init();

while(1)

{

key=kbscan();

dlms();

if(key!=0)

{

//switch(key)

//{case0x18:n=0;break;

//case0x14:n=1;break;

//case0x12:n=2;break;

//case0x11:n=3;break;

//case0x28:n=4;break;

//case0x24:n=5;break;

//case0x22:n=6;break;

//case0x21:n=7;break;

//case0x48:n=8;break;

//case0x44:n=9;break;

//case0x42:n=10;break;

//case0x41:n=11;break;

//case0x88:TR0=0;break;

//case0x84:TR0=1;break;

//case0x82:n=14;break;

//case0x81:n=15;break;

//}

key_process(key,&dh,&dl,&ct);

//if(p26==0)

//{dh=n;display0();ct=dh*10+dl;}

//if(p27==0)

//{dl=n;display1();ct=dh*10+dl;}

}

//if(p26==0)display0();

//if(p27==0)display1();

//elsedisplay();

display();

}

}

源程序供你參考可以改動

F. 『求助』用51單片機定時器實現99秒錶倒計時

K1EQUP1.0
K2EQUP1.1
K3EQUP1.2
ORG0000H
LJMPMAIN
ORG000BH
LJMPT0ISR
ORG0030H
MAIN:
MOVTMOD,#01H
MOVTH0,#HIGH(65536-10000)
MOVTL0,#LOW(65536-10000)
SETBET0

SETBEA
MOVR0,#9
MOVR1,#9
MOVR2,#0
MOVR3,#99
CLR00H
CLR01H
LOOP:
JBK1,LP01
JNBK1,$
CLR01H
INCR3
CJNER3,#100,LOOP0
MOVR3,#0
SJMPLOOP0
LP01:
JBK2,LP02
JNBK2,$
CLR01H
CJNER3,#0,LP011
MOVR3,#99
SJMPLOOP0
LP011:
DECR3
SJMPLOOP0
LP02:
JBK3,LOOP
JNBK3,$
SETB01H
SJMPLOOP
LOOP0:
MOVA,R3
MOVB,#10
DIVAB
MOVR0,B
MOVR1,A
SJMPLOOP
T0ISR:
CLRTR0
MOVTH0,#HIGH(65536-10000)
MOVTL0,#LOW(65536-10000)
SETBTR0
MOVDPTR,#TABLE
T0C:
CPL00H
JB00H,T001
MOVP3,#0FDH
MOVA,R1
MOVCA,@A+DPTR
MOVP2,A
SJMPT002
T001:
MOVP3,#0FEH
MOVA,R0
MOVCA,@A+DPTR
MOVP2,A
T002:
JNB01H,T0E
INCR2
MOVA,R2
CJNEA,#100,T0E
MOVR2,#0
MOVA,R0
JZT003
DECR0
SJMPT0E
T003:
MOVA,R1
JZT004
DECR1
MOVR0,#9
T0E:
RETI
T004:
CLR01H
MOVR4,#16
T005:
CPLP0.0
LCALLDELAY
DJNZR4,T005
RETI
DELAY:
MOVR6,#200
DLY:
MOVR7,#250
DJNZR7,$
DJNZR6,DLY
RET
TABLE:;共陰極數碼管顯示代碼表
DB3FH,06H,5BH,4FH,66H;01234
DB6DH,7DH,07H,7FH,6FH;56789

END

G. 求基於51單片機的99秒倒計時顯示程序

用什麼顯示?數碼管?倒計時到零了之後怎麼辦?從新開始倒?中間設置按鍵停止嗎?

H. 求一個99秒倒計時單片機程序和模擬,基於51單片機。

^#include "reg51.h"
sbit start=P3^2; //外部中斷0引腳 開始
sbit rst=P3^3; //外部中斷1引腳 復位
sbit breakk=P3^4; //暫停倒計時
sbit led=P3^5; //Led燈
sbit beep=P3^7; //蜂鳴器控制引腳

sbit P30=P3^0; //數碼管位選
sbit P31=P3^1;

void didi(void);
unsigned char code anma[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff
};

char time=99; //倒計時緩存
char flag_t=0; // 1秒輔助計時
char now=0; // 0停止 1 計時 2報警 3復位

unsigned char g=0,s=3,i=0;

void delay(unsigned int n)
{
while(--n);
}

void t0_srv() interrupt 1 using 1
{
TH0=0X3C;
TL0=0XB0;
flag_t++;
if(flag_t>=20){ //20*50ms=1s
flag_t=0;
time--;
if(time<=0){
// beep=0;
didi();
didi();
didi();
led=0;
TR0=0;
now=2;
time=0;
}
}
}
void button_start() interrupt 0 using 1 //外部中斷0
{
delay(1500);
if(start==0) {
now=1;
TR0=1;
}
else return;
while(start==0);
delay(1500);

}
void button_rst() interrupt 2 using 1
{
delay(1500);
if(rst==0) {
TR0=0;
time=99;// 3;
i=0;
led=1;
now=0;
}
else return;
while(rst==0);
delay(1500);

}

void disp()
{

g=time%10;
s=time/10;
g=anma[g];
s=anma[s];

P0=~g;
P31=0;
delay(250);
P31=1;

P0=~s;
P30=0;
delay(250);
P30=1;

}
void key()
{
if(breakk==0)delay(1500);
else return;
if(breakk==0) {
if(now==1){
i++;
if(i%2)TR0=0;
if(!(i%2))TR0=1;
}
}
else return;
while(breakk==0);
delay(1500);
}
/* 延時250us*k */
void delay250(unsigned int k)
{
unsigned int j,i;
for (i=0;i<k;i++)
{
for(j=0;j<25;j++);
}
}
void didi(void)
{
unsigned int j;
for (j=0;j<400;j++) //loop 400,響0.2s
{
beep=0;
delay250(2);
beep=1;
delay250(2);
}
delay250(800); //stop 0.2s

}

main()
{
TMOD=0X01;//定時器0工作在方式1,
EA=1;
IT0=1;
ET0=1;
TH0=0X3C;//在12M 晶振下,定時時間為50ms
TL0=0XB0;

EX0=1;
EX1=1;

//TR0=1;
while(1){
disp();
key();
}

}

I. 怎樣設計 一個計時器,實現1到99秒的倒計時。用兩個LED數碼管顯示十位和個位的計時時間

電子顯示就可以了

J. 求基於C51的99秒99倒計時牌程序,要求注釋詳細,附電路圖。

你好!
可以做程序和原理圖,電路圖不會。
打字不易,採納哦!

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919