?? terminal.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 + -