⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h.c

📁 这是单片机驱动温湿度传感器SHT11温湿度传感器的源代码
💻 C
字号:

#include <SST89x5x4.H>

#include <intrins.h> //Keil library (is used for _nop()_ operation)  
#include <math.h>    //Keil library  
#include <stdio.h>   //Keil library

#define uchar unsigned  char
#define uint unsigned int
#define lcd_clr 0x01
#define you_on	0x0f
#define ad_n 12		//ad测试次数
#define  _Nop()  _nop_()        /*定义空指令*/

/*
keyboard	data
0		12
1		8
2		4
3		0
4		1
5		2
6		3
7		5
8		6
9		7
10-ok	9
11		10
12-wrong11
13		13
14		14
15		15
*/	

//全局变量定义
sbit rs = P1^7;
sbit rw  = P1^6;
sbit e = P2^1;
sbit lcd_deng = P2^3;
sbit le = P2^6;
sbit ce = P2^4;


//ad_bits

sbit sta = P3^2;
sbit lben = P3^6;
sbit hben = P3^7;
//sbit ce = P2^4; 




/*端口位定义*/
sbit SDA = P3^3;            /*模拟I2C数据传送位*/
sbit SCL = P1^4;            /*模拟I2C时钟控制位*/
sbit WP = P1^3;	
/*状态标志*/
bit ack = 0 ;	         /*应答标志位*/
uchar s;
//uchar ad_data[2]={0};



//函数申明
void lcd_ini(void);	
void lcd_wrc(uchar com);
void lcd_wrd(uchar dat);
void lcd_checkbusy();
void delay(uchar n);
void ldelay(uchar n);
void lcd_on();
void lcd_off();
uchar lcd_read_ac();
void lcd_dis_num(uint dat);
void lcd_dis_ch(uchar h,uchar l);
void lcd_add(uchar h,uchar l);

//keyboard
uchar key_data(void);


//i2c相关函数
void Start_I2c();		//起动总线函数
void Stop_I2c();		//结束总线函数
void  SendByte(uchar c);		//字节数据传送函数send
uchar  RcvByte();		//字节数据传送函数 receive
void Ack_I2c(bit a);		//主控器进行应答信号
bit ISendStr_8(uchar add,uchar son_add,uchar dat);		//向子地址为8位的器件发送多字节数据函数 
bit ISendStr_16(uchar add,uint son_add,uchar dat);		//向子地址为16位的器件发送多字节数据函数 
uchar IRcvStr_8(uchar add,uchar son_add);		//向子地址为8位的器件读取多字节数据函数
uchar IRcvStr_16(uchar add,uint son_add);		//向子地址为16位的器件读取多字节数据函数



//时钟相关
void lcd_dis_time(void);		//时钟显示函数
void set_time(uchar sec, uchar min, uchar hr, uchar dy, uchar dt,uchar mn,uchar yr);		//时钟设置sec, min, hr, dy, dt, mn, yr

//ad相关
uint ad_ce(void);
uint ad_ce_n(void);

// struct
struct back_info
{
	uint year;
	uchar month;
	uchar day;
	uchar date;
	uchar hour;
	uchar minute;
	uchar seconde;
	uchar temp;
	uchar humi;
};
//date;

	struct back_info info_1;


//总线控制--使能和释放
void ad_en(void);
void lcd_en(void);
void three_open(void);
void three_close(void);

typedef union 
{
	unsigned int i;
	float f;
} value;
//value 代表上面的一个共用体类型。可用来定义变量
//----------------------------------------------------------------------------------
// modul-var
//----------------------------------------------------------------------------------
enum {TEMP,HUMI};

//#define	DATA   	P1_1
//#define	SCK   	P1_0
sbit DATA = P3^5;
sbit SCK = P1^5;

#define noACK 0
#define ACK   1
                            //adr  command  r/w
#define STATUS_REG_W 0x06   //000   0011    0
#define STATUS_REG_R 0x07   //000   0011    1
#define MEASURE_TEMP 0x03   //000   0001    1
#define MEASURE_HUMI 0x05   //000   0010    1
#define RESET        0x1e   //000   1111    0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -