完整word版00-99秒倒计时器程序及仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目一:秒计时器

功能要求:

1.系统上电,数码管显示“99”.

2.每隔1秒,数码管显示减1,减小到“00”后,数码管显示“00”,同时继电器开启。

3.按键的定义如下:

“暂停/开始”按键S13:当S13按下时,秒表计时停止,数码管显示当前数值,再次按下时恢复计时。

“设置”按键S14:当停止计时时,按下S14键,可以设置秒数。按键S1-S10分别对应数字0-9,先输入数字为十位数,后输入数字为个位数,若输入数字大于99,数码管显示“99”。设置结束后,按下S13键启动计时。

“重新开始”按键S15:当S15按下时,数码管显示为“99”,秒表从新开始计时。

#include

#include

unsigned char code Tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char code

jp[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77}; unsigned char a[2]={0,0};

unsigned char int_time;

unsigned char second=99;

unsigned char c;

bit zt;

bit sz;

unsigned char count;

unsigned char y;

unsigned char x;

unsigned char count2;

//函数功能:数码管动态扫描延时

void delay(unsigned char s)

{

unsigned char i,j;

for(i=0;i

for(j=0;j<125;j++)

;

}

//数码管显示子程序

void DisplaySecond(unsigned char k)

{

P2=0xfe;

P0=Tab[k/10];

delay(1);

P2=0xfd;

P0=Tab[k_x0010_];

delay(1);

}

//扫描键盘的值

void sm(void)

{ unsigned char k,j,n,a,m;

m=0xfe;

P1=0xf0;

k=P1;

k=k&0xf0;

if(k!=0xf0)

{ delay(5);

if(k!=0xf0)

{for(j=0;j<4;j++)

{ P1=m;n=P1;

for(a=0;a<16;a++)

{if(jp[a]==n)

c=a; //键值保存在C中

while(P1==jp[a]);

}

m=_crol_(m,1);

}

}

}

}

//按键

void aj(void)

{

if(P1!=0xf0)

{

if(c==12) //按下暂停/开始键{

count++;

if(count==1)

{

TR0=0;

zt=1;

}

if(count==2)

{

TR0=1;

count=0;

}

}

if(c==13)

{

if(zt==1)

{

second=00;

sz=1;

count2=0;}

}

if(c<10)

{

if(sz==1)

{

count2++;

if(count2==1)

{

a[0]=c;

second=a[0]*10+a[1]; }

if(count2==2)

{

a[1]=c;

second=a[0]*10+a[1]; }

}

}

if(c==14)

{

second=99;

}

}

P1=0xf0;

}

//主函数

void main(void)

{

TMOD=0x01;

TH0=(65536-46083)/256; TL0=(65536-46083)%6; EA=1;

ET0=1;

while(1)

{

DisplaySecond(second);

sm();

aj();

}

}

//函数功能:定时器0的中断服务子程序void interserve(void)interrupt 1 using 1 {

int_time ++;

if(int_time==20)

{

int_time=0;

second--;

if(second==-1)

{second=00;

P2=0x7f;

delay(5);

}

}

TH0=(65536-46083)/256;

TL0=(65536-46083)%6;

}

相关文档
最新文档