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

📄 terminal.h

📁 44b0+PDIUSBD12开发的USB鼠标源代码
💻 H
字号:
#ifndef __TERMINAL_H__
#define __TERMINAL_H__

#include"Uart.h"
#include"user.h"


#define DVC_TERMINAL	0
#define DVC_LCD256C		1
#define DVC_LCD1602		2
#define DVC_LED			3
#define DVC_SOUNDER		5
#define DVC_STATUSBOX	6
#define DVC_KEYBOARD	4
#define DVC_STATUSBOX   6

#define CMD_CONNECT		1
#define ACK				99

#define CMD_1602_INIT			0
#define CMD_1602CLS				1
#define CMD_1602LOCATE			2
#define CMD_1602PRINT_CHAR		3
#define CMD_1602SET_CURSOR_TYPE	4

#define CMD_LCD256C_INIT		0
#define CMD_SET_DISPLAYADDR		1
#define CMD_GET_DISPLAYADDR		2
#define CMD_SET_RWADDR			3
#define CMD_GET_RWADDR			4
#define CMD_DRAW_CC				5
#define CMD_DRAW_LETTER			6
#define CMD_DRAW_RECTANGLE		7
#define CMD_LCD_CLS				8
#define CMD_RAM_COPY			9
#define CMD_RAM_PASTE			10
#define CMD_INIT				11
#define CMD_SET_COLOR			12
#define CMD_WRITE_PIXEL			13
#define CMD_GET_MOUSE_POS		14

#define CMD_LEDDISPLAY			1
#define CMD_GETKEY				2

#define CMD_CLS					1
#define CMD_PRINT_CHR			2
#define CMD_PRINT_NUM			3
#define STAT_ENDLINE			229


BYTE LEDNUMSEC[16]={0x5f,0x03,0x75,0x73,0x2b,0x7a,0x7e,0x13,0x7f,0x7b,0x3f,0x6e,0x5c,0x67,0x7c,0x3c};

struct MousePosType
{
	int X;
	int Y;
};
struct MousePosType MousePos;

struct CmdType
{
	BYTE Device;
	BYTE Command;
	int PM_1;
	int PM_2;
	int PM_3;
	int PM_4;
};

struct CmdType Cmd;


void SendCommand(){
	Uart_SendNum(1);
	Uart_SendNum(0);
	Uart_SendNum(1);
	Uart_SendNum(6);
	
	Uart_SendNum(Cmd.Device);
	Uart_SendNum(Cmd.Command);
	Uart_SendNum(Cmd.PM_1);
	Uart_SendNum(Cmd.PM_2);
	Uart_SendNum(Cmd.PM_3);
	Uart_SendNum(Cmd.PM_4);
}
void Tmn_Init(BYTE ComIndex,int BandRate){
	Uart_Init(ComIndex,BandRate);
	Cmd.Device=DVC_TERMINAL;
	Cmd.Command=CMD_CONNECT;
	SendCommand();
	Uart_GetWord();
}


///////////////////////////////////LCD1602
void Tmn_Lcd1602Init(){
	Cmd.Device=DVC_LCD1602;
	Cmd.Command=CMD_1602_INIT;
	SendCommand();
}
void Tmn_Lcd1602Cls(){
	Cmd.Device=DVC_LCD1602;
	Cmd.Command=CMD_1602CLS;
	SendCommand();
}
void Tmn_Lcd1602PrintChar(BYTE chr){
	Cmd.Device=DVC_LCD1602;
	Cmd.Command=CMD_1602PRINT_CHAR;
	Cmd.PM_1=chr;
	SendCommand();
}
void Tmn_Lcd1602PrintStr(char Str[]){//及其注意,不能用 BYTE Str[] ,与 Keil51 区别
	BYTE Index;
	Index=0;
	while(Str[Index]!='\0'){
		Tmn_Lcd1602PrintChar(Str[Index]);
		Index++;
	}
}
void Tmn_Lcd1602Locate(BYTE row,BYTE col){
	Cmd.Device=DVC_LCD1602;
	Cmd.Command=CMD_1602LOCATE;
	Cmd.PM_1=row;
	Cmd.PM_2=col;
	SendCommand();
}
void Tmn_Lcd1602SetCursorType(BYTE CsType){
	Cmd.Device=DVC_LCD1602;
	Cmd.Command=CMD_1602SET_CURSOR_TYPE;
	Cmd.PM_1=CsType;
	SendCommand();
}
//////////////////////////////////////////////

//////////////////////////状态窗口
void Tmn_StatusCls(){
	Cmd.Device=DVC_STATUSBOX;
	Cmd.Command=CMD_CLS;
	SendCommand();
}
void Tmn_StatusPrintChar(BYTE asc){
	Cmd.Device=DVC_STATUSBOX;
	Cmd.Command=CMD_PRINT_CHR;
	Cmd.PM_1=asc;
	SendCommand();
}
void Tmn_StatusPrintStr(char *pt){
	while(*pt){
		Tmn_StatusPrintChar(*pt++);
	}
	Tmn_StatusPrintChar(STAT_ENDLINE);
}
void Tmn_StatusPrintNum(int num){
	Cmd.Device=DVC_STATUSBOX;
	Cmd.Command=CMD_PRINT_NUM;
	Cmd.PM_1=num;
	SendCommand();
}

