最近完成了基于 8H8K64U 开发板
和 DHT11 温湿度传感器的 OLED 显示及串口通信实验,
开发板 PCB 打板工程详见:
基于STC8H8K64U的WS2812彩灯控制开发板 - 立创开源硬件平台 (oshwhub.com) .
实物展示
效果展示串口通信
OLED 显示
代码
- /*--------------------------------
- Author: Jin-Lei Li
- Email: lijinlei0907@163.com
- --------------------------------*/
- #include <STC8H.h>
- #include <intrins.h>
- #include <stdio.h>
- #include <config.h>
- #include <delay.h>
- #include <DHT11.h>
- #include <oled.h>//OLED引脚定义、控制函数
- #include <UART.h>
-
- unsigned int Temperature[2];
- unsigned int Humidity[2];
- unsigned char Data_Receive[5];
-
- void Display();
-
- void main()
- {
- P_SW2 |= 0x80; //扩展寄存器(XFR)访问使能
-
- GPIO_Init();
- UartInit();
- printf("STC8H DHT11 Test.\r\n");
-
- OLED_Init();//初始化OLED
- OLED_ColorTurn(0);//0正常显示,1 反色显示
- OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
-
- while(1)
- {
- DHT_Collect();
- printf("Temperature = %u.%u°C\r\n",Temperature[0],Temperature[1]);//串口打印温度
- printf("Humidity = %u.%u%%RH\r\n",Humidity[0],Humidity[1]);//串口打印湿度
- delay_ms(1000);
-
- Display();
- OLED_ShowString(0,4,"ECNU",16); //显示字符串
- OLED_ShowString(40,4,"2024",16);//显示字符串
- OLED_ShowString(0,6,"Shanghai,China",16); //显示字符串
- //OLED_Clear(); //清屏
- }
-
- }
-
- void Display()
- {
- OLED_ShowString(0,0,"Temp:",16);
- OLED_ShowNum(43,0,Temperature[0],2,16);
- OLED_ShowString(60,0,".",16);
- OLED_ShowNum(65,0,Temperature[1],1,16);
- OLED_ShowString(75,0,"C",16);
-
- OLED_ShowString(0,2,"RH:",16);
- OLED_ShowNum(43,2,Humidity[0],2,16);
- OLED_ShowString(60,2,".",16);
- OLED_ShowNum(65,2,Humidity[1],1,16);
- OLED_ShowString(75,2,"%",16);
-
- }
复制代码
完整项目工程见附件。
|