em là người mới học 8051, bác nào giúp em chuong trình hiển thị chữ "My Love" lên LCD 16x2 với, bác giúp em cả cái mạch mô phỏng proteus luôn nhé, thank các bác trc nhé
Thông báo
Collapse
No announcement yet.
giúp em về LCD với
Collapse
X
-
tham khảo đoạn code này đi, xem có giúp được gì cho bạn
;chuong trinh nay da o.k
RS EQU P3.0
RW EQU P3.1
E EQU P3.2
ORG 0000H
LCALL KHOI_TAOLCD
MOV 30H,#'0' ;dung o nho chua so dem
MOV 31H,#'0'
MOV 32H,#'0'
MOV 33H,#'0'
MOV 34H,#'0'
MOV 35H,#'0'
MOV 36H,#'0'
MOV 37H,#'0'
MAIN:
LCALL DAU_DONG
LCALL PAGE1
LCALL DELAY
JB P1.0,THOAT
LCALL PAGE2
THOAT: JB P1.1,EXIT
LCALL PAGE3
EXIT: SJMP MAIN
KHOI_TAOLCD:
MOV A,#06H ;dich con tro sang phai
LCALL GHI_LENH
MOV A,#38H ;khai bao 2 line
LCALL GHI_LENH
MOV A,#0CH ;bat hien thi ,tat con tro
LCALL GHI_LENH
MOV A,#1H ;xoa man hinh hien thi
LCALL GHI_LENH
RET
PAGE1:
MOV R0,#0
TT: MOV A,R0
MOV DPTR,#MYDATA
movc a,@a+dptr
LCALL HIEN_THIDULIEU
INC R0
CJNE R0,#16,TT
MOV R0,#0
LCALL XDONG
DONG2: MOV A,R0
MOV DPTR,#MYDATA5
movc a,@a+dptr
LCALL HIEN_THIDULIEU
INC R0
CJNE R0,#16,DONG2
RET
PAGE2:
LCALL XOA_LCD
MOV R0,#0
TT1: MOV A,R0
MOV DPTR,#MYDATA1
movc a,@a+dptr
LCALL HIEN_THIDULIEU
INC R0
CJNE R0,#16,TT1
LCALL KEU_PASS
lcall vitri_lcd1
lcall vitri_lcd2
lcall vitri_lcd3
lcall vitri_lcd4
MOV A,33H
LCALL HIEN_THIDULIEU
MOV A,32H
LCALL HIEN_THIDULIEU
MOV A,31H
LCALL HIEN_THIDULIEU
MOV A,30H
LCALL HIEN_THIDULIEU
;KHI NHAN SONG
INC 30H ;THI MOI TANG
MOV A,30H
CJNE A,#58, TT1
MOV 30H,#'0'
INC 31H
MOV A,31H
CJNE A,#58, TT1
MOV 31H,#'0'
INC 32H
MOV A,32H
CJNE A,#58, TT1
MOV 32H,#'0'
INC 33H
MOV A,33H
CJNE A,#58, TT1
MOV 33H,#'0'
KT1: ret
RET
PAGE3:
LCALL XOA_LCD
MOV R0,#0
TT2: MOV A,R0
MOV DPTR,#MYDATA2
movc a,@a+dptr
LCALL HIEN_THIDULIEU
INC R0
CJNE R0,#16,TT2
LCALL KEU_FAIL
LCALL DELAY
LCALL KEU_FAIL
lcall delay
LCALL KEU_FAIL
lcall delay
RET
XDONG:
MOV P0,#90H
CLR RS ;=0,LENH
CLR RW ;=0,GHI
SETB E
CLR E
ACALL READY
RET
DAU_DONG:
MOV P0,#80H
CLR RS ;=0,LENH
CLR RW ;=0,GHI
SETB E
CLR E
ACALL READY
RET
XOA_LCD:
MOV P0,#1H
CLR RS ;=0,LENH
CLR RW ;=0,GHI
SETB E
CLR E
ACALL READY
RET
GHI_LENH:
MOV P0,A
CLR RS ;=0,LENH
CLR RW ;=0,GHI
SETB E
CLR E
ACALL READY
RET
HIEN_THIDULIEU:
MOV P0,A
SETB RS ;=1,DU LIEU
CLR RW
SETB E
CLR E
ACALL READY
RET
KEU_PASS:
MOV R4,17
Q: CLR P3.7
LCALL DELAY1
SETB P3.7
LCALL DELAY1
DJNZ R4,Q
RET
KEU_FAIL:
MOV R4,15
H: CLR P3.7
LCALL DELAY2
SETB P3.7
LCALL DELAY2
DJNZ R4,H
RET
READY: SETB P0.7 ;P0.7: input
CLR RS ;RS=0: thanh ghi le^.nh
SETB RW ;R/W=1: ddo.c
BACK:
CLR E ;E=0 -> ta.o ca.nh le^n
SETB E ;E=1
JB P0.7,BACK ;cho co ban =0
RET
VITRI_LCD1:
MOV A,#8FH ;o thu 16 cua line 1 lcd
LCALL GHI_LENH
LCALL DELAY
RET
VITRI_LCD2:
MOV A,#8EH
LCALL GHI_LENH
LCALL DELAY
RET
VITRI_LCD3:
MOV A,#8DH
LCALL GHI_LENH
LCALL DELAY
RET
VITRI_LCD4:
MOV A,#8CH
LCALL GHI_LENH
LCALL DELAY
RET
VITRI_LCD5:
MOV A,#0CFH
LCALL GHI_LENH
LCALL DELAY
RET
VITRI_LCD6:
MOV A,#0CEH
LCALL GHI_LENH
LCALL DELAY
RET
VITRI_LCD7:
MOV A,#0CDH
LCALL GHI_LENH
LCALL DELAY
RET
VITRI_LCD8:
MOV A,#0CCH
LCALL GHI_LENH
LCALL DELAY
RET
DELAY:
MOV R6,#255
DEL1: MOV R7,#255
DEL2: DJNZ R7,DEL2
DJNZ R6,DEL1
RET
DELAY1: MOV R6,#5
DEL3: MOV R7,#92
DEL4: DJNZ R7,DEL4
DJNZ R6,DEL3
RET
DELAY2: MOV R6,#0FH
DEL5: MOV R7,#0EH
DEL6: DJNZ R7,DEL6
DJNZ R6,DEL5
RET
ORG 200H
MYDATA:
db " empty test "
ORG 250H
MYDATA5:
DB " READY ! "
ORG 300H
MYDATA1:
DB"***** PASS *****"
ORG 350H
MYDATA2:
DB "***** FAIL *****"
END
-
xem thử đi đây là mình chỉ conver lại thôi
Code:// Ð.nh ngh.a các chân c.a LCD1602 // Trong ví d. m.u s. d.ng 8 bit ð. ði.u khi.n LCD. #include <REGX51.H> #include <stdio.h> #define rs P3_5 #define rw P3_6 #define enable P3_7 #define lcd_data P1 unsigned char const LCD_INIT_STRING[4] = {1,0x38,6}; unsigned char lcd_read_byte() { unsigned char dat; lcd_data = 0xFF; rw = 1; rw = 1; enable = 1; enable = 1; dat = lcd_data; enable = 0; return( dat); } void delay_us(unsigned char n) { unsigned char i; for(i=0;i<n;i++); } void delay_ms(unsigned int n) { unsigned int i; for(i=0;i<n;i++) delay_us(255); } void lcd_send_data( unsigned char n ) { lcd_data = n; lcd_data = n; delay_us(10); enable = 1; delay_us(10); enable = 0; delay_us(10); } void lcd_send_byte( unsigned char address, unsigned char n ) { rs = 0; while ( lcd_read_byte()&0x80) ; rs = address; delay_us(10); rw = 0; delay_us(10); enable = 0; lcd_send_data(n); } void lcd_init() { char i; rs = 0; rw = 0; enable = 0; delay_ms(15); for(i=0;i<3;++i) lcd_send_byte(0,LCD_INIT_STRING[i]); } void lcd_gotoxy( unsigned char x, unsigned char y) { unsigned char address; switch(y) { case 1 : address=0x80;break; case 2 : address=0xC0;break; } address+=x-1; lcd_send_byte(0,address); } void lcd_putc( char c) { lcd_send_byte(1,c); } void lcd_put_str( const char *msg) { while(*msg) lcd_putc(*msg++); } main() { lcd_init(); lcd_gotoxy(1,1); lcd_put_str ("LCD 1602 DEMO"); lcd_gotoxy(1,2); lcd_put_str ("Chuc ban thanh cong"); while(1); }
Comment
-
làm gì viết dài ghê thế ! giao tiếp LCD 8bit là đơn giản nhất , nhưng mất đến 11 chân VDK. Sau đó đến 4 bit (chỉ mất 1 port), tiếp đến là chỉ dùng 3 chân VDK vẫn giao tiếp đc với LCD (wa kon 74HC164)
U mới học thì code giao tiếp 8 bit nè
Code:#include<AT89S53.h> sbit RW = 0x94; // RW = P1.4 sbit RS = 0x95; // RS = P1.5 sbit E = 0x96; // E = P1.6 // data = P2 void delay_ms(unsigned int ms) { unsigned int i,j; for (i = 0;i<ms;i++ ) {for(j=0;j<120;j++){} } } void LCD_PutChar() { RW = 0 ; RS = 1 ; E = 1; E = 0 ; delay_ms(1);} void LCD_PutCmd() { RW = 0 ; RS = 0 ; E = 1; E = 0 ; delay_ms(1);} void int_LCD() { delay_ms(100); P2= 0x38 ; LCD_PutCmd() ; P2= 0x0C ; LCD_PutCmd() ; P2= 0x01 ; LCD_PutCmd() ; P2= 0x06 ; LCD_PutCmd() ; } main() { P0 = 0xFF ; P1 = 0xFF ; P2 = 0xFF ; int_LCD(); P2 = 0x80 ; LCD_PutCmd() ; // cho hiện dong Ready! ở dòng 1 cột 1 P2 = 'R' ; LCD_PutChar() ; P2 = 'e' ; LCD_PutChar() ; P2 = 'a' ; LCD_PutChar() ; P2 = 'd' ; LCD_PutChar() ; P2 = 'y' ; LCD_PutChar() ; P2 = '!' ; LCD_PutChar() ; while(1); }
Comment
-
-
hehe,chắc bác này làm để tặng người yêu đâyNguyên văn bởi han_nang_008 Xem bài viếtem là người mới học 8051, bác nào giúp em chuong trình hiển thị chữ "My Love" lên LCD 16x2 với, bác giúp em cả cái mạch mô phỏng proteus luôn nhé, thank các bác trc nhé
Comment
-
trong mục sample có lcd_demo đó vào đó xem
rồi nạp file bạn lập trình vào
ok nhé !
lcd có 2 chế độ hoạt động ( 8 bit và 4 bit)tùy thuộc vào code bạn khởi tạo lcd
đọc thêm datasheet sẽ giúp ích nhiều
chúc bạn thành công!0945061338(vocam.h@gmail.com,lehanhdtk3@gmail.com)
||
PROGRAMING(C,ASM),HARDWARE,LMD,RTC,GPRS,GPS....ALL OF VDK
Comment
Bài viết mới nhất
Collapse
-
bởi theidiotcatViệc lựa chọn một chiếc laptop gaming phù hợp với nhu cầu, ngân sách chưa bao giờ là dễ dàng. Và điều đó càng khó hơn trong năm 2026 khi mà mức giá liên tục tăng.
Nếu bạn chưa biết nên chọn một chiếc laptop gaming như thế nào...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:29 -
-
bởi theidiotcatVới mức ngân sách 20 - 30 triệu đồng trong năm 2026, các bạn sinh viên và dân văn phòng có thể tìm thấy nhiều lựa chọn cao cấp, mạnh mẽ, pin “trâu”, đặc biệt là các mẫu laptop AI hỗ trợ cho học tập và làm việc.
Trong phân...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:25 -
-
bởi theidiotcatDưới đây là một số mẫu laptop nổi bật trong phân khúc dưới 20 triệu giúp các bạn văn phòng, sinh viên và đặc biệt là tân sinh viên có thể dễ dàng lựa chọn được mẫu laptop phù hợp với nhu cầu và ngân sách của mình.
Thị...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:07 -
-
bởi theidiotcatViệc chọn mua một bộ máy tính phục vụ cho các nhu cầu làm việc văn phòng và sử dụng cơ bản hàng ngày đang trở nên dễ dàng và tiết kiệm hơn bao giờ hết. Thay vì phải đau đầu trích ngân sách để mua cả vi xử lý lẫn card đồ họa rời...
-
Channel: Đánh giá sản phẩm DTVN
25-06-2026, 11:23 -
-
bởi theidiotcatViệc nâng cấp từ một dàn máy tính cũ lên cấu hình mới luôn khiến nhiều người đắn đo về mức chi phí bỏ ra. Nếu bạn đang tìm kiếm một sự lột xác hoàn toàn về hiệu năng mà vẫn cân đối được dòng tiền, combo giữa vi xử lý Ryzen...
-
Channel: Đánh giá sản phẩm DTVN
25-06-2026, 11:06 -
-
Trả lời cho Lực dọc trục làm hỏng ổ bi.bởi nguyendinhvanVí dụ một trang như thế này
...-
Channel: Điện tử công suất
24-06-2026, 19:57 -
-
Trả lời cho Lực dọc trục làm hỏng ổ bi.bởi nguyendinhvanỔ bi có loại chịu lực dọc, loại chịu lực ngang.
Bạn kiếm một quyển Data cũng một hãng vòng bi nào đó. Họ sẽ cấp cho bạn đủ thông số kỹ thuật.
Khi lựa chọn được mã sản phẩm, bạn chỉ việc tìm mua mã đó, hoặc đặt hàng....-
Channel: Điện tử công suất
24-06-2026, 19:52 -
-
bởi GargiChào mọi người, tôi đang gặp một vấn đề kỹ thuật và muốn được nghe ý kiến của mọi người.
Tôi đã lắp một đĩa xích vào trục đầu ra của hộp số hành tinh bánh răng xoắn dùng cho truyền động xích. Sau vài tháng hoạt động, ổ bi đầu ra bị hỏng.
Bản thân...-
Channel: Điện tử công suất
24-06-2026, 13:22 -
-
bởi vi van phamSau hàng chục năm, không biết có ai còn nghĩ gì về tôi? Riêng tôi, nhớ nhiều về dientuviet nam. net. Ngày ấy tìm 1 người bạn đam mê về điện từ khó như trúng số độc đăc. Tôi đã trúng số độc đắc khi được mời về dientuvietnam.net...
-
Channel: Tâm tình dân kỹ thuật
23-06-2026, 22:43 -

...
Comment