微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 带LCD的时间控制器

带LCD的时间控制器

时间:11-10 来源:互联网 点击:

MENU: ;LCD显示菜单
MOV DPTR,#MMENU ; 存入菜单地址
MOV A,#1 ;
LCALL LCD_PRINT ; 在LCD显示字符
RET
;****************************
; 发音程序
;****************************
BZ:
MOV R6,#0 ; R6值零
B1:LCALL DEX ; 短暂延迟
CPL SPK ; 蜂鸣器取反
DJNZ R6,B1 ;

MOV R5,#10 ; 10*10ms
LCALL DELAY ; 延时
RET
;--------------------
DEX:MOV R7,#180 ; 短暂延迟
DE1:NOP ; 空操作
DJNZ R7,DE1 ;
RET
;============================
; 查看已设置的控制时间
;============================
LOOK_ATIME:
; 显示小时数...............
MOV A,HH ; 调小时数据
MOV DDRAM,#0 ; 设置显示地址
LCALL SHOW_DIG2 ; 在第二行显示
INC DDRAM ; 显示地址加 1
MOV A,#: ; 加载" : "
MOV B,DDRAM ; LCD显示地址放入B中
LCALL LCDP2 ; LCD第二行显示
; 显示分钟数...............
MOV A,MM ; 调小时数据
INC DDRAM ; 显示地址加 1
LCALL SHOW_DIG2 ; 在第二行显示
INC DDRAM ; 显示地址加 1
MOV A,#: ; 加载" : "
MOV B,DDRAM ; LCD显示地址放入B中
LCALL LCDP2 ; LCD第二行显示
; 显示秒钟数...............
MOV A,#0 ; 设置秒为 00
INC DDRAM ; 显示地址加 1
LCALL SHOW_DIG2 ; 在第二行显示
RET
;============================
; 设置控制时间
; K2:HH K3:MM K4:OK
;============================
; K2:HH K3:MMK4:OK
SET_ATIME:
LCALL LOOK_ATIME ; 加载控制时间数据
; SCAN 3 KEY TO ADJ.........
AS0:
JB K2,AS1 ; 未按下K2键则继续扫描
; K2......... 调整小时
LCALL BZ ; 蜂鸣器响一声
INC HH ; 小时加1
MOV A, HH ; 小时值放在累加器中,用于比较
CJNE A,#24,AS11 ; 是否到24h?
MOV HH,#0 ; 小时清0
AS11:
LCALL LOOK_ATIME ; 加载控制时间数据
MOV R5,#20 ; 20*10ms
LCALL DELAY ; 延时
JMP AS0 ; 继续按键扫描
;....................
AS1:JB K3,AS2 ; 未按下K2键则继续扫描
; K3........ 分钟调整
LCALL BZ ; 蜂鸣器响一声
INC MM ; 分钟加1
MOV A,MM ;
CJNE A,#60,AS21 ; 是否到 60 min ?
MOV MM,#0 ; 分钟数清0
AS21:
LCALL LOOK_ATIME ; 加载控制时间数据
MOV R5,#20 ; 20*10ms
LCALL DELAY ; 延时
JMP AS0 ; 继续按键扫描
;.....................
AS2:JB K4,AS0 ; 未按下K4键则继续扫描
; K4........ 设置完成
JNB K4,$ ; 等K4键放开
SETB ALB ; 设置控制标志
CLR C_LED ; 控制指示灯亮
LCALL BZ ; 蜂鸣器发音三声
LCALL BZ ;
LCALL BZ
RET
;============================
; 更新时间并检查控制时间
;============================
TIME_PRO:
; UPDATE TIME...........
MOV A,SEC ; 加载当前秒数
MOV B,SEC0 ; 载入旧秒数
CJNE A,B,TI1 ; 是否过了1 s ?
JMP TI2 ; 检查是否启动控制器
TI1:LCALL CONV ; LCD显示时间数据
MOV SEC0,SEC ; 记录旧的秒数
TI2:
; 检查是否启动控制器
JB ALB,TI3 ; 有启动标志,则比较时间
JB CLOCK,TI4 ; 有启动标志,则比较时间
RET
TI3:
; 检查闹钟时间是否到了....
MOV A,HOUR ; 当前小时时间
MOV B,HH ; 控制小时时间
CJNE A,B,BK ; 检查控制小时时间

MOV A,MIN ; 当前分钟时间
MOV B,MM ; 控制分钟时间
CJNE A,B,BK ; 检查控制分钟时间
; TIME MATCH.................
LCALL TIME_OUT ; 到点工作程序
SJMP BK
; 检查是否为整点
TI4:
MOV A,SEC
CJNE A,#0,BK ; 秒是否为0?
MOV A,MIN ; 分是否为0?
CJNE A,#0,BK
MOV A,HOUR
TI40: LCALL BZ ; 多少时间就发音多少次
DEC A
MOV R5,#40
LCALL DELAY
CJNE A,#0,TI40
LCALL LED_BL ; W_LED闪烁
CPL CLOCK
CPL D_LED
BK:
RET
;****************************
; 到点工作程序
;****************************
TIME_OUT:
CPL Y_LED ; 继电器
CPL ELEC ; 被控制器件
M1:LCALL LED_BL ; 工作灯闪烁
LCALL BZ ; 蜂鸣器发音
; K4..........停止
JB K4,M1 ; 未按下K4键则继续扫描
JNB K4,$ ; 等待K4键释放
NOP
NOP
LCALL LED_BL ; 工作灯闪烁
CLR ALB ; 清除控制标志
SETB C_LED ; 关闭控制标志灯
RET
END
;-- 结束 --
;---------------------------

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top