12下一页
返回列表 发新帖我要提问本帖赏金: 10.00元(功能说明)

[开发板与模块] 【ESK32-30519 + ESK32-21001测评】MDM-2802显示模块及波形显示

[复制链接]
 楼主| jinglixixi 发表于 2022-9-24 12:01 | 显示全部楼层 |阅读模式
<
本帖最后由 eltonchang2001 于 2022-11-9 11:53 编辑

#申请原创#
MDM-2802显示屏是一款以前用于Freescale产品的显示器件,其几何尺寸为2.8寸,分辨率为240*320,它的外观如图1所示。
别看该显示屏的引脚比较多,它其实是一款以SPI方式工作的器件,其主控芯片为ILI9341。
1.jpg
图1  MDM-2802显示屏
该显示屏的引脚分布如图2所示,其实就使用情况来看它更近于是一个I2C接口的显示屏。
2.jpg
图2 引脚分配
为使用HT32F54253开发板来驱动该显示屏,其引脚连接关系为:
SCLK --- PA0
MISO--- PA1
CS  --- PC2
RST --- NRST
BLC --- 3.3V
VDD---3.3V
GND---GND
3.jpg
图3 引脚连接
为便于高低电平的输出,其语句定义如下:
#define CLR_CLK()    GPIO_ClearOutBits(HT_GPIOA, GPIO_PIN_0)
#define SET_CLK()    GPIO_SetOutBits(HT_GPIOA, GPIO_PIN_0)   //CLK
#define CLR_SDA()    GPIO_ClearOutBits(HT_GPIOA, GPIO_PIN_1)
#define SET_SDA()    GPIO_SetOutBits(HT_GPIOA, GPIO_PIN_1)   //DIN
#define CLR_CS()     GPIO_ClearOutBits(HT_GPIOC, GPIO_PIN_2)
#define SET_CS()     GPIO_SetOutBits(HT_GPIOC, GPIO_PIN_2)   //CS
对使用引脚的功能配置函数为:
  1. void app_tft_init(void)
  2. {
  3.     CKCU_PeripClockConfig_TypeDef CKCUClock = {{ 0 }};
  4.     CKCUClock.Bit.AFIO = 1;
  5.     CKCUClock.Bit.PA = 1;
  6.     CKCUClock.Bit.PC = 1;
  7.     CKCU_PeripClockConfig(CKCUClock, ENABLE);
  8.     AFIO_GPxConfig(GPIO_PA, AFIO_PIN_0, AFIO_FUN_GPIO);
  9.     AFIO_GPxConfig(GPIO_PA, AFIO_PIN_1, AFIO_FUN_GPIO);
  10.     AFIO_GPxConfig(GPIO_PC, AFIO_PIN_2, AFIO_FUN_GPIO);
  11.     GPIO_PullResistorConfig(HT_GPIOA, GPIO_PIN_0, GPIO_PR_DOWN);
  12.     GPIO_PullResistorConfig(HT_GPIOA, GPIO_PIN_1, GPIO_PR_DOWN);
  13.     GPIO_PullResistorConfig(HT_GPIOC, GPIO_PIN_2, GPIO_PR_DOWN);
  14.     GPIO_WriteOutBits(HT_GPIOA, GPIO_PIN_0, RESET);
  15.     GPIO_WriteOutBits(HT_GPIOA, GPIO_PIN_1, RESET);
  16.     GPIO_WriteOutBits(HT_GPIOC, GPIO_PIN_2, RESET);
  17.     GPIO_DirectionConfig(HT_GPIOA, GPIO_PIN_0, GPIO_DIR_OUT);
  18.     GPIO_DirectionConfig(HT_GPIOA, GPIO_PIN_1, GPIO_DIR_OUT);
  19.     GPIO_DirectionConfig(HT_GPIOC, GPIO_PIN_2, GPIO_DIR_OUT);
  20. }

