烧录以下程序到开发板后,数码管和led灯跳动
能不能不让数码管和led灯跳动?
代码来自:深圳市普中科技有限公司(PRECHIN 普中) 稍有改动
main.c文件
- /**************************************************************************************
- 深圳市普中科技有限公司(PRECHIN 普中)
- 技术支持:www.prechin.net
- PRECHIN
- 普中
-
- 实验名称:DHT11温湿度检测(LCD1602显示)
- 接线说明:DHT11温湿度模块-->单片机IO
- VCC-->5V
- DATA-->P2.3
- GND-->GND
- 实验现象:下载程序后,LCD1602上显示DHT11温湿度传感器采集的温度和湿度值
- 注意事项:按照LCD1602实验章节插好LCD1602到开发板
- ***************************************************************************************/
- #include "public.h"
- #include "lcd1602.h"
- #include "dht11.h"
-
- sbit led1 = P2^0;
- sbit led2 = P2^1;
- sbit led3 = P2^2;
- sbit led4 = P2^3;
- sbit led5 = P2^4;
- sbit led6 = P2^5;
- sbit led7 = P2^6;
- sbit led8 = P2^7;
-
- /*******************************************************************************
- * 函 数 名 : main
- * 函数功能 : 主函数
- * 输 入 : 无
- * 输 出 : 无
- *******************************************************************************/
- void main()
- {
- u8 temp=0,humi=0;
- u8 i=0;
- u8 temp_buf[3],humi_buf[3];
-
- lcd1602_init();
- while(DHT11_Init()) //检测DHT11是否存在
- {
- lcd1602_show_string(0,0,"DHT11 Was Not Detected!");
- }
- lcd1602_show_string(0,0,"Wendu: C");
- lcd1602_show_string(0,1,"Shidu: %RH ");
-
- while(1)
- {
- i++;
- if(i%200==0)
- {
- DHT11_Read_Data(&temp,&humi);
- temp_buf[0]=temp/10+0x30;
- temp_buf[1]=temp%10+0x30;
- temp_buf[2]='\0';
- lcd1602_show_string(6,0,temp_buf);
-
- humi_buf[0]=humi/10+0x30;
- humi_buf[1]=humi%10+0x30;
- humi_buf[2]='\0';
- lcd1602_show_string(6,1,humi_buf);
-
- }
-
- delay_ms(1);
-
- }
- }
复制代码
public.h文件
- #ifndef _public_H
- #define _public_H
-
- #include "reg52.h"
-
- typedef unsigned int u16; //对系统默认数据类型进行重定义
- typedef unsigned char u8;
-
-
- void delay_10us(u16 ten_us);
- void delay_ms(u16 ms);
-
- #endif
复制代码
lcd1602.h文件
- #ifndef _lcd1602_H
- #define _lcd1602_H
-
- #include "public.h"
-
- //LCD1602数据口4位和8位定义,若为1,则为LCD1602四位数据口驱动,反之为8位
- #define LCD1602_4OR8_DATA_INTERFACE 0 //默认使用8位数据口LCD1602
-
- //管脚定义
- sbit LCD1602_RS=P2^6;//数据命令选择
- sbit LCD1602_RW=P2^5;//读写选择
- sbit LCD1602_E=P2^7; //使能信号
- #define LCD1602_DATAPORT P0 //宏定义LCD1602数据端口
-
-
- //函数声明
- void lcd1602_init(void);
- void lcd1602_clear(void);
- void lcd1602_show_string(u8 x,u8 y,u8 *str);
-
- #endif
复制代码
lcd1602.c文件
复制代码 dht11.c文件
复制代码 dht11.h文件
- #ifndef _dht11_H
- #define _dht11_H
-
- #include "public.h"
-
- //管脚定义
- sbit DHT11_DQ=P2^3;
-
- //函数声明
- u8 DHT11_Init(void);
- void DHT11_Rst(void);
- u8 DHT11_Check(void);
- u8 DHT11_Read_Byte(void);
- u8 DHT11_Read_Data(u8 *temp,u8 *humi);
-
- #endif
复制代码
public.c文件
- #include "public.h"
-
- /*******************************************************************************
- * 函 数 名 : delay_10us
- * 函数功能 : 延时函数,ten_us=1时,大约延时10us
- * 输 入 : ten_us
- * 输 出 : 无
- *******************************************************************************/
- void delay_10us(u16 ten_us)
- {
- while(ten_us--);
- }
-
- /*******************************************************************************
- * 函 数 名 : delay_ms
- * 函数功能 : ms延时函数,ms=1时,大约延时1ms
- * 输 入 : ms:ms延时时间
- * 输 出 : 无
- *******************************************************************************/
- void delay_ms(u16 ms)
- {
- u16 i,j;
- for(i=ms;i>0;i--)
- for(j=110;j>0;j--);
- }
复制代码
reg52.h 与 intrins.h 省略,可见压缩包:)
压缩包解压密码:dht11
小写dht!
|