標(biāo)題:
[原創(chuàng)]31行代碼搞定LCD1602顯示Proteus仿真程序(C&匯編)基于編址技術(shù)
[打印本頁]
作者:
psuxaog
時(shí)間:
2018-10-10 20:26
標(biāo)題:
[原創(chuàng)]31行代碼搞定LCD1602顯示Proteus仿真程序(C&匯編)基于編址技術(shù)
單片機(jī)LCD1602顯示仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
220817e7exuwgbu0x1kbba.png
(14.25 KB, 下載次數(shù): 77)
下載附件
2018-10-10 20:25 上傳
typedef unsigned int uint;
typedef unsigned char uchar;
uchar xdata LCD_CW _at_ 0xfcfc;
uchar xdata LCD_DW _at_ 0xfdfd;
uchar xdata LCD_CR _at_ 0xfefe;
#define WHILE_BUSY while(LCD_CR & 0x80)
void print(uchar *str,uchar addr)
{
WHILE_BUSY;//不能少。!
LCD_CW = 0x80 | addr;
while(*str!='\0')
{
WHILE_BUSY;
LCD_DW=*str;
str++;
}
}
void main()
{
LCD_CW=0x0c;
WHILE_BUSY;
LCD_CW=0x38;
print("LCD Disp Program",0x00);//0x00~0x0f表示第一行0到15字符
print("Happy New Year! ",0x41);//0x40~0x4f表示第二行0到15字符
while(1);
}
復(fù)制代碼
LCD_CW EQU 0FCFCH
LCD_DW EQU 0FDFDH
LCD_CR EQU 0FEFEH
ORG 0000H
LJMP LCD_INIT
ORG 0030H
LCD_INIT:
MOV SP,#60H
MOV R3,#0CH
CALL LCD_WCMD
MOV R3,#38H
CALL LCD_WCMD
MOV R1,#HELLO
MOV R3, #80H
CALL LCD_WCMD
CALL PRINT
MOV R3, #0C1H
MOV R1,#HELLO
CALL LCD_WCMD
CALL PRINT
LJMP $
PRINT:
PRINT_LOOP:
MOV A,R1
MOVC A,@A+DPTR
MOV R3, A
CALL LCD_WDAT
INC R1
JNZ PRINT_LOOP
RET
LCD_WDAT:
MOV A, 'D'
MOV DPTR,#LCD_DW
MOVX @DPTR,A
CALL WHILE_BUSY
RET
LCD_WCMD:
MOV A, R3
MOV DPTR,#LCD_CW
MOVX @DPTR, A
CALL WHILE_BUSY
RET
WHILE_BUSY:
MOV DPTR,#LCD_CR
MOVX A, @DPTR
MOV 29H,A
JB 29H.7, WHILE_BUSY
RET
HELLO:
DB "HAPPY NEW YEAR! ",0
END
復(fù)制代碼
以上是兩種語言編寫,可選用一種
基于編址技術(shù)的LCD1602顯示程序.rar
(92.93 KB, 下載次數(shù): 14)
2018-10-10 20:25 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1