Em đang viết code cho LCD ở chế độ 4 bit , nhưng em không thể ép con trỏ về đầu dòng 2 được, dù em đã khai báo chế độ 4 bit .Các anh chị giúp em với
Thông báo
Collapse
No announcement yet.
Chế độ 4 bit của LCD
Collapse
X
-
4 bit LCD
Bạn có thể đưa code lên cho mọi người check thử? Đây là code của mình để bạn tham khảo nhé
Code:;In this whole 4-bit tutorial LCD is connected to ;my controller in following way... ;D4 - P3.0 ;D5 - P3.1 ;D6 - P3.2 ;D7 - P3.3 ;EN - P3.7 ;RS - P3.5 ;RW gnd lcd_port equ P3 ;LCD connected to Port3 en equ P3.7 ;Enable connected to P3.7 rs equ P3.5 ;Register select to P3.5 lcd_reset: ;LCD reset sequence mov lcd_port, #0FFH mov delay,#20 ;20mS delay acall delayms mov lcd_port, #83H ;Data = 30H, EN = 1, First Init mov lcd_port, #03H ;Data = 30H, EN = 0 mov delay,#15 ;Delay 15mS acall delayms mov lcd_port, #83H ;Second Init, Data = 30H, EN = 1 mov lcd_port, #03H ;Data = 30H, EN = 0 mov delay,#5 ;Delay 5mS acall delayms mov lcd_port, #83H ;Third Init mov lcd_port, #03H mov delay,#5 ;Delay 5mS acall delayms mov lcd_port, #82H ;Select Data width (20H for 4bit) mov lcd_port, #02H ;Data = 20H, EN = 0 mov delay,#5 ;Delay 5mS acall delayms ret lcd_init: acall lcd_reset ;Call LCD Reset sequence mov a,#28H ;4-bit, 2 line, 5x7 dots acall lcd_cmd ;Call LCD command mov a,#0CH ;Display ON cursor OFF acall lcd_cmd ;Call LCD command mov a,#06H ;Set entry mode (Auto increment) acall lcd_cmd ;Call LCD command mov a,#80H ;Bring cursor to line 1 acall lcd_cmd ;Call LCD command ret lcd_cmd: ;LCD command Routine mov temp,a ;Save a copy of command to temp swap a ;Swap to use higher nibble anl a,#0FH ;Mask the first four bits add a,#80H ;Enable = 1, RS = 0 mov lcd_port,a ;Move it to lcd port anl a,#0FH ;Enable = 0, RS = 0 mov lcd_port,a ;Move to lcd port mov a,temp ;Reload the command from temp anl a,#0FH ;Mask first four bits add a,#80H ;Enable = 1 mov lcd_port,a ;Move to port anl a,#0FH ;Enable = 0 mov lcd_port,a ;Move to lcd port mov delay,#1 ;delay 1 ms acall delayms ret lcd_dat: ;LCD data Routine mov temp,a ;Keep copy of data in temp swap a ;We need higher nibble anl a,#0FH ;Mask first four bits add a,#0A0H ;Enable = 1, RS = 1 mov lcd_port,a ;Move to lcd port nop clr en ;Enable = 0 mov a,temp ;Reload the data from temp anl a,#0FH ;we need lower nibble now add a,#0A0H ;Enable = 1, RS = 1 mov lcd_port,a ;Move to lcd port nop clr en ;Enable = 0 mov delay,#1 ;Delay 1mS acall delayms ret
Comment
Bài viết mới nhất
Collapse
-
bởi torasungChào anh em,
Mình đang tìm hiểu và cấu hình một con biến tần Delta model VFD037E43A dùng cho động cơ công suất nhỏ, ứng dụng băng tải và quạt. Trước đây mình chủ yếu làm với vài dòng khác của Delta nhưng chưa dùng nhiều model này, nên muốn...-
Channel: Điện tử công nghiệp
hôm nay, 09:13 -
-
Trả lời cho Vấn đề về tốc độ quaybởi nguyendinhvanSử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
-
Channel: Điện tử truyền hình
14-12-2025, 19:50 -
-
bởi Andrea14Chào mọi người,
Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...-
Channel: Điện tử truyền hình
12-12-2025, 12:42 -
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi bqvietBqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
-
Channel: Thiết bị điện tử cá nhân
06-12-2025, 17:17 -

Comment