Thông báo

Collapse
No announcement yet.

Hiển thị số lần bấm nút lên LCD

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

  • Hiển thị số lần bấm nút lên LCD

    Các pác có pác nào có đoạn code về hiển thị số lần bấm nút lên LCD có thế post gửi cho em được không.Viết bằng C cho 8051, em cảm ơn trước.Có đoạn nào post hết lên cho anh em tham khảo nhé.
    Với lại xem cho em đoạn code hiển thị số lần bấm nút trên LCD của em xem , không hiển thị đựoc lên LCD số lần bấm.
    Attached Files

  • #2
    hic , chán cho mấy ông nội này wa
    - trước hết , thử hiện 1 chữ lên LCD, xem đã đc chưa , sau đó mới làm tiếp hàm quét phím.
    - ông nội giao tiếp LCD 8bit đúng ko ? code nè
    Code:
    void delay_ms( unsigned int ms )
    { unsigned int i,j;
      for (i=0;i<ms;i++)
      for (j=0;j<120;j++){};
    }
    void LCD_PutChar(unsigned char k )
    { P2=k ; RS=1 ; E=1 ; E=0 ; delay_ms(1);}
      
    
    void LCD_PutCmd(unsigned char k )
    { P2=k ; RS=0 ; E=1 ; E=0 ; delay_ms(3);}
    
    void int_LCD()
    { 
      LCD_PutCmd(0x38) ;	   
      LCD_PutCmd(0x0C) ;
      LCD_PutCmd(0x06) ;
      LCD_PutCmd(0x01) ;
    }
    h mún đếm số lần nhấn phím đúng ko ? code chống rung khi nhấn phím :
    Code:
    if(!phím) {delay_ms(20);while( !phím) continue ;delay_ms(10);
                  i++ ; // biến đếm số lần nhấn phím , phải khai báo biến này trước nghe pa nội
                  hiện lên LCD = lệnh LCD_PutChar(...);
                }

    Comment


    • #3
      lam rồi ông nội ơi , cho chạy chữ thì dễ tui mắc vấn đề là số cơ , cái này tôi không hiểu , chán ông nội quá , mà đoạn của cha nội thiếu kiểm tra cờ bận của LCD kìa , thế mà cũng post được bó tay

      Comment


      • #4
        Nguyên văn bởi HAINGUYEN_20 Xem bài viết
        lam rồi ông nội ơi , cho chạy chữ thì dễ tui mắc vấn đề là số cơ , cái này tôi không hiểu , chán ông nội quá , mà đoạn của cha nội thiếu kiểm tra cờ bận của LCD kìa , thế mà cũng post được bó tay
        heheh , đúng pa này học mà ko hỉu , thấy tui ko cần kiểm tra cờ bận mà LCD vẫn chạy , ngon hơn u chỗ đó đó ! Nếu ng bit thì code LCD tui viết ko tối ưu = code của u , nhưng u nói " thiếu test cờ bận " ... bit ngay ng mới dùng LCD , Thêm nữa , thấy tui ko cần cho RW = 0 , cái này mới hen ....

        Comment


        • #5
          Nguyên văn bởi HAINGUYEN_20 Xem bài viết
          lam rồi ông nội ơi , cho chạy chữ thì dễ tui mắc vấn đề là số cơ , cái này tôi không hiểu , chán ông nội quá , mà đoạn của cha nội thiếu kiểm tra cờ bận của LCD kìa , thế mà cũng post được bó tay

          Cho chạy chữ được mà không hiện số được ,

          Nếu đã làm được hiện chữ lên LCD thì làm theo các bước sau :

          1) Khai báo biến đếm : VD : unsigned long COUNT;

          2) Bắt phím if(button_pressed) { a,.b,c... COUNT++; }

          3) hiển thị COUNT lên màn hình ... VD : COUNT = 0; ( chưa bấm phím lần nào )
          hiện số 0 lên màn hình . Trong mã ASCII số 0 là 48 .

          các số hàng nghìn , trăm , chục , đơn vị ... sau khi đã " tách " ra thì chỉ cần cộng thêm 48 rồi đẩy dữ liệu vào LCD là nó hiện số lên màn hình thôi .
          Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

          Comment


          • #6
            Tham khảo hàm hiệ số này nè
            Code:
            void ghi_so(unsigned long number){
            	int j,m;
            	unsigned char d[20];
            	for(j=0 ; j<20 ; j++){
            		d[j] = number%10;
            		number /= 10;
            		if(number==0){
            			m = j;
            			break;
            		}
            	}
            	for(j=m ; j>=0 ; j--){
            		ghi_kytu(d[j]+0x30);
            	}
            }
            .: Lê Tiến Mạnh :.
            Phone number : 0989 735 804
            YM,Skype,mail : [leemanhj916]@gmail.com

            Comment


            • #7
              Tham khảo hàm hiệ số này nè
              Code:
              void ghi_so(unsigned long number){
                           int j,m;
              	unsigned char d[20];
              	for(j=0 ; j<20 ; j++){
              		d[j] = number%10;
              		number /= 10;
              		if(number==0){
              			m = j;
              			break;
              		}
              	}
              	for(j=m ; j>=0 ; j--)
              		ghi_kytu(d[j]+0x30);
              }
              .: Lê Tiến Mạnh :.
              Phone number : 0989 735 804
              YM,Skype,mail : [leemanhj916]@gmail.com

              Comment


              • #8
                Hàm này chỉ hiển thị các số dạng nguyên thôi
                .: Lê Tiến Mạnh :.
                Phone number : 0989 735 804
                YM,Skype,mail : [leemanhj916]@gmail.com

                Comment


                • #9
                  lão BI chỉ biết nói sao không post code lên, hay để dành làm tương thế ,không có ví dụ mà cũng nói được.Bó tay.Cám ơn bác leemanh.
                  Không ví dụ chứng minh đừng có spam lên mặt .

                  Comment


                  • #10
                    Bạn HaiNguyen oi xem bài mình làm thế này có dc ko. Bạn copy file lcd1.c vào C:\Keil\C51\INC là dc. Bài của mình đếm dc đến 999 còn muốn đếm đến 9999 hay lớn hơn thì bạn sửa code 1 tí là ok.
                    Nhân đây cũng xin cảm ơn bạn tranpic đã cho mình thư viện lcd1.c để điều khiển LCD
                    Attached Files

                    Comment


                    • #11
                      Tiện đây hỏi luôn có bác nào biết hiển thị số thực ko vậy vì nếu viết x+48 (x là số thực) thì LCD chỉ hiển thị phần nguyên mà thôi

                      Comment


                      • #12
                        Nguyên văn bởi nguoiphuxe8x Xem bài viết
                        Tiện đây hỏi luôn có bác nào biết hiển thị số thực ko vậy vì nếu viết x+48 (x là số thực) thì LCD chỉ hiển thị phần nguyên mà thôi
                        số thực muốn thành số nguyên thì nhân 10 , 100 , 1000 v.v. lên còn hiện dấu chấm ( dấu phẩy ) thì quá dễ rồi
                        Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                        Comment


                        • #13
                          Ko có cách nào # hả bác queduong, cách này thì em bít rùi, nhưng cách này thì bất tiện lắm. Vì hiển thị số lên LCD mình phải tách dc số hàng đơn vị, chục, trăm .v.v. Giả sử biến x của em chạy từ 0 đến 99, lúc nó là 1.2 thì x100 là 120 (3 chữ số), lúc nó là 11.2 thì x100 là 1200 (4 chữ số). Lúc này thì trước khi tách số và hiển thị thì minh lại phải if (x<10) và if(x>=10 && x<=99) rồi mới tách số hả bác

                          Comment


                          • #14
                            Cái này có thể dùng hàm Sprintf trong thư viện stdio.h thì phải, cũng tiện lắm đấy
                            .: Lê Tiến Mạnh :.
                            Phone number : 0989 735 804
                            YM,Skype,mail : [leemanhj916]@gmail.com

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            Đang tải...
                            X