资源简介
一个关于51单片机课程的只能盆栽设计题目,可自动检测盆栽的温度湿度和光照数据,并进行了上位机显示
代码片段和文件信息
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define SlaveAddress 0x46 //定义器件在IIC总线中的从地址
typedef unsigned char BYTE;
BYTE BUF[8]; //光照接收数据缓存区
sbit lcdrs=P1^0;
sbit RW=P1^1;
sbit lcden=P1^2;
sbit SCL=P2^5; //IIC时钟引脚定义
sbit SDA=P2^6; //IIC数据引脚定义
sbit DQ=P2^7; //DS18B20温度传感器的信号线
sbit zhuan=P3^2; //继电器控制
uint data_GZdata_SDdata_WDSDHSDLGZWDSD; //全局变量
uchar wanGZqianGZbaiGZshiGZgeGZshiSDgeSDbaiWDshiWDgeWD;
uchar code num[]={“0123456879“};
uchar code type[]={“WDSDGZ:%‘C“};
//液晶延时及判断模式的函数的声明
void write_com(uchar com); //液晶写命令
void write_data(uchar date); //液晶写数据
void InitYJ();
void deal(); //判断温度。湿度,光照
void delay_us(uint); //延时一微妙
void delay_ms(uint); //延时一毫秒
//光照部分有关函数的声明
void BH1750_Start(); //起始信号
void BH1750_Stop(); //停止信号
void BH1750_SendACK(bit ack); //应答ACK
bit BH1750_RecvACK(); //读ACK
void BH1750_SendByte(BYTE dat); //IIC单个字节写
BYTE BH1750_RecvByte(); //IIC单个字节读
void Single_Write_BH1750(uchar REG_Address);//单个写入数据
void Multiple_read_BH1750(void) ; //连续的读取内部寄存
uint getdata_GZ(); //读取光照的数据
void show_GZ(); //在液晶上显示光照
//湿度部分有关函数的声明
void initADC(); //初始化AD转换
uint getdata_SD(); //读取湿度的数据
void show_SD(); //在液晶上显示湿度
//温度部分有关函数的声明
void Init_DS18B20(); //初始化DS18B20
uchar ReadOneChar(); //读一位数据
void WriteOneChar(uchar dat); //写入数据
void show_WD(); //在液晶上显示温度
uint ReadTemp(void); //读取温度数据
void UartInit(void); //9600bps@11.0592MHz
void main() //主函数
{
UartInit();
InitYJ(); //初始化液晶
while(1)
{
SBUF = ‘#‘;
while(!TI);
TI = 0;
show_GZ(); //光照显示
SBUF = ‘:‘;
while(!TI);
TI = 0;
show_WD(); //温度显示
SBUF = ‘:‘;
while(!TI);
TI = 0;
show_SD(); //湿度显示
SBUF = ‘!‘;
while(!TI);
TI = 0;
SBUF = ‘\0‘;
while(!TI);
TI = 0;
}
}
void UartInit(void) //9600bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xDC; //设定定时初值
TH1 = 0xDC; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
TI = 1;
}
//液晶的部分
void write_com(uchar com)//写命令的状态
{
lcdrs=0;//选择写命令模式
P0=com; // 将要写入的命令送到数据总线上
delay_ms(5);// 稍作延时以待数据稳定
lcden=1; //
delay_ms(5);//
lcden=0; //
}
void write_data(uchar date)//写数据的状态
{
lcdrs=1; // 写数据
P0=date; // p0使显示数据总线
delay_ms(5); //
lcden=1; //
delay_ms(5); //
lcden=0; //
}
void InitYJ() //初始化的状态
{ RW=0;
lcden=0;//
write_com(0x38); //设置16*2显示,5*7点阵,8位数据接口
write_com(0x0c); //设置开显示,不显示光标
write_com(0x06); //写一个字符后地址自动加1
write_com(0x01);//清除所有
write_com(0x80);
}
//光照的部分
void BH1750_Star
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 19275 2018-12-22 22:05 设计题_智能盆栽\Listings\znpz.lst
文件 30748 2018-12-22 22:05 设计题_智能盆栽\Listings\盆栽.m51
文件 27591 2018-12-22 22:05 设计题_智能盆栽\ob
文件 23843 2018-12-22 22:05 设计题_智能盆栽\ob
文件 1103 2018-12-22 22:05 设计题_智能盆栽\ob
文件 6582 2018-12-22 22:05 设计题_智能盆栽\ob
文件 89 2018-12-22 22:05 设计题_智能盆栽\ob
文件 10728 2018-12-22 22:05 设计题_智能盆栽\znpz.c
....... 85652 2019-01-06 16:11 设计题_智能盆栽\盆栽.uvgui.Betty
....... 4743 2018-12-23 15:23 设计题_智能盆栽\盆栽.uvopt
....... 13891 2018-12-20 23:24 设计题_智能盆栽\盆栽.uvproj
目录 0 2018-12-22 22:05 设计题_智能盆栽\Listings
目录 0 2018-12-22 22:05 设计题_智能盆栽\ob
目录 0 2019-01-06 16:11 设计题_智能盆栽
----------- --------- ---------- ----- ----
224245 14
相关资源
- BH1750光强度传感器资料
- 51单片机-双机串行通信注释版
- 51单片机红外通信
- 基于51单片机的红外循迹小车
- 基于51单片机的自动化灌溉系统程序
- 基于51单片机的RC522rfid门禁系统
- 三轴加速度传感器计步测算
- 走迷宫问题代码
- 四个开关流水灯
- 手势识别传感器paj7620 arduino板使用代
- PIC16F877A和LCD1602液晶显示以及mpx4250压
- 单片机内部资源的C51编程.ppt
- 51单片机驱动步进电机(汇编语言)
- 基于物联网的婴儿检测系统的设计
- 51单片机秒脉冲程序
- 简单的火车票订票系统完整代码
- 51单片机HMC5883和qmc5883来做电子指南针
- Proteus模拟基于51单片机的波形发生器
- 基于永磁同步电机矢量控制的无传感
- 51单片机电子琴设计C程序
- 基于51单片机的电子密码锁keil源码电
- 51单片机测量环境温度
- 51单片机 按键控制流水灯左右两边中
- 基于51单片机的出租车计费系统设计
- 传感器原理及应用传感器原理及应用
- 51单片机频率计包括占空比1602显示
- 基于51单片机的自动门系统.zip
- 51单片机入门常用函数
- 树莓派教程--Qt工程中使用DHT11传感器
- stm32f407使用温湿度,光照,烟雾传感
评论
共有 条评论