《单片机课程设计报告》-水塔水位 - 图文(6)

2020-04-21 03:27

if(P3_0==0)//判断启动按钮是否按下 {

TR1=1;//若启动按钮按下,开启定时器T1,时钟开始计时 }

if(P3_1==0)//判断停止按钮是否按下 {

TR1=0;//若启动停止按下,关闭定时器T1,时钟停止计时 }

if(P3_2==0)//判断启动按钮是否按下 {

TR1=0;// 若启动按钮按下,关闭定时器T1,时钟停止计时 counter=a=b=c=0;//将时钟内的所有变量清零

}

if(P3_3==0)// {

判断启动按钮是否按下

m=counter;//将计数的次数counter赋予显示分钟的变量m,使其显示定时的时间 等

{

if(a==counter)//如果两者相等,即定时时间到,关闭定时器T1,LED灯亮 { TR1=0; P0=0x01; a=0; }

if(a!=0&&counter!=0)//判断定时器分钟的变量a与定时的时间counter是否相

} }

if(counter==0)//判断定时按钮是否被按下 {

- 19 -

m=a;//若没被按下,数码管分钟则显示实际时间的分钟; } else {

m=counter;//若按下,则显示定时的时间分钟 }

xianshi();//执行显示程序 } }

/**********数码管显示函数**********/ void xianshi() {

for(k=0;k<10;k++) {

P1=~0x01;//十分之一秒位 P2=~led[c]; delay();

P1=~0x02;//横杠 P2=0x40; delay();

P1=~0x04;//秒位之个位 P2=~led[b]; delay();

P1=~0x08;//秒位之十位 P2=~led[b/10]; delay();

- 20 -

P0=0x00;//使LED灯始终保持静默状态

P1=~0x10; //横杠 P2=0x40; delay();

P1=~0x20;//分位之个位 P2=~led[m]; delay();

P1=~0x40;//分位之十位 P2=~led[m/10]; delay(); } }

/**********系统计时中断**********/

void time() interrupt 3 //用中断方式定时,采用定时中断1,工作方式0 {

d++;//定时器计数溢出,变量d加一,直至10 if(d==4) {

d=0;//定时器溢出10次,计数时间到达0.1s,变量d清零,十分之一秒变量c加一

c++;

if(c==10) //十分之一变量c到达10,时间到达1s,变量c清零,秒钟变量b加一

{ c=0; b++;

if(b==60)//秒钟变量b到达60,时间到达1分钟,变量b清零,分钟变量

- 21 -

a加一

{ b=0;

a++;

if(a==60)//分钟变量b到达60,时间到达60分钟,变量a清零 { a=0; }

} } }

/********按钮定时函数********/ void dingshi() interrupt 2 //采用外部中断1 {

EX1=0; //关闭外部中断1

counter++;//按键按下一次,计数次数加一 EX1=1;//开启外部中断 }

/*********延时子函数***********/ void delay() {

unsigned char n; for(n=0;n<255;n++); }

}

- 22 -

4、proteus仿真图

图12-1 数字时钟proteus仿真图

- 23 -


《单片机课程设计报告》-水塔水位 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:固定资产清查工作具体实施措施和解决方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: