1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          STM32驅動LCD1602程序(調試已成功)「建議收藏」

          來源:互聯網轉載 時間:2023-12-14 14:14:23

          IO接線:
          RS PA8
          RW PB6
          E PB7
          LCD1602_IO PB8-PB15
          所有的口都配置成開漏輸出,并且所有的口都通過10k電阻上拉至5V,部分電路圖如下:

          程序代碼
          LCD1602.C

          #include"lcd1602.h"
          void LCD1602_GPIO_Init_Out()//LCD1602端口初始化,配置為輸出
          { 
          
          GPIO_InitTypeDef GPIO_InitStructrue;
          RCC_APB2PeriphClockCmd(LCD1602_Timer_GPIOA | LCD1602_Timer_GPIOB, ENABLE);//使能端口時鐘
          GPIO_InitStructrue.GPIO_Mode = GPIO_Mode_Out_OD;//開漏輸出
          GPIO_InitStructrue.GPIO_Pin = LCD1602_RS; 
          GPIO_InitStructrue.GPIO_Speed = GPIO_Speed_10MHz;//低速輸出
          GPIO_Init(LCD1602_GPIOA, &GPIO_InitStructrue);//初始化
          GPIO_InitStructrue.GPIO_Mode = GPIO_Mode_Out_OD;//開漏輸出
          GPIO_InitStructrue.GPIO_Pin = LCD1602_RW |  LCD1602_E | LCD1602_IO ; 
          GPIO_InitStructrue.GPIO_Speed = GPIO_Speed_10MHz;// 低速輸出
          GPIO_Init(LCD1602_GPIOB, &GPIO_InitStructrue);//初始化
          }
          void LCD1602_GPIO_Init_Inupt()//LCD1602端口初始化,配置為輸入
          { 
          
          GPIO_InitTypeDef GPIO_InitStructrue;
          RCC_APB2PeriphClockCmd(LCD1602_Timer_GPIOB, ENABLE);//使能端口時鐘
          GPIO_InitStructrue.GPIO_Mode =  GPIO_Mode_IN_FLOATING;//浮空輸入
          GPIO_InitStructrue.GPIO_Pin =  GPIO_Pin_15; 
          GPIO_Init(LCD1602_GPIOB, &GPIO_InitStructrue);//初始化
          }
          void LCD1602_WaitReady(void)//用于LCD忙檢測
          { 
          
          u8 sta = 0;
          LCD1602_GPIO_Init_Out();//LCD1602端口初始化,配置為輸出
          GPIOB->ODR =0xff00;
          LCD1602_RS_RESET();
          LCD1602_RW_SET();//讀狀態
          LCD1602_GPIO_Init_Inupt();//LCD1602端口初始化,配置為輸入
          do{ 
          
          LCD1602_E_SET();
          sta = GPIO_ReadInputDataBit(LCD1602_GPIOB, GPIO_Pin_15);
          LCD1602_E_RESET();
          }
          while(sta);
          LCD1602_GPIO_Init_Out();//LCD1602端口初始化,配置為輸出
          }
          void LCD1602_WriteCmd(u16 cmd)//用于寫指令
          { 
          
          LCD1602_WaitReady();//等待液晶準備好
          LCD1602_RS_RESET();
          LCD1602_RW_RESET();//寫指令
          GPIOB->ODR &=((cmd<< 8)|0x0000);
          LCD1602_E_SET();
          LCD1602_E_RESET();//高脈沖
          }
          void LCD1602_WriteDate(u16 date)//用于寫數據
          { 
          
          LCD1602_WaitReady();//等待液晶準備好
          LCD1602_RS_SET();
          LCD1602_RW_RESET();//寫數據
          GPIOB->ODR &=((date << 8)|0x0000);
          LCD1602_E_SET();
          LCD1602_E_RESET();//高脈沖
          }
          void LCD1620_SetAddress(unsigned char x,unsigned char y)
          { 
          
          if(y == 0)
          LCD1602_WriteCmd(0x80 | x);//從第一行開始顯示
          else 
          LCD1602_WriteCmd(0x80 | 0x40 | x);//從第二行開始顯示
          }
          void LCD1602_ShowStr(unsigned char x,unsigned char y,unsigned char *str)//LCD1602顯示字符串
          { 
          
          LCD1620_SetAddress(x,y);//設置數據地址指針
          while(*str != '\0')
          LCD1602_WriteDate(*str++);//寫數據 
          }
          void LCD1602_ShowChar(unsigned char x,unsigned char y,unsigned char date)//LCD1602顯示字符
          { 
          
          LCD1620_SetAddress(x,y);//設置數據地址指針
          LCD1602_WriteDate(date);//寫數據 
          }
          void LCD1602_ShowNum(unsigned char x,unsigned char y,unsigned char *str,unsigned char i)//LCD1602顯示數字
          { 
          
          LCD1620_SetAddress(x,y);//設置數據地址指針
          str = str+ i;
          LCD1602_WriteDate(*str);//寫數據
          }
          void LCD1602_Init(void)//液晶初始化函數
          { 
          
          LCD1602_GPIO_Init_Out();
          LCD1602_WriteCmd(0x38);//設置16*2顯示,5*7點陣,8位數據接口
          LCD1602_WriteCmd(0x0c);//開顯示,顯示光標,光標不閃爍
          LCD1602_WriteCmd(0x06);//光標加1,屏幕顯示不移動
          LCD1602_WriteCmd(0x01);//清屏
          }
          

          LCD1602.h

          #ifndef __LCD1602_H
          #define __LCD1602_H
          #include"sys.h"
          #include"stm32f10x.h"
          #define LCD1602_Timer_GPIOA RCC_APB2Periph_GPIOA
          #define LCD1602_Timer_GPIOB RCC_APB2Periph_GPIOB
          #define LCD1602_GPIOA GPIOA
          #define LCD1602_GPIOB GPIOB
          #define LCD1602_RS GPIO_Pin_8
          #define LCD1602_RW GPIO_Pin_6
          #define LCD1602_E GPIO_Pin_7
          #define LCD1602_IO GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15
          #define LCD1602_I0_SET() GPIO_SetBits(GPIOB, LCD1602_IO)
          #define LCD1602_RS_SET() GPIO_SetBits(GPIOA,LCD1602_RS)
          #define LCD1602_RS_RESET() GPIO_ResetBits(GPIOA,LCD1602_RS)
          #define LCD1602_RW_SET() GPIO_SetBits(GPIOB,LCD1602_RW)
          #define LCD1602_RW_RESET() GPIO_ResetBits(GPIOB,LCD1602_RW)
          #define LCD1602_E_SET() GPIO_SetBits(GPIOB,LCD1602_E)
          #define LCD1602_E_RESET() GPIO_ResetBits(GPIOB,LCD1602_E)
          void LCD1602_Init(void);//液晶初始化函數
          void LCD1602_ShowNum(unsigned char x,unsigned char y,unsigned char *str,unsigned char i);//LCD1602顯示數字
          void LCD1602_ShowStr(unsigned char x,unsigned char y,unsigned char *str);//LCD1602顯示字符串
          #endif
          

          程序移植時,只需要改.h文件程序,以及.c文件中的

          sta = GPIO_ReadInputDataBit(LCD1602_GPIOB, GPIO_Pin_15);
          GPIOB->ODR &=((cmd<< 8)|0x0000);
          GPIOB->ODR &=((date << 8)|0x0000);
          

          將其配置成你所需要的管腳即可。

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          5000美元能一次兌換?貨幣匯率為1美元=6.67095000美元= 33354.5數據僅供參考,以銀行柜臺成交價為準。5000美元,換算成是多少錢??!求解?2009年,密西西比州人均年收入排名最后,為30103美元。如果每個家庭有兩個工作的人,那么每個家庭每年將賺差不多60,000美元。如果一個家庭 s在美國年收入只有5000美元,相當于一個低收入家庭,一年差不多1500。今日5000美元,換算...

          wps瀏覽記錄怎么恢復?第一步:先在wps中打開一個表單或文檔,然后點擊左上角的文件。第2步:選擇備份和恢復-備份中心步驟3:打開本地備份。第四步:可以查看歷史記錄。將鼠標移動到歷史文件上,會出現一個文件圖標。單擊它打開歷史文件并保存。wps運行完都還能找到記錄?wps運行后,記錄將保存在文件中。wps如何打開之前復制內容?wps左上角有復制按鈕和粘貼按鈕,也可以點擊鼠標右鍵找到復制粘貼。wps怎...

          蘋果6p和6plus誰大?蘋果6plus更大。因為iPhone6plus是iPhone6的放大版,性能比iPhone 6好一點。IPhone 6長138.1mm,寬67mm。蘋果6plus的長度為158.1mm,寬度為77.8 mm..IPhone 6 Plus采用5.5英寸屏幕,分辨率為1080p。它內置64位蘋果A8處理器,后置800萬像素鏡頭和前置120萬像素Fac6p比6強多少?iphon...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>