Ⅰ lcd1602a要讓它顯示 的匯編代碼
我這有LCD1602顯示資料,需要的話可以發給你參考......
發了,希望有幫助~~~~~~
Ⅱ LCD1602 4匯流排匯編程序問題
好久以前搞過記不清了,記得有一個信號是用來表示當前輸入的是高4位或者低4位的
Ⅲ 求一個1602液晶顯示最簡單的匯編程序(在屏上顯示一個數字就行了,過程完整)
;* 1、LCD第一行顯示: www.saxmcu.com
;* LCD第二行顯示: SP-28A--DIY
;* 2、先將兩行字元寫入DDRAM中,然後從右至左逐字移出顯示。
;* 3、在指定位置停留1.6秒後,閃爍2次,清屏。
;* 4、反復循環上述顯示方式。
;*******************************************************************
LCD_RS EQU P2.0
LCD_RW EQU P2.1
LCD_EN EQU P2.2
;*******************************************************************
ORG 0000H
AJMP MAIN
ORG 0030H
;*******************************************************************
MAIN:
MOV SP,#60H
ACALL LCD_INIT ;LCD初始化
MAIN1:
ACALL CLR_LCD ;清LCD
MOV A,#90H ;在第一行第17列的位置
ACALL LCD_CMD
MOV DPTR,#LINE1 ;第一行字元串的起始地址送入DPTR。
ACALL WRITE
MOV A,#0D0H ;在第二行第17列的位置
ACALL LCD_CMD
MOV DPTR,#LINE2 ;第二行字元串的起始地址送入DPTR。
ACALL WRITE
MOV R3,#10H ;向左移動16格
LOOPA:
MOV A,#18H ;字元同時左移一格
ACALL LCD_CMD
MOV R5,#03H ;延時375MS
ACALL DELAY125MS
DJNZ R3,LOOPA
ACALL DELAY4 ;延時1.6s
ACALL DELAY4
MOV R4,#02H ;設置閃爍次數
ACALL FLASH ;開始閃爍
AJMP MAIN1
LINE1:
DB " www.saxmcu.com ",00H
LINE2:
DB " SP-28A--DIY ",00H
;***************************************************************
;LCD初始化設定子程序
;***************************************************************
LCD_INIT:
ACALL DELAY5MS ;延時15MS
ACALL DELAY5MS ;等待LCD電源穩定
ACALL DELAY5MS
MOV A,#38H ;16*2顯示,5*7點陣,8位數據
ACALL LCD_CMD_NC ;不進行LCD忙檢測
ACALL DELAY5MS
MOV A,#38H ;16*2顯示,5*7點陣,8位數據
ACALL LCD_CMD_NC ;不進行LCD忙檢測
ACALL DELAY5MS
MOV A,#38H ;16*2顯示,5*7點陣,8位數據
ACALL LCD_CMD_NC ;不進行LCD忙檢測
ACALL DELAY5MS
MOV A,#08H ;顯示關
ACALL LCD_CMD ;進行LCD忙檢測
MOV A,#01H ;清除屏幕
ACALL LCD_CMD ;進行LCD忙檢測
MOV A,#0CH ;顯示開,關游標
ACALL LCD_CMD ;進行LCD忙檢測
RET
;***************************************************************
;清LCD子程序
;***************************************************************
CLR_LCD:
MOV A,#01H ;清除屏幕
ACALL LCD_CMD ;進行LCD忙檢測
RET
;***************************************************************
;寫指令數據到LCD
;RS=L,RW=L,D0-D7=指令碼,E=高脈沖
;***************************************************************
LCD_CMD:
CALL CHECKBUSY
LCD_CMD_NC:
CLR LCD_RS
CLR LCD_RW
MOV P0,A
SETB LCD_EN
NOP
NOP
NOP
NOP
CLR LCD_EN
RET
;***************************************************************
;寫顯示數據到LCD
;RS=H,RW=L,D0-D7=數據,E=高脈沖
;***************************************************************
LCD_WDATA:
ACALL CHECKBUSY
SETB LCD_RS
CLR LCD_RW
MOV P0,A
SETB LCD_EN
NOP
NOP
NOP
NOP
CLR LCD_EN
RET
;***************************************************************
;檢測LCD控制器忙狀態
;讀數據
;RS=L,RW=H,E=H,輸出:D0-D7=數據
;P0.7=1,LCD忙,等待。P0.7=0,LCD閑,可以進行讀寫操作。
;***************************************************************
CHECKBUSY:
PUSH ACC
MOV P0,#0FFH
CLR LCD_RS
SETB LCD_RW
SETB LCD_EN
BUSYLOOP:
NOP
JB P0.7,BUSYLOOP
CLR LCD_EN
POP ACC
RET
;***************************************************************
; 發送字元串子程序
;***************************************************************
WRITE:
PUSH ACC
WRITE1:
CLR A
MOVC A,@A+DPTR
JZ WRITE2
INC DPTR
ACALL LCD_WDATA
JMP WRITE1
WRITE2:
POP ACC
RET
;***************************************************************
;閃爍子程序
;***************************************************************
FLASH:
MOV A,#08H ;關閉顯示
ACALL LCD_CMD
ACALL DELAY4
MOV A,#0CH ;開顯示,關閉游標
ACALL LCD_CMD
ACALL DELAY4
DJNZ R4,FLASH
RET
;***************************************************************
;延時5MS子程序
;LCD初始化使用
;***************************************************************
DELAY5MS:
MOV R6,#10
DL1:
MOV R7,#249
DL2:
DJNZ R7,DL2
DJNZ R6,DL1
RET
;***************************************************************
;延時125MS子程序
;字元串移動時使用
;***************************************************************
DELAY125MS:
DL3:
MOV R6,#250
DL4:
MOV R7,#249
DL5:
DJNZ R7,DL5
DJNZ R6,DL4
DJNZ R5,DL3
RET
;***************************************************************
;延時800MS子程序
;閃爍時使用
;***************************************************************
DELAY4:
MOV R5,#40
DL6:
MOV R6,#100
DL7:
MOV R7,#100
DL8:
DJNZ R7,DL8
DJNZ R6,DL7
DJNZ R5,DL6
RET
;***************************************************************
END
可以吧?
Ⅳ 單片機LCD1602顯示程序(匯編),小弟有很多地方不懂,希望高人能加上注釋,有助於本人學習
單片機LCD1602顯示程序(匯編),小弟有很多地方不懂,希望高人能加上注釋,有助於本人學習
存吼虧拌麗賄挽帶桶載主炎孩幻盒
為你祝福,為你歡笑,因為在今天,我的內心也跟你一樣的歡騰、快樂!祝你們,百年好合!白頭到老!
Ⅳ lcd1602液晶顯示滾動匯編語言具體解釋,請說一下這個程序的整個思路,沒注釋的地方是什麼意思
沒註解的地方是延時程序, MOV P0,#是把要放到LCD的控制IC里的資料由P0埠送出.(包含控制及顯示資料)
Ⅵ 單片機LCD1602液晶顯示的匯編程序
也沒去理解AC,只知道第一行第1點的地址是80H,第二行第1點是C0H。
下面就是你要的程序,僅供參考
RSBITP1.2;這3位是液晶屏的控制信號,連接方式由具體硬體而定
RWBITP1.1
EBITP1.0
ORG00H
AJMPMAIN
ORG30H
MAIN:
movR0,#24
ACALLINITIAL
ACALLDISPLAY;調用液晶顯示子程序
AJMPMAIN
;-------液晶顯示---------------------------------------
DISPLAY:
MOVA,#80H ;第一行第1個點
ACALLWR_CMD
MOVDPTR,#LINE1
ACALLPR_STR
ACALLWR_DATA
DISP1:
MOVA,#1CH ;字元左移命令(註:實物中左移命令字為18H)
ACALLWR_CMD
ACALLD05S
DJNZR0,DISP1
RET
;---液晶屏初始化-------------------------------------------------
INITIAL:
MOVA,#01H
ACALLWR_CMD
MOVA,#38H
ACALLWR_CMD
MOVA,#0CH
ACALLWR_CMD
MOVA,#06H
ACALLWR_CMD
RET
;----寫液晶指令的子程序------------------------------------------
WR_CMD:
MOVP3,A
CLRRS;寫入控制命令
CLRRW
CLRE
ACALLDELAY
SETBE
RET
;----寫液晶數據---------------------------------------------
WR_DATA:
MOVP3,A
SETBRS;寫入數據
CLRRW
CLRE
ACALLDELAY;判斷液晶模塊是否忙?
SETBE
RET
;-----寫行字元---------------------------------------------------------------
PR_STR:
CLR A
MOVCA,@A+DPTR
JZ END_PR
ACALLWR_DATA
INC DPTR
AJMPPR_STR
END_PR:
RET
;----查看液晶忙碌信號---------------------------------------------------------
DELAY:
MOVP3,#0FFH;判斷液晶顯示器是否忙的子程序
CLRRS
SETBRW
CLRE
NOP
SETBE
JBP3.7,DELAY;如果P3.7為高電平表示忙就循環等待
RET
;----0.5S延時(按12MHZ算)-----------------------------------------------------------------
D05S:
MOVR6,#25
MOVR5,#100
MOVR4,#100
DJNZR4,$
DJNZR5,$-4
DJNZR6,$-8
RET
;--------------------------------------------------------------------------------------
LINE1:
DB'ZHUNIYISHENGPINGAN',00H
Ⅶ 51單片機+ADC0809+LCD1602用匯編語言編程
你把這兩個程序合起來改下就差不多咯!時間忙 只能把自己以前學的子程序給你咯
; :1602顯示
LCD_RS EQU P2.0
LCD_RW EQU P2.1
LCD_EN EQU P2.2
LCD_DATA EQU P0
;*******************************************************************
ORG 0000H
AJMP MAIN
ORG 0030H
;*******************************************************************
MAIN:
MOV SP,#60H
ACALL LCD_INIT ;LCD初始化
MAIN1:
ACALL CLR_LCD ;清LCD
MOV A,#90H ;在第一行第17列的位置
ACALL LCD_CMD
MOV DPTR,#LINE1 ;第一行字元串的起始地址送入DPTR。
ACALL WRITE
MOV A,#0D0H ;在第二行第17列的位置
ACALL LCD_CMD
MOV DPTR,#LINE2 ;第二行字元串的起始地址送入DPTR。
ACALL WRITE
MOV R3,#10H ;向左移動16格
LOOPA:
MOV A,#18H ;字元同時左移一格
ACALL LCD_CMD
MOV R5,#03H ;延時375MS
ACALL DELAY125MS
DJNZ R3,LOOPA
ACALL DELAY4 ;延時1.6s
ACALL DELAY4
MOV R4,#02H ;設置閃爍次數
ACALL FLASH ;開始閃爍
AJMP MAIN1
LINE1:
DB "YALONG:",00H
LINE2:
DB "welcome you!",00H
;***************************************************************
;LCD初始化設定子程序
;***************************************************************
LCD_INIT:
ACALL DELAY5MS ;延時15MS
ACALL DELAY5MS ;等待LCD電源穩定
ACALL DELAY5MS
MOV A,#38H ;16*2顯示,5*7點陣,8位數據
ACALL LCD_CMD_NC ;不進行LCD忙檢測
ACALL DELAY5MS
MOV A,#38H ;16*2顯示,5*7點陣,8位數據
ACALL LCD_CMD_NC ;不進行LCD忙檢測
ACALL DELAY5MS
MOV A,#38H ;16*2顯示,5*7點陣,8位數據
ACALL LCD_CMD_NC ;不進行LCD忙檢測
ACALL DELAY5MS
MOV A,#08H ;顯示關
ACALL LCD_CMD ;進行LCD忙檢測
MOV A,#01H ;清除屏幕
ACALL LCD_CMD ;進行LCD忙檢測
MOV A,#0CH ;顯示開,關游標
ACALL LCD_CMD ;進行LCD忙檢測
RET
;***************************************************************
;清LCD子程序
;***************************************************************
CLR_LCD:
MOV A,#01H ;清除屏幕
ACALL LCD_CMD ;進行LCD忙檢測
RET
;***************************************************************
;寫指令數據到LCD
;RS=L,RW=L,D0-D7=指令碼,E=高脈沖
;***************************************************************
LCD_CMD:
CALL CHECKBUSY
LCD_CMD_NC:
CLR LCD_RS
CLR LCD_RW
MOV LCD_DATA,A
SETB LCD_EN
NOP
NOP
NOP
NOP
CLR LCD_EN
RET
;***************************************************************
;寫顯示數據到LCD
;RS=H,RW=L,D0-D7=數據,E=高脈沖
;***************************************************************
LCD_WDATA:
ACALL CHECKBUSY
SETB LCD_RS
CLR LCD_RW
MOV LCD_DATA,A
SETB LCD_EN
NOP
NOP
NOP
NOP
CLR LCD_EN
RET
;***************************************************************
;檢測LCD控制器忙狀態
;讀數據
;RS=L,RW=H,E=H,輸出:D0-D7=數據
;LCD_DATA.7=1,LCD忙,等待。LCD_DATA.7=0,LCD閑,可以進行讀寫操作。
;***************************************************************
CHECKBUSY:
PUSH ACC
MOV LCD_DATA,#0FFH
CLR LCD_RS
SETB LCD_RW
SETB LCD_EN
BUSYLOOP:
NOP
JB LCD_DATA.7,BUSYLOOP
CLR LCD_EN
POP ACC
RET
;***************************************************************
; 發送字元串子程序
;***************************************************************
WRITE:
PUSH ACC
WRITE1:
CLR A
MOVC A,@A+DPTR
JZ WRITE2
INC DPTR
ACALL LCD_WDATA
JMP WRITE1
WRITE2:
POP ACC
RET
;***************************************************************
;閃爍子程序
;***************************************************************
FLASH:
MOV A,#08H ;關閉顯示
ACALL LCD_CMD
ACALL DELAY4
MOV A,#0CH ;開顯示,關閉游標
ACALL LCD_CMD
ACALL DELAY4
DJNZ R4,FLASH
RET
;***************************************************************
;延時5MS子程序
;LCD初始化使用
;***************************************************************
DELAY5MS:
MOV R6,#10
DL1:
MOV R7,#249
DL2:
DJNZ R7,DL2
DJNZ R6,DL1
RET
;***************************************************************
;延時125MS子程序
;字元串移動時使用
;***************************************************************
DELAY125MS:
DL3:
MOV R6,#250
DL4:
MOV R7,#249
DL5:
DJNZ R7,DL5
DJNZ R6,DL4
DJNZ R5,DL3
RET
;***************************************************************
;延時800MS子程序
;閃爍時使用
;***************************************************************
DELAY4:
MOV R5,#40
DL6:
MOV R6,#100
DL7:
MOV R7,#100
DL8:
DJNZ R7,DL8
DJNZ R6,DL7
DJNZ R5,DL6
RET
;***************************************************************
ENd
; ADC0809子程序
; 引腳定義
ADC_EOC EQU P2.0
ADC_CS EQU P2.1
ADC_RD EQU P2.2
ADC_WR EQU P2.3
ADC_DATA EQU P0
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
SETB ADC_EOC
SETB ADC_WR
SETB ADC_RD
SETB ADC_CS
CLR ADC_CS ;START and ALE is H
CLR ADC_WR
NOP
NOP
NOP
SETB ADC_WR
SETB ADC_CS
NOP
JB ADC_EOC,$ ; JNB ADC_EOC,$
CLR ADC_CS
CLR ADC_RD
MOV ADC_DATA,#0FFH
MOV A,ADC_DATA
SETB ADC_RD
SETB ADC_CS
CJNE A,#00H,BELL
INC A
BELL:
MOV R5,A
BELL1: ACALL DELAY
DJNZ R5,BELL1
CPL P2.7
AJMP MAIN
DELAY:
MOV R7,#02H
D1:
MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,D1
RET
END
Ⅷ 我想玩玩1602LCD顯示 哪位高手有顯示匯編程序 借小弟分享一下 謝了
匯編沒有,C的要不要。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="A";//其實這里可以寫最多16個字元,比如AAAAAA....
sbit lcden=P3^4; //lcd 控制使能端
sbit lcdrs=P3^5; //lcd寫命令、數據控制端,一般情況我們不需要讀LCD,即通常接地rw=0;
//sbit la=P2^6;
//sbit wela=P2^7;
uchar num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_cmd(uchar cmd)
{
lcdrs=0; //選擇寫命令模式
P0=cmd; //將要寫的命令寫到數據匯流排上
delay(5); //稍延時以等數據穩定
lcden=1; //給使能端一個高脈沖,初始化時為低電平
delay(5); //稍延時
lcden=0; //完成高脈沖
}
void write_date(uchar date)
{
lcdrs=1; //寫數據模式
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
// wela=0;
// la=0;
lcden=0;
write_cmd(0x38);//設置16x2顯示,5x7點陣,8位數據介面
write_cmd(0x0c);//設置開顯示,不顯示游標
write_cmd(0x06);//寫一個字元後指針自動加一
write_cmd(0x01);//顯示清零,數據指針清零
}
void main()
{
init();
write_cmd(0x80); //定位指針到第一行第一個字
for(num=0;num<1;num++)
{
write_date(table[num]);
delay(5);
}
while(1);
}
Ⅸ 單片機 LCD1602匯編 數字鍾 程序 求解釋。
不錯,不過不能用
Ⅹ 用LCD1602液晶顯示匯編程序編寫一個程序顯示課程名稱「」單片機介面技術」及本組同學名字
1605不能顯示中文,數字字母可以轉碼顯示