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

📄 lcd.c

📁 在cygnal020开发板下的lcd(菜单)部分显示程序设计
💻 C
📖 第 1 页 / 共 3 页
字号:
#include "c8051F020.h"
#include "ABSACC.H"
/*******************************开始 数据类型定义*********************************************************************/
#define  IDATA   idata	//间接寻址
#define  DATA    data	//直接寻址#define  BDATA   bata
#define  XDATA   xdata
#define  RDATA   code
#define  UINT8   unsigned char 
#define  UINT16  unsigned int                                 
/*******************************结束 数据类型定义*********************************************************************/
typedef  UINT8	  ghj  ;
/*******************************开始 硬件接口说明**********************************************************************/
//液晶数据口   P0   (配置为开漏)  控制口  P1.0~P1.2	   (被配置为推挽)
#define   Lcd_Port	 P0                                                           
sbit  Busy_bit = P0^7;
sbit  RS =P2^0;  
sbit  RW =P2^1;
sbit  E = P0^7 ;

bit           Revers_Bit=0;
UINT8  DATA  Revers_Address=0x04 ;
//LCD屏基本信息
#define  Lcd_Line      2         //	 LCD屏最大行数
#define  Lcd_Row       8	     //	 LCD屏最大列数 
#define  Lcd_1         0X80	     //	 LCD屏第一行
#define  Lcd_2         0X90	     //	 LCD屏第二行
//#define  Lcd_3         0X88	     //	 LCD屏第三行
//#define  Lcd_4         0X98	     //	 LCD屏第四行
#define  Lcd_REVERS_1  0X04	     //	 LCD屏第一行反白
#define  Lcd_REVERS_2  0X05	     //	 LCD屏第二行反白
//#define  Lcd_REVERS_3  0X06	     //	 LCD屏第三行反白
//#define  Lcd_REVERS_4  0X07	     //	 LCD屏第四行反白
//绘图单元图像显内存地址
#define  Draw_Memroy0  DBYTE[0X50] // 绘图单元图像显内存
#define  Draw_Memroy1  DBYTE[0X51] //
#define  Draw_Memroy2  DBYTE[0X52] //
#define  Draw_Memroy3  DBYTE[0X53] //
#define  Draw_Memroy4  DBYTE[0X54] //
#define  Draw_Memroy5  DBYTE[0X55] //
#define  Draw_Memroy6  DBYTE[0X56] //
#define  Draw_Memroy7  DBYTE[0X57] //
/*******************************开始 键盘 接口说明**********************************************************************/
//键盘数据口   P2	 (配置为开漏)
sbit  Button_H=P1^0; 	//手动键
sbit  Button_A=P1^1; 	//自动键
sbit  Button_S=P1^2; 	//停止键
sbit  Button_P=P1^3; 	//编辑键
sbit  Button_U=P1^4; 	//上键
sbit  Button_D=P1^5; 	//下键
sbit  Button_R=P1^6; 	//复位键
//键盘按键标志位
bit   Push_H=0x21^0;		 //手动键
bit   Push_A=0x21^1;		 //自动键
bit   Push_S=0x21^2;		 //停止键
bit   Push_P=0x21^3;		 //编辑键
bit   Push_U=0x21^4;		 //上键
bit   Push_D=0x21^5;		 //下键
bit   Push_R=0x21^6;		 //复位键
/*******************************结束 键盘接口说明**********************************************************************/
/*******************************开始 LCD 接口说明**********************************************************************/

/*******************************开始 显示变量说明**********************************************************************/
 /*******************************开始 菜单定义*********************************************************************/
//菜单相关变量定义(菜单维数)
#define  Menu_Word_Num             16	   //每项菜单字符字数
#define	 Menu_Line_Num             12	   //二级菜单最大数量+1 
#define	 Menu_Row_Num           9  //一级菜单数量+1
UINT8 DATA   Menu_X_Num=1,Menu_Y_Num=1;	  //数组行列数变化

