89C51单片机控制的1602液晶显示时间汇编程序.docx

上传人:小飞机 文档编号:3151099 上传时间:2023-03-11 格式:DOCX 页数:13 大小:38.39KB
返回 下载 相关 举报
89C51单片机控制的1602液晶显示时间汇编程序.docx_第1页
第1页 / 共13页
89C51单片机控制的1602液晶显示时间汇编程序.docx_第2页
第2页 / 共13页
89C51单片机控制的1602液晶显示时间汇编程序.docx_第3页
第3页 / 共13页
89C51单片机控制的1602液晶显示时间汇编程序.docx_第4页
第4页 / 共13页
89C51单片机控制的1602液晶显示时间汇编程序.docx_第5页
第5页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《89C51单片机控制的1602液晶显示时间汇编程序.docx》由会员分享,可在线阅读,更多相关《89C51单片机控制的1602液晶显示时间汇编程序.docx(13页珍藏版)》请在三一办公上搜索。

1、89C51单片机控制的1602液晶显示时间汇编程序;*;功能:; 51单片机控制的1602液晶显示时间汇编程序;*RS BIT P2.5 ;RS为寄存器选择RW BIT P2.6 ;RW为读写信号线E BIT P2.7 ;E端为使能端SHI EQU 30HFEN EQU 31HMIAO EQU 32HCOUNT EQU 33HORG 0000HLJMP STARTORG 000BHLJMP T0DLORG 0030HSTART: LCALL SMGBXSLCALL CHUSHIHUALCALL XIESHUJU;*;1602初始化 ;*CHUSHIHUA:MOV P0,#01H ;清屏LCAL

2、L WR_CODE ;调用写命令子程序MOV P0,#02H ;显示回车,数据指针清零LCALL WR_CODEMOV P0,#38H ;16*2,5*7点阵,8位数据接口LCALL WR_CODEMOV P0,#0CH ;开显示,不显示光标,光标不闪烁LCALL WR_CODEMOV P0,#06H ;光标右移,整屏不移动LCALL WR_CODE;*;定时器T0初始化;*MOV SHI,#11 ;液晶显示的初始时间MOV FEN,#59MOV MIAO,#50MOV TMOD,#11HMOV TH0,#(65536-50000)/256 ;定时50msMOV TL0,#(65536-500

3、00)%256SETB TR0SETB EASETB ET0RET;*;中断子程序;*T0DL:PUSH A ;入栈保护MOV TH0,#(65536-50000)/256 ;重新赋初值MOV TL0,#(65536-50000)%256INC COUNTMOV A,COUNTCJNE A,#20,NEXT ;定时1秒MOV COUNT,#00HINC MIAOMOV A,MIAOCJNE A,#60,NEXTMOV MIAO,#00H ;等于60秒INC FENMOV A,FENCJNE A,#60,NEXTMOV FEN,#00H ;等于60分INC SHIMOV A,SHICJNE A,

4、#24,NEXTMOV SHI,#00H ;等于24小时NEXT: POP ARETI;*;写显示数据;*XIESHUJU:;*;写冒号子程序;*MOV P0,#88H ;冒号在1602中显示的地址LCALL WR_CODEMOV P0,#3AH ;冒号? LCALL WR_DATAMOV P0,#8BH ;冒号在1602中显示的地址LCALL WR_CODEMOV P0,#3AH ;冒号? LCALL WR_DATA;*;写秒显示子程序;*MOV A,MIAOMOV B,#10DIV AB ;十位在A,个位在BMOV P0,#8CH ;秒显示的位置LCALL WR_CODEMOV DPTR,

