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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1354|回復: 0
收起左側

STM32單片機HAL庫驅動OLED屏幕程序

[復制鏈接]
ID:1064538 發表于 2023-3-17 12:10 | 顯示全部樓層 |閱讀模式
IIC SPI接口都有,移植性適用

單片機源程序如下:
  1. /* USER CODE END Header */
  2. /* Includes ------------------------------------------------------------------*/
  3. #include "main.h"
  4. #include "tim.h"
  5. #include "usart.h"
  6. #include "gpio.h"

  7. /* Private includes ----------------------------------------------------------*/
  8. /* USER CODE BEGIN Includes */

  9. #include "lcd_init.h"    //OLED頭文件
  10. #include "pic.h"         //圖片頭文件
  11. #include "lcd.h"

  12. /* USER CODE END Includes */

  13. /* Private typedef -----------------------------------------------------------*/
  14. /* USER CODE BEGIN PTD */

  15. //             OLED屏幕接口描述
  16. //              GND   電源地
  17. //              VCC   3.3v電源
  18. //              SCL   PA0(SCLK)
  19. //              SDA   PA1(MOSI)
  20. //              RES   PA2
  21. //              DC    PA3
  22. //              CS    PA4
  23. //              BLK   PA5


  24. /* USER CODE END PTD */

  25. /* Private define ------------------------------------------------------------*/
  26. /* USER CODE BEGIN PD */
  27. /* USER CODE END PD */

  28. /* Private macro -------------------------------------------------------------*/
  29. /* USER CODE BEGIN PM */

  30. void HAL_Delay_us(uint32_t Delay_us);

  31. /* USER CODE END PM */

  32. /* Private variables ---------------------------------------------------------*/

  33. /* USER CODE BEGIN PV */

  34. /* USER CODE END PV */

  35. /* Private function prototypes -----------------------------------------------*/
  36. void SystemClock_Config(void);
  37. /* USER CODE BEGIN PFP */

  38. /* USER CODE END PFP */

  39. /* Private user code ---------------------------------------------------------*/
  40. /* USER CODE BEGIN 0 */

  41. /* USER CODE END 0 */

  42. /**
  43.   * @brief  The application entry point.
  44.   * @retval int
  45.   */
  46. int main(void)
  47. {
  48.   /* USER CODE BEGIN 1 */

  49.   /* USER CODE END 1 */

  50.   /* MCU Configuration--------------------------------------------------------*/

  51.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  52.   HAL_Init();

  53.   /* USER CODE BEGIN Init */
  54.    
  55.         float t=0;

  56.   /* USER CODE END Init */

  57.   /* Configure the system clock */
  58.   SystemClock_Config();

  59.   /* USER CODE BEGIN SysInit */

  60.   /* USER CODE END SysInit */

  61.   /* Initialize all configured peripherals */
  62.   MX_GPIO_Init();
  63.   MX_TIM2_Init();
  64.   MX_USART1_UART_Init();
  65.   /* USER CODE BEGIN 2 */
  66.   
  67.           LCD_Init();                         //LCD初始化
  68.         LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
  69.   

  70.   /* USER CODE END 2 */

  71.   /* Infinite loop */
  72.   /* USER CODE BEGIN WHILE */
  73.   while (1)
  74.   {
  75.     /* USER CODE END WHILE */
  76.       
  77.                 LCD_ShowChinese(40,0,"中景園電子",RED,WHITE,16,0);
  78.                 LCD_ShowString(10,20,"LCD_W:",RED,WHITE,16,0);
  79.                 LCD_ShowIntNum(58,20,LCD_W,3,RED,WHITE,16);
  80.                 LCD_ShowString(10,40,"LCD_H:",RED,WHITE,16,0);
  81.                 LCD_ShowIntNum(58,40,LCD_H,3,RED,WHITE,16);
  82.                 LCD_ShowFloatNum1(10,60,t,4,RED,WHITE,16);
  83.                 t+=0.11;
  84.                 LCD_ShowPicture(100,20,40,40,gImage_1);

  85.     /* USER CODE BEGIN 3 */
  86.   }
  87.   /* USER CODE END 3 */
  88. }

  89. /**
  90.   * @brief System Clock Configuration
  91.   * @retval None
  92.   */
  93. void SystemClock_Config(void)
  94. {
  95.   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  96.   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  97.   /** Initializes the RCC Oscillators according to the specified parameters
  98.   * in the RCC_OscInitTypeDef structure.
  99.   */
  100.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  101.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  102.   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  103.   RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  104.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  105.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  106.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  107.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  108.   {
  109.     Error_Handler();
  110.   }

  111.   /** Initializes the CPU, AHB and APB buses clocks
  112.   */
  113.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  114.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  115.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  116.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  117.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  118.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  119.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  120.   {
  121.     Error_Handler();
  122.   }
  123. }

  124. /* USER CODE BEGIN 4 */

  125. // Core\Src\delay.c
  126. void HAL_Delay_us(uint32_t Delay_us)
  127. {

  128.                 __HAL_TIM_SetCounter(&htim2, 0);

  129.                 __HAL_TIM_ENABLE(&htim2);

  130.                 while(__HAL_TIM_GetCounter(&htim2) < Delay_us);
  131.                 /* Disable the Peripheral */
  132.                 __HAL_TIM_DISABLE(&htim2);


  133. }

  134. /* USER CODE END 4 */

  135. /**
  136.   * @brief  This function is executed in case of error occurrence.
  137.   * @retval None
  138.   */
  139. void Error_Handler(void)
  140. {
  141.   /* USER CODE BEGIN Error_Handler_Debug */
  142.   /* User can add his own implementation to report the HAL error return state */
  143.   __disable_irq();
  144.   while (1)
  145.   {
  146.   }
  147.   /* USER CODE END Error_Handler_Debug */
  148. }

  149. #ifdef  USE_FULL_ASSERT
  150. /**
  151.   * @brief  Reports the name of the source file and the source line number
  152.   *         where the assert_param error has occurred.
  153.   * @param  file: pointer to the source file name
  154.   * @param  line: assert_param error line source number
  155.   * @retval None
  156.   */
  157. void assert_failed(uint8_t *file, uint32_t line)
  158. {
  159.   /* USER CODE BEGIN 6 */
  160.   /* User can add his own implementation to report the file name and line number,
  161.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  162.   /* USER CODE END 6 */
  163. }
  164. #endif /* USE_FULL_ASSERT */
