《LCD160251单片机汇编程序.docx》由会员分享,可在线阅读,更多相关《LCD160251单片机汇编程序.docx(3页珍藏版)》请在三一办公上搜索。
1、LCD160251单片机汇编程序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读忙标志位
2、LCD_DAT EQU 30H ;1602数据命令字 DELAYED EQU 31H ;延时字 /* 1602读命令函数,高位存至LCD_LAG中 */ LCD_R_DATA: MOV LCD_DATA,#0FFH LCD_BUSY: CLR LCD_RS SETB LCD_RW NOP SETB LCD_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_DAT
3、A SETB LCD_RS CLR LCD_RW NOP MOV LCD_DATA,LCD_DAT SETB LCD_EN NOP CLR LCD_EN RET /* 1602写命令函数,命令存在LCD_DAT,检测忙信号 */ LCD_W_CMD: LCALL LCD_R_DATA CLR LCD_RS CLR LCD_RW NOP MOV LCD_DATA,LCD_DAT SETB LCD_EN NOP CLR LCD_EN RET /* 1602写命令函数,命令存在LCD_DAT,不检测忙信号 */ LCD_CMD: CLR LCD_RS CLR LCD_RW NOP MOV LCD_D
4、ATA,LCD_DAT SETB LCD_EN NOP CLR LCD_EN RET /* 1602初始化函数 */ LCD_INIT: MOV DELAYED,#30 LCALL DELAY_MS MOV LCD_DAT,#38H LCALL LCD_CMD MOV DELAYED,#10 LCALL DELAY_MS MOV LCD_DAT,#38H LCALL LCD_CMD MOV DELAYED,#10 LCALL DELAY_MS MOV LCD_DAT,#38H LCALL LCD_CMD MOV DELAYED,#10 LCALL DELAY_MS MOV LCD_DAT,#0
5、38H LCALL LCD_W_CMD MOV LCD_DAT,#08H LCALL LCD_W_CMD MOV LCD_DAT,#01H LCALL LCD_W_CMD MOV LCD_DAT,#06H LCALL LCD_W_CMD MOV LCD_DAT,#0CH LCALL LCD_W_CMD RET /* 延时函数,延时时间为DELAYED*0.5毫秒 0100毫秒的延时 */ DELAY_MS: MOV R7,DELAYED D1: MOV R6,#0F8H D2: DJNZ R6,D2 DJNZ R7,D1 RET /* 延时函数,延时时间为DELAYED*2微秒 0500微秒的延时 */ DELAY_US: MOV R7,A DU1: DJNZ R7,DU1 RET