📄 h.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 + -