资源简介

一个关于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  设计题_智能盆栽\objects\znpz.obj

     文件      23843  2018-12-22 22:05  设计题_智能盆栽\objects\盆栽

     文件       1103  2018-12-22 22:05  设计题_智能盆栽\objects\盆栽.build_log.htm

     文件       6582  2018-12-22 22:05  设计题_智能盆栽\objects\盆栽.hex

     文件         89  2018-12-22 22:05  设计题_智能盆栽\objects\盆栽.lnp

     文件      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  设计题_智能盆栽\objects

     目录          0  2019-01-06 16:11  设计题_智能盆栽

----------- ---------  ---------- -----  ----

               224245                    14


评论

共有 条评论