搜索
您的当前位置:首页LCD1602液晶显示秒表程序

LCD1602液晶显示秒表程序

来源:智榕旅游


LCD1602液晶显示秒表程序.txt一个人 一盒烟 一台电脑过一天一个人 一瓶酒 一盘蚕豆过一宿。永远扛不住女人的小脾气,女人 永远抵不住男人的花言巧语。

1.LCD1602驱动程序的编程

要想让LCD1602显示出我们需要的内容,就的严格按照LCD1602的工作时序来进行编程。驱动LCD1602显示程序主要有几个子程序组成:

1.1 初始化子程序

;*****************************************************************

;LCD 初始化子程序

;8位数据传送方式,双行显示,字形5*7点阵。

;开显示,不显示光标。

;*****************************************************************

; INIT_LCD:

ACALL DELAY5MS ;延时15MS,等待LCD电源稳定

ACALL DELAY5MS

ACALL DELAY5MS

MOV A,#38H ;双行显示,字形5*7点阵,8位数据转移。

ACALL WCOM_NC ;不检测忙信号

ACALL DELAY5MS

MOV A,#38H ACALL WCOM_NC ACALL DELAY5MS

MOV A,#38H ACALL WCOM_NC ACALL DELAY5MS

MOV A,#38H ACALL WCOM ACALL DELAY5MS

MOV A,#0CH

;双行显示,字形5*7点阵,8位数据转移。

;检测忙信号

;开显示,不显示光标,光标不闪烁。

ACALL WCOM

ACALL DELAY5MS

MOV A,#06H ;移动光标(光标加1)

ACALL WCOM

ACALL DELAY5MS

MOV A,#01H ;清除 LCD 显示屏

ACALL WCOM

ACALL DELAY5MS

RET

完全可以根据自己实际的使用情况来对LCD1602进行初始化操作。

例如:

选择单行显示时,选择下列操作指令。

MOV A,#30H ;单行显示,字形5*7点阵,8位数据转移。

ACALL WCOM ;检测忙信号

LCD控制器的指令有许多,详细内容请参阅在《电子制作》发表的相关文章。

1.2 忙检测子程序

对LCD1602的指令寄存器和数据寄存器进行读写操作时,需要先检查LCD内部的忙碌标记BUSY FLAG(简称BF),通过读取BF(DB7)来加以判断。

;*************************************************************

; 忙检测子程序

;正常读写操作之前必须检测LCD控制器状态。

;BF (P0.7) =1时,忙,不能接收MCU送来的指令和数据。

;BF (P0.7) =0时,闲,能够接收MCU送来的指令和数据。

;读数据时三个控制引脚的逻辑:

;RS=L,RW=H,E=H。

;输出:D0-D7=数据

;*************************************************************

CHECKBUSY:

PUSH ACC

MOV P0,#0FFH CLR LCD_EN

NOP

NOP

SETB LCD_RW

CLR LCD_RS

SETB LCD_EN

BUSYLOOP:

NOP

JB P0.7,BUSYLOOP

;置P0口为输入状态

CLR LCD_EN

POP ACC

RET

1.3 写指令子程序

将控制指令写入LCD的指令寄存器中。

;***********************************************************

;写控制指令子程序

;写控制指令到LCD

;传入参数: ACC(要写入的指令)

;写指令时三个控制引脚的逻辑:

;RS=L,RW=L,E=高脉冲。

;输出:D0-D7=指令码 。

;**********************************************************

WCOM:

ACALL CHECKBUSY ; 忙检测

WCOM_NC:

MOV P0,A CLR LCD_EN

NOP

NOP

CLR LCD_RS

CLR LCD_RW

SETB LCD_EN

ACALL DEL_250

CLR LCD_EN

RET

;写入指令

1.4 写数据子程序

将需要显示的数据写入LCD数据寄存器中。

;**********************************************************

;写数据子程序

;写显示数据到LCD

;传入参数: ACC(要写入的数据)

;写数据时三个控制引脚的逻辑:

;RS=H,RW=L,E=高脉冲。

;输出:D0-D7=数据码 。

;**********************************************************

WDATA:

ACALL CHECKBUSY ; 忙检测

MOV P0,A ;写入数据

CLR LCD_EN

NOP

NOP

SETB LCD_RS

CLR LCD_RW

SETB LCD_EN

ACALL DEL_250

CLR LCD_EN

RET

DEL_250:

MOV R7,#125 DJNZ R7,$

RET

;延时250微秒

2.计时程序的编程

;*******************************************

;定时器0计时中断服务子程序

;使用定时器0,方式1计时。

;10ms中断一次

;*******************************************

T0_INT:

PUSH ACC

MOV TL0,#TLOW ;送定时初值

MOV TH0,#THIGH

INC SEC0 ;10MS 计数值加1

MOV A,SEC0

CJNE A,#100,TT

MOV SEC0,#0

INC SEC ;秒加1

MOV A,SEC

CJNE A,#60,TT

INC MIN MOV SEC,#0

MOV A,MIN

CJNE A,#60,TT

INC HOUR MOV MIN,#0

MOV A,HOUR

CJNE A,#24,TT

MOV SEC0,#0

;分加1

;时加1

MOV SEC,#0 ;10毫秒、秒、分、时单元清零

MOV MIN,#0

MOV HOUR,#0

TT: POP RETI

ACC

因篇幅问题不能全部显示,请点此查看更多更全内容

Top