stm32 MCU液晶TM1622 HT1622驱动调试

编程入门 行业动态 更新时间:2024-10-20 03:12:42

stm32 MCU<a href=https://www.elefans.com/category/jswz/34/1766544.html style=液晶TM1622 HT1622驱动调试"/>

stm32 MCU液晶TM1622 HT1622驱动调试

本文使用的例程软件工程代码如下

(1条消息) stm32MCU液晶TM1622HT1622驱动调试,源代码,实际项目使用资源-CSDN文库

HT1622/HT1622G/TM1622是一款常用的LCD驱动芯片

TM1622/HT1622厂家不一样,但是芯片功能基本上一直,硬件上基本上可以做到pin2pin兼容,这个需要根据自己的做微调整

以TM1622的资料为例,做如下说明

TM1622是256点内存映象和多功能的LCD驱动专用芯片,TM1622的软件配置特性使它适用于多种LCD应用 场合,包括:LCD模块和显示子系统。用于连接主控制器和TM1622的管脚只有4或5条,TM1622还有一个节电命 令用于降低系统功耗。本产品性能优良、质量可靠。

功能特点

 工作电压2.4~ 5.2V

 内置32 KHz RC振荡器

 可外接32KHz频率源作为时钟输入

 内置时基频率源

 内置蜂鸣器输出驱动,有两种输出频率可选(2 KHz或者4 KHz)

 内置节电模式,可用于减少功耗

 内置时基发生器和看门狗(WDT)输出

 内置32ⅹ8位显示寄存器,32个SEG,8个COM输出驱动, 1/4偏压

 四线串行接口  提供VLCD管脚用于调整LCD操作电压

 三种数据访问模式

 八个时基/看门狗定时器时钟源

 数据模式和命令模式指令

 四种封装形式可选:LQFP44(长脚),LQFP44(短脚),LQFP52,LQFP64 内部结构框图

MCU典型接法

 写数据时序图,这里不需要读取,也不用看读数据的时序

 软件命令列表

需要详细的,手册,可以下载一份数据手册看看

 实际项目原理图设计如下

这里有点复杂,就是要支持两款液晶,一个大液晶一个小液晶,其中YJ1是焊接大液晶的接口,YJ2是焊接小液晶的接口

下图1处,是液晶的背光灯开关

2处是MCU控制液晶的接口,其中SPI_RD用0欧姆的电阻连接,可以考虑不需要读取也液晶数据,可以不焊接该电阻,空余出来一个MCU的管脚

3处是电平转换后的TM1622的控制管脚

MCU的控制管脚设计如下

实际项目使用的控制管脚设计比较多,这里比较简单,提取出来对应TM1622的控制管脚

对应上述原理图,软件实现的控制管脚接口,如下所示


#define LCD_CS_L          {PBout(7) = 0;}
#define LCD_CS_H          {PBout(7) = 1;}#define LCD_RD_L          {PBout(6) = 0;}  
#define LCD_RD_H          {PBout(6) = 1;}  #define LCD_WR_L          {PBout(8) = 0;}      
#define LCD_WR_H          {PBout(8) = 1;}     #define LCD_DAT_L         {PBout(9) = 0;}      
#define LCD_DAT_H         {PBout(9) = 1;} #define LCD_BLK_EN_ON     {PBout(13) = 0;}      
#define LCD_BLK_EN_OFF    {PBout(13) = 1;} 

stm32cube的关键设计如下

IO的配置,PB6/PB7/PB8/PB9/PB13配置为输出模式

其中需要注意的是,PB6连接的tm1622的数据读取管脚,这个管脚实际上没有使用,配置成输入输出都无所谓 

时钟的配置

时钟采用外部时钟8M,倍频到72M供系统使用 

系统主函数,主要是添加了initHT1622()测试


/*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */initHT1622();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

TM1622的写函数,这些函数是根据手册写时序图调试出来的

当然也和MCU的时钟有关,这里配置为72MHZ,如果需要移植该驱动,则需要根据自己的系统时钟修改如下函数的延时,当然也需要修改控制管脚

void Write_HT1622_Byte(unsigned char Data,unsigned char length)
{unsigned char i,Temp=0x80;for (i=0;i<length;i++){if (Data&Temp){LCD_DAT_H;//数据线置1}else{LCD_DAT_L;//数据线置0}Temp>>=1; //准备下一位LCD_WR_L; //“写”时钟置0        __NOP();__NOP();__NOP();LCD_WR_H; //“写”时钟置1}
}

液晶初始化

void initHT1622(void)
{uint8_t i;//InitLcdPin();// for(i = 0 ;i < 100; i++){Write_HT1622_Command(SYSDIS);//关闭系统振荡器和LCD驱动Write_HT1622_Command(SYSEN); //打开系统振荡器Write_HT1622_Command(LCDOFF);//关闭LCD显示Write_HT1622_Command(LCDON); //打开LCD显示}//Write_HT1622_Command(0x01);// Write_HT1622_Command(0x29);//Write_HT1622_Command(0x18);//Write_HT1622_Command(0x01);//Write_HT1622_Command(0x03);//清屏for(i = 0; i < 64; i++){Write_HT1622_Data(i,0);}}

本文使用的例程软件工程代码如下

(1条消息) stm32MCU液晶TM1622HT1622驱动调试,源代码,实际项目使用资源-CSDN文库

更多推荐

stm32 MCU液晶TM1622 HT1622驱动调试

本文发布于:2024-02-26 11:23:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1702304.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:液晶   MCU

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!