/////////////////////////////////
//////////////////////////数码管,键盘
void Tmn_LedWrite(BYTE Index,BYTE val){
	Cmd.Device=DVC_LED;
	Cmd.Command=CMD_LEDDISPLAY;
	Cmd.PM_1=Index;
	Cmd.PM_2=val;
	SendCommand();
}
void Tmn_LedDisplayHEX(BYTE Index,BYTE num){
	if(num>15){
		return;
	}
	Tmn_LedWrite(Index,LEDNUMSEC[num]);
}
void Tmn_LedDisplayNum(BYTE Index,BYTE num){
	BYTE NumH,NumL;
	if(num>99){
		return;
	}
	NumH=num/10;
	NumL=num%10;
	Tmn_LedDisplayHEX(Index,NumH);
	Tmn_LedDisplayHEX(--Index,NumL);
}

BYTE Tmn_GetKey(){
	BYTE TmpVal;
	Cmd.Device=DVC_KEYBOARD;
	Cmd.Command=CMD_GETKEY;
	SendCommand();
	TmpVal=Uart_GetWord();
	return TmpVal;
}
//////////////////////////////////////////////
//////////////////////256色图形LCD
void Tmn_Lcd256CInit(){
	Cmd.Device=DVC_LCD256C;
	Cmd.Command=CMD_LCD256C_INIT;
	SendCommand();
}
void Tmn_SetView(int left,int top){
	Cmd.Device=DVC_LCD256C;
	Cmd.Command=CMD_SET_DISPLAYADDR;
	Cmd.PM_1=left;
	Cmd.PM_2=top;
	SendCommand();
}
 
void Tmn_SetRWAddr(int left,int top){
	Cmd.Device=DVC_LCD256C;
	Cmd.Command=CMD_SET_RWADDR;
	Cmd.PM_1=left;
	Cmd.PM_2=top;
	SendCommand();
}

void Tmn_DrawCC(BYTE NM[]){
	BYTE Index=0;
	Cmd.Device=DVC_LCD256C;
	Cmd.Command=CMD_DRAW_CC;
	while(NM[Index]!='\0'){
		Cmd.PM_1=NM[Index];
		Index++;
		Cmd.PM_2=NM[Index];
		Index++;
		SendCommand();
	}
}
void Tmn_DrawStr(char str[]){
	BYTE Index=0;
	Cmd.Device=DVC_LCD256C;
	Cmd.Command=CMD_DRAW_LETTER;
	while(str[Index]!=0){
		Cmd.PM_1=str[Index];
		SendCommand();
		Index++;
	}
}
void Tmn_DrawRectangle(int left,int top,int right,int bottom){
	Cmd.Device=DVC_LCD256C;
	Cmd.Command=CMD_DRAW_RECTANGLE;
	Cmd.PM_1=left;
	Cmd.PM_2=top;
	Cmd.PM_3=right;
	Cmd.PM_4=bottom;
	SendCommand();
}
void Tmn_LcdCls(){
	Cmd.Device=DVC_LCD256C;
	Cmd.Command=CMD_LCD_CLS;
	SendCommand();
}
void Tmn_RAMCopy(int left,int top,BYTE wid,BYTE hgt){
	Cmd.Device=DVC_LCD256C;
	Cmd.Command=CMD_RAM_COPY;
	Cmd.PM_1=left;
	Cmd.PM_2=top;
	Cmd.PM_3=wid;
	Cmd.PM_4=hgt;
	SendCommand();
}
void Tmn_RAMPaste(int left,int top){
	Cmd.Device=DVC_LCD256C;
	Cmd.Command=CMD_RAM_PASTE;
	Cmd.PM_1=left;
	Cmd.PM_2=top;
	SendCommand();
}
void Tmn_SetColor(BYTE foreColor,BYTE backColor,BYTE transparent){
	Cmd.Device=DVC_LCD256C;
	Cmd.Command=CMD_SET_COLOR;
	Cmd.PM_1=foreColor;
	Cmd.PM_2=backColor;
	Cmd.PM_3=transparent;
	SendCommand();
}
void Tmn_COMWritePixel(){
	Cmd.Device=DVC_LCD256C;
	Cmd.Command=CMD_WRITE_PIXEL;
	SendCommand();
}
void Tmn_WriteData(BYTE num){
	Uart_SendNum(num);
}

void Tmn_GetMousePos(){
	Cmd.Device=DVC_LCD256C;
	Cmd.Command=CMD_GET_MOUSE_POS;
	SendCommand();
	MousePos.X=Uart_GetWord();
	MousePos.Y=Uart_GetWord();
}
///////////////////////////////////////////////////

#endif

⌨️ 快捷键说明

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