Thông báo

Collapse
No announcement yet.

LCD graphic và touch screen

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

  • LCD graphic và touch screen

    mình đang muốn làm về LCD graphic màu nhưng không hiểu cách khởi tạo cho nó, không biết nó có khác so với GLCD nền xanh chữ đen ko, mình dùng PÍC6F887 để điều khiển. a e nào có làm rồi xin hướng dẫn mình bước cơ bản. àh với ở tphcm a e nào biết chổ bán con IC ADS7843 dùng cho màn hình cảm ứng. cảm ơn các bạn giúp đỡ.
    Last edited by leson87; 12-12-2010, 13:37.

  • #2
    Mình đọc đoạn code GLCD.C trong thư viện của CCS nhưng nó dài quá ko hiểu được có bạn nào đã làm rồi về GLCD thì cho mình xin đoạn code tham khảo rồi mình tự vọc thêm. xin cảm ơn

    Comment


    • #3
      Màn hình cảm ứng

      Cuối cùng mình cũng xử lý xong cái glcd giờ tới con ADS7843 của màn hình cảm ứng. mình dùng PIC18f4620 để dk nhưng trong proteus ko mô phỏng dc nên dùng tạm 18f452 chương trình mình xem rất kỹ ko biết lỗi gì mà ko chạy. bạn nào nghiên cứu qua thì giúp mình.
      đây là code:
      #include <18f452.h>
      #FUSES NOWDT //No Watch Dog Timer
      #FUSES HS //High speed Osc (> 4mhz)
      #FUSES NOPROTECT //Code not protected from reading
      #FUSES NOBROWNOUT //Reset when brownout detected
      #FUSES NOPUT //No Power Up Timer
      #FUSES NODEBUG //No Debug mode for ICD
      #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
      #use delay(clock=20000000)
      #define SPI_MODE_0 (SPI_L_TO_H | SPI_XMIT_L_TO_H)
      ////////////////////////////////////////////////////////////////////////////////
      //////////////dinh nghia PIN/////////////////////
      #define ADS7843_CS PIN_C1
      #define ADS7843_BUSY PIN_C2
      #define ADS7843_PENIRQ PIN_B0

      ////////////////////////////////////////////////////////////////////////////////
      //////////////Cchuong trinh con/////////////////////

      int16 ads7843_read(mode)
      {
      int8 lsb, msb;
      int16 retval;

      output_low(ADS7843_CS); //cho phep chon chip
      spi_write(mode);

      while (input (ADS7843_BUSY)== 1){;}
      msb = spi_read(0);
      lsb = spi_read(0);

      output_high(ADS7843_CS); //khong phep chon chip

      retval = make16(msb, lsb); // tra ve gia tri 16bit ket hop tu 2 bien (msb va lsb) msb la byte cao
      retval >>= 4;
      return(retval); //tra ve gia tri la: [x][x][x][x][x][x][x][x][x][x][x][x][] [] [] []
      }
      ///////////////////////////////////////////////////////////////////////////////

      void main()
      {
      output_high(ADS7843_CS); // Inactive state (disenable)
      setup_spi(SPI_MASTER | SPI_MODE_0 | SPI_CLK_DIV_4); //khoi tao chuan SPI
      int16 x,y;
      output_low(ADS7843_CS); // Inactive state (enable)
      delay_ms(5);

      while (TRUE)
      {
      while( input(ADS7843_PENIRQ) ==0 ) // is screen touch
      {
      x = ads7843_read (0x94);
      delay_us (2);
      y = ads7843_read (0xD4);
      delay_ms (1);
      if ((x<50)&& (y <50)) //neu vung duoc bam co gtri x,y <50 thi bat den chi thi RB7
      {
      output_bit( PIN_B7, 1);
      delay_ms (100);
      output_bit( PIN_B7, 0);
      delay_ms (50);
      }
      }
      }
      }
      Attached Files

      Comment


      • #4
        anh làm đề tài gi ma co touchscreen+ LCD + pic vay
        e cung dang lam de tai gom nhung linh kien do, anh co the giup em duoc khong

        Comment


        • #5
          GLCD tôi đã giải quyết mượt mà phần hiển thị bitmap đa năng(Y chang led matrix) dùng phần mềm build bitmap của a Bvhoang. Phần hiển thị kí tự với font 5x7 cũng đã ok, nhưng hiện tại đang gặp rắc rối nhỏ là giờ mình muốn hiển thị cả 1 chuỗi kí tự dài vd"DTVN" thì chưa thực hiện đc, rắc rối nằm ở chỗ lấy mã ascii của từng phần tử trong chuỗi đó, giờ tôi chỉ cần cắt đc từng kí tự ra khỏi chuỗi đó là ok. CCS ko hỗ trợ hàm cắt kí tự như VB. Pro nào có cao kiến xin chỉ giáo.


          Add: 97 Quán Nam - Lê Chân - Hải Phòng.
          Tel: 031 518648 Phone: 0904 283 505

          Comment


          • #6
            Nguyên văn bởi hoangdai Xem bài viết
            GLCD tôi đã giải quyết mượt mà phần hiển thị bitmap đa năng(Y chang led matrix) dùng phần mềm build bitmap của a Bvhoang. Phần hiển thị kí tự với font 5x7 cũng đã ok, nhưng hiện tại đang gặp rắc rối nhỏ là giờ mình muốn hiển thị cả 1 chuỗi kí tự dài vd"DTVN" thì chưa thực hiện đc, rắc rối nằm ở chỗ lấy mã ascii của từng phần tử trong chuỗi đó, giờ tôi chỉ cần cắt đc từng kí tự ra khỏi chuỗi đó là ok. CCS ko hỗ trợ hàm cắt kí tự như VB. Pro nào có cao kiến xin chỉ giáo.
            Mình không dùng CCS nên không biết nhiều về nó. Theo mình nghĩ bạn tạo một mảng "char string[]" rồi cho các kí tự vào đó sau đó khi nào cần lấy ra theo kiểu "string[i]" với i là biến chạy tăng dần. Hy vọng giúp đc bạn!
            Ngô Đông Y
            ********
            Mobile : 0984053088
            Yahoo :
            Email :

            Comment


            • #7
              bạn mua cái touchpad đó ở đâu vậy ? mình chơi glcd128x64 rồi. Hôm nay nhờ thằng bạn lên số 2 - Lê Thanh Nghị - chợ Trời mà ko có. Nhục quá.
              to @leson87: GLCD 128x64 chơi với 16f877a vẫn ngon, mô phỏng bằng proteus được.
              My Face :

              Comment


              • #8
                Nguyên văn bởi leson87 Xem bài viết
                Màn hình cảm ứng

                Cuối cùng mình cũng xử lý xong cái glcd giờ tới con ADS7843 của màn hình cảm ứng. mình dùng PIC18f4620 để dk nhưng trong proteus ko mô phỏng dc nên dùng tạm 18f452 chương trình mình xem rất kỹ ko biết lỗi gì mà ko chạy. bạn nào nghiên cứu qua thì giúp mình.
                đây là code:
                #include <18f452.h>
                #FUSES NOWDT //No Watch Dog Timer
                #FUSES HS //High speed Osc (> 4mhz)
                #FUSES NOPROTECT //Code not protected from reading
                #FUSES NOBROWNOUT //Reset when brownout detected
                #FUSES NOPUT //No Power Up Timer
                #FUSES NODEBUG //No Debug mode for ICD
                #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
                #use delay(clock=20000000)
                #define SPI_MODE_0 (SPI_L_TO_H | SPI_XMIT_L_TO_H)
                ////////////////////////////////////////////////////////////////////////////////
                //////////////dinh nghia PIN/////////////////////
                #define ADS7843_CS PIN_C1
                #define ADS7843_BUSY PIN_C2
                #define ADS7843_PENIRQ PIN_B0

                ////////////////////////////////////////////////////////////////////////////////
                //////////////Cchuong trinh con/////////////////////

                int16 ads7843_read(mode)
                {
                int8 lsb, msb;
                int16 retval;

                output_low(ADS7843_CS); //cho phep chon chip
                spi_write(mode);

                while (input (ADS7843_BUSY)== 1){;}
                msb = spi_read(0);
                lsb = spi_read(0);

                output_high(ADS7843_CS); //khong phep chon chip

                retval = make16(msb, lsb); // tra ve gia tri 16bit ket hop tu 2 bien (msb va lsb) msb la byte cao
                retval >>= 4;
                return(retval); //tra ve gia tri la: [x][x][x][x][x][x][x][x][x][x][x][x][] [] [] []
                }
                ///////////////////////////////////////////////////////////////////////////////

                void main()
                {
                output_high(ADS7843_CS); // Inactive state (disenable)
                setup_spi(SPI_MASTER | SPI_MODE_0 | SPI_CLK_DIV_4); //khoi tao chuan SPI
                int16 x,y;
                output_low(ADS7843_CS); // Inactive state (enable)
                delay_ms(5);

                while (TRUE)
                {
                while( input(ADS7843_PENIRQ) ==0 ) // is screen touch
                {
                x = ads7843_read (0x94);
                delay_us (2);
                y = ads7843_read (0xD4);
                delay_ms (1);
                if ((x<50)&& (y <50)) //neu vung duoc bam co gtri x,y <50 thi bat den chi thi RB7
                {
                output_bit( PIN_B7, 1);
                delay_ms (100);
                output_bit( PIN_B7, 0);
                delay_ms (50);
                }
                }
                }
                }

                Địa chỉ toạ độ X ( 0x90), toạ độ Y( 0xD0);

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X