本人新学proteus,经过网上搜索,找到了一些代码。然后经过修改。变成了现在的文件。可以实现在LCD1602上显示温湿度。但是通过串口显示的数据确是乱码。之后附上文件代码,希望各位大佬能够给我一些建议。万分感谢。因为代码一样是从网上下载的。如果有哪些代码有异议,请联系我,谢谢。ps:proteus上面的dht11,最好使用我文件里面的那个。我之前用的是proteus8.8里面的dht11,一直不显示数据。不知道原因。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include "stm32f10x.h"
- #include "bsp-lcd1602.h"
- #include "delay.h"
- #include "led.h"
- #include "sys.h"
- #include "DTH11.h"
- #include "stdlib.h"
- #include "stdio.h"
- #include "usart.h"
- int main(void)
- {
- u8 temperature,humidity;
- unsigned char display[10] ;
- RCC_ClocksTypeDef RCC_Clocks;
- u8 a=7,b=8;
- RCC_Configuration();
-
- RCC_GetClocksFreq(&RCC_Clocks);
- USART1_Init(9600);
- LCD1602_Init();
- delay_init();
- LED_Init();
- DHT11_Init();
- LCD1602_ShowStr(2,0,"stm32f103R6",11);
- delay_s(10);
- LCD1602_Clear();
- while(1)
- {
- DHT11_Read_Data(&temperature,&humidity) ;
-
- sprintf((char *)display,"temp:%d ",temperature) ;
- LCD1602_ShowStr(0,0,display,11) ;
-
- sprintf((char *)display,"humi:%d ",humidity) ;
- LCD1602_ShowStr(1,1,display,11) ;
-
- printf("temp:%c \r\n",temperature);
- printf("humidity:%c \r\n",humidity);
- LED0 = 0;
- LED1 = 1;
- delay_s(2);
- LED0 = 1;
- LED1 = 0;
- delay_s(2);
- USART1_printf("STM32 %d %d ",a,b);
- }
-
- }
复制代码
所有资料51hei提供下载:
LCD+LED+USART.7z
(221.02 KB, 下载次数: 699)
|