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
-
bởi nhathung1101Muốn đặt gì thì cũng phải có thông tin cơ bản. Việc nhỏ thế này mà phải dấu giếm thì người lớn không thèm làm đâu.
Cho bạn 3 ngày, không là sẽ xóa.-
Channel: Đặt hàng
Hôm qua, 22:02 -
-
Trả lời cho Hỏi cách điều chế xungbởi nhathung1101Schmit Trigger là chuẩn với điều kiện rise > 0,8V.
Bí thì dùng vi với tích gì đó, miễn đừng nói phân kẻo chó ở đây lại sủa nhặng.-
Channel: Kỹ thuật điện tử tương tự
Hôm qua, 21:57 -
-
bởi trungautMình cần đặt hàng thiết kế chế tạo mạch nghịch lưu 3 pha để cài đặt các thuật toán điều khiển động cơ FOC, DTC, ... Xin liên hệ trungaut@gmail.com để bàn chi tiết. Xin cảm ơn diễn dàn đăng tin!
-
Channel: Đặt hàng
Hôm qua, 14:27 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi tuyennhanCách ly dây điện vào , bộ nguồn và đèn khỏi khung xe thì có rò thật cũng không lo bị giật .
-
Channel: Điện tử dành cho người mới bắt đầu
21-12-2024, 08:56 -
-
Trả lời cho Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
Comment