回答

收藏

DFR0428显示屏点亮测试

其他 其他 2296 人阅读 | 0 人回复 | 2022-09-29

本帖最后由 TLLED 于 2022-9-29 22:56 编辑

    前几天拿到DFR0428显示屏模块,这段时间DIY了中间转接板,下面测试点亮过程。


   一、显示屏幕模块


    1.1、显示屏官网
    地址:https://wiki.dfrobot.com.cn/_SKU_DFR0428_3.5__TFT_Touchscreen_for_Raspberry_Pi


    1.2、模块包装
   

   
    1.3、显示模块图片
   

   



    1.4、显示屏接口


    显示屏接口是和树莓派接口一致的。
   

   
    1.5、显示屏电路图
   
   

   
    pdf文件:
3.5寸 TFT Touchscreen for Raspberry Pi 原理图.pdf (351.28 KB, 下载次数: 0)

   
    二、显示屏转接板
    显示屏接口是树莓派接口的,下面转接成我这个板卡的接口
   
    2.1、转接板电路图
   

   
    2.2、转接板PCB
   

   
   三、驱动板
   
    3.1、NXP芯片驱动板
   

   
    3.2、板卡和显示屏连接图片
   



   四、点亮程序


    4.1、lcd.c部分程序
   
  1. <font size="3">void sendbyte(u8 bt)
  2. {
  3.         u8 i=0;
  4.         LCD_SCLK_Clr();
  5.         for(i=0;i<8;i++)
  6.         {
  7.                 LCD_SCLK_Clr();
  8.                 if(bt&0x80)
  9.                 {
  10.                         LCD_MOSI_Set();
  11.                 }
  12.                 else
  13.                 {
  14.                         LCD_MOSI_Clr();
  15.                 }
  16.                 bt=bt<<1;
  17.                 LCD_SCLK_Set();
  18.         }
  19.         LCD_SCLK_Clr();
  20. }

  21. void senddat(u16 dat)
  22. {
  23.         LCD_CS_Set();
  24.         sendbyte((u8)(dat>>8));
  25.         LCD_CS_Clr();
  26.         sendbyte((u8)dat);
  27.         LCD_CS_Set();
  28. }

  29. void LCD_Writ_Bus(u8 dat)
  30. {
  31.         u8 i;
  32.         LCD_CS_Clr();
  33.         for(i=0;i<8;i++)
  34.         {
  35.                 LCD_SCLK_Clr();
  36.                 if(dat&0x80)
  37.                 {
  38.                    LCD_MOSI_Set();
  39.                 }
  40.                 else
  41.                 {
  42.                    LCD_MOSI_Clr();
  43.                 }
  44.                 LCD_SCLK_Set();
  45.                 dat<<=1;
  46.         }
  47.   LCD_CS_Set();
  48. }
  49. void LCD_WR_DATA8(u8 dat)
  50. {
  51.         LCD_Writ_Bus(dat);
  52. }

  53. void LCD_WR_DATA(u16 dat)
  54. {
  55.         //LCD_Writ_Bus(dat>>8);
  56.         //LCD_Writ_Bus(dat);
  57.         senddat(dat);
  58. }

  59. void LCD_WR_REG(u16 dat)
  60. {
  61.         LCD_DC_Clr();
  62.         senddat(dat);
  63.         LCD_DC_Set();
  64. }

  65. void LCD_Init(void)
  66. {
  67.         LCD_RES_Clr();
  68.         delay_ms(100);
  69.         LCD_RES_Set();
  70.         delay_ms(100);
  71.         Set_Dir(DFT_SCAN_DIR);

  72.         //************* Start Initial Sequence **********//
  73.         LCD_WR_REG(0x11); //Sleep out
  74.         delay_ms(120);    //Delay 120ms
  75.         //************* Start Initial Sequence **********//
  76.         LCD_WR_REG(0Xf0);
  77.         LCD_WR_DATA(0xc3);
  78.         LCD_WR_REG(0Xf0);
  79.         LCD_WR_DATA(0x96);
  80.         LCD_WR_REG(0x36);    // Memory Access Control
  81.         LCD_WR_DATA(0x08|DFT_SCAN_DIR);

  82.         LCD_WR_REG(0x3A);
  83.         LCD_WR_DATA(0x05);

  84.         LCD_WR_REG(0Xe8);
  85.         LCD_WR_DATA(0x40);
  86.         LCD_WR_DATA(0x82);
  87.         LCD_WR_DATA(0x07);
  88.         LCD_WR_DATA(0x18);
  89.         LCD_WR_DATA(0x27);
  90.         LCD_WR_DATA(0x0a);
  91.         LCD_WR_DATA(0xb6);
  92.         LCD_WR_DATA(0x33);

  93.         LCD_WR_REG(0Xc5);
  94.         LCD_WR_DATA(0x27);

  95.         LCD_WR_REG(0Xc2);
  96.         LCD_WR_DATA(0xa7);

  97.         LCD_WR_REG(0Xe0);
  98.         LCD_WR_DATA(0xf0);
  99.         LCD_WR_DATA(0x01);
  100.         LCD_WR_DATA(0x06);
  101.         LCD_WR_DATA(0x0f);
  102.         LCD_WR_DATA(0x12);
  103.         LCD_WR_DATA(0x1d);
  104.         LCD_WR_DATA(0x36);
  105.         LCD_WR_DATA(0x54);
  106.         LCD_WR_DATA(0x44);
  107.         LCD_WR_DATA(0x0c);
  108.         LCD_WR_DATA(0x18);
  109.         LCD_WR_DATA(0x16);
  110.         LCD_WR_DATA(0x13);
  111.         LCD_WR_DATA(0x15);

  112.         LCD_WR_REG(0Xe1);
  113.         LCD_WR_DATA(0xf0);
  114.         LCD_WR_DATA(0x01);
  115.         LCD_WR_DATA(0x05);
  116.         LCD_WR_DATA(0x0a);
  117.         LCD_WR_DATA(0x0b);
  118.         LCD_WR_DATA(0x07);
  119.         LCD_WR_DATA(0x32);
  120.         LCD_WR_DATA(0x44);
  121.         LCD_WR_DATA(0x44);
  122.         LCD_WR_DATA(0x0c);
  123.         LCD_WR_DATA(0x18);
  124.         LCD_WR_DATA(0x17);
  125.         LCD_WR_DATA(0x13);
  126.         LCD_WR_DATA(0x16);

  127.         LCD_WR_REG(0Xf0);
  128.         LCD_WR_DATA(0x3c);

  129.         LCD_WR_REG(0Xf0);
  130.         LCD_WR_DATA(0x69);

  131.         LCD_WR_REG(0X29);
  132. }</font>
