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

📄 modbus.h

📁 液晶显示
💻 H
📖 第 1 页 / 共 3 页
字号:
#include <reg52.h>
#include <intrins.h>
#include <string.h>
#include <modbus.h>


//*****************************类型定义******************************************

typedef  		unsigned char 				uchar;
typedef			signed char					schar;
typedef 		unsigned int  				uint;
typedef			signed int					sint;
typedef 		unsigned long 				ulong;
typedef			signed long					slong;
typedef			float						fb;
typedef			double						db;


//******************************主程序循环事件***********************************
#define     		SYSTEM_EVENT 		0x01
#define 			MAIN_EVENT			0x02
#define				DISPLAY_EVENT		0x03
#define				KEY_EVENT			0x04
#define 			UART_EVENT			0x05
#define				ALARM_EVENT			0x06
#define				HANDLE_EVENT		0x07


//****************************LCD循环事件******************************************

#define     		MUNE_LCD	 		0x01
#define     		CHANNEL_LCD	 		0x02
#define     		ALARM_LCD	 		0x03
#define     		LANG_LCD	 		0x04
#define     		CHECK_LCD	 		0x05
#define     		SYSTEM_LCD	 		0x06
#define     		LOCK_LCD	 		0x07

#define     		INPUT_TYPE	 		0x08
#define     		INPUT_UNIT	 		0x09
#define     		PROG_DOWN	 		0x0a
#define     		PROG_UP	 			0x0b
#define     		SIGNAL_HANDLE	 	0x0c

#define     		ALARM_TYPE	 		0x10
#define     		ALARM_UP	 		0x11
#define     		UP_RETURN	 		0x12
#define     		ALARM_DOWN	 		0x13
#define     		DOWN_RETURN	 	  	0x14

#define				MANY_CALI			0x20
#define				ONE_CALI			0x21
#define				TWO_CALI			0x22
#define				THREE_CALI			0x23
#define				FOUR_CALI			0x24
#define				FIVE_CALI			0x25
#define				SAX_CALI			0x26
#define				SEVEN_CALI			0x27
#define				EIGHT_CALI			0x28
#define				NINE_CALI			0x29

#define				PASSWORD			0x30	
#define				DIVCE_ADDR 			0x31
#define				UART_BAUD			0x32
#define				CHANGE_TIME			0x33
#define				UART_PROC			0x34
#define				SHORT_ALARM			0x35

#define     		DOT_LCD	 			0x0d
#define				OPEN_LOCK			0x50



#define 			TIMER_HIGHT				0xfc  						 // 定时器1MS
#define 			TIMER_LOW				0x17


char xdata 			LcmPort 	 		_at_      	0x2000;	              //  液晶使能		
char xdata 			HandlePort 			_at_ 	  	0x4000;		    	  //  采集使能
char xdata 			ExternPort  		_at_		0x6000;				  //  外部输入使能
char xdata 			LedPort		 		_at_		0x8000;		    	  //  LED输出使能
char xdata   		LcdPort				_at_		0xc000;				  //  都不使能对液晶操作
char xdata			Cs_Port				_at_		0xf800;				  //  LCD全使能
char xdata			Cs1_Port			_at_		0xe800;				  //  CS1 使能
char xdata			Cs2_Port			_at_		0xf000;				  //  CS2 使能


#define 			LcmEnable  			LcmPort	
#define 			HandleEnable	 	HandlePort
#define 			ExternEnable  		ExternPort	
#define				LedEnable 			LedPort
#define				LcdEnable			LcdPort
#define				Cs_Enable			Cs_Port
#define				Cs1_Enable			Cs1_Port
#define				Cs2_Enable			Cs2_Port

//****************************LCD状态定义*********************************************

#define	 			DisplayOn			0x3f   		                     //  显示开
#define				DisplayOff			0x3e							 //  显示关
#define				YsetAdress			0x40							 //  Y地址设定
#define				XsetAdress			0xb8							 //  X地址设定
#define				LineAdress			0xc0							 //  行地址设定
#define	            ReadBusy		 	0x80							 //  读数据忙
#define	            ReadDispOff			0x20							 //  读显示关
#define	            ReadReset			0x10							 //  读复位
#define				ReadStatus			0x80							 //  读状态位
#define				WriteData			0x10							 //  写数据
#define				ReadData			0x90							 //  读数据



//****************************LCD的操作********************************************

#define 			LCD_CS2_BIT  		0x01   							//  CS2 使能
#define 			LCD_CS1_BIT  		0x02							//  CS1 使能
#define 			LCD_RW_BIT   		0x80							//  R/W 使能
#define 			LCD_DI_BIT   		0x10							//  D/I 使能

