基于51单片机的电子打铃器 - 图文(3)

2019-03-23 10:43

/////////实现走动功能的的子程序//////////// DELAY1: MOV TMOD,#00000001B

MOV IE,#10000010B

//延时60ms的子程序 设置T0工作在模式1 //启用定时器T0中断产生 //打开T0并将其设置为定时器

// MOV TCON,#00010000B

MOV TL0,#LOW(65536-5000) //直接带公式法设置T0的初值,此方法为简便

方法

MOV TH0,#HIGH(65536-5000) SETB TR0

//若TF0为1时代表T0定时器计数已满,有溢出程

序往下进行

;中断服务程序 T0_SRV: PUSH ACC

MOV TL0,#LOW(65536-5000) //直接带公式法设置T0的初值,此方法为简便方法 MOV TH0,#HIGH(65536-5000)

//MOV TL0,#(8192-5000)MOD 32 //重加载初始值 //MOV TH0,#(8192-50000)/32 INC DEDA ;秒输出 MOV A,DEDA CJNE A,#200,TT1 MOV DEDA,#0 CPL WLED

//若TF0为0时将一直循环这条程序语句; RET

//定时器T0计时中断程序每隔5ms中断一次

//LED灯亮灭变换

10

INC SEC MOV A,SEC CJNE A,#60,TT1 ;分输出

INC MIN //分计数加一 MOV SEC,#0 //秒计数清零 MOV A,MIN

CJNE A,#60,TT1 //看是否一小时到了 ;时输出 INC HOUR MOV MIN,#0 MOV A,HOUR CJNE A,#24,TT1 MOV SEC,#0 MOV MIN,#0 MOV HOUR,#0 TT1: POP ACC RETI

////////////////////实现显示功能的子程序///////////////////// CONV:

;转换小时数据

//通过DIV指令进行十进制计时处理,并将中断程序处理后的数据分别存

//是否1分钟到了

放入数码管显示内存中

//其中BUF,BUF+1存放小时;BUF+2,BUF+3存放分钟 、

MOV A,HOUR MOV B,#10 DIV AB

//将HOUR内的值转换为十位和个位分别表示的十进制数字,便于用两位

11

数码管显示出来小时值

MOV DPTR,#TABLE //DPTR指针指向表的首地址 MOVC A,@A+DPTR MOV BUF,A MOV A,B MOVC A,@A+DPTR MOV BUF+1,A

MOV A,MIN //开始转换分钟 MOV B,#10 DIV AB

MOV DPTR,#TABLE MOVC A,@A+DPTR MOV BUF+2,A MOV A,B MOVC A,@A+DPTR MOV BUF+3,A RET

//////////共阳极数码管字符转换笔段码表/////// TABLE:

DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H DB 80H,90H,88H,83H DB 0C6H,0A1H,86H,8EH

//共阴极///////////////////////

// TABLE:

//DB 3FH,06H,5BH,4FH,66H //DB 6DH,7DH,07H,7FH //DB 6FH,77H,7CH,39H

12

//DB 5EH,79H,71H

/////////////////扫描显示子程序///////////////////

//实际四个数码管是在轮流显示的,每一刻都只有一个数码管亮,利用人的视觉暂留来使人感觉是在同时显示 DISP:

MOV R0,#BUF //指向显示器缓冲区起始地址,即存入十位上小时地址 MOV R2,#4 //扫描四次

MOV A,#00001000B //扫描初值,只是使p2.3口打开 S1:

MOV P2,A MOV A,@R0 MOV P0,A MOV A,P2

MOV R5,#2

ACALL DELAY //延时,以便显示字符稳定 ;EX:XXXX1011 RR A INC R0

//A向右移动一位 //指向BUF+1

DJNZ R2,S1 //判断是否执行了四次扫描 RET

///////////////////实现调整时间子程序//////////////////// ;设置目前时间 SETTIME:

13

CLR TR0 //定时器暂停 MOV SEC,#0 //秒钟变量清零 L0:

ACALL DISP //调用扫描显示子程序 JB K2,L1 //K2等于一时跳转到L1 JNB K2,$ //若按下K2则等待放开 ;K2小时调整 INC HOUR MOV A,HOUR

CJNE A,#24,L11 //是否到了24小时,不到跳转到L11 MOV HOUR,#0 //小时变量清零 L11:

ACALL CONV //转换显示数据 ACALL DISP //扫描显示 JMP L0 L1: JB K3,L2 JNB K3,$ ;K3分钟调整 INC MIN MOV A,MIN CJNE A,#60,L21 MOV MIN,#0 L21: ACALL CONV ACALL DISP JMP L0

L2:JB K4,L0 //未按下K4则继续扫描 JNB K4,$

ACALL BZ //蜂鸣器响一声

14


基于51单片机的电子打铃器 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:学校突发水污染事件应急预案

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

马上注册会员

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