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 Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80À, sản phẩm họ thiết kế ra, họ yêu cầu mình chứng minh là sau chỉnh sửa thì 1 là gỡ jump cắm lại không hư mạch, 2 là gỡ jump thì 220Vdc vẫn dùng được led áp thấp 20V mà không hư led như mình báo, nên họ hiểu rõ mà....
-
Channel: Điện tử công suất
hôm nay, 06:08 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Tôi biết và tôi biết.
Sẽ bắt đầu với cái Sồn La, rồi mấy mạch nguồn vớ vỉn.... Rồi sẽ đèn led...
Cuộc đời là những chuyến xe, nên sẽ có:
Xe đạp điện, xe máy điện, xe ô tô điện, xe cấp cứu điện, xe tang điện.
Rồi xem.-
Channel: Điện tử công suất
hôm nay, 01:38 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Vấn đề là thu ánh sáng rồi phát ra ánh sáng cơ. Hồi mẫu giáo cô bảo đừng làm, lão không nhớ à?
Tốt nhất im mồm....-
Channel: Điện tử công suất
hôm nay, 01:26 -
-
Trả lời cho Tiếng Anh cho người Việtbởi bqvietBài học kiểu trực tuyến dù là loại đơn giản bậc nhất cũng vẫn cần chú tâm. Chỉ bật tai nghe lên thì không có loại nào thấm nổi đâu. Cách hay hơn, dễ hơn là kiếm phim tiếng Anh nào đó xem, ban đầu bật phụ đề tiếng Việt, nghe và...
-
Channel: Tâm tình dân kỹ thuật
14-02-2025, 16:15 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nguyendinhvanỞ đtvn này mới biết đến 2 loại mạch
1 step down
2 step up
Bây giờ anh lưu vong làm thuê bên nước lạ còn làm ra cái mach vừa up vùa dow luôn.
Tính chất là:
1 Đầu vào bằn ra cho nối thẳng
2 Đầu vào cao hơn...-
Channel: Điện tử công suất
14-02-2025, 00:51 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nguyendinhvanHa ha !
Thay đổi cách nghĩ thì sẽ nghĩ ra.
.
.
.
Một thứ cần kiểm soát dòng + nhiệt + công suất tiêu tán. Nhưng lại dùng tư duy ổn áp. Làm sao mà giải quyết được.
Nó là mạch ổn dòng.
Vì thế các anh nước lạ không thèm quan tâm là phải....-
Channel: Điện tử công suất
14-02-2025, 00:42 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi dinhthuong80Vì cứ phải chỉnh sửa cho mỗi dải điện áp, quên chỉnh thì hư chíp phải bảo hành nên em thấy bất tiện, mới cần cái mạch 1 dải áp cao dùng cho tất cả loại đèn đó bác!...
-
Channel: Điện tử công suất
13-02-2025, 17:02 -
-
Trả lời cho Tiếng Anh cho người Việtbởi hankhungdtMình thỉnh thoảng cũng làm việc với người nước ngoài nói tiếng Anh thì toàn ghép nhặt từ, cộng với quơ tay quơ chân để diễn tả, hix. Nỗi khổ là không biết cách để mô tả sự việc. Tôi muốn tìm các bài giảng tiếng anh nào phù hợp...
-
Channel: Tâm tình dân kỹ thuật
13-02-2025, 08:43 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi ti500Chúc mừng bác đã chỉnh sửa thành công, nhưng theo em thì video hơi rối nếu bác muốn gửi cho bên supplier xem.
Nếu là em thì em chỉ cần nối dây để hiển thị liên tục điện áp ở ngõ ra là 220Vdc trước khi gắn LED, kế đến là cắm...-
Channel: Điện tử công suất
13-02-2025, 07:39 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi tuyennhanTrước khi có đủ thực lực thì chỉ làm vì mình thôi đừng nghĩ đến chuyện khác cái mạch toàn dãi tiện sử dụng nhưng tỷ lệ hư hỏng phải bảo hành cũng cao hơn ,lợi bất cập hại .
-
Channel: Điện tử công suất
13-02-2025, 07:22 -
Comment