LCD显示秒表汇编(Word).doc

上传人:rrsccc 文档编号:9154220 上传时间:2021-02-04 格式:DOC 页数:9 大小:43KB
返回 下载 相关 举报
LCD显示秒表汇编(Word).doc_第1页
第1页 / 共9页
LCD显示秒表汇编(Word).doc_第2页
第2页 / 共9页
LCD显示秒表汇编(Word).doc_第3页
第3页 / 共9页
LCD显示秒表汇编(Word).doc_第4页
第4页 / 共9页
LCD显示秒表汇编(Word).doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《LCD显示秒表汇编(Word).doc》由会员分享,可在线阅读,更多相关《LCD显示秒表汇编(Word).doc(9页珍藏版)》请在三一文库上搜索。

1、/*/ ; K2=P3.3 K4=P3.5;* 1602LCD显示秒表 *;* K2 - 控制按键 *;* 按一下计时,再按一下暂停计时 *;* ;* 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_D EQU 34H ;为键当前的端口状况 KEY_S EQU 35H ;为键上次的端口状

2、况 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 R3,#00H MOV SP,#60H CLR EN CALL SET_LCD CALL INIT ;初始化变量 MOV KEY_S,#01H CALL INIT_TIMER ;初始化定

3、时器 ; CALL MENULOOP: CALL CONV ;时间计数处理 CALL SKEYMOV KEY_S,KEY_D JZ XPMOV A, KEY_S JB ACC.0,XP CLR A MOV B,A INC R3 MOV A,R3 MOV B,#2 DIV AB MOV A,BCALL BZ JZ XPP SETB TR0 ;启动中断 MOV DPTR,#MADJ ;显示执行信息 CALL P_KEY SJMP XP XPP: CLR TR0 MOV DPTR,#MADJ1 CALL P_KEY XP: JB K4,LOOP ;判清零键是否按? MOV R3,#00H CALL

4、BZ JMP START;-P_KEY: MOV A,#1 ;第一行显示 CALL LCD_PRINT RET ;-SKEY: CLR A ;判是否有键按下子程序 MOV KEY_D,A MOV C,K2 RLC A ORL KEY_D,A MOV A,KEY_D XRL A,KEY_S ;有键按下,A 中内容不为零 RET;-;LMESS1: DB ,0 ;LCD 第一行显示消息;LMESS2: DB TIME ,0 ;LCD 第二行显示消息;-INIT: CLR A ;初始化控制变量 MOV SEC0,A MOV SEC,A MOV MIN,A MOV HOUR,A MOV KEY_D,A

5、 MOV KEY_S,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,

6、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存余数 ADD A,#30H ;A为十位数,转换为字符 PUSH B ;B放入堆栈暂存 MOV B,X

7、;设置 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,#: ; MOV B,X ; CALL LCDP2 ; MOV A,MIN ;加载分钟数据 INC X ;设置位置 CALL

8、 SHOW_DIG2 ;显示数据 INC X ; MOV A,#: ; MOV B,X ; CALL LCDP2 ; MOV A,SEC ;加载秒数数据 INC X ;设置位置 CALL SHOW_DIG2 ;显示数据 INC X ; MOV A,#: ; MOV B,X ; CALL LCDP2 ; MOV A,SEC0 ;加载秒数数据 INC X ;设置位置 CALL SHOW_DIG2 RET;-; LCD CONTROL;-SET_LCD: ;对 LCD 做初始化设置及测试 CLR EN CALL INIT_LCD ;初始化 LCD MOV R5,#10 CALL DELAY MOV

9、DPTR,#MMENU ;指针指到显示消息1 MOV A,#1 ;显示在第一行 CALL LCD_PRINT MOV DPTR,#SLF ;指针指到显示消息2 MOV A,#2 ;显示在第二行 CALL LCD_PRINT RET;-INIT_LCD1: ;LCD 控制指令初始化 MOV A,#38H ;双列显示,字形5*7点阵 CALL WCOM ; call delay1 MOV A,#0CH ;开显示,显示光标,光标不闪烁 CALL WCOM ; call delay1 MOV A,#01H ;清除 LCD 显示屏 CALL WCOM ; call delay1 RET;-ENABLE:

10、 ;写指令 CLR RS ;RS=L,RW=L,E=高脉冲 CLR RW ;D0-D7=指令码 SETB EN ACALL DELAY1 CLR EN RET;-LCD_PRINT: ;在LCD的第一行或第二行显示字符 CJNE A,#1,LINE2 ;判断是否为第一行 LINE1: MOV A,#80H ;设置 LCD 的第一行地址 CALL WCOM ;写入命令 CALL CLR_LINE ;清除该行字符数据 MOV A,#80H ;设置 LCD 的第一行地址 CALL WCOM ;写入命令 JMP FILL LINE2: MOV A,#0C0H ;设置 LCD 的第二行地址 CALL W

11、COM ;写入命令 CALL CLR_LINE ;清除该行字符数据 MOV A,#0C0H ;设置 LCD 的第二行地址 CALL WCOM FILL: CLR A ;填入字符 MOVC A,A+DPTR ;由消息区取出字符 CJNE A,#0,LC1 ;判断是否为结束码 RET LC1: CALL WDATA ;写入数据 INC DPTR ;指针加1 JMP FILL ;继续填入字符 RET;-CLR_LINE: ;清除该行 LCD 的字符 MOV R0,#16 CL1: MOV A,# CALL WDATA DJNZ R0,CL1 RET;- DE: MOV R7,#250 ;延时500微

12、秒 DJNZ R7,$ RET;- EN1: CLR RW SETB EN ;短脉冲产生启用信号 CALL DE CLR EN CALL DE RET;-INIT_LCD: ;8位I/O控制 LCD 接口初始化 MOV P1,#38H ;双列显示,字形5*7点阵 call enable call delay1 MOV P1,#38H ;双列显示,字形5*7点阵 call enable call delay1 MOV P1,#38H ;双列显示,字形5*7点阵 call enable call delay1 CALL INIT_LCD1 RET;-WCOM: ;以8位控制方式将命令写至LCD M

13、OV P1,A ;写入命令 call enable RET;-WDATA: ;以8位控制方式将数据写至LCD MOV P1,A ;写入数据 SETB RS ;设置写入数据 CALL EN1 RET;-;第二行显示字符;-LCDP2: ;在LCD的第二行显示字符 PUSH ACC ; MOV A,B ;设置显示地址 ADD A,#0C0H ;设置LCD的第二行地址 CALL WCOM ;写入命令 POP ACC ;由堆栈取出A CALL WDATA ;写入数据 RET;-DELAY: ;延时10MS MOV R6,#50 D1: MOV R7,#100 DJNZ R7,$ DJNZ R6,D1

14、DJNZ R5,DELAY RET;-DELAY1: ;延时5MS MOV R6,#25 D2: MOV R7,#100 DJNZ R7,$ DJNZ R6,D2 RET;-BZ: ;蜂鸣器 MOV R6,#100 B1: CALL DEX CPL BEEP DJNZ R6,B1 MOV R5,#10 CALL DELAY RET DEX: MOV R7,#180 DE1: NOP DJNZ R7,DE1 RET;-MMENU: DB SECOND-CLOCK 0 ,0slf: DB TIME ,0 ;LCD 第二行显示消息MADJ: DB BEGIN COUNT ,0MADJ1: DB PAUST COUNT ,0END (注:文件素材和资料部分来自网络,供参考。请预览后才下载,期待你的好评与关注。)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1