5、#TABMOVC A,A+DPTRMOV P0,ALCALL WR_DATAMOV A,BMOVC A,A+DPTRMOV P0,ALCALL WR_DATA;*;写分显示子程序;*MOV A,FENMOV B,#10DIV AB ;十位在A,个位在BMOV P0,#89H ;分显示的位置LCALL WR_CODEMOV DPTR,#TABMOVC A,A+DPTRMOV P0,ALCALL WR_DATAMOV A,BMOVC A,A+DPTRMOV P0,ALCALL WR_DATA;*;写时显示子程序;*MOV A,SHIMOV B,#10DIV AB ;十位在A,个位在BMOV P0,

6、#86H ;时显示的位置LCALL WR_CODEMOV DPTR,#TABMOVC A,A+DPTRMOV P0,ALCALL WR_DATAMOV A,BMOVC A,A+DPTRMOV P0,ALCALL WR_DATA;*;写上下午显示子程序;*MOV A,SHICJNE A,#12,SS1 ;12,Cy=0SS1: JNC PMAM: MOV P0,#83H ;上午在1602中显示的位置LCALL WR_CODEMOV P0,#41H ;写ALCALL WR_DATAMOV P0,#4DH ;写MLCALL WR_DATALJMP DIERHANGPM: MOV P0,#83H ;下

7、午在1602中显示的位置LCALL WR_CODEMOV P0,#50H ;写PLCALL WR_DATAMOV P0,#4DH ;写MLCALL WR_DATA;*;键盘扫描子程序;*JPSM:XX0: MOV A,#00HMOV SBUF,A ;使164所有列线为0 ;XX1: JNB TI,XX1 ;检测串行输出是否完毕 ;CLR TIXX2: JNB P2.2,YSXD ;消抖 ;JB P2.3,XX2YSXD:MOV 7DH,#01HLCALL DELAY20MSJNB P2.2,PK1 ;不是抖动 ;JB P2.3,XX2PK1: MOV R7,#08H ;检测8列 ;MOV R6

8、,#0FEH ;164最左列置0,其它列置1 ;MOV R3,#00H ;R3为列号寄存器 ;MOV A,R6PK3: MOV SBUF,AJNB TI,$CLR TIJNB P2.2,PKONE ;第一行有键按下JB P2.3,NEXTMOV R4,#08H ;第二行行键首号08H送R4 ;LJMP PK2PKONE: MOV R4,#00H ;第一行行首键号00H送R4 ;PK2:MOV A,R4ADD A,R3 ;计算得键码MOV P1,AMOV 30H,ARETNEXT: MOV A,R6RL AMOV R6,AINC R3 ;列号加1DJNZ R7,PK3 ;8列键是否都检测完毕LJ

9、MP XX0 ;8列键扫描完毕,开始下一个键盘扫描周期 ;*DIERHANG:MOV P0,#0C1H ;第二行数据指针初始化LCALL WR_CODE ;调用写命令子程序MOV A,#00HMOV R5,AMOV R4,#15XX2: MOV DPTR,#TAB1MOVC A,A+DPTRMOV P0,ALCALL WR_DATAINC R5MOV A,R5DJNZ R4,XX2LJMP XIESHUJU;*;数码管上电不显示子程序;*SMGBXS:MOV 7CH,#6 ;数码管上电不显示S1: MOV A,#0FFHMOV SBUF,AJNB TI,$CLR TICLR P2.4NOPSE

10、TB P2.4DJNZ 7CH,S1RET;*;写命令子程序;*WR_CODE:CLR RS ;选择命令CLR RW ;选择写LCALL DELAY5MSSETB E ;使能,下降沿触发LCALL DELAY5MSCLR ERET;*;写数据子程序;*WR_DATA:SETB RS ;选择数据CLR RW ;选择写LCALL DELAY5MSSETB E ;使能,下降沿触发LCALL DELAY5MSCLR ERETDELAY5MS: ;延时MOV 7FH,#10D2: MOV 7EH,#248D1: DJNZ 7EH,D1DJNZ 7FH,D2RETTAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H ;09液晶显示TAB1:DB H,A,P,P,Y, ,E,V,E,R,Y,D,A,Y,!END

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号