Thông báo

Collapse
No announcement yet.

Hoi về code của lcd và 8051

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Hoi về code của lcd và 8051

    Các anh giúp em với, e làm mạch đo nhiệt độ sử dụng lm35 và 89c51, mạch và code e lấy trên mạng, mô phỏng trên proteus thì chạy nhưng làm mạch thực tế thì lcd chỉ hiển thị được 1 dòng.mong các anh giúp vơi, chân thành cảm ơn !!!
    Attached Files
    Last edited by vannam0592; 24-10-2012, 10:43.

  • #2
    Không mô phỏng được file của bạn vì không có hex file. Nhưng nhìn sơ đồ phần cứng thì các chân DB0-DB3 của LCD không dùng nên nối xuống GND.

    Comment


    • #3
      file hex co luon trong đó mà

      Comment


      • #4
        Nguyên văn bởi hoadang Xem bài viết
        Không mô phỏng được file của bạn vì không có hex file. Nhưng nhìn sơ đồ phần cứng thì các chân DB0-DB3 của LCD không dùng nên nối xuống GND.
        anh ơi dup em với sao em viết code này mãi nó không chạy nhỉ?em sửa mãi mà không làm thế nào cho nó di chuyển qua trái và qua phải được.bây giờ em muốn nó dịch từ dòng 2 lên dòng 1 được không?a viết thêm vào dúp em với,e loay hoay mãi không ra.thaks a nhieu nha

        chuong trinh la: link: LCD_clk04-dt2.rar
        ;;;;;;;;;;;;;;;;;;;;;;;
        ORG 00H
        MAIN:
        MOV A,#38H ;khoi tao lcd che do 2 dong 5x7
        LCALL GUILENH
        LCALL DELLAY
        ;;;;;;;;;;;;;;;;;;;;;;;;;;
        MOV A,#0EH ;bat hien thi nhap nhay con tro
        LCALL GUILENH
        LCALL DELLAY
        ;;;;;;;;;;;;;;;;;;;;;;;
        MOV A,#01H ;xoa man hnh hien thi
        LCALL GUILENH
        LCALL DELLAY
        ;;;;;;;;;;;;;;;;;;;;
        MOV A,#80H ;dua con tro ve dau hang 1
        LCALL GUILENH
        LCALL DELLAY
        MOV DPTR,#DONG1 ;hien thi len dong1
        LCALL HIENTHI
        LCALL DELLAY
        ;;;;;;;;;;;;;;;;;;;;;;;
        MOV A,#0C0H ;;dua con tro ve dau hang 2
        LCALL GUILENH
        LCALL DELLAY
        MOV DPTR,#DONG2 ;;hien thi len dong2
        LCALL HIENTHI
        LCALL DELLAY
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;
        mov r3,#0
        lap:
        mov a,#1ch
        lcall guilenh
        lcall dellay
        lcall dellay
        lcall dellay
        lcall dellay
        lcall dellay
        inc r3
        cjne r3,#32,lap
        mov r3,#0
        JMP $
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        GUILENH: ;chuong trinh con lenh dieu khien
        LCALL KTTT
        MOV P2,A
        CLR P3.0
        CLR P3.1
        SETB P3.2
        CLR P3.2
        RET
        GUIDULIEU: ;;chuong trinh con du lieu
        LCALL KTTT
        MOV P2,A
        SETB P3.0
        CLR P3.1
        SETB P3.2
        CLR P3.2
        RET
        KTTT: ;;chuong trinh con kiem tra trang thai
        SETB P2.7
        CLR P3.0
        SETB P3.1
        BACK:
        CLR P3.2
        SETB P3.2
        JB P2.7,BACK
        RET
        HIENTHI: ;;chuong trinh con hien thi
        MOV A,R0 ;dua du lieu vao thanh ghi R0
        MOVC A,@A+DPTR
        LCALL GUIDULIEU
        MOV A,#06H ;tang con tro chong trong lan
        LCALL GUILENH
        LCALL DELLAY
        INC R0
        CJNE R0,#16,HIENTHI ;so sanh
        MOV R0,#0
        LCALL DELLAY
        RET
        DELLAY:
        MOV R5,#20
        BCAD: MOV R6,#20
        CABD: MOV R7,#20
        DJNZ R7,$
        DJNZ R6,CABD
        DJNZ R5,BCAD
        RET
        DATAS:
        DONG1:
        DB 'NGUYEN ANH VIET '
        DONG2:
        DB 'NGUYEN ANH VIET '
        END

        Comment


        • #5
          Nguyên văn bởi vietbiker Xem bài viết
          anh ơi dup em với sao em viết code này mãi nó không chạy nhỉ?em sửa mãi mà không làm thế nào cho nó di chuyển qua trái và qua phải được.bây giờ em muốn nó dịch từ dòng 2 lên dòng 1 được không?
          Chương trình của bạn chưa chạy, hay là chạy rồi, nhưng bạn muốn dịch hiển thị từ trái qua phải (từ phải qua trái), từ dòng 2 lên dòng 1?
          Bạn vào link sau đây tham khảo nhé, có các lệnh và demo cho bạn: http://www.geocities.com/dinceraydin/lcd/commands.htm

          Comment


          • #6
            Để cho dễ, thì đầu tiền bạn làm với LCD bạn chưa cần kiểm tra trạng thái của LCD đâu, dùng delay chờ một khoảng thời gian đã. Sau khi làm với delay xong rồi hãy chuyển qua làm kiểm tra trạng thái.

            Comment


            • #7
              Nguyên văn bởi hoadang Xem bài viết
              Để cho dễ, thì đầu tiền bạn làm với LCD bạn chưa cần kiểm tra trạng thái của LCD đâu, dùng delay chờ một khoảng thời gian đã. Sau khi làm với delay xong rồi hãy chuyển qua làm kiểm tra trạng thái.
              bạn ơi sao mình không vào được link là sao nhỉ?code cua mình chạy rồi nhưng nó chỉ hiển thị len LCD thui.mình học liên thông nên chương trình học rút gọn lém chỉ được học những cái cơ bản thui.trên là mình viết theo những gì mình học được,bây giờ thầy giáo cho bài cuối kì về nhà làm là : dịch được sang trái hoặc dịch sang phải,và nó di chuyển từ hàng dưới lên trên như kiểu xoay vòng tròn ý(hay còn gọi là menu quận).thật sự quá sức của mình,mình cũng tham khảo cả tuần nay rồi nhưng không làm được.mình còn pải đi làm nữa,nếu bạn dúp được mình thì sẽ có hậu tạ hihi.mình nói nghiêm chỉnh đó.nếu bạn có time thì viết thêm vào code trên cho mình,nếu bạn không rảnh thì có thể hướng dẫn cho mính thêm được không?
              mình nghe thầy giáo bảo là có thể viết thêm vào chương trình chính hoặc viết chương trình con để nó dịch qua lại hay di chuyển từ dưới lên trên hoặc xuống dưới,bạn thấy sao?
              đây là bài của minh: link :LCD_clk04-dt2.rar

              Comment


              • #8
                Nguyên văn bởi hoadang Xem bài viết
                Để cho dễ, thì đầu tiền bạn làm với LCD bạn chưa cần kiểm tra trạng thái của LCD đâu, dùng delay chờ một khoảng thời gian đã. Sau khi làm với delay xong rồi hãy chuyển qua làm kiểm tra trạng thái.
                bạn ơi sao mình không vào được link là sao nhỉ?code cua mình chạy rồi nhưng nó chỉ hiển thị len LCD thui.mình học liên thông nên chương trình học rút gọn lém chỉ được học những cái cơ bản thui.trên là mình viết theo những gì mình học được,bây giờ thầy giáo cho bài cuối kì về nhà làm là : dịch được sang trái hoặc dịch sang phải,và nó di chuyển từ hàng dưới lên trên như kiểu xoay vòng tròn ý(hay còn gọi là menu quận).thật sự quá sức của mình,mình cũng tham khảo cả tuần nay rồi nhưng không làm được.mình còn pải đi làm nữa,nếu bạn dúp được mình thì sẽ có hậu tạ hihi.mình nói nghiêm chỉnh đó.nếu bạn có time thì viết thêm vào code trên cho mình,nếu bạn không rảnh thì có thể hướng dẫn cho mính thêm được không?
                mình nghe thầy giáo bảo là có thể viết thêm vào chương trình chính hoặc viết chương trình con để nó dịch qua lại hay di chuyển từ dưới lên trên hoặc xuống dưới,bạn thấy sao?
                đây là bài của minh: link :LCD_clk04-dt2.rar
                mình không biết máy mình sao nữa nhưng viết chữ : DELAY nó toàn báo lỗi,phải viết là DELLAY nó mới nhận bạn biết vì sao không?
                phần mềm viết chương trình là :Microcontroller_V3.0.exe,
                phần mềm mô phỏng la: Proteus 7.8

                Comment


                • #9
                  đây là tài liệu về LCD16x2 (bạn chịu khó đọc nhé) LCD interfacing with Microcontrollers tutorial.
                  về chương trình: để giao tiếp với LCD thì cần các hàm cơ bản sau:
                  + LCD_Reset(): khi bắt đầu bật nguồn, cần có một khoảng thời gian cho LCD tự reset nó.
                  + LCD_Init(): là hàm để khởi tạo LCD, chế độ bao nhiêu bit, bao nhiêu dòng, vị trị con trỏ, ...
                  + LCD_Data(<data>): gửi dữ liệu lên LCD để hiển thị
                  + LCD_Cmd(<command>): gửi lệnh lên LCD
                  + ( nếu dùng delay sau mỗi lần gửi lệnh hay dữ liệu thì không cần kiểm tra trạng thái của LCD, còn nếu không cần có thêm hàm kiểm tra trạng thái LCD trước khi gửi lệnh hay dữ liệu)
                  - Về dịch trái hay dịch phải hiển thị thì mã lệnh là 0x18 (dịch trái hiển thị )0 và 0x1E (dịch phải hiển thị) (dịch toàn bộ hiển thị)
                  - Về dịch con trỏ thì mã lệnh là 0x10 (dịch trái con trỏ) và 0x14 (dịch phải con trỏ)
                  - Về menu cuộn thì theo mình chỉ có cách ghi dữ liệu hàng dưới lên hàng trên thôi, và ghi theo kiểu quay vòng vậy. chứ LCD16x2 không có lệnh dịch dữ liệu
                  từ dòng 2 lên dòng 1.

                  Comment


                  • #10
                    thaks ban rất nhiều mình đã dịch trái và phải rồi nhưng còn :
                    "Về menu cuộn thì theo mình chỉ có cách ghi dữ liệu hàng dưới lên hàng trên thôi, và ghi theo kiểu quay vòng vậy. chứ LCD16x2 không có lệnh dịch dữ liệu
                    từ dòng 2 lên dòng 1."
                    - theo bạn mình đã ghi đè lên hàng dưới lên hàng trên nhưng kết quả la dữ liệu hiển thị linh tinh hết.
                    - mình đầu hàng lun không hiểu pải viết như thế nào cả?bạn viết dúp mình đoạn code này để mình làm mẫu được không?

                    Comment


                    • #11
                      LCD Menu

                      đây là ví dụ mình thử làm, thấy có sao đâu. mình khi được bấm lên hay xuống thì chỉ ghi lại dữ liệu dòng trên xuống dưới và ngược lại. Dòng tiếp theo ghi dữ liệu mới vào thôi. Mình viết bằng C, nếu bạn muốn mình send code cho thôi, còn viết ASM, hơi ngại vì mình phải đọc lại tập lệnh nữa, lâu không dùng thì nó cũng mọt đị rồi. Link download file mô phỏng
                      sorry, mình không up được file lên diễn đàn.
                      Chúc ngày mới vui vẻ.

                      Comment


                      • #12
                        Nguyên văn bởi hoadang Xem bài viết
                        đây là ví dụ mình thử làm, thấy có sao đâu. mình khi được bấm lên hay xuống thì chỉ ghi lại dữ liệu dòng trên xuống dưới và ngược lại. Dòng tiếp theo ghi dữ liệu mới vào thôi. Mình viết bằng C, nếu bạn muốn mình send code cho thôi, còn viết ASM, hơi ngại vì mình phải đọc lại tập lệnh nữa, lâu không dùng thì nó cũng mọt đị rồi. Link download file mô phỏng
                        sorry, mình không up được file lên diễn đàn.
                        Chúc ngày mới vui vẻ.
                        Mình rất cảm ơn hoadang đã dúp đỡ mình trong mấy ngày qua.nhưng lập trình C thì mình chịu vì không được học,với lại đề bài thầy cho bắt buộc phải lập trình bằng ASM.hi vọng Hoadang dúp đỡ mình đoạn code xoay vòng menu này.thaks nhiu

                        Comment


                        • #13
                          Xin lỗi nhưng mình không viết code ASM cho bạn được,
                          nên chỉ hỗ trợ lý thuyết cho bạn được thôi.
                          Đầu tiên bạn hãy xây dựng các hàm cơ bản sau:
                          - hàm khởi tạo LCD
                          - hàm gửi một lệnh lên LCD với lệnh là biến truyền vào
                          - hàm gửi một ký tự lên LCD với lệnh là biến truyền vào
                          - hàm hiển thị một chuỗi ký tự lên LCD với địa chỉ bắt đầu chuối là biến truyền vào
                          - hàm di chuyển con trỏ hiển thị đến dòng y cột x bất kỳ với x,y là biến truyền vào
                          Tất cả ví dụ mình làm trên đều chỉ dùng những hàm cơ bản này thôi, khi có được những hàm này rồi thì hiển thị lên LCD như thế nào là tùy bạn,

                          Comment


                          • #14
                            Nguyên văn bởi hoadang Xem bài viết
                            Xin lỗi nhưng mình không viết code ASM cho bạn được,
                            nên chỉ hỗ trợ lý thuyết cho bạn được thôi.
                            Đầu tiên bạn hãy xây dựng các hàm cơ bản sau:
                            - hàm khởi tạo LCD
                            - hàm gửi một lệnh lên LCD với lệnh là biến truyền vào
                            - hàm gửi một ký tự lên LCD với lệnh là biến truyền vào
                            - hàm hiển thị một chuỗi ký tự lên LCD với địa chỉ bắt đầu chuối là biến truyền vào
                            - hàm di chuyển con trỏ hiển thị đến dòng y cột x bất kỳ với x,y là biến truyền vào
                            Tất cả ví dụ mình làm trên đều chỉ dùng những hàm cơ bản này thôi, khi có được những hàm này rồi thì hiển thị lên LCD như thế nào là tùy bạn,
                            mình xin cảm ơn sự dúp đỡ của Hoadang minhi sẽ cố gắng tự viết đoạn code này vậy.thanks Hoadang nhiều

                            Comment


                            • #15
                              Nguyên văn bởi hoadang Xem bài viết
                              Xin lỗi nhưng mình không viết code ASM cho bạn được,
                              nên chỉ hỗ trợ lý thuyết cho bạn được thôi.
                              Đầu tiên bạn hãy xây dựng các hàm cơ bản sau:
                              - hàm khởi tạo LCD
                              - hàm gửi một lệnh lên LCD với lệnh là biến truyền vào
                              - hàm gửi một ký tự lên LCD với lệnh là biến truyền vào
                              - hàm hiển thị một chuỗi ký tự lên LCD với địa chỉ bắt đầu chuối là biến truyền vào
                              - hàm di chuyển con trỏ hiển thị đến dòng y cột x bất kỳ với x,y là biến truyền vào
                              Tất cả ví dụ mình làm trên đều chỉ dùng những hàm cơ bản này thôi, khi có được những hàm này rồi thì hiển thị lên LCD như thế nào là tùy bạn,
                              Hoadang ơi còn ở đây không?chết rùi thầy đổi ý bây giời cho lcd hiển thị hình trái tim mới ác chứ,bạn viết được cos của nó không?dúp mình với.....hepp

                              Comment

                              Về tác giả

                              Collapse

                              vannam0592 Tìm hiểu thêm về vannam0592

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X