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
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ự
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
-
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 đấyAVR đã 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
-
Trả lời cho Tiếng Anh cho người Việtbởi tuyennhanCái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .-
Channel: Tâm tình dân kỹ thuật
hôm nay, 07:44 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamCám ơn những lời chúc tốt đẹp của em.
Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.
Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....-
Channel: Tâm tình dân kỹ thuật
hôm nay, 02:00 -
-
Trả lời cho Tiếng Anh cho người Việtbởi nhathung1101Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.
Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.
Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 22:18 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.
Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:51 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.
Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:39 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.
Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:28 -
-
Trả lời cho Tiếng Anh cho người Việtbởi bqvietĐúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
-
Channel: Tâm tình dân kỹ thuật
21-02-2025, 20:26 -
-
Trả lời cho Tiếng Anh cho người Việtbởi mèomướpDạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
-
Channel: Tâm tình dân kỹ thuật
21-02-2025, 12:32 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamNhững lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).
Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...-
Channel: Tâm tình dân kỹ thuật
20-02-2025, 21:31 -
-
Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )bởi bqvietThiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.20-02-2025, 17:22
Comment