當前位置:首頁 » 編程語言 » 倒計時c語言單片機程序

倒計時c語言單片機程序

發布時間: 2023-04-27 15:30:38

㈠ 51單片機c語言程序 80分鍾倒計時

#include<iostream>
#include<vector>
#include<algorithm>

usingnamespacestd;

intis_right(inta[],intk)
{
intjian_ge=a[1]-a[0];
intcount_num=0;

for(inti=0;i<k-1;i++)
{
if(a[i+1]-a[i]==jian_ge)
{
count_num++;
}
}

returncount_num==k-1?true:false;

}

intmain()
{
inti;
cin>>i;

vector<char>result;
vector<char>::iteratorit;

for(intj=1;j<=i;j++)
{
intk;
吵盯cin>>k;

inta[k];

for(intm=0;m<k;m++)
{
cin>>a[m];
}

if(is_right(a,k)==1)
{
液枝result.push_back('Y');
}
else
升埋和{
result.push_back('N');
}
}

//reverse(result.begin(),result.end());

for(it=result.begin();it!=result.end();it++)
{
cout<<*it<<endl;
}
return0;
}

㈡ 單片機60s倒計時c語言共陽極

74HC573驅動的程序辯鋒:
#include<reg51.h>攜鍵晌
#include<intrins.h>亮喚
#define uchar unsigned char
#define uint unsigned int
sbit la=P2^3;
sbit wela=P2^2;
bit flag;
uchar code an[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned long int sum1=60;
unsigned long int num1;
void display(uchar a,uchar b)
{
la=1;
P2=an[a];
la=0;
P2=0xff;
wela=1;
P2=wei[b];
wela=0;
delay10ms();
}
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
while(1)
{

if(num1==20)
{
num1=0;
sum1--;
if(sum1==0)
{
sum1=60;
}
}

sum1_shi=sum1/10;
sum1_ge=sum1%10;
display(sum1_ge,7);
display(sum1_shi,6);
}
}
void xx() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num1++;
}

㈢ 基於51單片機的999倒計時C語言程序。

/*************************************
要求是能進行9999秒倒計時
用C語言實現
*************************************/
#include<at89X51.h>

#define uchar unsigned char
#define uint unsigned int
uchar num_qian,num_,num_shi,num_ge;//定義千位,百位,十位,個位。
uint time;//要顯示的時間0~9999
uint tcnt;//計時單元
//*****************//
//以下是埠定義
//*****************//
sbit key_qian=P1^0;//按鍵"千加1"
sbit key_ =P1^2;//按鍵"百加1"
sbit key_shi =P1^4;//按鍵"十加1"
sbit key_ge =P1^6;//按鍵薯模升"個加1"
sbit laba =P3^1;//喇叭

void delay(unsigned int z)//1毫秒延時子函數
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

//*****************//
//以下是七段數碼管驅動程序
//*****************//
/**************************************************
** 功能描述: 中斷接受字元串驅動程序
**佔用引腳資源 P30
**佔用系統資源 串口中斷;中斷向量4
***************************************************/
#define DUAN P0
#define WEI P2

