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

📄 enter.c

📁 带有LCD
💻 C
字号:
/****************************************************
*Copyright (c) 2007, 新芝股份
*All rights reserved.
*
*文件名称:common.c
*
*当前版本:1.1
*作者:黄文剑
*完成日期:2007.10.10
*
*取代版本:1.0
*原作者:
*完成日期:2007.10.16
****************************************************/
#include <pic.h>
#include <string.h>
#include "D:\ql200\com\com.h"
#include "D:\ql200\key\key.h"
#include "D:\ql200\lcd\lcd.h"
#include "enter.h"


const unsigned char 	enter_menu_string1[11] = "abcdefghi#";
const unsigned char 	enter_menu_string2[11] = "jklmnopqr#";
const unsigned char 	enter_menu_string3[6] = "Name:";
const unsigned char 	enter_menu_string4[11] = "#stuvwxyz#";
const unsigned char 	enter_menu_string5[11] = "()*+,-./=#";
const unsigned char 	enter_menu_string0[7] = "Enter:";
const unsigned char 	tem_ctrl_mode[16] = "Control Method:";
const unsigned char 	mode1[6] = "BLOCK";
const unsigned char 	mode2[9] = "Sim-Tube";
bank1 unsigned char 	file_name[9] = {0};
bank1 unsigned char 	file_name_get[9] = {0};
bank1 unsigned char 	file_name_index = 0;

void Dsp_Enter_Menu()
{
	Lcd_Clr();
	Lcd_Show_RomString(enter_menu_string0);		
	Lcd_MoveTo_Position(10);
	Lcd_Show_RomString(enter_menu_string1);
	Lcd_MoveTo_Position(30);
	Lcd_Show_RomString(enter_menu_string2);
	Lcd_MoveTo_Position(40);
	Lcd_Show_RomString(enter_menu_string3);
	Lcd_MoveTo_Position(50);
	Lcd_Show_RomString(enter_menu_string4);	
	Lcd_MoveTo_Position(70);
	Lcd_Show_RomString(enter_menu_string5);	
	Lcd_MoveTo_Position(10);
}

unsigned char Enter_Name(unsigned char *name)
{
	KEY_VALUE 		key_value = 0;
	unsigned char		*new_name = NULL;
	unsigned char		i = 0;
	unsigned char		j = 0;
	unsigned char 	cur_position = 0;
	unsigned char		wr_en = 0;
	unsigned char		bExit = 0;

	new_name = name;
	cur_position = Lcd_Get_Current_position();       //get the LCD current position
	while(!bExit)
	{
		key_value = Keypad_HighISR();
		if(i > 7)
		{
			bExit = 1;
			break;
		}
		switch(key_value)
		{
			case KEY_ERROR:
				break;
			case KEY_0:
			{		
				j = 0;
				new_name[i] = 0x30+j;
				wr_en = 1;
				break;				
			}
			case KEY_1:
			{
				j = 1;
				new_name[i] = 0x30+j;
				wr_en = 1;
				break;
			}
			case KEY_2:
			{
				j = 2;
				new_name[i] = 0x30+j;
				wr_en = 1;	
				break;
			}
			case KEY_3:
			{
				j = 3;
				new_name[i] = 0x30+j;
				wr_en = 1;
				break;
			}
			case KEY_4:
			{
				j = 4;
				new_name[i] = 0x30+j;
				wr_en = 1;
				break;
			}
			case KEY_5:
			{
				j = 5;
				new_name[i] = 0x30+j;
				wr_en = 1;					
				break;
			}	
			case KEY_6:
			{
				j = 6;
				new_name[i] = 0x30+j;
				wr_en = 1;					
				break;
			}
			case KEY_7:
			{
				j = 7;
				new_name[i] = 0x30+j;
				wr_en = 1;			
				break;
			}
			case KEY_8:
			{
				j = 8;
				new_name[i] = 0x30+j;
				wr_en = 1;				
				break;
			}
			case KEY_9:
			{
				j = 9;
				new_name[i] = 0x30+j;
				wr_en = 1;			
				break;
			}	
			case KEY_LEFT:
			{
				Lcd_Cursor_Left();
				break;
			}
			case KEY_RIGHT:
			{
				Lcd_Cursor_Right();
				break;
			}			
			case KEY_UP:
			{
				Lcd_Cursor_Up();
				break;
			}			
			case KEY_DOWN:
			{
				Lcd_Cursor_Down();
				break;
			}
			case KEY_ENTER:
			{
				if(i > 7)
					break;
				cur_position = Lcd_Get_Current_position();
				if((cur_position >= 10) && (cur_position <= 18))
				{
					new_name[i] = cur_position + 87;
					wr_en = 1;
				}
				else if((cur_position >= 30) && (cur_position <= 38))
				{
					new_name[i] = cur_position + 76;
					wr_en = 1;
				}
				else if((cur_position >= 51) && (cur_position <= 58))
				{
					new_name[i] = cur_position + 64;
					wr_en = 1;
				}
				else if((cur_position >= 70) && (cur_position <= 77))
				{
					new_name[i] = cur_position - 30;
					wr_en = 1;
				}
				else if(cur_position == 78)
				{
					new_name[i] = 61;
					wr_en = 1;
				}
				else if((cur_position == 19) || 
					(cur_position == 39) || 
					(cur_position == 50) || 
					(cur_position == 59) ||
					(cur_position == 79))
				{
					new_name[i] = 0;
					bExit = 1;
					wr_en = 0;
				}	
				break;
			}
			case KEY_BACK:
			{
				return 1;
			}
			default:
				break;
		}
		if((key_value != KEY_ERROR) && (wr_en == 1))
		{
			Lcd_MoveTo_Position(60+i);            //move to write position
			Lcd_Write_Data(new_name[i]);        //write the input name to lcd
			Lcd_MoveTo_Position(cur_position);	 //move the cursor to current position
			wr_en = 0;
			i++;
		}
	}
	//memcpy(name, new_name, 9);
	return 0;
}

