Em có biết đổi đoạn code của một tác giả trên mạng viết bằng asm, sau đó em mô phỏng proteus chạy rất ok! Nhưng khi em làm board thiệt thì lại ko chạy! LCD chỉ hiển thị dòng 1 đen thui thế thôi! Em biết là mình chưa khởi tạo được LCD đó! Nhưng em không hiểu em sai chỗ nào. Mặc dù em đã kiểm tra và đo từng đường mạch và không có lỗi gì cả! Em xin gửi code và mạch cho mấy bác nghiên cưú giúp!
Thông báo
Collapse
No announcement yet.
LCD của em tại sao không chạy???
Collapse
X
-
đây là code khởi tạo & gửi kí tự đến LCD
LCD 4 bit , sd 4 chân cuối D4-D7 , VDK philip . ASM tui ko rành lám , code này là thằng bạn viết , còn tui thích sài C hơn .Code:;============SETUP_LCD====================; LCD_SETUP: MOV A,#2CH CALL WRITE_CONTROL MOV A,#2CH CALL WRITE_CONTROL MOV A,#06H CALL WRITE_CONTROL MOV A,#0FH CALL WRITE_CONTROL MOV A,#2 CALL DELAYMS CALL WRITE_CONTROL CALL DELAYMS MOV A,#0CH ;NO POINT CALL WRITE_CONTROL MOV A,#0CH ;NO POINT CALL WRITE_CONTROL CALL DELAYMS RET ;============CHO PHEP VIET LENH===========; WRITE_CONTROL: MOV REGA,A CLR ACC.3 CLR E CALL CLOCK SETB E ;CALL CLOCK NOP NOP NOP ;CALL DELAYUS CLR E MOV A,REGA SWAP A CLR ACC.3 SETB E CALL CLOCK NOP NOP NOP ;CALL DELAYUS NOP CLR E RET ;==========CHO PHEP VIET DATA=============; WRITE_DATA: MOV REGA,A SETB ACC.3 CLR E CALL CLOCK SETB E ;CALL CLOCK ;CALL DELAYUS NOP NOP NOP CLR E MOV A,REGA SWAP A SETB ACC.3 SETB E CALL CLOCK NOP NOP NOP ;CALL DELAYUS NOP NOP CLR E RET ;===========GUI CHUOI KI TU==============; SEND_STRING: PUSH ACC MOV REG_P,#0 LOOP_ST: CLR A MOVC A,@A+DPTR JZ EXIT_S CALL WRITE_DATA INC REG_P INC DPTR MOV A,REG_P CJNE A,#8,LOOP_ST MOV A,#0C0H CALL WRITE_CONTROL JMP LOOP_ST EXIT_S: POP ACC RET ;=============XOA_MAN_HINH==============; CLR_DISLAY: MOV A,#01H CALL WRITE_CONTROL CALL DELAYMS RET
code CCS viết cho PIC , cũng sd 4 chân cuối của LCD
Code:void LCD_Init ( void ) { delay_ms(200); // thoi gian de LCD khoi dong output_low(RW); // RW = 0 output_low(RS); // che do gui lenh send_to_LCD( 0x00 ); output_high ( E ); output_low ( E ); delay_ms ( 10 ); send_to_LCD( 0x03 ); /* init with specific nibbles to start 4-bit mode */ output_high ( E ); output_low ( E ); delay_ms ( 3 ); output_high ( E ); output_low ( E ); delay_ms ( 3 ); output_high ( E ); output_low ( E ); delay_ms ( 3 ); send_to_LCD( 0x02 ); /* set 4-bit interface */ output_high ( E ); output_low ( E ); delay_ms ( 3 ); LCD_PutCmd ( 0x2C ); /* function set (all lines, 5x7 characters) */ LCD_PutCmd ( 0x0C); /* display ON, cursor off, no blink */ LCD_PutCmd ( 0x06 ); /* entry mode set, increment & scroll left */ LCD_PutCmd ( 0x01 ); /* clear display */ } void LCD_SetPosition ( unsigned int data ) { send_to_LCD( swap ( data ) | 0x08 ); output_high ( E ); output_low ( E ); delay_ms ( 3 ); send_to_LCD( swap ( data ) ); output_high ( E ); output_low ( E ); delay_ms ( 3 ); } void LCD_PutChar ( unsigned int data ) { output_high( RS ); //RS = 1 output_low ( RW ); //RW = 0 send_to_LCD( swap ( data ) ); // gui 4 bit cao output_high ( E ); output_low ( E ); delay_ms ( 3 ); send_to_LCD( swap ( data ) ); //gui 4 bit thap output_high ( E ); output_low ( E ); delay_ms ( 3 ); } void LCD_PutCmd ( unsigned int data ) { output_low(RS); // RS = 0 output_low(RW); // RW = 0 send_to_LCD( swap(data) ); // gui 4 bit cao output_high (E); output_low (E); delay_ms (3); send_to_LCD( swap(data) ); // gui 4 bit thap output_high (E); output_low (E); delay_ms ( 3 ); } void send_to_LCD( unsigned int data ) { output_bit ( LCD_D4, data & 0x01 ); output_bit ( LCD_D5, data & 0x02 ); output_bit ( LCD_D6, data & 0x04 ); output_bit ( LCD_D7, data & 0x08 ); }
Comment
-
bạn vẫn còn chưa hiển thị đc ah ! lúc mới khởi tạo LCd , bạn cần khởi tạo đầy đủ các giá trị & theo thứ tự
sau lần đó , bnj ko cần khởi tạo rườm rà như thế nữa , chỉ cần 0x38 và 0x01 là đủCode:0x38 : 2 dòng & ma trận 5x7 0x08 : tắt con trỏ , tắt hiển thị 0x0C : tắt con trỏ , bật hiển thị 0x01 : xóa màn hình 0x02 : đưa con trỏ về đầ dòng
Comment
-
Sở dĩ lập trình LCD nó chuối bởi vì không có datasheet chi tiết về timing.
- Kiểm tra phần cứng xem đã ngon chưa (xem các SCH trên mạng vô khối) xem có đứt, chập không.
- Xem các code của đồng đạo xem thứ tự các lệnh khởi tạo đúng chưa
- "Mò" timing của các lệnh <-- cái này thì chuối. Nhưng thử một vài giá trị delay khác mà xem, lơ mơ nó lại chạy đấy
Comment
-
Sở dĩ không có timing là vì mua hàng trôi nổi không biết nó dùng con điều khiển là con gì. Nếu mua hàng ngon thì biết ngay nó dùng con gì điều khiển. Tra datasheet con đó là có đủ hết từ timing cho tới khởi tạo rồi đến tập lệnh.Nguyên văn bởi phamthaihoa Xem bài viếtSở dĩ lập trình LCD nó chuối bởi vì không có datasheet chi tiết về timing.
- Kiểm tra phần cứng xem đã ngon chưa (xem các SCH trên mạng vô khối) xem có đứt, chập không.
- Xem các code của đồng đạo xem thứ tự các lệnh khởi tạo đúng chưa
- "Mò" timing của các lệnh <-- cái này thì chuối. Nhưng thử một vài giá trị delay khác mà xem, lơ mơ nó lại chạy đấy
AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
Xem thêm tại Online Store ---> Click here
Mob: 0982.083.106
Comment
-
Thui cứ nghỉ Tết vui vẻ đi. Ra Tết tôi sẽ làm một tut với loại màn LCD ký tự.AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
Xem thêm tại Online Store ---> Click here
Mob: 0982.083.106
Comment
-
chạy rồi đây bạn!!!!!!
mình chỉ sửa lại đoạn mã của bạn 1 tí thôi.
đó là khi bạn đặt tên cho các pin thì dùng lệnh "bit" chứ ko phải là "equ"Attached Files
Comment
-
Giúp mình cái LCD, nó không chạy!
@VNarmy: Sặc, làm sao nghỉ tết vui vẻ được chứ, đây là đề án mà mình làm nộp sau tết đấy, nghỉ tết xong là đi đứt luôn!
Bạn làm tut về LCD thì sao? Mình đã đọc LCD tát nước rồi! Vấn đề không phải là viết chương trình LCD thế nào, cái này dư sức mình biết mà! Dù sao cũng Thanks bạn! Mình sẽ post hình mạch của mình bạn coi dùm mình sai chỗ nào nhé!
@Tranpic: Đổi EQU thành BIT thì sao? Chả ảnh hưởng gì đến điện đâu bạn ơi, mình đã nói với code của mình mô phỏng proteus thì chạy rồi, chỉ làm mạch thật là chưa chạy thôi! Hãy giúp mình thêm nhé, cái đổi này không phải đâu!
Đây là hình mạch của mình, các bạn coi xem mình sai chỗ nào nhé!Attached Files
Comment
-
choy ah ! có cái mạch nhỏ xíu mà bạn làm to tướng như thế , lại chia ra nhìu module . mạch để ko như thế xí lắm ! bạn xịt cho nó lớp sơn , che phần màu tấm nhựa đó lại đi ...chưa pro lám ! thầy chấm cả phần đẹp nữa đó . Đồ án môn lập trình hê thống chứ gì
Comment
-
Mình chia làm nhiều module là có ý đồ mà! Đẹp hay không đẹp tính sau đi, quan trọng là chạy hay không chạy kìa! Mình kiểm tra rất kỹ rồi mà vẫn không hiểu nguyên nhân vì sao không chạy! Mình pó tay rồi đó, ai đã làm rồi thì làm ơn chỉ dùm mình cái!
Comment
Bài viết mới nhất
Collapse
-
bởi theidiotcatAMD Ryzen 9 9950X3D không chỉ là một bộ vi xử lý đơn thuần; nó là lời khẳng định về sức mạnh của kiến trúc Zen 5 kết hợp cùng công nghệ 3D V-Cache đột phá. Trong bối cảnh thị trường linh kiện PC cạnh tranh khốc liệt, đây được xem...
-
Channel: Đánh giá sản phẩm DTVN
hôm nay, 09:21 -
-
bởi theidiotcatBộ đôi Ryzen 9 9950X3D2 và Radeon RX 9070 XT 16GB là sự kết hợp phần cứng cao cấp nhất của AMD hiện nay. Đây không chỉ là một dàn máy tính để giải trí thông thường, mà là công cụ làm việc mạnh mẽ dành cho những ai có nhu cầu xử lý cường...
-
Channel: Đánh giá sản phẩm DTVN
hôm nay, 09:09 -
-
bởi theidiotcatKhi ráp một bộ máy tính cấu hình cao, việc cân đối ngân sách cho từng linh kiện là rất quan trọng. Sự kết hợp giữa vi xử lý AMD Ryzen thế hệ mới có công nghệ 3D V-Cache và card đồ họa Radeon RX 9070 XT đang là lựa chọn rất đáng tiền....
-
Channel: Đánh giá sản phẩm DTVN
11-06-2026, 10:43 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Giới thiệu bản nhạc đệm mới nhộn nhịp tươi vui, nghe là muốn... xuất gia đi tu liền!!!!😁...
-
Channel: Tâm tình dân kỹ thuật
11-06-2026, 09:51 -
-
Trả lời cho Máy đo khuôn mẫubởi vi van phamQuá dễ, Mua cái máy xq quét tòan thân, lấy bàn và khung di chuyển. Tháo đầu xquang ra bán ve chai, mua cái máy siêu âm gắn vào vị trí đầu đèn. Setup máy là chạy chính xác, còn file Setup thì chưa nghĩ ra....
-
Channel: Đo lường và điều khiển dùng máy tính
07-06-2026, 08:49 -
-
Trả lời cho Máy Phun sương tạo ầm Trung Quốc.bởi nguyendinhvanMạch tạo sương là tự dao động.
Mach 555 là đóng mở chu kỳ tần số thấp.
IC 555 giá rẻ, chỉ chạy lên tần số vài trăm ki lô hẹc thôi. Thăng cao hơn là méo dạng rồi tịt.
Mach sương thì dao động tần số tầm 2 mê ga hẹc cơ !...-
Channel: Tâm tình dân kỹ thuật
07-06-2026, 00:09 -
-
bởi nguyendinhvan
Cái máy đo này mắc tiền quá !
Anh em dtvn có giải pháp nào tự chế được không ?...-
Channel: Đo lường và điều khiển dùng máy tính
07-06-2026, 00:00 -
-
bởi nguyendinhvanOi giời.
Thơi buổi PLC rồi, cậu còn hỏi mấy thứ cổ lỗ sĩ này nữa.-
Channel: Tâm tình dân kỹ thuật
06-06-2026, 22:59 -
-
bởi nguyendinhvanChuyện này cũ rồi.
Họ trả lương cho CN, sau đó lại bán hàng thu tiền về. Họ còn cấp các dịch vụ như chỗ ăn ở, quán cafe , giải trí, phương tiện giao thông. Mục đích là thu tối đa số tiền đã chi trả.
Hàng hóa sx ra, chuyển...-
Channel: Tìm mua
06-06-2026, 22:56 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phambao nhiêu năm quên bẳng đi, là mình còn có 1 chút xíu nghệ thuật bài bản, đã dạy cho con cháu chơi đàn, dù bố mẹ và chúng không xem là quan trọng. Hôm qua ngày bế mạc lớp lá, bỗng dưng thằng cháu ngoại thấy con bé được sơ giới thiệu...
-
Channel: Tâm tình dân kỹ thuật
06-06-2026, 21:58 -

Comment