导航:首页 > 编程语言 > 可编程定时开关增加倒计时功能

可编程定时开关增加倒计时功能

发布时间:2023-07-16 09:46:04

⑴ 如何用单片机做一个简单的倒计时器

我已经完成了,下面是电路图和实际效果,你也试试,程序已经调试完成了!!!是使用秒表程序改编完成的,喜欢的话,点一个赞吧!希望能帮到你!!!

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16; //对数据类型进行声明定义

typedef unsigned char u8;

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

u8 code smgan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f};//显示0~F的值

u8 ssec=100,sec=60,min=04;

u8 DisplayData[8];

sbit beep=P1^5;

unsigned long counter=0;

unsigned int c=0;

sbit p15=P1^5;

bit p;

/*******************************************************************************

* 函 数 名 : delay

* 函数功能 : 延时函数,i=1时,大约延时10us

*******************************************************************************/

void delay(u16 i)

{

while(i--);

}

/*******************************************************************************

* 函 数 名 : Timer0Init

* 函数功能 : 定时器0初始化

* 输 入 : 无

* 输 出 : 无

*******************************************************************************/

void Timer0Init()

{

TMOD=0X11;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

TH0=0Xd8; //给定时器赋初值,定时10ms

TL0=0Xf0;

ET0=1;//打开定时器0中断允许

EA=1;//打开总中断

TR0=1;//打开定时器 -->启动定时器中断!

ET1=1;

TR1=1;

TH1=(65536-250)/256; //FC

TL1=(65536-250)%256;

}

/*******************************************************************************

* 函 数 名 : DigDisplay

* 函数功能 : 数码管动态扫描函数,循环扫描8个数码管显示

*******************************************************************************/

void DigDisplay()

{

u8 i;

for(i=0;i<8;i++)

{

switch(i) //位选,选择点亮的数码管,

{

case(0):

LSA=0;LSB=0;LSC=0; break;//显示第0位

case(1):

LSA=1;LSB=0;LSC=0; break;//显示第1位

case(2):

LSA=0;LSB=1;LSC=0; break;//显示第2位

case(3):

LSA=1;LSB=1;LSC=0; break;//显示第3位

case(4):

LSA=0;LSB=0;LSC=1; break;//显示第4位

case(5):

LSA=1;LSB=0;LSC=1; break;//显示第5位

case(6):

LSA=0;LSB=1;LSC=1; break;//显示第6位

case(7):

LSA=1;LSB=1;LSC=1; break;//显示第7位

}

P0=DisplayData[i];//发送段码

delay(100); //间隔一段时间扫描

P0=0x00;//消隐-->撤销选中;

}

}

void datapros()

{

DisplayData[0]=smgan[ssec%10];

DisplayData[1]=smgan[ssec/10];

DisplayData[2]=0x40;

DisplayData[3]=smgan[sec%10];

DisplayData[4]=smgan[sec/10];

DisplayData[5]=0x40;

DisplayData[6]=smgan[min%10];

DisplayData[7]=smgan[min/10];

}

/*******************************************************************************

* 函 数 名 : main

* 函数功能 : 主函数

* 输 入 : 无

* 输 出 : 无

*******************************************************************************/

void main()

{

Timer0Init(); //定时器0初始化

while(1)

{

datapros();

DigDisplay();

}

}

/*******************************************************************************

* 函 数 名 : void Timer0() interrupt 1

* 函数功能 : 定时器0中断函数

* 输 入 : 无

* 输 出 : 无

*******************************************************************************/

void Timer0() interrupt 1

{

TH0=0Xd8; //给定时器赋初值,定时10ms

TL0=0Xf0;

ssec--;

if(ssec==00) //1s

{

ssec=100;

sec--;

if(sec==00)

{

sec=60;

min--;

if(min==-1)

{

P1=1;

ssec=0;sec=0;min=0;

TR0=0;

}

}

}

}

void Timer1() interrupt 3

{

TH1=(65536-250)/256; //FC

TL1=(65536-250)%256;

if(p!=1) p15=~p15;

if(p==1) p15=0;

c++;

if(c==250)

{

//c=0;

p=~p;

}

if(c>=250&&1695);

if(c==1696) c=0;

}

编程实现倒计时的秒表,2位LED数码管显示,延时采用硬件延时的方法

编程实现倒计时的秒表,2位LED数码管显示,延时埋闭采用硬件延时的方法
用单片机的定时器T0定时,计时1秒,实现倒计时的秒表的功能。
程序如下
#include<reg51.h>
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管段码表
unsigned char second;//秒倒计时变量
unsigned char t0n;//T0中断次数计数
sbit k1=P3^2;//定义按键
void delay()
{
unsigned int j;
for(j=400;j>0;j--);
}
void display()//显示子程序
{
P2=0x01;
P0=tab[second/10];//显示十位
delay();
P2=0x02;
P0=tab[second%10];//显示个位
delay();
}
void main()
{
TMOD=0x01;//用T0定时,中断方式
TH0 =0x3C;//晶振12M,定时50ms
TL0 =0xB0;
IE =0x82;
while(1)
{
display();//调显示子程序
if(k1==0)//按键按下
{
if(TR0==0)
{
TR0=1;//启动开始计时
second=60;//从60秒开始倒计时
}
else
TR0=0;
while(k1==0);/渗哗/等待按键释放
}
}
}
//T0中断程序
void T0_int() interrupt 1
{
TH0 =0x3C;
TL0 =0xB0;
t0n++;
if(t0n>=20)/弯喊裂/1秒到
{
t0n=0;
second--;//减1秒
if(second==0)TR0=0;
}
}

⑶ plc编程怎么实现计时器倒着计时

用你的设定值减去定时器的当前计时值,就是倒计时。比如你设定计时器计时时间为100秒,计时器现在计时到25秒。那就用100秒减去25,就是倒计时还有75秒。

阅读全文

与可编程定时开关增加倒计时功能相关的资料

热点内容
java互联网公司 浏览:68
对弈下象棋的app哪里好 浏览:705
有什么食谱app推荐 浏览:469
python实现动态口令 浏览:823
我的世界电脑服务器地址怎么添加 浏览:850
传奇地图怎么加密到pak 浏览:977
linux删除mysql用户 浏览:755
图案设计pdf 浏览:584
pdf编辑器在线 浏览:471
华为云云耀服务器如何关机 浏览:994
数字加密的历史 浏览:613
宏杰文件夹打不开 浏览:819
施工日记app哪个好 浏览:566
什么是压缩机的排气量 浏览:538
在哪个app可以预约一科考试 浏览:634
易语言vmp加壳源码 浏览:513
阅读前端框架源码 浏览:14
我的世界命令方块传送指令 浏览:545
不能用start命令打开xp 浏览:925
text命令 浏览:30