导航:首页 > 操作系统 > 单片机倒计时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程序相关的资料

热点内容
手机文档解压之后解压包去哪儿了 浏览:923
java中网络编程重要吗 浏览:683
如何登录别人的服务器 浏览:626
调度系统软件python 浏览:205
微信大转盘抽奖源码 浏览:497
压缩机损坏的表现 浏览:862
同步数据服务器怎么用 浏览:634
163邮箱服务器的ip地址 浏览:50
服务器跟域是什么 浏览:128
rails启动命令 浏览:465
logistic命令怎么用 浏览:738
c语言点滴pdf 浏览:747
linuxrtc编程 浏览:258
linux打包并压缩命令 浏览:644
aes加密的证书格式 浏览:99
oracledbcalinux 浏览:844
酬勤任务app怎么被特邀 浏览:199
android应用文件夹 浏览:1002
平面设计法则pdf 浏览:339
3d圆角命令怎么用 浏览:569