可以实现在LCD1602上显示温湿度。但是通过串口显示的数据确是乱码。之后附上文件代码。ps:proteus上面的dht11,最好使用附件里面的那个。之前用的是proteus8.8里面的dht11,一直不显示数据。不知道原因。
源码_仿真文件_LCD LED USART.7z
(221.02 KB, 售价: 3 E币)
仿真原理图如下(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);
- }
-
- }
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|