em đang làm bài tập lớn về 8051, chủ yếu là điều khiển LCD. phần code cũng đã viết xong xuôi rồi. Đem chạy thử trên proteus thấy rất OK. Còn đem thử trên thiết bị thật thì mãi nó ko chạy, màn hình LCD chỉ hiện 1 hàng đen xì ở dòng 2 ( loại 16x2 ). đây là file code.asm của nó, nhờ các cao thủ xem xét xem co' gì ko đúng giùm em ( viết cho at89c51. dùng reads51 dịch) .
Thông báo
Collapse
No announcement yet.
lcd mãi ko chạy. nhờ các cao thủ debug giùm cái code!!!
Collapse
X
-
Hì hì, em không phải là cao thủ nhưng mà con LCD em cũng đã vọc qua rồi, đọc đoạn code bác viết sao em thấy phức tạp quá (cái món Asemblly này mà không gửi kèm thuật toán thì mệt với nó thật), đoạn code em viết đơn giản hơn, bác lấy về xem nha... (bác đừng quá tin vào proteus, dù gì thì nó cũng chỉ là một phần mềm mô phỏng thôi, mà mô phỏng thì sao giống thật được, hồi trước em cũng phát mệt vì nó đó )
PS:À mà lưu ý với bác, nếu hiển thị ký tự 5x10 thì chỉ hiện được 1 hàng thối đó bác.Attached FilesVà con tim đã vui trở lại ....
-
-
Comment
-
đây là đoạn khởi tạo, các bác xem có chỗ nào sai ko:
;================================================= ===
LCD_SETUP:
MOV A,#0CH ;bat hien thi khong nhap nhay con tro
ACALL LENH
MOV A,#06H ;con tro tu dong tang len 1 sau khi hien thi
ACALL LENH
RET
XOA_MH:
MOV A,#01H
ACALL LENH
RET
;khoi tao bo nho dem cho LCD,LCD 16x2 chi hien thi duoc 16 ky tu
BND0 EQU 070H
BND1 EQU 071H
BND2 EQU 072H
BND3 EQU 073H
BND4 EQU 074H
BND5 EQU 075H
BND6 EQU 076H
BND7 EQU 077H
BND8 EQU 078H
BND9 EQU 079H
BND10 EQU 07AH
BND11 EQU 07BH
BND12 EQU 07CH
BND13 EQU 07DH
BND14 EQU 07EH
BND15 EQU 07FH
;================================================= =====
WRITE_BND:
MOV R0,#070H ;nap con tro tai dia chi dau tien cua BND
AGAIN:
MOV A,@R0 ;copy noi dung trong dia chi do R0 chi ra vao P3
ACALL DL ;de hien nthi len LCD
INC R0 ;tang con tro len 1 de chi vao dia chi tep theotrong BND
CJNE R0,#080H,AGAIN;hien thi het 16 ki tu trong BND
RET
;================================================= =====
CLEAR_BND: ;xoa BND de dung cho chu tiep theo
MOV R0,#070H
CLEAR:
MOV @R0,#' ' ;xoa noi dung BND
INC R0
CJNE R0,#080H,CLEAR;xoa cho den khi het BND
RET
;================================================= ===
LENH:
ACALL READY ;LCD da san sang chua? kiem tra co ban truoc khi gui lenh
MOV P2,A
CLR P0.5 ;RS=0 gui lenh
CLR P0.6 ;R/W=0 ghi len lcd
SETB P0.7 ;gui xung H_to_L den chan E cho phep LCD
CLR P0.7
RET
DL:
ACALL READY ;LCD da san sang chua?kiem tra co ban truoc khi gui data
MOV P2,A
SETB P0.5 ;RS=1 gui du lieu
CLR P0.6 ;R/W=0 ghi len lcd
SETB P0.7
CLR P0.7 ;gui xung H_to_L den chan E
RET
;================================================= =====
READY: SETB P2.7 ;P2.7 lam dau vao
CLR P0.5 ;RS=0 truy cap thanh ghi lenh
SETB P0.6 ;R/W=1 doc thanh ghi lenh
;doc thanh ghi lenh va kiem tra co ban
BACK:
CLR P0.7
SETB P0.7
JB P2.7,BACK ;doi den khi co ban =0
RET
;================================================= =====Last edited by orcian; 04-05-2008, 20:41.
Comment
-
Nguyên văn bởi orcian Xem bài viếtah , em nghe nói là LCD mới tinh thì khi khởi tạo lần đầu phải ghi 3 lần giá trị #30H , vậy phải thêm lệnh này vào chỗ nào?? (LCD của em là mới tậu )
PS:"Hình như" chương trình của bác không có vấn đề gì ( vì kiến thức em có hạn thôi), ah mà bác mắc mạch thật theo sơ đồ trên hả, nếu vậy em xin góp ý thế này nha:cái chân 31 ấy bác tương thẳng vào nguồn 5V chứ không phải qua trở đâuVà con tim đã vui trở lại ....
Comment
-
Nguyên văn bởi duc thang Xem bài viếtlcd không chạy thường do phần khởi tạo không trúng cách để lcd có thể hiểu được.
Bạn tham khảo phần sample trong Batronix xem, làm đúng theo là lcd chạy, còn hiển thì thế nào do ta thêm thắt. Chúc thành công.Và con tim đã vui trở lại ....
Comment
-
Theo tài liệu đúng là phải gửi 3 lần byte "Function set", #30h ie: set 8 bit, 1 dòng, font 5x7, #38h ie: set 8 bit, 2 dong, font 5x7, #28h ie: set 4 bit, 2 dòng, font 5x7. Gửi bạn tài liệu về LCD, tham khảo trang 12 có code cho LCD.
Bạn nên làm theo mẫu cho chạy 2 dòng, sau đó tùy ý sửa đổi sẽ dể dàng hơn. Chúc thành công.Attached Files
Comment
-
Nguyên văn bởi orcian Xem bài viếtđây là đoạn khởi tạo, các bác xem có chỗ nào sai ko:
ah , em nghe nói là LCD mới tinh thì khi khởi tạo lần đầu phải ghi 3 lần giá trị #30H , vậy phải thêm lệnh này vào chỗ nào?? (LCD của em là mới tậu )
Comment
-
Nguyên văn bởi duc thang Xem bài viếtTheo tài liệu đúng là phải gửi 3 lần byte "Function set", #30h ie: set 8 bit, 1 dòng, font 5x7, #38h ie: set 8 bit, 2 dong, font 5x7, #28h ie: set 4 bit, 2 dòng, font 5x7. Gửi bạn tài liệu về LCD, tham khảo trang 12 có code cho LCD.
Bạn nên làm theo mẫu cho chạy 2 dòng, sau đó tùy ý sửa đổi sẽ dể dàng hơn. Chúc thành công.
PS:À mà quên, cũng có thể là do con LCD của em ( và của bác orcian nữa ) là loại 16x2 còn của các bác là loại 20x4 chăng, không bít có phải vậy không nữaVà con tim đã vui trở lại ....
Comment
-
cái cỡ chữ em đã quy định trong hàm main trước khi xuất ký tự ra màn hình rồi ( vì có lúc hiện 2 dòng. có lúc hiện 1 dòng chữ chạy ) nên em nghĩ ko cần phải khai báo trong phần khởi tạo nữa. Đây là file asm và file hex em đã sửa lại theo góp ý, nhưng khi chạy vẫn. .. thế .hay là lỗi ở phần cứng , có bác nào có thời gian + linh kiện thi giúp em test cái file.hex được ko
thanks các bác nhiều.Attached Files
Comment
-
Nguyên văn bởi orcian Xem bài viếtcái cỡ chữ em đã quy định trong hàm main trước khi xuất ký tự ra màn hình rồi ( vì có lúc hiện 2 dòng. có lúc hiện 1 dòng chữ chạy ) nên em nghĩ ko cần phải khai báo trong phần khởi tạo nữa. Đây là file asm và file hex em đã sửa lại theo góp ý, nhưng khi chạy vẫn. .. thế .hay là lỗi ở phần cứng , có bác nào có thời gian + linh kiện thi giúp em test cái file.hex được ko
thanks các bác nhiều.
Vào đây xem này:
Khởi động LCD thế nào có nói ở đây
Code mẫu ở đây
Cứ làm đúng các bước hướng dẫn là được thôi. Delay có thể dài hơn, nhưng ko được ngắn hơn.
Thấy đoạn đầu bác có ghi chú các chân điều khiển nối vào port 0 -> Bác kiểm tra xem có điện trở kéo lên chưa đấy?Phen này ông quyết buôn băng dính,
Vừa bán vừa hm... hm... cũng đắt hàng.
Comment
Bài viết mới nhất
Collapse
-
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 -
-
bởi namlangnhoXin chào mọi người. E có sử dụng 1 cục nguồn tổ ong 12v-30A chạy đèn led xe trà sữa. Mà thợ thi công bị rò điện nên điện rò ra khung xe. E dùng đồng hồ đo điện ở khung xe và cả output thì thấy có dòng điện xoay chiều hơn 100v. Nên chạm...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 00:12 -
-
bởi Manh.n.trCác bác cho em hỏi cách điều chế xung răng cưa sang xung vuông với ạ. Em đang thấy khó ạ...
-
Channel: Kỹ thuật điện tử tương tự
13-12-2024, 20:46 -
-
Trả lời cho hỏi về thiết kế mạch tuần tự trên proteusbởi Hatruong1309
-
Channel: Hỗ trợ học tập
12-12-2024, 00:33 -
-
bởi Hatruong1309Cho e hỏi là phần chân X thì nối cái j thì mạch mới chạy được ạ và kiểm tra đúng sai kiểu j ạ
Đề bài thiết kế mạch dãy đồng bộ nhận biết dãy tín hiệu vào ở dạng nhị phân được đưa liên tiếp ở đầu vào X và được đồng...-
Channel: Hỗ trợ học tập
12-12-2024, 00:33 -
Comment