#define 			READ_STATUS			0x80							//  读状态
#define				READ_DATA			0x90							//  读显示数据
#define				WRITE_DATA			0x10							//  写显示数据
#define				WRITE_CMD			0x00							//  写指令


#define				LCD_READ_STATUS		LcmEnable = READ_STATUS   		//  读状态
#define				LCD_READ_DATA		LcmEnable = READ_DATA 		    //  读显示数据
#define				LCD_WRITE_DATA		LcmEnable = WRITE_DATA			//  写显示数据
#define				LCD_WRITE_CMD       LcmEnable = WRITE_CMD			//  写指令


#define 			SET_LCD_DATA      	LcmEnable|=LCD_DI_BIT    		//选择数据端口
#define 			SET_LCD_CMD       	LcmEnable&=~LCD_DI_BIT   		//选择指令端口
#define 			SET_LCD_READ      	LcmEnable|=LCD_RW_BIT    		//读模式
#define 			SET_LCD_WRITE      	LcmEnable&=~LCD_RW_BIT   		//写模式
#define 			SET_LCD_CS2      	LcmEnable|=LCD_CS2_BIT  	    //右屏选择使能
#define 			CLEAR_LCD_CS2      	LcmEnable&=~LCD_CS2_BIT 		//右屏选择禁止
#define 			SET_LCD_CS1      	LcmEnable|=LCD_CS1_BIT  		//左屏选择使能
#define 			CLEAR_LCD_CS1      	LcmEnable&=~LCD_CS1_BIT 		//左屏选择禁止
#define				DISABLE_LCD			LcmEnable&=~(LCD_CS2_BIT|LCD_CS1_BIT)


#define				HADLE_CLK			0x08
#define				HANDLE_CHANGE		0x04
#define				SEND				0x10
#define				AL_L				0x20
#define				AL_H				0x40
#define				GZ_A				0x80
#define				ADC 				0x01


#define				ALARM_L					HandleEnable |=AL_L
#define				NOALARM_L				HandleEnable &=~AL_L
#define				ALARM_H					HandleEnable |=AL_H
#define				NOALARM_H				HandleEnable &=~AL_H
#define				ALARM_A					HandleEnable |=GZ_A
#define				NOALARM_A				HandleEnable &=~GZ_A
#define				SEND_485				HandleEnable |=SEND
#define				RECEIVE_485				HandleEnable &=~SEND
#define				ADC_DATA_START			HandleEnable &=~ADC
#define				ADC_DATA_STOP			HandleEnable |=ADC


#define 			CMD 				0
#define 			DATA 				1
#define				ALL_DATA			480
#define				FIRST_DATA			30


//************************************按键处理*************************************
																		 
#define   			MUTE     			1								 //  消音键
#define   			DOT       			2								 //	 小数位
#define   			LEFT     			3								 //  左移
#define   			RIGHT    			4								 //  右移
#define   			UP       			5								 //  上移
#define   			DOWN     			6								 //  下移
#define   			SET      			7								 //  设置
#define 			FLASH_ON            8 								 //	 消闪
#define 		    FLASH_MUTE			9								 //	 消音
#define				FLASH_LED			10								 //  消灯
#define 			SET_ENTER			11								 //  进入菜单	
#define  			NO					0                  				 //  无键按下


#define				LCD_TIME_OUT		2000							//忙超时



sbit   	SDA = P3^5;	  													//  对24C65操作
sbit    SCL = P3^4; 


//**********************************时间变量***********************

bit				count_10ms;
bit				count_1s;
uchar xdata    	counter0;
uchar xdata		counter1;
//**********************************串口处理变量************************

bit				common;
uchar xdata 	sendPosi;  
uchar xdata		sendCount; 
uint xdata 		checkoutError;											// ==2 偶校验错  
uchar xdata		receCount;	    										//接收到的字节个数
uchar xdata 	receTimeOut;											//接收超时
uchar xdata     sendBuf[FIRST_DATA];
uchar xdata 	receBuf[FIRST_DATA];
uchar xdata		xjb_buf[480];										//16路循检表的全部数据
uchar xdata		localAddr ;												//单片机控制板的地址

//**************************************************ADC VAR

unsigned char adc_flag;
unsigned char counter;
unsigned char adc_data_L;
unsigned char adc_data_H;
unsigned int  max_data[2];
//**************************************************LCD VAR
bit		lcd_lock;

⌨️ 快捷键说明

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