復制代碼

HAL_OLED_SPI.7z

5.19 MB, 下載次數: 28, 下載積分: 黑幣 -5

HAL_OLED_IIC.7z

5.19 MB, 下載次數: 40, 下載積分: 黑幣 -5

評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品久久久一区二区三区 | 国产日产精品一区二区三区四区 | 国产精品亚洲综合 | 久久精品免费看 | 91免费在线 | 操人视频在线观看 | 天堂av中文 | 91福利影院 | 国产综合久久久久久鬼色 | 九九精品网 | 毛片在线免费 | 欧美一区二 | 久久九九免费 | 亚洲欧美视频在线观看 | 亚洲草草视频 | 国产一区二区三区在线看 | 国产一区在线视频 | 亚洲精品女优 | 久久久久久亚洲 | 日韩手机视频 | 黄色免费网站在线看 | 亚洲精品在线国产 | 日韩av啪啪网站大全免费观看 | 日韩国产欧美一区 | 性色av一区 | 欧美成年黄网站色视频 | 午夜影院在线观看视频 | 亚洲一区二区综合 | 久久国产精品视频观看 | 91九色视频 | 丁香五月网久久综合 | 有码一区| 欧美专区在线 | 亚洲精品久久久一区二区三区 | 亚洲狠狠| 国产一级大片 | 午夜在线影院 | 日本免费一区二区三区 | 欧美日韩在线免费 | 黄免费在线 | 欧美综合色 |