⑴ 关于51单片机定时与倒计时。
你是要程序吗?使用的什么型号单片机,晶振多少,数码管显示数据依次是什么,要倒计时或者计时多少时间?追问我之后我帮你写程序。
⑵ 求51单片机24秒倒计时器程序设计
#include "reg51.h"
sbit COM2 = P2^0;
sbit COM1 = P2^1;
unsigned char DT[10]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09};
void delay(void);
void delay1(void);
void main ()
{
unsigned char i,k;
P0=0x00;
P2=0x00;
delay();
P0=0xFF;
P2=0xFF;
delay();
i=0;
k=0;
while(1)
{
for(k=0;k<55;k++)
{
P0=DT[i/10];
COM1=1;
COM2=0;
delay();
P0=DT[i%10];
COM1=0;
COM2=1;
delay();
}
i++;
if(i>24)
i=0;
}
}
void delay()
{
unsigned int i,j;
for(i=10;i>0;i--)
for(j=100;j>0;j--);
}
⑶ 单片机倒计时程序,不用中断和定时器,怎么写
这样出来的时间是不准的。可以采用变量自加的方式,也就是记录程序运行的次数,再来测试具体多少次为1S。做时钟类的最好还是用定时器或时钟芯片。
⑷ 单片机 at89c51 6位数码管24小时倒计时程序
留个邮箱发给你。
⑸ 寻求单片机编写程序:24秒倒计时器,计时时间到发出提示音
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table1[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
uchar code table2[]= {0x01,0x02};
uchar dingshinum;
sbit baojing=P1^0;
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
}
main()
{
uchar i=24,a,b,flag;
init();
while(1)
{
baojing=0;
if(dingshinum==20)
{
flag=1;
dingshinum=0;
if(i==0)
{
i=24;
baojing=1;
delayms(10);
}
i--;
a=i/10;
b=i%10;
while(flag)
{
P3=table2[0];
P2=table1[a];
delayms(5);
P3=table2[1];
P2=table1[b];
delayms(5);
if(dingshinum==20)
flag=0;
}
}
}
}
void dingshiqi1() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
dingshinum++;
}
⑹ 帮忙用单片机写个24秒倒计时并且可以复位也可以自己设置初值让他倒数的
问你开始了想你想好像是拿不到货
⑺ 如何用单片机做一个简单的倒计时器
51单片机实现数码管99秒倒计时,其实很简单,就是使用定时器中断来实现。目的就是学习怎样用单片机实现倒计时,从而实现一些延时控制类的东西,99秒只是一个例子,你完全可以做出任意倒计时如10秒倒计时程序。定时器定时时间计算公式:初值X=M(最大计时)-计数值。
初值,换算成十六进制,高位给TH0,低位给TL0,如果用定时器0的话。
M(最大计时)如果是16位的,就是2的16次方,最大定时,65535 微秒,实现1秒定时,可以通过定时10毫秒,然后100次改变一次秒值即可。10*100毫秒=1S
计数值:你要定时多长时间,如果定时1毫秒,就是1000微秒,(单位为微秒),如果定时10毫秒,就是10000(微秒),当然,最大定时被定时器本身位数限制了,最大2的16次方(16位定时计数器),只能定时65.535毫秒。定时1S当然不可能1S定时器中断。
下面为实现99秒倒计时C语言源程序
/*了解定时器,这样的话,就可以做一些基本的实验了,如定时炸弹~~,10秒后打开关闭继电器*/
/*数码管,12M晶振*/
#include <reg52.h>
#define uchar unsigned char
sbit p11=P1^1; //连的是继电器。。
code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar shiwei;
uchar gewei;
void delay(unsigned int cnt)
{
while(--cnt);
}
void main()
{
TMOD|=0x01; /*定时器0 16位定时器 X=65535-10000(10毫秒)=55535=D8F0(十六进制)定时10ms
*/
TH0=0xd8;
TL0=0xf0;
IE=0x82; //这里是中断优先级控制EA=1(开总中断),ET0=1(定时器0允许中断),这里用定时器0来定时
TR0=1; //开定时器0
while(1)
{
P0=shiwei; //99的十位
P2=0; //99的个位,
delay(300); //动态扫描数码管延时
P0=gewei;
P2=1;
delay(300);
}
}
void tim(void) interrupt 1 using 1 //定时器0中断
{
static uchar second=99,count; //99只是一个数,可以任意改,因为这里只学习怎样实现倒计时
TH0=0xd8; //定时10毫秒
TL0=0xf0;
count++;
if(count==100) //10毫秒定时,10*100=1000(毫秒)=1秒
{
count=0;
second--;
if(second==0)
{
p11=0; //这里让继电器动作,当然动作之后,要复位才能等下次倒定时再动作。
second=99; //回到99再循环来,当然,可以做其他的控制,
}
shiwei=tab[second/10]; //数码管10位
gewei=tab[second%10]; //数码管个位
}
⑻ C51单片机 制作一个数码管24秒倒计时的源程序 求大神
很简单啊,用单片机定时器先定时20ms,再计数50次,即1s,再计数24次,即24秒。
计时结束后输出
控制信息
值LED端口就行了!
手打不易,如有帮助请采纳,谢谢!!
⑼ 下面是51单片机30秒倒计时程序,怎么把它改成24小时倒计时程序,别的不变,十分感谢
#include "reg51.h"
sbit start=P3^2; //外部中断0引脚 开始
sbit rst=P3^3; //外部中断1引脚 复位
sbit breakk=P3^4;
sbit led=P3^5;
sbit beep=P3^7;
sbit P30=P3^0;
sbit P31=P3^1;
unsigned char code anma[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff
};
char time=24;//【原来的30s改为24小时】
char flag_t=0; // 1秒辅助计时
char now=0; // 0停止 1 计时 2报警 3复位
unsigned int temp=0;//【添加此行】// 【定义一个16位临时变量】
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;
temp++; //【添加此行】
if(temp>=3600)//1小时=3600s //【添加此行】
{
temp=0;//【添加此行】
time--;
if(time<=0){
beep=0;
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=24;//【原为time=30;】
i=0;
led=1;
beep=1;
now=0;
}
else return;
while(rst==0);
delay(1500);
}
void disp()
{
g=time%10;
s=time/10;
g=anma[g];
s=anma[s];
P1=g;
P31=0;
delay(250);
P31=1;
P1=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);
}
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();
}
}
⑽ 实现24小时记时的数字钟,有倒计时,暂停,正常记时,清零复位,较时功能,如何设计会比较好
首先实现数字钟的功能,就需要选择一款时钟芯片,比如pcf8563,I2C通讯,非常方便使用。有了时钟芯片,初始化后就可以知道实时时间了。
至于 倒计时,暂停,正常记时,清零复位,这个实际上就是使用单片机的定时器中断去实现。通过初始化定时器的中断时间,然后计数,就可以实现上面的功能了。
当然,还需要设计几个按钮,用于去控制这些功能。