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

📄 wsx.h

📁 实现温度采集,PID控制.可以用于拨电阻实现的电路
💻 H
字号:

#define	SYSCLK		    22118400
#define DF_CHIP_NOSELECT 	P5 |= 0x8; 	// P53 DataFlash chip select port pin (P23)
#define RAM_CHIP_SELECT_BANK0 	ES0=1;P4 = 0xF4; 	
#define RAM_CHIP_SELECT_BANK1 	P4 = 0xF5; 	
#define BUFFER_1 0x00 			// buffer 1
#define BUFFER_2 0x01 			// buffer 2
#define BUFFER_1_WRITE 0x84 	// buffer 1 write
#define BUFFER_2_WRITE 0x87 	// buffer 2 write
#define BUFFER_1_READ  0x54		// buffer 1 read (change to 0xD4 for SPI mode 0,3)
#define BUFFER_2_READ  0x56		// buffer 2 read (change to 0xD6 for SPI mode 0,3)
#define B1_TO_PAGE_WITH_ERASE 0x83 		// buffer 1 to main memory page program with built-in erase
#define B2_TO_PAGE_WITH_ERASE 0x86 		// buffer 2 to main memory page program with built-in erase
#define B1_TO_PAGE_WITHOUT_ERASE 0x88 	// buffer 1 to main memory page program without built-in erase
#define B2_TO_PAGE_WITHOUT_ERASE 0x89 	// buffer 2 to main memory page program without built-in erase
#define PAGE_PROG_THROUGH_B1 0x82 		// main memory page program through buffer 1
#define PAGE_PROG_THROUGH_B2 0x85 		// main memory page program through buffer 2
#define AUTO_PAGE_REWRITE_THROUGH_B1 0x58 // auto page rewrite through buffer 1
#define AUTO_PAGE_REWRITE_THROUGH_B2 0x59 // auto page rewrite through buffer 2
#define PAGE_TO_B1_COMP 0x60 	// main memory page compare to buffer 1
#define PAGE_TO_B2_COMP 0x61 	// main memory page compare to buffer 2
#define PAGE_TO_B1_XFER 0x53 	// main memory page to buffer 1 transfer
#define PAGE_TO_B2_XFER 0x55 	// main memory page to buffer 2 transfer
#define STATUS_REGISTER 0x57
#define MAIN_MEMORY_PAGE_READ 0x52 // main memory page read (change to 0xD2 for SPI mode 0,3)
#define PAGE_ERASE 0x81 	// erase a 528 byte page
#define BLOCK_ERASE 0x50 	// erase 512 pages
//=======================================================
#pragma NOAREGS		// 如果MCS51使用键盘中断功能,那么建议加入此编译选项
#define		DELAY_1US		{_nop_();_nop_();}	// MCS51<=30MHz
/* 4线接口的连接*/
sbit   CH452_DCLK=P2^5;                     // 串行数据时钟上升延激活
sbit   CH452_DIN=P2^7;		                // 串行数据输出,接CH452的数据输入
sbit   CH452_LOAD=P1^5;                     // 串行命令加载,上升延激活
sbit   CH452_DOUT=P3^3;                     // INT1,键盘中断和键值数据输入,接CH452的数据输出

/* 2线接口的位操作,与单片机有关 */
#define		CH452_SCL_SET		{CH452_SCL=1;}
#define		CH452_SCL_CLR		{CH452_SCL=0;}
#define		CH452_SCL_D_OUT		{}				// 设置SCL为输出方向,对于双向I/O需切换为输出
#define		CH452_SDA_SET		{CH452_SDA=1;}
#define		CH452_SDA_CLR		{CH452_SDA=0;}
#define		CH452_SDA_IN		(CH452_SDA)
#define		CH452_SDA_D_OUT		{}				// 设置SDA为输出方向,对于双向I/O需切换为输出
#define		CH452_SDA_D_IN		{CH452_SDA=1;}	// 设置SDA为输入方向,对于双向I/O需切换为输入

/* 4线接口的位操作,与单片机有关 */
#define		CH452_DCLK_SET		{CH452_DCLK=1;}
#define		CH452_DCLK_CLR		{CH452_DCLK=0;}
#define		CH452_DCLK_D_OUT	{}				// 设置DCLK为输出方向,对于双向I/O需切换为输出
#define		CH452_DIN_SET		{CH452_DIN=1;}
#define		CH452_DIN_CLR		{CH452_DIN=0;}
#define		CH452_DIN_D_OUT		{}				// 设置DIN为输出方向,对于双向I/O需切换为输出
#define		CH452_LOAD_SET		{CH452_LOAD=1;}
#define		CH452_LOAD_CLR		{CH452_LOAD=0;}
#define		CH452_LOAD_D_OUT	{}				// 设置LOAD为输出方向,对于双向I/O需切换为输出
#define		CH452_DOUT_D_IN		{CH452_DOUT=1;}	// 设置DOUT为输入方向,对于双向I/O需切换为输入

/* 与单片机有关,与中断连接方式有关 */
//#define		USE_CH452_KEY		1			// 使用了CH452的按键中断
#ifdef USE_CH452_KEY
#define		DISABLE_KEY_INTERRUPT	{EX1=0;}
#define		ENABLE_KEY_INTERRUPT	{EX1=1;}
#define		CLEAR_KEY_INTER_FLAG	{IE1=0;}
#else
#define		DISABLE_KEY_INTERRUPT	{}
#define		ENABLE_KEY_INTERRUPT	{}
#define		CLEAR_KEY_INTER_FLAG	{}
#endif
//=======================================================
/* 常量定义 */