unsigned char code dispcode[]=
{
0x3F,/*0*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
}; //共陰段碼表
//0,1,2,3,4,5,6,7,8,9,A,b,C,c,d,E,F,NULL,-
uchar code dispbitcode[]=
{0xef,0xdf,0xbf,0x7f}; //共陰位碼表

uchar dispbuf[4],dispcount;//開辟四個顯示緩沖區

void ledinit()/***初始化子函數,定時器0刷新顯示內容***/
{
TMOD|=0x01; // 定時器0方式1
TH0=(65536-5000)/256; //定時器16位模式
TL0=(65536-5000)%256; //溢出時間:碼謹5ms
TR0=1; //開啟定時器0
ET0=1; //使能定時器0
EA=1; //系統使能
}

void leddisp()//固定顯示某些數字
{
dispbuf[0]=time/1000;
dispbuf[1]=time%1000/100;
dispbuf[2]=time%100/10;
dispbuf[3]=time%10;
}

void keytest()//按鍵檢測程序
{
if(!key_qian)//如果千位按鍵
{
delay(5);//5毫秒延時去抖
if(!key_qian)//如果千位按鍵的確按下了
{
num_qian++;//千位數字加一
while(!key_qian);//等待按鍵松開
}
time+=num_qian*1000;//千位數字加1
}
if(!key_)//如果百位按鍵
{
delay(5);//5毫秒延時去抖
if(!key_)//如果百位按鍵的確按下了
{
num_++;//百位數字加一
while(!key_);//等待按鍵松開
}
time+=num_*100;//百位數字加1
}
if(!key_shi)//如果十位按鍵
{
delay(5);//5毫秒延時去抖
if(!key_shi)//如果十位按鍵的確按下了
{
num_shi++;//數老千位數字加一
while(!key_shi);//等待按鍵松開
}
time+=num_shi*10;//十位數字加1
}
if(!key_ge)//如果千位按鍵
{
delay(5);//5毫秒延時去抖
if(!key_ge)//如果個位按鍵的確按下了
{
num_qian++;//千位數字加一
while(!key_ge);//等待按鍵松開
}
time+=num_ge;//個位數字加1
}
}

void main()//主程序
{
ledinit();//數碼管中斷初始化,定時器0刷新顯示內容
while(1)//大循環
{
if((!key_qian)||(!key_)||(!key_shi)||(!key_ge))//如果四個按鍵中的任何一個被按下
keytest();//執行按鍵檢測程序
leddisp();//不斷的刷新顯示內容
}
}

//*************************************************
//以下是定時器0刷新數碼管顯示內容驅動程序
//*************************************************
/**************************************************
** 功能描述: 七段數碼管驅動程序
**佔用引腳資源: 數碼管段選,數碼管位選
**佔用系統資源T0
***************************************************/

void t0(void) interrupt 1 //using 0
{
TH0=(65536-5000)/256; //5ms中斷
TL0=(65536-5000)%256; //16位定時器模式
WEI=0xff;//關位選
DUAN=dispcode[dispbuf[dispcount]]; //段選
WEI=dispbitcode[dispcount]; //開位選
dispcount++;
if(dispcount==5)
dispcount=0;

tcnt++; //計數個數加一
if(tcnt==5*200)//滿足1S了
{
tcnt=0;//計數個數歸零
time--;//時間減一
if(time==0)//時間
while(1);
}
if(time<10)//時間小於10
laba=~laba;//聲音報警
}

這是9999秒倒計時的

㈣ 請幫忙寫一個程序:單片機控制液晶顯示器60秒倒計時(C語言)

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^5;
sbit RW=P2^6;
sbit EN=P2^7;
uchar code temp[]="00";
uint aa,ee,date1;
void delay(uint aa)
{
uint bb,cc;
for(bb=0;bb<aa;bb++)
for(cc=0;cc<差兄100;cc++);
}
void write_ling(uint com)
{
RS=0;
P0=com;
delay(5);
EN=1;
delay(10);
EN=0;
}
void write_shuju(uint shuju)
{
RS=1;
P0=shuju;
delay(5);
EN=1;
delay(10);
EN=0;
}
void inite() //中斷、1602初始化
{
TMOD=0x01;
TH0=(65536-46080)/256;
TH0=(65536-46080)%256;
EA=1;
ET0=1;
TR0=1;
RW=0;
EN=0;
date1=60;
write_ling(0x38);
write_ling(0x0c);
write_ling(0x06);
write_ling(0x80);
write_ling(0x01);
write_ling(0x80+7);

for(aa=0;aa<2;aa++)
{
write_shuju(temp[aa]);
delay(5);
}
}
void display(uint date)
{
uint ge,shi;
ge=date%10;
shi=date/10;
write_shuju(0x30+shi);//0x30--0x39對應的是1602顯示0--9的ASCLL碼值
write_shuju(0x30+ge);
}
void timer0() interrupt 1
{
TH0=(65536-46080)/256;//11.0592MHZ晶振50Ms
TH0=(65536-46080)%256;
ee++;
if(ee==14)//加上前面延時子函數的延時, 在我的板子上ee=14的時候大概就是一秒鍾
{
ee=0;
date1--;
if(date1==0)
{
date1=60;
}
write_ling(0x80+7);
display(date1);
}
}
void main()
{
inite();
while(1);
}

小弟不才,希望這個程序對虛猜襲你有幫兆逗助!

㈤ 51單片機的程序(c語言版),用數碼管進行倒計時。

你是不是用2了鎖存器啊。
P2=led_table[ten];
led_ten=1;//打開鎖存器隱旦
led_ten=0;/毀迅/關閉鎖存期

存儲10位纖攜此
P2=led_table[single];
led_single=1;//打開鎖存器
led_single=0;//關閉鎖存器

存儲個位
另外led_ten,led_single 你要先定義一下吧

㈥ 如何用單片機做一個簡單的倒計時器

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]; //數碼管個位
}

熱點內容
愛情腳本短 發布:2025-07-20 09:56:44 瀏覽:679
存款機的安全密碼是什麼 發布:2025-07-20 09:53:03 瀏覽:32
手機如何清理空文件夾 發布:2025-07-20 09:40:35 瀏覽:72
什麼軟體可以編譯文件 發布:2025-07-20 09:35:17 瀏覽:961
可編程式控制制器的定義 發布:2025-07-20 09:28:10 瀏覽:390
陌陌會員訪問不留痕跡 發布:2025-07-20 09:28:08 瀏覽:308
x27熱點密碼是多少 發布:2025-07-20 09:03:19 瀏覽:577
c語言編碼生日快樂 發布:2025-07-20 08:56:56 瀏覽:390
伺服器北京雲空間 發布:2025-07-20 08:55:29 瀏覽:261
秦皇島少兒編程 發布:2025-07-20 08:55:19 瀏覽:63