unsigned char Enter_Select_Tem_Ctrl_Mode(unsigned char *file_name)
{
	KEY_VALUE 		key_value = 0;
	unsigned char		bExit = 0;
	unsigned char		lcd_position = 0;
	
	Lcd_Clr();
	Lcd_Show_RomString(enter_menu_string0);
	Lcd_MoveTo_Position(10);
	Lcd_Show_String(file_name);
	Lcd_MoveTo_Position(40);
	Lcd_Show_RomString(tem_ctrl_mode);	
	Lcd_MoveTo_Position(60);
	Lcd_Show_RomString(mode1);	
	Lcd_MoveTo_Position(70);
	Lcd_Show_RomString(mode2);		

	while(!bExit)
	{
		key_value = Keypad_HighISR();
		switch(key_value)
		{
			case KEY_ERROR:
				break;
			case KEY_0:
				break;
			case KEY_1:
				break;
			case KEY_2:
				break;
			case KEY_3:
				break;
			case KEY_4:
				break;
			case KEY_5:
				break;
			case KEY_6:
				break;
			case KEY_7:
				break;
			case KEY_8:
				break;
			case KEY_9:
				break;
			case KEY_LEFT:
			{
				Lcd_Cursor_Left();
				break;
			}
			case KEY_RIGHT:
			{
				Lcd_Cursor_Right();
				break;
			}			
			case KEY_UP:
			{
				Lcd_Cursor_Up();
				break;
			}			
			case KEY_DOWN:
			{
				Lcd_Cursor_Down();
				break;
			}	
			case KEY_ENTER:
			{
				lcd_position = Lcd_Get_Current_position();
				if((lcd_position >= 60) || (lcd_position <= 64))
				{
					return 0;
				}
				else if((lcd_position >= 70) || (lcd_position <= 77))
				{
					return 1;
				}		
				//bExit = 1;
				break;				
			}
			case KEY_BACK:
				bExit = 1;
				break;
			default:
				break;					
		}
	}

}
void Enter_Menu()
{
	KEY_VALUE 		key_value = 0;
	unsigned char		ret = 0;
	unsigned char		eep_value = 0;
	unsigned char		bExit = 0;
	
	while(!bExit)
	{
		Dsp_Enter_Menu();
		ret = Enter_Name(file_name);
		if(ret == 0)
		{
			Lcd_Clr();
			Lcd_Show_String(file_name);
			Eep_Rom_Write_Filename(file_name_index, file_name);
			file_name_index++;
		}
		else if(ret == 1)
		{
			bExit = 1;
			break;
		}
		Delay_10ms_ISR(1);
		Eep_Rom_Read_Filename(file_name_index - 1, file_name_get);
		Enter_Select_Tem_Ctrl_Mode(file_name_get);
		key_value = Keypad_HighISR();
		switch(key_value)
		{
			case KEY_ERROR:
				break;
			case KEY_0:
				break;
			case KEY_1:
				break;
			case KEY_2:
				break;
			case KEY_3:
				break;
			case KEY_4:
				break;
			case KEY_5:
				break;
			case KEY_6:
				break;
			case KEY_7:
				break;
			case KEY_8:
				break;
			case KEY_9:
				break;
			case KEY_LEFT:
			{
				Lcd_Cursor_Left();
				break;
			}
			case KEY_RIGHT:
			{
				Lcd_Cursor_Right();
				break;
			}			
			case KEY_UP:
			{
				Lcd_Cursor_Up();
				break;
			}			
			case KEY_DOWN:
			{
				Lcd_Cursor_Down();
				break;
			}	
			case KEY_ENTER:
				bExit = 1;
				break;
			case KEY_BACK:
				bExit = 1;
				break;
			default:
				break;				
		}
	}
	
}


⌨️ 快捷键说明

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