该显示屏的初始化函数为:
  1. void ili9341_init(void)
  2. {
  3.     write_register(0xCF);
  4.     write_data(0x00);
  5.     write_data(0xC1);
  6.     write_data(0X30);
  7.     write_register(0xED);
  8.     ... ...

  9.     write_data(0x00);
  10.     write_data(0x00);
  11.     write_data(0x00);
  12.     write_data(0xef);
  13.     write_register(0x11);
  14.     lcdc_delay(1000);
  15.     write_register(0x29);
  16. }

实现图片显示的函数为:
  1. void showimage(void)
  2. {
  3.     int i,j;
  4.     set_cursor(10,30);
  5.     gram_prepare();
  6.     for(j=0;j<50;j++)
  7.     {
  8.           set_cursor(10,30+j);
  9.           gram_prepare();
  10.                  for(i=0;i<50;i++)
  11.           {
  12.               write_data(gImage_tb[(j*50+i)*2]);
  13.               write_data(gImage_tb[(j*50+i)*2+1]);
  14.           }
  15.     }
  16. }

字符串显示的函数为:
  1. void LCD_ShowString(unsigned int x,unsigned int y,const char *p)
  2. {
  3.     while(*p!='\0')
  4.     {
  5.         if(x>LCD_W-16)

实现图4所示效果的主程序为:
  1. int main(void)
  2. {
  3.          GPIO_Configuration();
  4.          GPIO_SetOutBits(HT_GPIOC, GPIO_PIN_5);
  5.          app_tft_init();
  6.          ili9341_init();
  7.          ili9341_clear(RED);
  8.          LCD_DrawLine(WHITE ,0, 26, 239, 26);
  9.          LCD_DrawLine(WHITE,0, 296, 239, 296);
  10.          LCD_DrawRectangle(BLUE,40, 140, 160, 260);
  11.          Draw_Circle(GREEN,100,200,60);
  12.          showimage();
  13.          BACK_COLOR=RED;
  14.          POINT_COLOR=YELLOW;
  15.          LCD_ShowString(40,10,"MDM-2802 & HT32F54253");
  16.          LCD_ShowString(60,300,"BY: jinglixixi");
  17.          while (1);
  18. }

4.jpg
图4 显示效果

在与A/D数模转换相配合的情况下,可实现检测数据的波形显示,其主程序为:
  1. int main(void)
  2. {
  3.         int u;
  4.         int x,y,yp;
  5.         RETARGET_Configuration();
  6.         ADC_Configuration();
  7.         ADC_Cmd(HTCFG_ADC_PORT, ENABLE);
  8.         ADC_SoftwareStartConvCmd(HTCFG_ADC_PORT, ENABLE);
  9.         app_tft_init();
  10.         ili9341_init();
  11.         ili9341_clear(RED);
  12.         LCD_DrawLine(WHITE ,0, 26, 239, 26);
  13.         LCD_DrawLine(WHITE,0, 296, 239, 296);
  14.         BACK_COLOR=RED;
  15.         POINT_COLOR=YELLOW;
  16.         LCD_ShowString(40,10,"MDM-2802 & HT32F54253");
  17.         LCD_ShowString(6,40,"ADC: ");
  18.         LCD_ShowString(6,60,"U=");
  19.         LCD_ShowString(60,300,"BY: jinglixixi");
  20.         x=20;
  21.         y=260;
  22.         LCD_DrawLine(WHITE,20, 260, 20, 80);
  23.         LCD_DrawLine(WHITE,20, 260, 220, 260);
  24.         GUI_DispChar('.', 60, 60);
  25.         while (1)
  26.        {
  27.               if (gADC_SingleEndOfConversion)
  28.               {
  29.                         u=gPotentiometerLevel;
  30.                         GUI_DispChar('0'+u/1000, 40, 40);
  31.                         GUI_DispChar('0'+u%1000/100, 50, 40);
  32.                         GUI_DispChar('0'+u%100/10, 60, 40);
  33.                         GUI_DispChar('0'+u%10, 70, 40);
  34.                         u=3.3*u/4.095;
  35.                         GUI_DispChar('0'+u/1000, 50, 60);
  36.                         GUI_DispChar('0'+u%1000/100, 70, 60);
  37.                         yp=260-u/30;
  38.                         LCD_DrawLine(WHITE ,x, y, x+4, yp);
  39.                         y=yp;
  40.                         x=x+4;
  41.                         if(x>210)
  42.                         {
  43.                              x=20;
  44.                              y=260;
  45.                              ili9341_clear(RED);
  46.                          }
  47.               }
  48.       }
  49. }

5.jpg
图5 波形显示

6.jpg
图6 电位器调节效果

打赏榜单

eltonchang2001 打赏了 10.00 元 2022-11-02
理由:用心

eltonchang2001 发表于 2022-9-26 10:32 | 显示全部楼层
楼主的演示很棒,实时显示电位器转动後的AD采样数值,所见即所得

只是电位器在扩充板上,楼主用飞线的吗?
 楼主| jinglixixi 发表于 2022-9-27 08:19 | 显示全部楼层
eltonchang2001 发表于 2022-9-26 10:32
楼主的演示很棒,实时显示电位器转动後的AD采样数值,所见即所得

只是电位器在扩充板上,楼主用飞线的吗? ...

飞了3条线,显示屏的引脚与LCD插排的位置差异较大较难借用,只好飞线了。
backlugin 发表于 2022-10-1 16:32 | 显示全部楼层
OLED 屏不好弄吗              
xiaoyaozt 发表于 2022-10-1 16:45 | 显示全部楼层
SPI方式工作节省了不少IO口了。   
linfelix 发表于 2022-10-1 17:16 | 显示全部楼层
控制LCD 的Demo应用               
gygp 发表于 2022-10-1 17:41 | 显示全部楼层
MDM2802液晶屏在中文显示、图形绘制及图片显示方面的内容都不错。
mmbs 发表于 2022-10-1 18:21 | 显示全部楼层
HT32F54253开发板的价格贵吗
 楼主| jinglixixi 发表于 2022-10-2 16:55 | 显示全部楼层
mmbs 发表于 2022-10-1 18:21
HT32F54253开发板的价格贵吗

活动申请的板子,具体价格不太清楚。
 楼主| jinglixixi 发表于 2022-10-2 16:55 | 显示全部楼层
gygp 发表于 2022-10-1 17:41
MDM2802液晶屏在中文显示、图形绘制及图片显示方面的内容都不错。

还是比较有特点的
 楼主| jinglixixi 发表于 2022-10-2 16:56 | 显示全部楼层
xiaoyaozt 发表于 2022-10-1 16:45
SPI方式工作节省了不少IO口了。

的确是这样
 楼主| jinglixixi 发表于 2022-10-2 16:58 | 显示全部楼层

也不算太难,只是我的OLED屏尺寸太小,是个0.96寸的屏。
caigang13 发表于 2022-10-3 12:00 来自手机 | 显示全部楼层
背景色有点亮了
Henryko 发表于 2022-10-4 19:50 | 显示全部楼层
OLED 屏好不好弄?
 楼主| jinglixixi 发表于 2022-10-5 09:01 | 显示全部楼层
Henryko 发表于 2022-10-4 19:50
OLED 屏好不好弄?

不成问题
earlmax 发表于 2022-10-5 18:02 | 显示全部楼层
如何使用蓝牙无线模块在虚拟示波器显示波形
pmp 发表于 2022-10-5 19:00 | 显示全部楼层
能显示电压波形的模块?               
 楼主| jinglixixi 发表于 2022-10-6 08:49 | 显示全部楼层
earlmax 发表于 2022-10-5 18:02
如何使用蓝牙无线模块在虚拟示波器显示波形

使用串口利用透传模块将采集数据发给虚拟示波器来显示波形
 楼主| jinglixixi 发表于 2022-10-6 08:50 | 显示全部楼层
pmp 发表于 2022-10-5 19:00
能显示电压波形的模块?

不是
kmzuaz 发表于 2022-10-9 20:44 | 显示全部楼层
这个的速度怎么样         
您需要登录后才可以回帖 登录 | 注册

本版积分规则

518

主题

2934

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部