187|2

437

帖子

3

TA的资源

纯净的硅(高级)

楼主
 

【FRDM-MCXN947】LCD160160显示屏测试 [复制链接]

本帖最后由 TL-LED 于 2024-12-22 14:36 编辑

测试并口方式驱动LCD160160显示屏。

 

一、电路图部分

使用FlexIO LCD接口的引脚,模拟并口方式。

 

二、配置端口

 

配置显示屏有关的引脚

 

三、显示屏接口时序图

 

 

四、程序部分

 

4.1、UC1698Driver.c

/**
  * @File   UC1698Driver.c
  * @author   guoweilkd
  * @version   V1.1.0
  * @date   2018/05/09
  * @brief   Lcd驱动
  * 本文件Lcd为UC1698
  */

#include "main.h"

const uint8_t DataToBit2[] = {0x00,0x0f,0xf0,0xff};

void lcd_delay(uint16_t dl)
{
	uint16_t dd;
	for(dd=0;dd<dl;dd++)
	{
		__NOP();
	}
	
}


/**
  *@brief 引脚初始化
  *@param  None
  *@retval None
  */
static void LcdGpioConfig(void)
{
	init_tm160160_pins();
	
	//LCD_BLA_ON();
	LCD_CS_HIGH();
}

/**
  *@brief 写命令
  *@param  cmd 命令
  *@retval None
  */
void WriteLcdCommand(uint8_t cmd)
{
	LCD_RS_LOW();
	LCD_RD_HIGH();
	LCD_DATABUS(cmd);
	lcd_delay(10);
	LCD_WR_LOW();
	lcd_delay(1);
	LCD_WR_HIGH();
}

/**
  *@brief 写数据
  *@param  data 数据
  *@retval None
  */
void WriteLcdData(uint8_t data)
{
	LCD_RS_HIGH();
	LCD_RD_HIGH();
	LCD_DATATOBIT((data&0x03));
	lcd_delay(10);
	LCD_WR_LOW();
	lcd_delay(5);
	LCD_WR_HIGH();
}

/**
  *@brief 设置起始行
  *@param  row 行
  *@retval None
  */
void SetLcdRow(uint8_t row)
{
	WriteLcdCommand(CMD_ROWADDRH | ((row & 0xF0) >> 4));
	WriteLcdCommand(CMD_ROWADDRL | (row & 0x0F));
}

/**
  *@brief 设置起始列
  *@param  col 列地址
  *@retval None
  */
void SetLcdCol(uint8_t col)
{
	WriteLcdCommand(CMD_COLADDRH | ((col & 0x70) >> 4));
	WriteLcdCommand(CMD_COLADDRL | (col & 0x0F));
}

/**
  *@brief 开显示
  *@param  None
  *@retval None
  */
void Uc1698OpenLcdDisplay(void)
{
	LCD_CS_LOW();
	WriteLcdCommand(OPEN_LCDDISPLAY);
	LCD_CS_HIGH();
	//LCD_BLA_ON();
}

/**
  *@brief  UC1698U横向写8个点的子函数
  *@param  Data:要显示的数据
  *@retval None
  */
void Write8DotsUC1698U(uint8_t Data)
{
	LCD_DATATOBIT((Data >> 6));
	lcd_delay(10);
	LCD_WR_LOW();
	lcd_delay(5);
	LCD_WR_HIGH();
	LCD_DATATOBIT(((Data >> 4)&0x03));
	lcd_delay(10);
	
	LCD_WR_LOW();
	lcd_delay(5);
	LCD_WR_HIGH();
	LCD_DATATOBIT(((Data >> 2)&0x03));
	lcd_delay(10);
	LCD_WR_LOW();
	lcd_delay(5);
	LCD_WR_HIGH();
	LCD_DATATOBIT((Data & 0x03));
	lcd_delay(10);
	LCD_WR_LOW();
	lcd_delay(5);
	LCD_WR_HIGH();
}

/**
  *@brief 关显示
  *@param  None
  *@retval None
  */
void Uc1698CloseLcdDisplay(void)
{
	LCD_CS_LOW();
	WriteLcdCommand(CLOSE_LCDDISPLAY);
	LCD_CS_HIGH();
}

/**
  *@brief LCD初始化
  *@param  None
  *@retval None
  */
