单片机60秒计时报警器 求c程序 用AT89C51单片机的定时/计数器T0产生一秒的定时时间,作为秒计数时间,

当一秒产生时,秒计数加1,秒计数到60时,分别用P1.5、P1.7输出1KHz的方波信号驱动扬声器和指示灯,作报警信号。注:2位显示用静态显示或动态显示均可。

第1个回答  2017-01-03
#include <reg51.H>
sbit P3_5 =P3^5;
void delay()
{
unsigned char i,j;
for(j=20;j>0;j--)
for( i= 250;i>0;i--);
}
unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00};
unsigned char second;
unsigned char keycnt;
unsigned int tcnt;

void main(void)
{
unsigned char i,j;

TMOD=0x02;
ET0=1;
EA=1;
second=0;
P0=dispcode[second/10];
P2=dispcode[second%10];
TR0=1;
while(1)
{
if( second ==60)
{
TR0=0;
P1=0x5F;
delay();
P1=0xFF;
delay();
}
}
}

void t0(void) interrupt 1 using 0
{
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
P0=dispcode[second/10];

P2=dispcode[second%10];
}
}本回答被网友采纳

...用AT89C51单片机的定时\/计数器T0产生一秒的定时时间,作为秒计数时 ...
if( second ==60){ TR0=0;P1=0x5F;delay();P1=0xFF;delay();} } } void t0(void) interrupt 1 using 0 { tcnt++;if(tcnt==4000){ tcnt=0;second++;P0=dispcode[second\/10];P2=dispcode[second%10];} }

单片机60秒计时器的程序,用AT89C51实现
\/\/1:用AT89C51单片机的定时\/计数器T0产生一秒的 \/\/定时时间,作为秒计数时间,当一秒产生时,秒 \/\/计数加1,秒计数到60时,自动从0开始。单片机 \/\/晶振频率为12MHZ include<reg51.h> define uchar unsigned char define uint unsigned int uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6...

AT89C51单片机利用定时器|计数器T0产生1秒钟的定时,每当一秒定时到来时...
;仿照例7.11 ;TC=M-T\/T计数=9E58H(其中T=25ms)ORG 0000H LJMP MAIN ORG 000BH AJMP BRT0 ORG 0030H MAIN:CLR P1 MOV TMOD,#01H;T0为方式1 SETB EA SETB ET0 SETB TR0 MOV TH0,#9EH MOV TL0,#58H MOV R0,#04H MOV A,#01H LOOP:SJMP $;等待中断 ORG 0080H BRT0:DJNZ ...

急~!!用数码管显示60秒的秒表设计(单片机AT89C51)
SJMP START ORG 000BH MOV TH0, #4CH JNB F0, T0_END DJNZ R5, T0_END MOV R5, #20 INC R4 CJNE R4, #60, T0_E1 ;最大为59 MOV R4, #0 CLR LED T0_E1:CALL DISP CJNE R4, #5, T0_END ;LED亮5s SETB LED T0_END:RETI ;--- DISP:PUSH ...

利用定时器\/计数器T0产生2秒钟的定时,AT89C51,有大神吗?急急急?_百度...
2秒闪烁一次的效果,同时cnt2也要置零。void Timer0Init(void)\/\/20毫秒@12.000MHz { AUXR &= 0x7F;\/\/定时器时钟12T模式 TMOD &= 0xF0;\/\/设置定时器模式 TL0 = 0xE0;\/\/设置定时初值 TH0 = 0xB1;\/\/设置定时初值 TF0 = 0;\/\/清除TF0标志 TR0 = 1;\/\/定时器0开始计时 } ...

计数器计数,七段数码管从0到9循环显示(用汇编语言)
用AT89C51单片机的定时\/计数器T0产生一秒的定时时间,作为秒计数时间,但一秒产生时,秒计数加1,秒计数加到60时,自动从0开始。单片机晶振频率为12MHz。数码管段选表。延时函数。uchari;变量i;wk=1;打开位选,P0=0xf7;11110111第4位数码管显示,wk=0;关闭位选。while(1)\/\/死循环效果{}。新...

AT89C51单片机,如何实现延迟一秒
其实可以用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12\/n(n指晶振频率),假设你要定时的时间为M 那么定时的初值为:M\/机器周期=初值;TH0=(65536-初值)%256;TL0=(65536-初值)\/256;将(65536-初值)...

求程序用AT89C51单片机...用六位数码管实现数字时钟,显示时分秒,用两个...
}void timer0() interrupt 1 \/\/定时计数器中断 { TH0=(65536-45872)\/256;TL0=(65536-45872)%256; 、aa++;if(aa==20) \/\/中断2次位1S,秒加1 { miao++;aa=0;if(miao==60){ fen++; \/\/ 满60S, 分加1,秒清0 miao=0;if(fen==60){ shi++; \/\/ 小时加1 fen=0;if(shi==...

AT89C51和AT89S51的区别?
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,...

七段数码管显示数字0到9
9. 晶振频率对于程序的显示效果至关重要。如果显示效果不佳,可以通过调整延时参数来优化刷新频率。10. 使用AT89C51单片机的定时\/计数器T0实现一秒的定时功能,用于秒计数。当秒计数达到60时,计数器会重置为0。11. 可以通过两个计数器实现0到99的计数。一个计数器作为个位计数器,另一个作为十位计数器...

相似回答