复制代码

    4.2、main.c
   
  1. <font size="3">int main(void)
  2. {
  3.         uint16_t num=0;
  4.         /* Board pin, clock, debug console init */
  5.         /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
  6.         CLOCK_SetClkDiv(kCLOCK_DivFlexcom0Clk, 0u, false);
  7.         CLOCK_SetClkDiv(kCLOCK_DivFlexcom0Clk, 1u, true);
  8.         CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
  9.         /* enable clock for GPIO*/
  10.         CLOCK_EnableClock(kCLOCK_Gpio0);
  11.         CLOCK_EnableClock(kCLOCK_Gpio1);

  12.         BOARD_InitPins();
  13.         BOARD_BootClockPLL150M();
  14.         BOARD_InitDebugConsole();

  15.         init_led();
  16.         delay_init();

  17.         /* Print a note to terminal. */
  18.         PRINTF("\r\n GPIO Driver example\r\n");
  19.         PRINTF("\r\n The LED is taking turns to shine.\r\n");

  20.         LCD_Init();
  21.         LCD_Clear(RED);
  22.         LCD_ShowString(0,0,"DFROBOT DFR0428 LCD TEST",RED,WHITE,32,0);
  23.         LCD_ShowString(0,40,"LCD_W:",RED,WHITE,16,0);
  24.         LCD_ShowIntNum(48,40,LCD_W,3,RED,WHITE,16);
  25.         LCD_ShowString(80,40,"LCD_H:",RED,WHITE,16,0);
  26.         LCD_ShowIntNum(128,40,LCD_H,3,RED,WHITE,16);

  27.         while (1)
  28.         {
  29.                         led1_tog();
  30.                         led2_tog();
  31.                         led3_tog();
  32.                         led4_tog();
  33.                         delay_ms(100);
  34.                         LCD_ShowString(0,100,"NUM:",RED,WHITE,32,0);
  35.                         LCD_ShowIntNum(64,100,num,3,RED,WHITE,32);
  36.                         num++;
  37.                         if(num>250)
  38.                         {
  39.                                 num=0;
  40.                         }
  41.         }
  42. }</font>
复制代码

    五、显示效果
   

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条