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
-
-
Nguyê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
-
Trả lời cho Năm mới dientuvietnam.netbởi mèomướpDạ năm mới cháu xin kính chúc ông, bà, cô, dì, chú, bác, anh, chị, em, các bạn, các cháu... trong diễn đàn sức khỏe dồi dào, gặp nhìu may mắn và thành công...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 05:42 -
-
Trả lời cho Năm mới dientuvietnam.netbởi nhathung1101Chúc cả nhà ăn no mặc ấm, quần lúc có lúc không.
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 00:02 -
-
Trả lời cho Năm mới dientuvietnam.netbởi vandong1111Năm mới 2025 cháu chúc các chú, các bác mạnh khỏe, vui vẻ, gặp nhiều may mắn.
-
Channel: Tâm tình dân kỹ thuật
29-01-2025, 20:59 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi bqvietNói một cách xây dựng thì kiểu đồng hồ kiêm kẹp dòng NJTY3266 mà bạn Mèo đề cập là đúng nhu cầu người hỏi rồi. Một số cửa hàng bán trên 200ng, vài sàn thương mại điện tử bán dưới - thế là đúng nhu cầu về giá. Nếu khéo săn...
-
Channel: Điện tử dành cho người mới bắt đầu
27-01-2025, 20:02 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi nhathung1101Đa năng còn chưa dùng hết, nếu không biết cách dùng.
200k thì hơi khó mua, nhưng 50k chắc là có. Cứ bảo bán cho tôi cái đồng hồ hỏng.-
Channel: Điện tử dành cho người mới bắt đầu
26-01-2025, 23:21 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi nhathung1101Lão Đinh Vặn học giải phương trình hồi đi trẻ mà. Mẫu giáo học lập trình AI rồi. Lớp lão ấy gần lớp em nên em biết....
-
Channel: Điện tử công suất
26-01-2025, 23:11 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Vậy chú đã hỏi hãng SIEMEN chưa? Tại sao cái PLC S7-200 cổ lỗ mà họ vẫn thiết kế riêng cho thị trường TQ với chữ SMART? Thậm chí phần mềm riêng để đọc file ngu.smart?
Vấn đề không còn là công nghệ "cốt lõi" nữa, mà là giá thành quyết định. Ham rẻ là trả giá mà....-
Channel: Điện tử công suất
26-01-2025, 23:01 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi vi van phamĐồng ý với Bqv.
50 năm làm nghề, tôi đã chứng kiến 3 lần máy x quang mới nhập từ nước ngoài về bị lỗi.
- Lần thứ 1 máy xq của Pháp được ks Pháp lằp đặt bị lỗi 1 con didode, đưa cho ks Pháp con didode khác cùng mã số, ông...-
Channel: Điện tử công suất
26-01-2025, 08:09 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi mèomướpDạ chú dinh... muốn sửa lỗi cho hãng thì chú cứ gửi những hình ảnh, video cho họ đi ạ, chú có thể tìm thông tin của những lãnh đạo bên ấy để gửi thì sẽ hiệu quả hơn ạ. Về tổng quan thì họ sẽ ko phản hồi rõ ràng đâu ạ, vì nhận...
-
Channel: Điện tử công suất
26-01-2025, 06:19 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi bqvietCuối năm bàn thêm chuyện to hơn chút, đấy là 2 vụ rơi đám 737 đời mới và trục trặc ở cả tá chiếc khác. Ngay cả những thứ tưởng như cao siêu sang xịn thật thì vẫn có thể gặp trường hợp oái oăm như thường. Từ hồi đó bqv đã thấy khó hiểu làm sao lại đẻ ra đám MCAS quái thai đến thế được. Rồi...
-
Channel: Điện tử công suất
24-01-2025, 19:40 -
Comment