教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 行业资料 >

1602LCD液晶秒表程序

来源:网络收集 时间:2026-01-22
导读: 1602LCD液晶秒表程序 ; K1=P3.2 K2=P3.3 K3=P3.4 K4=P3.5 ;* 1602LCD显示秒表 * ;* K3 --- 控制按键 * ;* 第一次按下时,开始计时,第二次按下时,暂停计时。 * ;* 第三次按下时,累计计时,第四次按下时,暂停计时。 * ;* K4 --- 清零按键: * ;* 在任何状态下

1602LCD液晶秒表程序

; K1=P3.2 K2=P3.3 K3=P3.4 K4=P3.5
;* 1602LCD显示秒表 *
;* K3 --- 控制按键 *
;* 第一次按下时,开始计时,第二次按下时,暂停计时。 *
;* 第三次按下时,累计计时,第四次按下时,暂停计时。 *
;* K4 --- 清零按键: *
;* 在任何状态下,按一下K4,均可清零。 *
;* *

;---------------------------------------
;晶振 11.0592M
;定时器0,方式1
;计时中断程序每隔10ms中断一次
;---------------------------------------
TLOW EQU 0CH ;定时器初值
THIGH EQU 0DCH

HOUR EQU 30H
MIN EQU 31H
SEC EQU 32H
SEC0 EQU 33H ;10ms计数值
KEY_S EQU 34H ;为键当前的端口状况
KEY_V EQU 35H ;为键上次的端口状况
X EQU 36H ;LCD 地址变量
KEY_C EQU 37H ;键计数单元

K1 EQU P3.2
K2 EQU P3.3
K3 EQU P3.4
K4 EQU P3.5

BEEP EQU P2.4
RS EQU P3.5 ;LCD控制端口定义
RW EQU P3.6
EN EQU P3.7

;----------------------------------------------------
ORG 0000H
JMP START
ORG 0BH
JMP T0_INT
;----------------------------------------------------
START: MOV SP,#60H
CLR EN
CALL SET_LCD
CALL INIT ;初始化变量
MOV KEY_V,#01H
CALL INIT_TIMER ;初始化定时器
CALL MENU
LOOP: CALL CONV ;时间计数处理
CALL LOOP1
CALL SKEY ;判是否有键按下
JZ LOOP ;无键按下转LOOP
CALL CONV
CALL SKEY
JZ LOOP
MOV KEY_V,KEY_S ;交换数据
CALL P_KEY
JMP LOOP
;-----------------------------------------------------
LOOP1: JB K4,LOOP2 ;判清零键是否按下
CALL BZ
JMP START
LOOP2: RET
;-----------------------------------------------------
P_KEY: ;
MOV A,KEY_V
JB ACC.0,P_KEY3
INC KEY_C
MOV A,KEY_C ;K3键是否第一次按下?
CJNE A,#01H,P_KEY1
MOV DPTR,#MADJ ;
显示执行信息
MOV A,#1 ;
CALL LCD_PRINT
SETB TR0 ;启动中断
RET
P_KEY1: ;K3键是否第二次按下?
MOV A,KEY_C

1602LCD液晶秒表程序

CJNE A,#02H,P_KEY2
MOV DPTR,#MADJ1 ;显示执行信息
MOV A,#1
CALL LCD_PRINT
CLR TR0 ;停止中断
RET
P_KEY2: ;K3键是否第三次按下?
MOV A,KEY_C
CJNE A,#03H,P_KEY3
MOV DPTR,#MADJ2 ;显示执行信息
MOV A,#1
CALL LCD_PRINT
SETB TR0 ;启动中断
RET
P_KEY3: ;K3键是否第四次按下?
MOV A,KEY_C
CJNE A,#04H,P_KEY4
MOV DPTR,#MADJ3 ;显示执行信息
MOV A,#1
CALL LCD_PRINT
CLR TR0 ;启动中断
P_KEY4: RET
;-------------------------------------------------------
SKEY: CLR A ;判是否有键按下子程序
MOV KEY_S,A
MOV C,K3
RLC A
ORL KEY_S,A
MOV A,KEY_S
XRL A,KEY_V ;有键按下,A 中内容不为零
RET
;--------------------------------------------------------
LMESS1: DB " ",0 ;LCD 第一行显示消息
LMESS2: DB "TIME ",0 ;LCD 第二行显示消息
;--------------------------------------------------------
INIT: CLR A
MOV KEY_C,A ;初始化控制变量
MOV SEC0,A
MOV SEC,A
MOV MIN,A
MOV HOUR,A
MOV KEY_S,A
MOV KEY_V,A
SETB BEEP
CLR TR0
RET
;------------------------------------------------------------
INIT_TIMER: ;初始化定时器接口
MOV TMOD,#01H ;设置定时器0 工作模式为模式1
MOV IE, #82H ;启用定时器0 中断产生
MOV TL0,#TLOW
MOV TH0,#THIGH
RET
;-------------------------------------------------------------
T0_INT:
PUSH ACC ;定时器0计时中断程序
MOV TL0,#TLOW
MOV TH0,#THIGH
INC SEC0
MOV A,SEC0 ;10ms 计数值加1
CJNE A,#100,TT
MOV SEC0,#0
INC SEC ;秒加1
MOV A,SEC
CJNE A,#60,TT
INC MIN ;分加1
MOV SEC,#0
MOV A,MIN
CJNE A,#60,TT
INC HOUR ;时加1
MOV MIN,#0
MOV A,HOUR
CJNE A,#24,TT
MOV SEC0,#0
MOV SEC,#0 ;秒、分、时单元清0
MOV MIN,#0
MOV HOUR,#0
TT: POP ACC
RETI
;-------------------------------------------------------
; 在第二行显示数字
;--------------------
-----------------------------------
SHOW_DIG2: ;在 LCD 的第二行显示数字
MOV B,#10 ;设置被除数
DIV AB ;结果A存商数,B存余数

1602LCD液晶秒表程序

ADD A,#30H ;A为十位数,转换为字符
PUSH B ;B放入堆栈暂存
MOV B,X ;设置 LCD 显示的位置
CALL LCDP2 ;由 LCD 显示出来
POP B ;
MOV A,B ;B为个位数
ADD A,#30H ;转换为字符
INC X ;LCD 显示位置加1
MOV B,X ;设置 LCD 显示的位置
CALL LCDP2 ;由 LCD 显示出来
RET
;-------------------------------------------
;转换为 ASCII 码并显示
;-------------------------------------------
CONV:
MOV A,HOUR ;加载小时数据
MOV X,#5 ;设置位置
CALL SHOW_DIG2 ;显示数据
INC X ;
MOV A,#':' ;< …… 此处隐藏:4990字,全部文档内容请下载后查看。喜欢就下载吧 ……

1602LCD液晶秒表程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/2276132.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)