jennyzhaojie

  • 2025-02-19
  • 发表了主题帖: 【MIKROE TFT-PROTO Board测评】 动态波形绘制篇

    除了使用显示屏显示各种数据和信息,还可以使用它的图形绘制功能来实现采集数据的波形绘制。 借助N32A455开发板的A/D数据采集功能,,将它与显示屏相结合即可实现动态波形的绘制。 利用板载的电位器,可提供测试的模拟信号,其所连接的引脚为PB15,见图1所示。         图1 测试资源   进行ADC初始化的函数为:   void ADC_Initial(ADC_Module* ADCx) { ADC_InitStructure.WorkMode = ADC_WORKMODE_INDEPENDENT; ADC_InitStructure.MultiChEn = DISABLE; ADC_InitStructure.ContinueConvEn = DISABLE; ADC_InitStructure.ExtTrigSelect = ADC_EXT_TRIGCONV_NONE; ADC_InitStructure.DatAlign = ADC_DAT_ALIGN_R; ADC_InitStructure.ChsNumber = 1; ADC_Init(ADCx, &ADC_InitStructure); ADC_Enable(ADCx, ENABLE); while(ADC_GetFlagStatusNew(ADCx,ADC_FLAG_RDY) == RESET); ADC_StartCalibration(ADCx); while (ADC_GetCalibrationStatus(ADCx)); } 读去检测值的函数为: uint16_t ADC_GetData(ADC_Module* ADCx, uint8_t ADC_Channel) { uint16_t dat; ADC_ConfigRegularChannel(ADCx, ADC_Channel, 1, ADC_SAMP_TIME_239CYCLES5); ADC_EnableSoftwareStartConv(ADCx, ENABLE); while(ADC_GetFlagStatus(ADCx, ADC_FLAG_ENDC)==0); ADC_ClearFlag(ADCx, ADC_FLAG_ENDC); ADC_ClearFlag(ADCx, ADC_FLAG_STR); dat=ADC_GetDat(ADCx); return dat; } 实现直线绘制的函数为: void LCD_DrawLine(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2) { unsigned int t; int xerr=0,yerr=0,delta_x,delta_y,distance; int incx,incy,uRow,uCol; delta_x=x2-x1; delta_y=y2-y1; uRow=x1; uCol=y1; if(delta_x>0) incx=1; else if(delta_x==0) incx=0; else { incx=-1; delta_x=-delta_x; } if(delta_y>0) incy=1; else if(delta_y==0) incy=0; else { incy=-1; delta_y=-delta_y; } if( delta_x>delta_y) distance=delta_x; else distance=delta_y; for(t=0;t<=distance+1;t++ ) { ili9341_draw_pixel(POINT_COLOR, uRow, uCol); xerr+=delta_x ; yerr+=delta_y ; if(xerr>distance) { xerr-=distance; uRow+=incx; } if(yerr>distance) { yerr-=distance; uCol+=incy; } } } 实现字符转向显示的函数为: void LCD_ShowCharh(unsigned int x,unsigned int y,char num,char mode) { char temp; char pos,t; unsigned int y0=y; num=num-' '; Address_set(x,y,x+8-1,y+16-1); if(!mode) { for(pos=0;pos<16;pos++) { temp=asc2_1608[(unsigned int)num*16+pos]; for(t=0;t<8;t++) { if(temp&0x01) ili9341_draw_pixel(RED, x, y); else ili9341_draw_pixel(WHITE, x, y); temp>>=1; y++; } y=y0; x--; } } else { for(pos=0;pos<16;pos++) { temp=asc2_1608[(unsigned int)num*16+pos]; for(t=0;t<8;t++) { if(temp&0x01) ili9341_draw_pixel(RED,x+pos, y-t); temp>>=1; } } } } 对ADC1通道6采集数据并绘制波形曲线的主程序为: int main(void) { uint16_t u; uint16_t sj,sp,k; uint8_t i=0; LCD_config(); RCC_Configuration(); GPIO_Configuration(); ADC_Initial(ADC1); TFT_Init(); LCD_Clear(WHITE); BACK_COLOR=WHITE; POINT_COLOR=RED; LCD_DrawLine(10, 10, 10, 310); LCD_DrawLine(10, 10, 230, 10); sp=0; i=1; while (1) { ADC1ConvertedValue[0]=ADC_GetData(ADC1,ADC1_Channel_06_PC0); V=ADC1ConvertedValue[0]; LCD_ShowNumh(200,268,V,4); V=V*3300/4096; LCD_ShowNumh(180,268,V,4); if((V<3300)&&(V>0)) { sj=V/16; } else { sj=200; } POINT_COLOR=BLUE; LCD_DrawLine(10+sp, 10+4*(i-1), 10+sj, 10+4*(i)); POINT_COLOR=RED; sp=sj; i=i+1; if(i>74) { ili9341_clear(WHITE); sp=0; i=1; LCD_ShowStringh(200,230,"Ch6:"); LCD_ShowStringh(180,230,"Ch6: mV"); LCD_DrawLine(10, 10, 10, 310); LCD_DrawLine(10, 10, 230, 10); } Delay(0X8FFFFF); } } 经程序的编译与下载,将电位器输出引脚PB15与读取引脚PC0相连即可产生模拟信号的变化,其测试效果如图2至图4所示。   图2 数据显示     图3 波形绘制(稳定电压)   图4 波形绘制(电位上升)

  • 2025-02-14
  • 回复了主题帖: 【MIKROE TFT-PROTO Board测评】电子时钟计时篇

    okhxyyo 发表于 2025-2-13 15:28 不错不错。谢谢分享~~这个是不是有模板啊。好像看另外一个网友也分享过差不多的, 哈哈,那应该是在新年花灯中。

  • 2025-02-13
  • 发表了主题帖: 【MIKROE TFT-PROTO Board测评】电子时钟计时篇

    在实现了屏幕的显示功能后,还用它来干些什么呢? 可借助N32A455开发板的RTC计时功能与显示屏相结合来制作一个电子时钟,其实现的程序如下。 RTC配置函数为: void RTC_PrescalerConfig(void) { RTC_InitStructure.RTC_AsynchPrediv = AsynchPrediv; RTC_InitStructure.RTC_SynchPrediv = SynchPrediv; RTC_InitStructure.RTC_HourFormat = RTC_24HOUR_FORMAT; if (RTC_Init(&RTC_InitStructure) == ERROR) { log_info("\r\n //******* RTC Prescaler Config failed **********// \r\n"); } } 相应的时间设置函数为: ErrorStatus RTC_TimeRegulate(void) { uint32_t tmp_hh = 0xFF, tmp_mm = 0xFF, tmp_ss = 0xFF; log_info("\n\r //==============Time Settings=================// \n\r"); RTC_TimeStructure.H12 = RTC_TimeDefault.H12; log_info("\n\r Please Set Hours \n\r"); tmp_hh = RTC_TimeDefault.Hours; if (tmp_hh == 0xff) { return ERROR; } else { RTC_TimeStructure.Hours = tmp_hh; } log_info(": %0.2d\n\r", tmp_hh); log_info("\n\r Please Set Minutes \n\r"); tmp_mm = RTC_TimeDefault.Minutes; if (tmp_mm == 0xff) { return ERROR; } else { RTC_TimeStructure.Minutes = tmp_mm; } log_info(": %0.2d\n\r", tmp_mm); log_info("\n\r Please Set Seconds \n\r"); tmp_ss = RTC_TimeDefault.Seconds; if (tmp_ss == 0xff) { return ERROR; } else { RTC_TimeStructure.Seconds = tmp_ss; } log_info(": %0.2d\n\r", tmp_ss); if (RTC_ConfigTime(RTC_FORMAT_BIN, &RTC_TimeStructure) == ERROR) { log_info("\n\r>> !! RTC Set Time failed. !! <<\n\r"); return ERROR; } else { log_info("\n\r>> !! RTC Set Time success. !! <<\n\r"); RTC_TimeShow(); return SUCCESS; } }   以秒中断来唤醒时间显示的函数为: void EXTI_PA7_Configuration(void) { GPIO_InitType GPIO_InitStructure; EXTI_InitType EXTI_InitStructure; NVIC_InitType NVIC_InitStructure; GPIO_InitStruct(&GPIO_InitStructure); RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA | RCC_APB2_PERIPH_AFIO, ENABLE); GPIO_InitStructure.Pin = GPIO_PIN_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure); GPIO_ConfigEXTILine(GPIOA_PORT_SOURCE, GPIO_PIN_SOURCE7); EXTI_InitStructure.EXTI_Line = EXTI_LINE7; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_InitPeripheral(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x05; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } 中断处理函数的内容为: void EXTI9_5_IRQHandler(void) { if (EXTI_GetITStatus(EXTI_LINE7) != RESET) { RTC_DateShow(); RTC_TimeShow(); EXTI_ClrITPendBit(EXTI_LINE7); } } 实现时钟显示效果的函数为: void RTC_TimeShow(void) { RTC_GetTime(RTC_FORMAT_BIN, &RTC_TimeStructure); (void)RTC->DATE; LCD_ShowNum(16,46,RTC_TimeStructure.Hours,2); LCD_ShowChar(32,46,':',0); LCD_ShowNum(40,46,RTC_TimeStructure.Minutes,2); LCD_ShowChar(56,46,':',0); LCD_ShowNum(64,46,RTC_TimeStructure.Seconds,2); } 实现电子时钟计时效果的主程序为: int main(void) { LCD_config(); LCD_init(); showimage(0,0); POINT_COLOR=RED; BACK_COLOR=WHITE; LCD_ShowString(16,20,"2025-2-2"); LCD_ShowString(16,46," : :"); log_init(); log_info("RTC Init"); RTC_DateAndTimeDefaultVale(); RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_PWR | RCC_APB1_PERIPH_BKP, ENABLE); PWR_BackupAccessEnable(ENABLE); if (USER_WRITE_BKP_DAT1_DATA != BKP_ReadBkpData(BKP_DAT1) ) { if(SUCCESS==RTC_CLKSourceConfig(RTC_CLK_SRC_TYPE_LSE, true, false)) { RTC_PrescalerConfig(); log_info("\r\n RTC configured...."); RTC_DateRegulate(); RTC_TimeRegulate(); BKP_WriteBkpData(BKP_DAT1, USER_WRITE_BKP_DAT1_DATA); log_info("\r\n RTC Init Success\r\n"); } else { log_info("\r\n RTC Init Faile\r\n"); } } EXTI_PA7_Configuration(); EXTI_ClrITPendBit(EXTI_LINE7); RTC_ConfigCalibOutput(RTC_CALIB_OUTPUT_1HZ); RTC_ConfigOutputType(RTC_OUTPUT_PUSHPULL); RTC_EnableCalibOutput(ENABLE); log_info("\r\n RTC Config end...."); while (1); } 经程序的编译和下载,其显示效果如下图所示。   显示效果图   视频效果: https://bbs.eeworld.com.cn/thread-1305513-1-1.html  

  • 2025-02-10
  • 发表了主题帖: 【MIKROE TFT-PROTO Board测评】信息显示篇

    本帖最后由 jennyzhaojie 于 2025-2-10 00:25 编辑 在完成显示驱动的基础上,提供添加字符库及字符显示函数即可实现信息的显示。 实现字符显示的函数为: void LCD_ShowChar(unsigned int x,unsigned int y,char num,char mode) { char temp; char pos,t; unsigned int x0=x; unsigned int colortemp=POINT_COLOR; num=num-' '; Address_set(x,y,x+8-1,y+16-1); if(!mode) { for(pos=0;pos<16;pos++) { temp=asc2_1608[(unsigned int)num*16+pos]; for(t=0;t<8;t++) { if(temp&0x01) ili9341_draw_pixel(POINT_COLOR, x, y); else ili9341_draw_pixel(BACK_COLOR, x, y); temp>>=1; x++; } x=x0; y++; } } else { for(pos=0;pos<16;pos++) { temp=asc2_1608[(unsigned int)num*16+pos]; for(t=0;t<8;t++) { temp>>=1; } } } POINT_COLOR=colortemp; } 为便于信息的显示,所配置的字符串显示函数为: void LCD_ShowString(unsigned int x,unsigned int y,const char *p) { while(*p!='\0') { LCD_ShowChar(x,y,*p,0); x+=8; p++; } } 为实现数据的显示,所配置的数据显示函数为: void LCD_ShowNum(unsigned int x,unsigned int y,unsigned int num,char len) { char t,temp; char enshow=0; num=(unsigned int)num; for(t=0;t<len;t++) { temp=(num/mypow(10,len-t-1))%10; if(enshow==0&&t<(len-1)) { if(temp==0) { LCD_ShowChar(x+8*t,y,' ',0); continue; } else enshow=1; } LCD_ShowChar(x+8*t,y,temp+48,0); } } 实现图片显示的函数为: void showimage(unsigned int x,unsigned int y) { unsigned int i,j; uint32_t k; k=0; set_cursor(x,y); gram_prepare(); for(i=0;i<320;i++) { for(j=0;j<240;j++) { write_data(gImage_l[k*2]); write_data(gImage_l[k*2+1]); k++; } } } 实现信息显示的测试主程序为: int main(void) { LCD_config(); ili9341_init(); ili9341_clear(RED); POINT_COLOR=WHITE; BACK_COLOR=RED; LCD_DrawLine(0, 40, 239,40); LCD_DrawLine(0, 292, 239,292); showhanzi(45,100,0); LCD_ShowString(20,16,"N32A455"); LCD_ShowString(82,16,"& MIKROE TFT "); LCD_ShowString(20,295,"2025-2-2"); POINT_COLOR=GREEN; LCD_ShowNum(180,16,123,3); while (1); } 经程序的编译和下载,其测试效果如图1和图2所示。     图1测试效果1        图2测试效果2

  • 2025-02-07
  • 回复了主题帖: 【MIKROE TFT-PROTO Board测评】 多屏贺新年的实现

    Jacktang 发表于 2025-2-6 07:33 喜庆,全是福气,,, 大家都福气满满

  • 2025-02-06
  • 回复了主题帖: 【MIKROE TFT-PROTO Board测评】 多屏贺新年的实现

    秦天qintian0303 发表于 2025-2-5 20:42 全都是SPI接口吗?    没错,全SPI !

  • 回复了主题帖: 【新年花灯】时间催人奋进

    秦天qintian0303 发表于 2025-2-5 21:14 这主控用的什么,估计还是有SD开还能多现实点,要不基本上一张全彩就占满了 说的没错,多张图显示绝对要用FLASH 存储器或SD卡,相对讲还是用SD卡合算。

  • 回复了主题帖: 【新年花灯】多屏贺新年

    秦天qintian0303 发表于 2025-2-5 21:09 SPI驱动大屏还是有点费劲的   的确

  • 2025-02-05
  • 发表了主题帖: 【MIKROE TFT-PROTO Board测评】 多屏贺新年的实现

    在探索MIKROE TFT-PROTO Board的使用过程中,参照了其它显示屏的驱动程序,为此掌握了多种显示屏的驱动方法,恰逢春节期间,就将它们组合在一起实现了多屏贺新年的效果。 使用3个显示屏的基本特点是都是以SPI方式工作,显示的分辨率也恰是320*240像素点,这样在准备显示图片和文件数据时提供了极大的便利。 此外,由于显示的图片比较消耗存储空间,故借助了TF卡和在其基础上建立的文件系统来进行存储。 开发板采用的是N32A455开发板,其最小系统如图1所示,其涉及的 TF卡接口如图2所示。              图1 最小系统   图2 TF卡接口   3款显示屏的引脚连接关系如下: 1)绿屏 该显示屏的型号是MI0283QT-9A,其引脚连接关系为: CS   --PE2 MOSI --PE4 CLK  --PE3   BLC  --PE6   2)蓝屏 该显示屏的型号是MDM_2802,其引脚连接关系为: CS   --PE10 MOSI --PE9 CLK  --PE8     3)红屏 该显示屏的控制芯片是ILI9341,其引脚连接关系为: CS   --PE13 MOSI --PE12 CLK  --PE11   DC   --PE14 RST  --PE15   在加挂文件系统的情况下,实现多屏显示函数为: void PHOTO(void) { FATFS FatFs; FIL File; UINT br = 0, bw = 0; FRESULT Result; uint8_t c; uint16_t i,j,k; uint8_t Buffer[200]; memset(Buffer, 0, sizeof(Buffer)); Result = f_mount(&FatFs, "0:", 1); for(k =0; k< 11; k++) { if((k%3)==0) Result = f_open(&File, "0:/a.bin", FA_READ); if((k%3)==1) Result = f_open(&File, "0:/b.bin", FA_READ); if((k%3)==2) Result = f_open(&File, "0:/c.bin", FA_READ); if((k%4)==0) { set_cursor(0x00, 0x0000); gram_prepare(); for(j =0; j< 768; j++) { Result = f_read(&File, Buffer, 200, &br); for(i= 0; i < 100; i++) { c=Buffer[2*i]; write_data(c); c=Buffer[2*i+1]; write_data(c); } } } if((k%4)==1) { set_cursor1(0,0); gram_prepare1(); for(j =0; j< 768; j++) { Result = f_read(&File, Buffer, 200, &br); for(i= 0; i < 100; i++) { c=Buffer[2*i]; write_data1(c); c=Buffer[2*i+1]; write_data1(c); } } } if((k%4)==2) { Address_set(0,0,239,319); for(j =0; j< 768; j++) { Result = f_read(&File, Buffer, 200, &br); for(i= 0; i < 100; i++) { c=Buffer[2*i]; LCD_WR_DATA8(c); c=Buffer[2*i+1]; LCD_WR_DATA8(c); } } } f_close(&File); for(i= 0; i < 100; i++) { delay1(); } } } 实现显示效果的主程序为: int main(void) {   uint32_t testResult = 0;   LCD_config();   MI0283QT_init();   MDM2802_init();   ILI9341_Init();   SD_Init(0, 3, 4);   PHOTO();   while (1); } 经程序的编译和下载,其测试效果如图3所示,说明符合预期要求。 如果在TF卡中存放更多的图片文件,则会显示出更丰富的内容,也会更加地体现出TF卡存储的优越性!   图3测试效果   其实,是开发板上的电源引脚已消耗的差不多了,外加怕开发板上的电源负担过重,原计划是再配上3个I2C接口的OLED屏,以文字动画的方式来发送祝福的话语,进一步烘托节日的氛围,大家就脑补一下算是有了吧,哈哈再一次祝大家春节快乐,吃的好、玩的好,回头赚得收入也更好!

  • 回复了主题帖: 【新年花灯】多屏贺新年

    wangerxian 发表于 2025-2-5 09:29 是山西阳台上的花灯吗~ 可能撞衫了,但确保没上寨,哈哈!

  • 回复了主题帖: 【新年花灯】多屏贺新年

    okhxyyo 发表于 2025-2-5 08:52 看着真不错。有没有原理图和代码分享上来呀 回头分享一下

  • 2025-02-04
  • 发表了主题帖: 【新年花灯】多屏贺新年

    原打算在前面的新年花灯视频基础上再添加些修改,不曾想已经不能再编辑了,只好重发以供新的,希望大家喜欢,并位大家向上新年的祝福! 它式采用一块开发板同时驱动3款不同型号的显示屏,并借助TF卡来存储多幅图片以实现切换的效果,如何将它们嵌到花灯中,就有些类似转动的效果了。 [localvideo]83bf4ad7be3e44c50c6bb0ce0b430d07[/localvideo]  

  • 2025-02-03
  • 回复了主题帖: 【新年花灯】时间催人奋进

    lugl4313820 发表于 2025-2-2 09:25 这个花灯,有点创意!是不是再搞个呼吸灯到页面里。这才有“灯”的创意! 好的,回头再补充一下。

  • 回复了主题帖: 【新年花灯】时间催人奋进

    majip 发表于 2025-2-3 09:11 这个花灯,确实有点创意!是不是再搞个呼吸灯到页面里。这才有“灯”的创意! 好的,后面再整一下作补充。

  • 2025-02-02
  • 回复了主题帖: 【新年花灯】时间催人奋进

    jobszheng5 发表于 2025-2-1 23:51 蛇年快乐 蛇年吉祥

  • 2025-02-01
  • 发表了主题帖: 【新年花灯】时间催人奋进

    新年新气象,新年新起点,时间分秒向前,催人又将踏上新的前行道路。 [localvideo]5267db52a0f28bb931ab8dba6a120983[/localvideo]  

  • 回复了主题帖: 【MIKROE TFT-PROTO Board测评】显示驱动篇

    本帖最后由 jennyzhaojie 于 2025-2-1 11:38 编辑 秦天qintian0303 发表于 2025-2-1 08:11 MIKROE TFT-PROTO Board是哪家的主控啊,引脚不少 主控芯片是ILI9341,这款屏主打的是工作模式多,目前常见的SPI屏多是国产的简化板,特点是引脚比较少、易用、价廉。

  • 发表了主题帖: 【MIKROE TFT-PROTO Board测评】显示驱动篇

    本帖最后由 jennyzhaojie 于 2025-2-1 11:45 编辑 在广泛收集资料的情况下,对MIKROE TFT-PROTO Board的使用终于有所突破,初步实现了该显示屏的显示驱动。 该显示板是使用3.3V电源,其背光LED需要一个5欧的电阻来限流。使用可两个10欧电阻并联得到。 该显示板所提供的接口可支持以16位、8位、18位、9位或SPI模式来驱动。 在大多数情况下,出于不想过多占用I/O资源的原因,多是采用SPI模式驱动。 模式的设置是通过IMx引脚来实现,即IM0、IM1、IM3接GND,IM2接3.3V。 在该模式下,只需要三个SPI信号引脚及一个CS片选和一个复位信号,总共5个引脚。 其中,RST复位信号是由开发板的复位引脚提供,至于WR和FMARK信号则未使用,其接口电路基本如图1所示,个别之处有所调整。 图1 接口电路   该显示屏的引脚排列如图2所示,其内部电路如图3所示。     图2 引脚排列     图3 内部电路   为驱动该显示屏,是以N32A455开发板来驱动其实现显示。 该显示屏与开发板的连接关系为: CS   --PE2 MOSI --PE4 CLK  --PE3 BLC  --PE6 RST  ---RST   对所用引脚的配置函数为: void LCD_config(void) { GPIO_InitType GPIO_InitStructure; RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOE, ENABLE); GPIO_InitStructure.Pin =GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitPeripheral(GPIOE, &GPIO_InitStructure); } 以模拟SPI方式方式字节数据的函数为: void send_byte(uint8_t data) { uint8_t count; for(count = 0; count < 8; count++) { CLR_CLK(); delay2(); if(data & 0x80) { SET_SDA(); } else { CLR_SDA(); } delay2(); data <<= 1; SET_CLK(); delay2(); } } 对显示屏的初始化函数为: void ili9341_init(void) { write_register(0x01); lcdc_delay(1000); write_register(0x28); write_register(0xCF); write_data(0x00); write_data(0x83); write_data(0X30); write_register(0xED); write_data(0x64); write_data(0x03); write_data(0X12); write_data(0X81); write_register(0xE8); write_data(0x85); write_data(0x01); write_data(0x79); write_register(0xCB); write_data(0x39); write_data(0x2C); write_data(0x00); write_data(0x34); write_data(0x02); write_register(0xF7); write_data(0x20); write_register(0xEA); write_data(0x00); write_data(0x00); write_register(0xC0); write_data(0x26); write_register(0xC1); write_data(0x11); write_register(0xC5); write_data(0x35); write_data(0x3E); write_register(0xC7); write_data(0XBE); write_register(0x36); write_data(0x48); write_register(0x3A); write_data(0x55); write_register(0xB1); write_data(0x00); write_data(0x1B); write_register(0xF2); write_data(0x08); write_register(0x26); write_data(0x01); write_register(0xE0); write_data(0x1F); write_data(0x1A); write_data(0x18); write_data(0x0A); write_data(0x0F); write_data(0x06); write_data(0x45); write_data(0X87); write_data(0x32); write_data(0x0A); write_data(0x07); write_data(0x02); write_data(0x07); write_data(0x05); write_data(0x00); write_register(0XE1); write_data(0x00); write_data(0x25); write_data(0x27); write_data(0x05); write_data(0x10); write_data(0x09); write_data(0x3A); write_data(0x78); write_data(0x4D); write_data(0x05); write_data(0x18); write_data(0x0D); write_data(0x38); write_data(0x3A); write_data(0x1F); write_register(0x2A); write_data(0x00); write_data(0x00); write_data(0x00); write_data(0xEF); write_register(0x2B); write_data(0x00); write_data(0x00); write_data(0x01); write_data(0x3F); write_register(0xB7); write_data(0x07); write_register(0xB6); write_data(0x0A); write_data(0x82); write_data(0x27); write_data(0x00); write_register(0x11); lcdc_delay(1000); write_register(0x29); lcdc_delay(1000); write_register(0x2C); BLC_HIGH(); } 以色彩清除屏幕的函数为: void ili9341_clear(int c) { uint32_t index=0; set_cursor(0x00, 0x0000); gram_prepare(); for(index = 0; index < (320*240); index++) { write_data(c >> 8); write_data(c); } }  进行驱动测试的主程序为: int main(void) { LCD_config(); ili9341_init(); ili9341_clear(RED); while (1); } 经程序的编译和下载,其测试效果如图4所示,说明驱动成功!   图4 测试效果   新年啦,还是献上一份年味浓浓的画面来增添喜悦的氛围吧!祝大家社区越办越好,大家万事如意!  

  • 2025-01-30
  • 回复了主题帖: 【MCXN947开发板测评】人脸检测的方法探索

    freebsder 发表于 2025-1-24 18:02 能有多少帧? 推算可达40帧左右吧

  • 2025-01-24
  • 回复了主题帖: 【MCXN947开发板测评】人脸检测的方法探索

    秦天qintian0303 发表于 2025-1-23 22:47 这个有现成的demo吗?   有参考性的示例

最近访客

< 1/3 >

统计信息

已有71人来访过

  • 芯积分:375
  • 好友:--
  • 主题:51
  • 回复:99

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言