本文使用的例程軟件工程代碼如下
(1條消息) stm32MCU液晶TM1622HT1622驅(qū)動調(diào)試,源代碼,實際項目使用資源-CSDN文庫文章來源地址http://www.zghlxwxcb.cn/news/detail-640758.html
HT1622/HT1622G/TM1622是一款常用的LCD驅(qū)動芯片
TM1622/HT1622廠家不一樣,但是芯片功能基本上一直,硬件上基本上可以做到pin2pin兼容,這個需要根據(jù)自己的做微調(diào)整
以TM1622的資料為例,做如下說明
TM1622是256點內(nèi)存映象和多功能的LCD驅(qū)動專用芯片,TM1622的軟件配置特性使它適用于多種LCD應(yīng)用 場合,包括:LCD模塊和顯示子系統(tǒng)。用于連接主控制器和TM1622的管腳只有4或5條,TM1622還有一個節(jié)電命 令用于降低系統(tǒng)功耗。本產(chǎn)品性能優(yōu)良、質(zhì)量可靠。
功能特點
? 工作電壓2.4~ 5.2V
? 內(nèi)置32 KHz RC振蕩器
? 可外接32KHz頻率源作為時鐘輸入
? 內(nèi)置時基頻率源
? 內(nèi)置蜂鳴器輸出驅(qū)動,有兩種輸出頻率可選(2 KHz或者4 KHz)
? 內(nèi)置節(jié)電模式,可用于減少功耗
? 內(nèi)置時基發(fā)生器和看門狗(WDT)輸出
? 內(nèi)置32ⅹ8位顯示寄存器,32個SEG,8個COM輸出驅(qū)動, 1/4偏壓
? 四線串行接口 ? 提供VLCD管腳用于調(diào)整LCD操作電壓
? 三種數(shù)據(jù)訪問模式
? 八個時基/看門狗定時器時鐘源
? 數(shù)據(jù)模式和命令模式指令
? 四種封裝形式可選:LQFP44(長腳),LQFP44(短腳),LQFP52,LQFP64 內(nèi)部結(jié)構(gòu)框圖
MCU典型接法
?寫數(shù)據(jù)時序圖,這里不需要讀取,也不用看讀數(shù)據(jù)的時序
?軟件命令列表
需要詳細(xì)的,手冊,可以下載一份數(shù)據(jù)手冊看看
?實際項目原理圖設(shè)計如下
這里有點復(fù)雜,就是要支持兩款液晶,一個大液晶一個小液晶,其中YJ1是焊接大液晶的接口,YJ2是焊接小液晶的接口
下圖1處,是液晶的背光燈開關(guān)
2處是MCU控制液晶的接口,其中SPI_RD用0歐姆的電阻連接,可以考慮不需要讀取也液晶數(shù)據(jù),可以不焊接該電阻,空余出來一個MCU的管腳
3處是電平轉(zhuǎn)換后的TM1622的控制管腳
MCU的控制管腳設(shè)計如下
實際項目使用的控制管腳設(shè)計比較多,這里比較簡單,提取出來對應(yīng)TM1622的控制管腳
對應(yīng)上述原理圖,軟件實現(xiàn)的控制管腳接口,如下所示
#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的關(guān)鍵設(shè)計如下
IO的配置,PB6/PB7/PB8/PB9/PB13配置為輸出模式
其中需要注意的是,PB6連接的tm1622的數(shù)據(jù)讀取管腳,這個管腳實際上沒有使用,配置成輸入輸出都無所謂?
時鐘的配置
時鐘采用外部時鐘8M,倍頻到72M供系統(tǒng)使用?
系統(tǒng)主函數(shù),主要是添加了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的寫函數(shù),這些函數(shù)是根據(jù)手冊寫時序圖調(diào)試出來的
當(dāng)然也和MCU的時鐘有關(guān),這里配置為72MHZ,如果需要移植該驅(qū)動,則需要根據(jù)自己的系統(tǒng)時鐘修改如下函數(shù)的延時,當(dāng)然也需要修改控制管腳
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;//數(shù)據(jù)線置1
}
else
{
LCD_DAT_L;//數(shù)據(jù)線置0
}
Temp>>=1; //準(zhǔn)備下一位
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);//關(guān)閉系統(tǒng)振蕩器和LCD驅(qū)動
Write_HT1622_Command(SYSEN); //打開系統(tǒng)振蕩器
Write_HT1622_Command(LCDOFF);//關(guān)閉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);
}
}
本文使用的例程軟件工程代碼如下文章來源:http://www.zghlxwxcb.cn/news/detail-640758.html
(1條消息) stm32MCU液晶TM1622HT1622驅(qū)動調(diào)試,源代碼,實際項目使用資源-CSDN文庫
到了這里,關(guān)于stm32 MCU液晶TM1622 HT1622驅(qū)動調(diào)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!