LCD16051单片机汇编程序
1602 汇编程序, 51 单片机汇编程序,仅需修改引脚定义即可。晶振大小 12M ,程 序测试完 全正确。内部包含写数据、写命令(包括读忙和不读忙 、初始化等子函 数。调用时先给 LCD_DAT赋值,给出需要写入的数据或命令,然后调用。 ; 端口引脚定义区 LCD_RS BIT P2.4 ;1602 数据命令选择端口 LCD_RW BIT P2.5 ;1602 读写选择端口 LCD_EN BIT P2.6 ;1602 使能端口 LCD_DATA EQU P0 ;1602 数据端口 ; 变量声明区 ALL_FLAG EQU 20H ; 标志位 LCD_FLAG EQU ALL_FLAG.7 ;1602读忙标志位 LCD_DAT EQU 30H ;1602 数据命令字 DELAYED EQU 31H ; 延时字 /***************************************** 1602 读命令函数,高位存至 LCD_LAG中 *****************************************/ LCD_R_DATA: MOV LCD_DATA,#0FFH LCD_BUSY: CLR LCD_RS SETB L CD_RW NOP SETB L CD_EN NOP MOV Acc,LCD_DATA MOV C,Acc.7 MOV LCD_FLAG,C CLR LCD_EN NOP JB LCD_FLAG,LCD_BUSY RET /***************************************** 1602 写数据函数,数据存在 LCD_DAT *****************************************/ LCD_W_DATA: LCALL LCD_R_DATA SETB L CD_RS CLR LCD_RW NOP MOV LCD_DATA,LCD_DAT SETB L CD_EN NOP CLR LCD_EN RET /***************************************** 1602 写命令函数,命令存在 LCD_DAT,检测忙信号 *****************************************/ LCD_W_: LCALL LCD_R_DATA CLR LCD_RS CLR LCD_RW NOP MOV LCD_DATA,LCD_DAT SETB L CD_EN NOP CLR LCD_EN RET /***************************************** 1602 写命令函数,命令存在 LCD_DAT,不检测忙信号 *****************************************/ LCD_: CLR LCD_RS CLR LCD_RW NOP MOV LCD_DATA,LCD_DAT SETB L CD_EN NOP CLR LCD_EN RET /***************************************** 1602 初始化函数 *****************************************/ LCD_INIT: MOV DELAYED,#30 LCALL DELAY_MS MOV LCD_DAT,#38H LCALL LCD_ MOV DELAYED,#10 LCALL DELAY_MS MOV LCD_DAT,#38H LCALL LCD_ MOV DELAYED,#10 LCALL DELAY_MS MOV LCD_DAT,#38H LCALL LCD_ MOV DELAYED,#10 LCALL DELAY_MS MOV LCD_DAT,#038H LCALL LCD_W_ MOV LCD_DAT,#08H LCALL LCD_W_ MOV LCD_DAT,#01H LCALL LCD_W_ MOV LCD_DAT,#06H LCALL LCD_W_ MOV LCD_DAT,#0CH LCALL LCD_W_ RET /***************************************** 延时函数,延时时间为 DELAYED*0.5毫秒 0~100 毫秒的延时 *****************************************/ DELAY_MS: MOV R7,DELAYED D1: MOV R6,#0F8H D2: DJNZ R6,D2 DJNZ R7,D1 RET /***************************************** 延时函数,延时时间为 DELAYED*2微秒 0~500 微秒的延时 *****************************************/ DELAY_US: MOV R7,A DU1: DJNZ R7,DU1 RET