void LcdInit(void)
{
	LcdGpioConfig();
	LCD_CS_LOW();
	LCD_RES_LOW();
	SysTick_Delay_ms(100);
	LCD_RES_HIGH();
	SysTick_Delay_ms(100);
	WriteLcdCommand(0xE8|(BR&0X03));//设置偏压比1/10			
	WriteLcdCommand(0x28|(PC1&0X03));//内部电源DC/DC		
	WriteLcdCommand(0x24|(TC&0x03));//温度补偿		
	WriteLcdCommand(0x81);//设置电位命令		
	WriteLcdCommand(PM ); //值
	WriteLcdCommand(0xc0|(LC_210&0X07) ); 				
	WriteLcdCommand(0xa0|(LC_43 &0X03) ); 					
	WriteLcdCommand(0xd0|(LC_5  &0X01) ); 				
	WriteLcdCommand(0xd4|(LC_76 &0X03) );				
	WriteLcdCommand(0x84|(LC_8  &0X01) );		
	WriteLcdCommand(0xc8);	//设置N-line 			 			
	WriteLcdCommand( NIV);				 		
	WriteLcdCommand(0xd8|(CSF&0X07) );	 		
	WriteLcdCommand(0xf4);				 	
	WriteLcdCommand(WPC0);				 		
	WriteLcdCommand(0xf6);				 		
	WriteLcdCommand(WPC1);				 		
	WriteLcdCommand(0xf5);				 	 	
	WriteLcdCommand(WPP0);				 		
	WriteLcdCommand(0xf7);				 	 	
	WriteLcdCommand(WPP1); 			 	 	
	WriteLcdCommand(0xf8|((AC>>3)&0x01));	 										  
	WriteLcdCommand(0x88| (0x07&AC));	 	
	WriteLcdCommand(0xf1);			
	WriteLcdCommand(CEN);		 	
	WriteLcdCommand(OPEN_LCDDISPLAY);/* 开显示 */
	SysTick_Delay_ms(20);
	LCD_CS_HIGH();
}

/* END */

 

4.2、main.c

#include "main.h"

extern void defaultFontInit(void);

int main(void)
{
	uint8_t i;
	
	lkdColour  color;

  CLOCK_EnableClock(kCLOCK_Gpio0);
	BOARD_InitDEBUG_UARTPins();
	BOARD_PowerMode_OD();
	BOARD_InitBootClocks();
	BOARD_InitDebugConsole();

	SysTick_Init();
	init_led();
	init_key();
	LcdInit();
	defaultFontInit();	
	GuiUpdateDisplayAll();	
	color = GuiGetForecolor();  
       
	GuiRowText(0, 2,160, FONT_MID,"AI FRDM-MCXN947 Board");
	GuiHPointLine(0, 15, 160, 2, color);
	GuiRowText(0, 60,160, FONT_MID,"https://bbs.eeworld.com.cn");
	GuiRowText(0, 80,160, FONT_MID,"https://www.nxp.com.cn");
	GuiRowText(0, 100,160, FONT_MID,"ID:TLLED");
	GuiUpdateDisplayAll();
	while (1)
	{
		SysTick_Delay_ms(500);
		led_red_tog();
			
		GuiRowText(0, 2,160, FONT_MID,"TTTTTTTTTTTTTTTTTTTTT");
		GuiHPointLine(0, 15, 160, 2, color);
		GuiRowText(0, 60,160, FONT_MID,"https://bbs.eeworld.com.cn");
		GuiRowText(0, 80,160, FONT_MID,"https://www.nxp.com.cn");
		GuiRowText(0, 100,160, FONT_MID,"ID:TLLED");
		GuiUpdateDisplayAll();
		SysTick_Delay_ms(500);
		GuiRowText(0, 2,160, FONT_MID,"AI FRDM-MCXN947 Board");
		GuiHPointLine(0, 15, 160, 2, color);
		GuiRowText(0, 60,160, FONT_MID,"https://bbs.eeworld.com.cn");
		GuiRowText(0, 80,160, FONT_MID,"https://www.nxp.com.cn");
		GuiRowText(0, 100,160, FONT_MID,"ID:TLLED");
		GuiUpdateDisplayAll();
	}
}

 

4.3、程序源码

n947_prj_20241222_1.rar (6.2 MB, 下载次数: 0)
 

五、程序运行

 

下载程序后,显示屏显示如下

lcd160160

 

 

 

此帖出自NXP MCU论坛

最新回复

屏幕是自己焊接的吗   详情 回复 发表于 5 天前
点赞 关注
 

回复
举报

147

帖子

1

TA的资源

一粒金砂(高级)

沙发
 

屏幕是自己焊接的吗

此帖出自NXP MCU论坛

点评

是的,自己做的板子。  详情 回复 发表于 5 天前
 
个人签名

没用比没有强

 
 

回复

437

帖子

3

TA的资源

纯净的硅(高级)

板凳
 
电子烂人 发表于 2024-12-22 17:09 屏幕是自己焊接的吗

是的,自己做的板子。

此帖出自NXP MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/3 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表