最新1602LCD显示秒表汇编汇总Word文档下载推荐.docx
- 文档编号:17240029
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:12
- 大小:16.83KB
最新1602LCD显示秒表汇编汇总Word文档下载推荐.docx
《最新1602LCD显示秒表汇编汇总Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《最新1602LCD显示秒表汇编汇总Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
键计数单元
;
K1EQUP3.2
K2EQUP3.3
K3EQUP3.4
K4EQUP3.5
BEEPEQUP2.4
RSEQUP3.5;
LCD控制端口定义
RWEQUP3.6
ENEQUP3.7
----------------------------------------------------
ORG0000H
JMPSTART
ORG0BH
JMPT0_INT
START:
MOVR3,#00H
MOVSP,#60H
CLREN
CALLSET_LCD
CALLINIT;
初始化变量
MOVKEY_S,#01H
CALLINIT_TIMER;
初始化定时器
CALLMENU
LOOP:
CALLCONV;
时间计数处理
CALLSKEY
MOVKEY_S,KEY_D
JZXP
MOVA,KEY_S
JBACC.0,XP
CLRA
MOVB,A
INCR3
MOVA,R3
MOVB,#2
DIVAB
MOVA,B
CALLBZ
JZXPP
SETBTR0;
启动中断
MOVDPTR,#MADJ;
显示执行信息
CALLP_KEY
SJMPXP
XPP:
CLRTR0
MOVDPTR,#MADJ1
CALLP_KEY
XP:
JBK4,LOOP;
判清零键是否按?
CALLBZ
-----------------------------------------------------
P_KEY:
MOVA,#1;
第一行显示
CALLLCD_PRINT
RET
-------------------------------------------------------
SKEY:
CLRA;
判是否有键按下子程序
MOVKEY_D,A
MOVC,K2
RLCA
ORLKEY_D,A
MOVA,KEY_D
XRLA,KEY_S;
有键按下,A中内容不为零
--------------------------------------------------------
LMESS1:
DB"
"
0;
LCD第一行显示消息
LMESS2:
TIME"
LCD第二行显示消息
INIT:
初始化控制变量
MOVSEC0,A
MOVSEC,A
MOVMIN,A
MOVHOUR,A
MOVKEY_S,A
SETBBEEP
CLRTR0
------------------------------------------------------------
INIT_TIMER:
初始化定时器接口
MOVTMOD,#01H;
设置定时器0工作模式为模式1
MOVIE,#82H;
启用定时器0中断产生
MOVTL0,#TLOW
MOVTH0,#THIGH
-------------------------------------------------------------
T0_INT:
PUSHACC;
定时器0计时中断程序
INCSEC0
MOVA,SEC0;
10ms计数值加1
CJNEA,#100,TT
MOVSEC0,#0
INCSEC;
秒加1
MOVA,SEC
CJNEA,#60,TT
INCMIN;
分加1
MOVSEC,#0
MOVA,MIN
INCHOUR;
时加1
MOVMIN,#0
MOVA,HOUR
CJNEA,#24,TT
MOVSEC,#0;
秒、分、时单元清0
MOVHOUR,#0
TT:
POPACC
RETI
在第二行显示数字
SHOW_DIG2:
在LCD的第二行显示数字
MOVB,#10;
设置被除数
DIVAB;
结果A存商数,B存余数
ADDA,#30H;
A为十位数,转换为字符
PUSHB;
B放入堆栈暂存
MOVB,X;
设置LCD显示的位置
CALLLCDP2;
由LCD显示出来
POPB;
MOVA,B;
B为个位数
转换为字符
INCX;
LCD显示位置加1
-------------------------------------------
转换为ASCII码并显示
CONV:
MOVA,HOUR;
加载小时数据
MOVX,#5;
设置位置
CALLSHOW_DIG2;
显示数据
MOVA,#'
:
'
MOVA,MIN;
加载分钟数据
MOVA,SEC;
加载秒数数据
CALLSHOW_DIG2
---------------------------------------------------------
LCDCONTROL
SET_LCD:
对LCD做初始化设置及测试
CALLINIT_LCD;
初始化LCD
MOVR5,#10
CALLDELAY
MOVDPTR,#MMENU;
指针指到显示消息1
显示在第一行
MOVDPTR,#SLF;
指针指到显示消息2
MOVA,#2;
显示在第二行
----------------------------------------------------------
INIT_LCD1:
LCD控制指令初始化
MOVA,#38H;
双列显示,字形5*7点阵
CALLWCOM;
calldelay1
MOVA,#0CH;
开显示,显示光标,光标不闪烁
MOVA,#01H;
清除LCD显示屏
ENABLE:
写指令
CLRRS;
RS=L,RW=L,E=高脉冲
CLRRW;
D0-D7=指令码
SETBEN
ACALLDELAY1
LCD_PRINT:
在LCD的第一行或第二行显示字符
CJNEA,#1,LINE2;
判断是否为第一行
LINE1:
MOVA,#80H;
设置LCD的第一行地址
写入命令
CALLCLR_LINE;
清除该行字符数据
JMPFILL
LINE2:
MOVA,#0C0H;
设置LCD的第二行地址
CALLWCOM
FILL:
填入字符
MOVCA,@A+DPTR;
由消息区取出字符
CJNEA,#0,LC1;
判断是否为结束码
LC1:
CALLWDATA;
写入数据
INCDPTR;
指针加1
JMPFILL;
继续填入字符
CLR_LINE:
清除该行LCD的字符
MOVR0,#16
CL1:
'
CALLWDATA
DJNZR0,CL1
DE:
MOVR7,#250;
延时500微秒
DJNZR7,$
EN1:
CLRRW
SETBEN;
短脉冲产生启用信号
CALLDE
------------------------------------------------------
INIT_LCD:
8位I/O控制LCD接口初始化
MOVP1,#38H;
callenable
CALLINIT_LCD1
WCOM:
以8位控制方式将命令写至LCD
MOVP1,A;
WDATA:
以8位控制方式将数据写至LCD
SETBRS;
设置写入数据
CALLEN1
第二行显示字符
LCDP2:
在LCD的第二行显示字符
设置显示地址
ADDA,#0C0H;
设置LCD的第二行地址
POPACC;
由堆栈取出A
DELAY:
延时10MS
MOVR6,#50
D1:
MOVR7,#100
DJNZR6,D1
DJNZR5,DELAY
DELAY1:
延时5MS
MOVR6,#25
D2:
DJNZR6,D2
BZ:
蜂鸣器
MOVR6,#100
B1:
CALLDEX
CPLBEEP
DJNZR6,B1
DEX:
MOVR7,#180
DE1:
NOP
DJNZR7,DE1
-------------------------------------------------
MMENU:
SECOND-CLOCK0"
0
slf:
MADJ:
BEGINCOUNT"
MADJ1:
PAUSTCOUNT"
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 1602 LCD 显示 秒表 汇编 汇总