久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5439|回復: 3
收起左側

LCD1602顯示屏STM32用法

[復制鏈接]
ID:412827 發表于 2019-2-13 16:30 | 顯示全部樓層 |閱讀模式
單片機源程序如下:
  1. /* 頭文件    ------------------------------------------------------------------*/

  2. #include "stm32f10x_lib.h"
  3. #include "stdio.h"
  4. #include "lcd1602.h"

  5. /* 自定義同義關鍵字    --------------------------------------------------------*/

  6. /* 自定義參數宏        --------------------------------------------------------*/

  7. /* 自定義函數宏        --------------------------------------------------------*/

  8. /* 自定義全局變量      --------------------------------------------------------*/
  9.    
  10. /* 自定義函數聲明      --------------------------------------------------------*/

  11. void RCC_Configuration(void);
  12. void GPIO_Configuration(void);
  13. void USART_Configuration(void);
  14. void ADC_Configuration(void);
  15. void ADC_Configuration1(void);



  16. /*******************************************************************************
  17. * 函數名                  : main
  18. * 函數描述            : 主函數
  19. * 輸入參數      : 無
  20. * 輸出結果             : 無
  21. * 返回值        : 無
  22. *******************************************************************************/

  23. int main(void)
  24. {
  25.        

  26.           /* 設置系統時鐘 */
  27.           RCC_Configuration();

  28.           /* 設置 GPIO 端口 */
  29.   //        GPIO_Configuration();
  30.     Lcd_GPIO_init();
  31.    
  32.            /* 設置 USART */
  33. //        USART_Configuration();

  34.         /* 設置 ADC */

  35.   //        printf("\r\n The AD_value is:-------------------------- \r\n");

  36.         Lcd_Init();                 
  37.         delay_us(200);
  38.            Lcd_Puts(0,0,"My Designer!    ");
  39.                 while(1)
  40.                 {
  41.                 GPIO_SetBits(GPIOC, GPIO_Pin_13)  ;
  42.         Lcd_Puts(0,0,"My Designer!    ");
  43.                 delay_us(20000);       
  44.                 GPIO_ResetBits(GPIOC, GPIO_Pin_13) ;
  45.              delay_us(20000);       
  46.              }

  47. }

  48. /*******************************************************************************
  49. * 函數名        : RCC_Configuration
  50. * 函數描述  : 設置系統各部分時鐘
  51. * 輸入參數  : 無
  52. * 輸出結果  : 無
  53. * 返回值    : 無
  54. *******************************************************************************/

  55. void RCC_Configuration(void)
  56. {
  57.         /* 定義枚舉類型變量 HSEStartUpStatus */
  58.         ErrorStatus HSEStartUpStatus;

  59.           /* 復位系統時鐘設置 */
  60.           RCC_DeInit();
  61.           /* 開啟 HSE */
  62.           RCC_HSEConfig(RCC_HSE_ON);
  63.           /* 等待 HSE 起振并穩定 */
  64.           HSEStartUpStatus = RCC_WaitForHSEStartUp();
  65.         /* 判斷 HSE 起是否振成功,是則進入if()內部 */
  66.           if(HSEStartUpStatus == SUCCESS)
  67.           {
  68.             /* 選擇 HCLK(AHB)時鐘源為SYSCLK 1分頻 */
  69.             RCC_HCLKConfig(RCC_SYSCLK_Div1);
  70.             /* 選擇 PCLK2 時鐘源為 HCLK(AHB)1分頻 */
  71.             RCC_PCLK2Config(RCC_HCLK_Div1);
  72.             /* 選擇 PCLK1 時鐘源為 HCLK(AHB)2分頻 */
  73.             RCC_PCLK1Config(RCC_HCLK_Div2);
  74.             /* 設置 FLASH 延時周期數為2 */
  75.             FLASH_SetLatency(FLASH_Latency_2);
  76.             /* 使能 FLASH 預取緩存 */
  77.             FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
  78.             /* 選擇鎖相環(PLL)時鐘源為 HSE 1分頻,倍頻數為9,則PLL輸出頻率為 8MHz * 9 = 72MHz */
  79.             RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
  80.             /* 使能 PLL */
  81.             RCC_PLLCmd(ENABLE);
  82.             /* 等待 PLL 輸出穩定 */
  83.             while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
  84.             /* 選擇 SYSCLK 時鐘源為 PLL */
  85.             RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  86.             /* 等待 PLL 成為 SYSCLK 時鐘源 */
  87.             while(RCC_GetSYSCLKSource() != 0x08);
  88.           }

  89.           /* 使能各個用到的外設時鐘 */
  90.           RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOC |
  91.                                                   RCC_APB2Periph_GPIOB, ENABLE);
  92. }



  93. /*******************************************************************************
  94. * 函數名                  : GPIO_Configuration
  95. * 函數描述            : 設置各GPIO端口功能
  96. * 輸入參數      : 無
  97. * 輸出結果      : 無
  98. * 返回值        : 無
  99. *******************************************************************************/

  100. void GPIO_Configuration(void)
  101. {
  102.         /* 定義 GPIO 初始化結構體 GPIO_InitStructure */
  103.           GPIO_InitTypeDef GPIO_InitStructure;

  104.         /* 設置 USART1 的Tx腳(PA.9)為第二功能推挽輸出功能 */
  105.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  106.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  107.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  108.           GPIO_Init(GPIOA , &GPIO_InitStructure);
  109.    
  110.           /* 設置 USART1 的Rx腳(PA.10)為浮空輸入腳 */
  111.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  112.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  113.           GPIO_Init(GPIOA , &GPIO_InitStructure);

  114.           /* 將 PB.0 設置為模擬輸入腳 */
  115.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
  116.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  117.           GPIO_Init(GPIOB , &GPIO_InitStructure);

  118.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  119.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  120.           GPIO_Init(GPIOB , &GPIO_InitStructure);
  121. }



  122. /*******************************************************************************
  123. * 函數名                  : ADC_Configuration
  124. * 函數描述            : 初始化并啟動ADC轉換
  125. * 輸入參數      : 無
  126. * 輸出結果      : 無
  127. * 返回值        : 無
  128. *******************************************************************************/
  129. void ADC_Configuration(void)
  130. {
  131.         /* 定義 ADC 初始化結構體 ADC_InitStructure */
  132.         ADC_InitTypeDef ADC_InitStructure;
  133.        
  134.         /* 配置ADC時鐘分頻 */
  135.         RCC_ADCCLKConfig(RCC_PCLK2_Div4);

  136.         /*       
  137.         *        獨立工作模式;
  138.         *        多通道掃描模式;
  139.         *        連續模數轉換模式;
  140.         *        轉換觸發方式:轉換由軟件觸發啟動;
  141.         *        ADC 數據右對齊 ;
  142.         *        進行規則轉換的 ADC 通道的數目為1;
  143.         */
  144.         ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
  145.         ADC_InitStructure.ADC_ScanConvMode = ENABLE;
  146.         ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
  147.         ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
  148.         ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  149.         ADC_InitStructure.ADC_NbrOfChannel = 1;
  150.         ADC_Init(ADC1, &ADC_InitStructure);
  151.        
  152.         /* 設置 ADC1 使用8轉換通道,轉換順序1,采樣時間為 55.5 周期 */
  153.         ADC_RegularChannelConfig(ADC1, ADC_Channel_9, 1, ADC_SampleTime_71Cycles5);
  154.         /* 使能 ADC1 */
  155.         ADC_Cmd(ADC1, ENABLE);
  156.         /* 復位 ADC1 的校準寄存器 */   
  157.         ADC_ResetCalibration(ADC1);
  158.         /* 等待 ADC1 校準寄存器復位完成 */
  159.         while(ADC_GetResetCalibrationStatus(ADC1));
  160.         /* 開始 ADC1 校準 */
  161.         ADC_StartCalibration(ADC1);
  162.         /* 等待 ADC1 校準完成 */
  163.         while(ADC_GetCalibrationStatus(ADC1));
  164.         /* 啟動 ADC1 轉換 */
  165.         ADC_SoftwareStartConvCmd(ADC1, ENABLE);       
  166. }

  167. void ADC_Configuration1(void)
  168. {
  169.         /* 定義 ADC 初始化結構體 ADC_InitStructure */
  170.         ADC_InitTypeDef ADC_InitStructure;
  171.        
  172.         /* 配置ADC時鐘分頻 */
  173.         RCC_ADCCLKConfig(RCC_PCLK2_Div4);

  174.         /*       
  175.         *        獨立工作模式;
  176.         *        多通道掃描模式;
  177.         *        連續模數轉換模式;
  178.         *        轉換觸發方式:轉換由軟件觸發啟動;
  179.         *        ADC 數據右對齊 ;
  180.         *        進行規則轉換的 ADC 通道的數目為1;
  181.         */
  182.         ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
  183.         ADC_InitStructure.ADC_ScanConvMode = ENABLE;
  184.         ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
  185.         ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
  186.         ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  187.         ADC_InitStructure.ADC_NbrOfChannel = 1;
  188.         ADC_Init(ADC1, &ADC_InitStructure);
  189.        
  190.         /* 設置 ADC1 使用8轉換通道,轉換順序1,采樣時間為 55.5 周期 */
  191.         ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_55Cycles5);
  192.         /* 使能 ADC1 */
  193.         ADC_Cmd(ADC1, ENABLE);
  194.         /* 復位 ADC1 的校準寄存器 */   
  195.         ADC_ResetCalibration(ADC1);
  196.         /* 等待 ADC1 校準寄存器復位完成 */
  197.         while(ADC_GetResetCalibrationStatus(ADC1));
  198.         /* 開始 ADC1 校準 */
  199.         ADC_StartCalibration(ADC1);
  200.         /* 等待 ADC1 校準完成 */
  201.         while(ADC_GetCalibrationStatus(ADC1));
  202.         /* 啟動 ADC1 轉換 */
  203.         ADC_SoftwareStartConvCmd(ADC1, ENABLE);       
  204. }



  205. /*******************************************************************************
  206. * 函數名                  : USART_Configuration
  207. * 函數描述            : 設置USART1
  208. * 輸入參數      : 無
  209. * 輸出結果      : 無
  210. * 返回值        : 無
  211. *******************************************************************************/

  212. void USART_Configuration(void)
  213. {
  214.         /* 定義 USART 初始化結構體 USART_InitStructure */
  215.           USART_InitTypeDef USART_InitStructure;

  216.         /*        波特率為115200bps;
  217.         *        8位數據長度;
  218.         *        1個停止位,無校驗;
  219.         *        禁用硬件流控制;
  220.         *        禁止USART時鐘;
  221.         *        時鐘極性低;
  222.         *        在第2個邊沿捕獲數據
  223.         *        最后一位數據的時鐘脈沖不從 SCLK 輸出;
  224.         */

  225.         USART_InitStructure.USART_BaudRate = 115200;
  226.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  227.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  228.         USART_InitStructure.USART_Parity = USART_Parity_No ;
  229.         USART_InitStructure.USART_HardwareFlowControl =  USART_HardwareFlowControl_None;
  230.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  231.         USART_Init(USART1 , &USART_InitStructure);
  232.    
  233.           /* 使能 USART1 */
  234.           USART_Cmd(USART1 , ENABLE);
  235. }



  236. /*******************************************************************************
  237. * 函數名                  : fputc
  238. * 函數描述            : 將printf函數重定位到USATR1
  239. * 輸入參數            : 無
  240. * 輸出結果            : 無
  241. * 返回值                : 無
  242. *******************************************************************************/

  243. int fputc(int ch, FILE *f)
  244. {
  245.         USART_SendData(USART1, (u8) ch);
  246.         while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
  247.         return ch;
  248. }