/* CH451和CH452的常用命令码 */
#define CH452_NOP		0x0000					// 空操作
#define CH452_RESET     0x0201					// 复位
#define CH452_LEVEL		0x0100					// 加载光柱值,需另加7位数据
#define CH452_CLR_BIT	0x0180					// 段位清0,需另加6位数据
#define CH452_SET_BIT	0x01C0					// 段位置1,需另加6位数据
#define CH452_SLEEP		0x0202					// 进入睡眠状态
#define CH452_LEFTMOV   0x0300		            // 设置移动方式-左移
#define CH452_LEFTCYC   0x0301		            // 设置移动方式-左循环
#define CH452_RIGHTMOV  0x0302		            // 设置移动方式-右移
#define CH452_RIGHTCYC  0x0303		            // 设置移动方式-右循环	
#define CH452_SELF_BCD	0x0380					// 自定义BCD码,需另加7位数据
#define CH452_SYSOFF    0x0400					// 关闭显示、关闭键盘
#define CH452_SYSON1    0x0401					// 开启显示
#define CH452_SYSON2    0x0403					// 开启显示、键盘
#define CH452_SYSON2W   0x0423					// 开启显示、键盘, 真正2线接口
#define CH452_NO_BCD    0x0500					// 设置默认显示方式,可另加3位扫描极限
#define CH452_BCD       0x0580					// 设置BCD译码方式,可另加3位扫描极限
#define CH452_TWINKLE   0x0600		            // 设置闪烁控制,需另加8位数据
#define CH452_GET_KEY	0x0700					// 获取按键,返回按键代码
#define CH452_DIG0      0x0800					// 数码管位0显示,需另加8位数据
#define CH452_DIG1      0x0900		            // 数码管位1显示,需另加8位数据
#define CH452_DIG2      0x0a00		            // 数码管位2显示,需另加8位数据
#define CH452_DIG3      0x0b00		            // 数码管位3显示,需另加8位数据
#define CH452_DIG4      0x0c00		            // 数码管位4显示,需另加8位数据
#define CH452_DIG5      0x0d00					// 数码管位5显示,需另加8位数据
#define CH452_DIG6      0x0e00					// 数码管位6显示,需另加8位数据
#define CH452_DIG7      0x0f00		            // 数码管位7显示,需另加8位数据

// BCD译码方式下的特殊字符
#define		CH452_BCD_SPACE		0x10
#define		CH452_BCD_PLUS		0x11
#define		CH452_BCD_MINUS		0x12
#define		CH452_BCD_EQU		0x13
#define		CH452_BCD_LEFT		0x14
#define		CH452_BCD_RIGHT		0x15
#define		CH452_BCD_UNDER		0x16
#define		CH452_BCD_CH_H		0x17
#define		CH452_BCD_CH_L		0x18
#define		CH452_BCD_CH_P		0x19
#define		CH452_BCD_DOT		0x1A
#define		CH452_BCD_SELF		0x1E
#define		CH452_BCD_TEST		0x88
#define		CH452_BCD_DOT_X		0x80

// 有效按键代码
#define		CH452_KEY_MIN		0x40
#define		CH452_KEY_MAX		0x7F

// 2线接口的CH452定义
#define		CH452_I2C_ADDR0		0x40			// CH452的ADDR=0时的地址
#define		CH452_I2C_ADDR1		0x60			// CH452的ADDR=1时的地址,默认值
#define		CH452_I2C_MASK		0x3E			// CH452的2线接口高字节命令掩码

// 对外子程序
extern	unsigned char CH452_Read(void);				// 从CH452读取按键代码
extern  void CH452_Write(unsigned short cmd);	// 向CH452发出操作命令
//=======================================================================

typedef  unsigned char uchar;
typedef  unsigned int  uint ; 
uchar tplsb,tpmsb;
uchar Count1ms;
sbit DQ  =P2^1;
sbit SDA =P0^6;
sbit SCL =P0^7;
sbit I2CRST =P3^2;
sbit DF_RESET = P3^0;
sbit DF_RDY_BUSY = P3^1;
sbit DF_CHIP_SELECT =P2^2;
sbit SPI_CLK = P0^2;
sbit SPI_MISO = P0^3;
sbit SPI_MOSI = P0^4;
sbit FWP     = P2^3;
sbit ACC7 =ACC^7;
uint AT450XXPageAddr;
unsigned char tem_ten,tem_one,tem_zero,hum_ten,hum_one,hum_zero,year_thou,year_hun,year_ten,year_one,display_pos,position1,position2,position3,position4,position5,position6;
unsigned char mon_ten,mon_one,day_ten,day_one,time_thou,time_hun,time_ten,time_one,confirm_num;
sbit SCK = P2^5;
sbit SCLR =P2^4;
sbit SER =P2^7;
sbit SER1 =P3^3;
sbit RCLK =P2^6;
data YWJS=0x08;
bit tem=0;fun_key=0;enterflag=0; 
uchar Dis_buf[6]={0,1,2,3,4,5};
uchar W_buf[]={1,2,4,8,16,32};
uint digital_erray[]={0x0800,0x0900,0x0A00,0x0b00,0x0c00,0x0d00,0x0e00,0x0f00};

⌨️ 快捷键说明

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