//*******************************开始 函数定义*********************************************************************/
UINT8 DATA Conver_Fdata1,Conver_Fdata2,Conver_Fdata3;
UINT8 DATA Power=0;
UINT8 DATA Current;
//*******************************开始 三级与四级函数定义*********************************************************************/








//*******************************开始 菜单数组定义*********************************************************************/
//一级菜单定义
UINT8    RDATA  Menu_Data[Menu_Line_Num+1][Menu_Row_Num+1][Menu_Word_Num] =
{		{{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}},
		{{"Ur:380v         "},{"⑴选择运行类型  "},{"⑵选择运行方式  "},{"⑶选择泵号      "},{"⑷变频工作频率  "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"⒉系统参数设定  "},{"⑴语言设定      "},{"⑵电机参数设定  "},{"⑶水参数设定    "},{"⑷传感器类型单位"},{"⑸传感器量程    "},{"⑹主水泵数量    "},{"⑺辅水泵数量    "},{"                "},{"                "}}, 
		{{"⒊控制参数设定  "},{"⑴系统设定数值  "},{"⑵系统上限值设定"},{"⑶上限延迟时间  "},{"⑷系统下限值设定"},{"⑸下限延迟时间  "},{"⑹系统上限报警值"},{"⑺系统上限延时  "},{"⑻系统下限报警值"},{"⑼系统下限延时  "}},
		{{"⒋基泵参数设定  "},{"⑴基泵启动延迟  "},{"⑵基泵停止延迟  "},{"⑶PID P         "},{"⑷PID  I        "},{"⑸PID D         "},{"                "},{"                "},{"                "},{"                "}},
		{{"⒌辅泵参数设定  "},{"⑴辅泵上限值设定"},{"⑵辅泵上限延迟  "},{"⑶辅泵下限值设定"},{"⑷辅泵下限延迟  "},{"                "},{"                "},{"                "},{"                "},{"                "}},			
		{{"⒍备用泵设定    "},{"⑴主泵备用泵设定"},{"⑵辅泵备用泵设定"},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}},		
		{{"⒎零流量设定    "},{"⑴零流量数值设定"},{"⑵零流量延迟设定"},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}},	
		{{"⒏巡检计时设定  "},{"⑴巡检功能      "},{"⑵巡检时间      "},{"⑶巡检水泵时间  "},{"⑷计时切换功能  "},{"                "},{"                "},{"                "},{"                "},{"                "}},
		{{"⒐运行时间      "},{"⑴系统运行时间  "},{"⑵变频器运行时间"},{"⑶水泵运行时间  "},{"⑷水泵运行时间  "},{"⑸水泵运行时间  "},{"                "},{"                "},{"                "},{"                "}},	
		{{"⒑故障记录      "},{"⑴上次报警      "},{"⑵本次报警      "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}},		
		{{"⒒通信参数设定  "},{"⑴地址          "},{"⑵波特率        "},{"⑶形式          "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}},		
		{{"⒓零流量监控    "},{"⑴设定值        "},{"⑵实际值        "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}},
}; 
//二级菜单定义
UINT8     RDATA  Menu3_Data[Menu_Line_Num][Menu_Row_Num][Menu_Word_Num] =
{		{{"  压力          "},{"带变频的自动工作"},{"  1     号    泵"},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}},
        {{"  中文          "},{"功率          KW"},{"流量        m3/h"},{"传感器类型  压力"},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"                "},{"  A           %"},{"                "},{"  A           %"},{"                "},{"                "},{"                "},{"全启            "},{"                "}}, 
		{{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"  A           %"},{"                "},{"  A           %"},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"                "},{"                "},{"1 泵        小时"},{"3 泵        小时"},{" 5 泵       小时"},{"                "},{"                "},{"                "},{"                "}}, 
        {{"本次报警        "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"    00H         "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"    00          "},{"      00        "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
};
//三级菜单定义
UINT8    RDATA  Menu4_Data[Menu_Line_Num][Menu_Row_Num][Menu_Word_Num] =
{		{{"                "},{"                "},{"运行方式    变频"},{"频率          HZ"},{"                "},{"                "},{"                "},{"                "},{"                "}},
        {{"  2005-07-14    "},{"电流         A  "},{"最高扬程       m"},{"单位        Bar "},{"            Bar "},{"主泵数量        "},{"辅泵数量        "},{"                "},{"                "}}, 
        {{"            Bar "},{"  B         Bar "},{"             S  "},{"  B         Bar "},{"            S   "},{"            Bar "},{"            S   "},{"            Bar "},{"            S   "}}, 
        {{"            S   "},{"             S  "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"  B         Bar "},{"             S  "},{"  B         Bar "},{"            S   "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"                "},{"             S  "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"                "},{"             S  "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"                "},{"            小时"},{"2 泵        小时"},{"4 泵        小时"},{"6 泵        小时"},{"                "},{"                "},{"                "},{"                "}}, 
        {{"            小时"},{"            小时"},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"注释            "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
        {{"            S   "},{"             S  "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "},{"                "}}, 
};
//补字菜单定义
UINT8     RDATA  Menu34_Data[9][6][Menu_Word_Num] =
{       {{"  压力          "},{"  压差          "},{"  温度          "},{"                "},{""},{""}},
        {{"设备停止运行    "},{"  调试          "},{"带变频的自动工作"},{"不带变频自动工作"},{""},{""}},
		{{"  1     号    泵"},{"  2     号    泵"},{"  3     号    泵"},{"  4     号    泵"},{"  5     号    泵"},{"  6     号    泵"}},
		{{"运行方式    变频"},{"运行方式    工频"},{"  运行方式  结束"},{""},{""},{""}},
   		{{"  中文          "},{"  英文          "},{""},{""},{""},{""}},
		{{"传感器类型  压力"},{"传感器类型  压差"},{"传感器类型  温度"}, {""},{""},{""}},
        {{"单位        Bar "},{"  单位      ℃  "},{""},{""},{""},{""}},
		{{"4800            "},{"9600            "},{""},{""},{""},{""}},
		{{"  ASC           "},{"  RTU           "},{""},{""},{""},{""}},
		 
};
//绘图屏显示数组
UINT8    RDATA  Display_Data[10][1][Menu_Word_Num]  ={{{"Hm  扬程  Q 流量"}},
                                                      {{"电压: 220VAC   "}},
													  {{"设定值          "}},
													  {{"实际值          "}},
													  {{"I1             A"}},
													  {{"I2             A"}},
													  {{"I3             A"}},
													  {{"I4             A"}},
													  {{"I5             A"}},
													  {{"I6             A"}},
													 } ;
											


//******************************结束 菜单数组定义*********************************************************************/
/*******************************开始 系统函数声明*********************************************************************/
extern 	void  DelayX10ms (UINT8 Delay_Time10) ;   	//延时10毫秒函数
extern	void  DelayX50us (UINT8 Delay_Time50) ;	    //延时50微秒初始化函数
extern  void  Monitor_Data(void);                   //监控界面函数
extern  void  Init_Device(void); 				    //硬件初始化函数
extern  void  Key_Interrupt (void);					//键盘程序 
extern  void  Send_Instr (UINT8 Lcd_Inst);			//lcd指令函数
extern  void  Send_Data (UINT8 Lcd_Data);           //lcd数据函数
extern  void  Send_Line_Data(UINT8 line,UINT8 x,UINT8 y);  //菜单程序指定行送显
extern  void  Send_34Line_Data(UINT8 x,UINT8 y) ;		  //送菜单34行数据
extern 	void  Clr_Disply(void);	                          //清显示屏
extern 	void  Lcd_Revers(UINT8 Revers_Line);             //指定行反显
extern 	void  Clear_Draw_Screen();			             //清画图显示缓冲区
extern 	void  Draw_Screen(UINT8 Y_Position,UINT8 X_Position,UINT8 H_Data,UINT8 L_Data);	    //绘图函数
extern 	void  Init_Lcd (void);		     //lcd初始化函数
extern 	void  Over_Limit_Fun() ;		 //菜单数组越界判定函数
extern 	void  Data_Char(UINT16 Conver_Data);	 //数据转变字符函数
extern 	void  Process_Fun(UINT8 Fun_x,UINT8 Fun_y);	  //34级菜单处理函数
extern  void  Menu_Char34(UINT8 Char3_Line,UINT8 Char3_Post,UINT8 Char3_Num,UINT8 Char4_Line,UINT8 Char4_Post,UINT8 Char4_Num);	    //34行菜单字符显示处理函数
extern  void  Menu_Fun34(UINT8 Data3_L,UINT8 Data3_NUM,UINT16 Data3_R,UINT8 Data4_L,UINT8 Data4_NUM,UINT16 Data4_R);	    //34行菜单数据显示处理函数
extern  void  Monitor2_Data(void );
/*******************************结束 系统函数声明*********************************************************************/
/***************************开始 初始化 CygnalF020 ********************************/
// Peripheral specific initialization functions,
// Called from the Init_Device() function
void Reset_Sources_Init()
{
    WDTCN     = 0xDE;
    WDTCN     = 0xAD;
}

void Timer_Init()
{
    TL0       = 0xA0;
    TH0       = 0xC1;
}

void Port_IO_Init()
{
    // P0.0  -  Unassigned,  Push-Pull,  Digital
    // P0.1  -  Unassigned,  Push-Pull,  Digital
    // P0.2  -  Unassigned,  Push-Pull,  Digital
    // P0.3  -  Unassigned,  Push-Pull,  Digital
    // P0.4  -  Unassigned,  Push-Pull,  Digital
    // P0.5  -  Unassigned,  Push-Pull,  Digital
    // P0.6  -  Unassigned,  Push-Pull,  Digital
    // P0.7  -  Unassigned,  Push-Pull,  Digital

    // P1.0  -  Unassigned,  Push-Pull,  Digital
    // P1.1  -  Unassigned,  Push-Pull,  Digital
    // P1.2  -  Unassigned,  Push-Pull,  Digital
    // P1.3  -  Unassigned,  Push-Pull,  Digital
    // P1.4  -  Unassigned,  Push-Pull,  Digital
    // P1.5  -  Unassigned,  Push-Pull,  Digital
    // P1.6  -  Unassigned,  Push-Pull,  Digital
    // P1.7  -  Unassigned,  Push-Pull,  Digital

    // P2.0  -  Unassigned,  Open-Drain, Digital
    // P2.1  -  Unassigned,  Open-Drain, Digital
    // P2.2  -  Unassigned,  Open-Drain, Digital
    // P2.3  -  Unassigned,  Open-Drain, Digital
    // P2.4  -  Unassigned,  Open-Drain, Digital
    // P2.5  -  Unassigned,  Open-Drain, Digital
    // P2.6  -  Unassigned,  Open-Drain, Digital
    // P2.7  -  Unassigned,  Open-Drain, Digital

    // P3.0  -  Unassigned,  Open-Drain, Digital
    // P3.1  -  Unassigned,  Open-Drain, Digital
    // P3.2  -  Unassigned,  Open-Drain, Digital
    // P3.3  -  Unassigned,  Open-Drain, Digital
    // P3.4  -  Unassigned,  Open-Drain, Digital
    // P3.5  -  Unassigned,  Open-Drain, Digital
    // P3.6  -  Unassigned,  Open-Drain, Digital
    // P3.7  -  Unassigned,  Open-Drain, Digital

    P0MDOUT   = 0x00;
    P1MDOUT   = 0xFF;	//开漏
	P2MDOUT   = 0xff;
	P3MDOUT   = 0xff;
    XBR2      = 0x40;
	
}

void Oscillator_Init()
{
    OSCICN    = 0x06;
}

void Interrupts_Init()
{
    IE = 0x80;

}

// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
    Reset_Sources_Init();
    Timer_Init();
    Port_IO_Init();
    Oscillator_Init();
    Interrupts_Init();
}
/***************************结束 初始化 CygnalF020 )********************************/
/***************************开始 键盘中断处理 ********************************/
// 函数介绍: 定时器键盘中断处理

⌨️ 快捷键说明

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