復制代碼

所有資料51hei提供下載:
Stm32驅動LCD1602.rar (208.75 KB, 下載次數: 69)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:518110 發表于 2019-4-28 10:35 | 顯示全部樓層
親,你好,可以加一下QQ嗎,有些問題還是不懂,只是亮了,但是不顯示東西啊
回復

使用道具 舉報

ID:489605 發表于 2019-4-28 12:42 | 顯示全部樓層
最近就在弄這個 沒弄出來
回復

使用道具 舉報

ID:523823 發表于 2019-4-28 17:28 | 顯示全部樓層
不錯!!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品1区| 成人免费小视频 | 一区欧美 | 羞羞网站免费观看 | 欧美黑人狂野猛交老妇 | 午夜男人的天堂 | 欧美黄色小视频 | 国产成人a亚洲精品 | 日本成人中文字幕 | 国产福利视频 | а_天堂中文最新版地址 | 国产精品视频二区三区 | 国产精品亚洲成在人线 | 亚洲欧美另类在线观看 | 西西裸体做爰视频 | 福利网址 | 网址黄| 国产露脸对白88av | 亚洲综合在线视频 | 狠狠操婷婷 | 日本午夜网 | 国产精品一区久久久 | 一区二区在线 | 欧美综合一区二区 | 免费特黄视频 | 女同videos另类 | 99精品视频在线观看免费播放 | 夜夜草视频 | 91视频在线观看 | 韩日精品一区 | 91久久精品日日躁夜夜躁欧美 | 欧美日韩在线一区二区三区 | 国产精品欧美一区二区 | av香港经典三级级 在线 | 国产精品一区一区三区 | 欧美黄在线观看 | 亚洲日日夜夜 | 一区 | av手机免费在线观看 | 欧美日韩高清 | 国产一区二区三区在线 |