日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LCD1602字符串显示(STM32F103)

發(fā)布時間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LCD1602字符串显示(STM32F103) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、概述

1602液晶為5V電壓驅(qū)動,帶背光,可顯示兩行,每行16個字符,不可以顯示漢字,內(nèi)置1128個字符的ASCII字符集,并行通信方式。本驗是通過STM32F103C8T6最小系統(tǒng)驅(qū)動液晶顯示一串字符。

二、實驗材料

1、STM32F103C8T6最小系統(tǒng)
2、LCD1602液晶
3、杜邦線若干

三、基本操作時序

狀態(tài)輸入輸出
讀狀態(tài)RS=L,RW=H,E=HD0-D7=狀態(tài)
寫指令RS=L,RW=L,D0-D7=指令碼,E=高脈沖
讀數(shù)據(jù)RS=H,RW=H,E=HD0-D7=數(shù)據(jù)
寫數(shù)據(jù)RS=H,RE=L,D0-D7=數(shù)據(jù),E=高脈沖

四、硬件連接

五、程序代碼

1、GPIO初始化

void Lcd1602_Pin_Init(void) {GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_OD;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 |GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStruct); }

2、LCD1602初始化

void Lcd1602_Init(void) {Lcd1602_Pin_Init();delay_ms(15);Lcd1602_Write_Cmd(0X38);Lcd1602_Write_Cmd(0X0C);//開顯示不顯示光標(biāo)Lcd1602_Write_Cmd(0X06);//寫一個指針加1Lcd1602_Write_Cmd(0X01);//清屏Lcd1602_Write_Cmd(0X80);//設(shè)置數(shù)據(jù)指針起點 }

3、檢測忙碌狀態(tài)

void Lcd1602_Check_Busy(void) {u8 signal;LCD_RS = 0;LCD_RW = 1;do{LCD_EN = 1;signal = LCD_BUSY;LCD_EN = 0;}while(signal); }

4、寫指令

void Lcd1602_Write_Cmd(int cmd) {Lcd1602_Check_Busy();//檢測忙碌狀態(tài)LCD_RS = 0;LCD_RW = 0; LCD_EN = 0;cmd=cmd<<8;GPIOB->ODR=((GPIOB->ODR & 0x00FF)|(cmd&0xFF00));//PB15-8是數(shù)據(jù)位,PB0-7的數(shù)據(jù)不能變delay_us(2); LCD_EN = 1;delay_us(2);LCD_EN = 0;delay_ms(15); }

5、寫數(shù)據(jù)

void Lcd1602_Write_Data(int data) {Lcd1602_Check_Busy();//檢測忙碌狀態(tài)LCD_RS = 1; LCD_RW = 0;LCD_EN = 0;data<<= 8;GPIOB->ODR = ((GPIOB->ODR & 0X00FF) | (data& 0XFF00));delay_us(2);LCD_EN = 1;delay_us(2);LCD_EN = 0;delay_ms(15); }

6、顯示字符

// @u8 row:行 // @u8 col:列 // @int ch:字符 void Lcd1602_DisplayChar(u8 row,u8 col,int ch) {//顯示位置int add = 0;//判斷是那一行if(row == 2){//第二行的首地址 0x40add += 0x40;}//第一行的首地址 0x80add += 0x80 + col - 1;Lcd1602_Write_Cmd(add); //顯示內(nèi)容 Lcd1602_Write_Data(ch); }

7、顯示字符串

// @u8 row:行 // @u8 col:列 // @u8 *str:字符串首地址 void Lcd1602_DisplayString(u8 row,u8 col,u8 *str) {while(*str != '\0'){Lcd1602_DisplayChar(row,col,*str);col += 1;str++;} }

8、主程序

int main(void) {u8 buf[] = {"I Love You!"};u8 date[] = {"2021/2/7"};u8 author[] = {"Qing"};Sys_Delay_Init();Lcd1602_Init();//單個字符 // Lcd1602_DisplayChar(2,2,'A');//字符串Lcd1602_DisplayString(1,1,buf);Lcd1602_DisplayString(2,1,date);Lcd1602_DisplayString(2,13,author);while(1){} }

六、實驗效果


完整程序及LCD1602液晶相關(guān)資料:
鏈接:https://pan.baidu.com/s/1Ok-P7IACpib_vLQX57ikVg
提取碼:hcyp

如有錯誤還望指出,謝謝!

總結(jié)

以上是生活随笔為你收集整理的LCD1602字符串显示(STM32F103)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。