導航:首頁 > 操作系統 > 單片機倒計時c程序

單片機倒計時c程序

發布時間:2023-01-29 08:37:07

『壹』 怎樣用C編寫一個倒計時的程序

//工程名稱:99秒倒計時
//功能描述:程序開始顯示99秒等待開始倒計時,當再次按下開關後計時
//停止,當再按下開關後計時
//復位實際上是單片機復位,重新開始!
//通過本程序新的認識: 1.BCD數碼管的使用 2.十進制到BCD碼轉化 //3.C51的等待按鍵作用
//2. temp=99;i=temp/10;j=temp%10;i=(i<<4);dis=i+j;P0=dis;
//3.while(sw==1){;}// 判按下,下則出 while(sw==0){;}//判松開// ,開則出
#include
sbit sw=P3^5; //定義開關
main()
{
unsigned char temp,dis;
unsigned int i,j,k,t;
// P0=0x88; //初試時檢測數碼管是否正常
// for(k=0;k<40000;k++);
temp=99;
i=temp/10;
j=temp%10;
i=(i<<4);
dis=i+j;
P0=dis;//啟動是顯示99
while(sw==1){;}// 判按下,下則出
while(sw==0){;}//判松開 ,開則出 第一次按開關
for(t=0;t<5;t++)//循環來減
{
for(k=0;k<30000;k++);
temp--;
i=temp/10;
j=temp%10;
i=(i<<4);
dis=i+j;
P0=dis;
for(k=0;k<30000;k++);
if(sw==0) break;
// while(sw==1){;}
// while(sw==1){;}
// break;
}
while(sw==1){;}// 判按下,下則出
while(sw==0){;}//判松開 ,開則出 第一次按開關
while(sw==1){;}// 判按下,下則出
while(sw==0){;}//判松開 ,開則出 第一次按開關
}

『貳』 請幫忙寫一個程序:單片機控制液晶顯示器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語言程序 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;
}

『肆』 求單片機12分鍾倒計時的C語音程序,要可以暫停

#include <AT89X52.H>unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90};unsigned char flag,a;unsigned int count;sbit k5=P1^4;void delay1(void){ unsigned int j; for(j=0;j<24;j++);//0.2毫妙}void display(unsigned int y){ P0=0xff; P2=0xdf; P0=tab[y/100]; delay1(); P0=0xff; P2=0xbf; P0=tab[y%100/10]; delay1(); P0=0xff; P2=0x7f; P0=tab[y%10]; delay1(); P0=0xff; } void main(){ TMOD=0x11; EA=1; ET0=1; TH0=0xf8; TL0=0xcc; TR0=1; while(1) { if(k5==0) { TH1=55536/256; TL1=55536%256; TR1=1; while(!TF1); TF1=0; TR1=0; if(k5==0) { while(!k5); flag++; flag=flag%2; } } }}void T0_jishi() interrupt 1{ TH0=0xf8; TL0=0xcc;//liang 毫秒 a++; if(flag==0) { if(a==5) { a=0; count++; if(count==1000) count=0; } } display(count);
}
這個是秒錶程序,按了停再按走,可以修改點參數,把數碼管時鍾加上去就行了

『伍』 單片機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秒倒計時的

閱讀全文

與單片機倒計時c程序相關的資料

熱點內容
android錄音開源 瀏覽:453
弗洛伊德演算法c 瀏覽:6
udp命令字 瀏覽:659
app服務端java源碼 瀏覽:798
電腦用文件夾玩大型游戲 瀏覽:254
安卓耳塞失靈怎麼辦 瀏覽:765
華三交換機保存命令 瀏覽:605
命令方塊怎麼調鍵盤 瀏覽:841
不把密碼存在伺服器上怎麼辦 瀏覽:398
怎麼讓指令方塊的命令消失 瀏覽:543
用單片機做plc 瀏覽:404
雲伺服器進入子目錄命令 瀏覽:795
伺服器機櫃如何配電 瀏覽:578
怎麼刪除iphone資源庫里的app 瀏覽:940
pdf魚 瀏覽:648
單片機pcf8591什麼作用 瀏覽:805
sql命令學院 瀏覽:283
加密軟體在電腦那個盤 瀏覽:988
android獲取外部存儲 瀏覽:573
怎麼查自己家的伺服器地址 瀏覽:858