📄 wmlcd.h
字号:
#ifndef __WMLCD_H__
#define __WMLCD_H__
#include <avr/io.h>
#include "includes.h"
/*
#define LCD_WRCMD1 0x1B00
#define LCD_WRCMD2 0x1C00
#define LCD_WRDISP1 0x3B00
#define LCD_WRDISP2 0x3C00
#define LCD_RDST1 0x5B00
#define LCD_RDST2 0x5C00
#define LCD_RDDISP1 0x7B00
#define LCD_RDDISP2 0x7C00
*/
/*********** 请使用大写字母来定义端口! (A,B,C,D...) ***********/
#define GLCD_DATA B /* 液晶数据口 (Data Port) */
#define GLCD_CTRL A /* 液晶控制口 (Control Port)*/
/*********** 液晶显示器接口引脚定义 ***************/
#define GLCD_RS 1 /* 寄存器选择 : 1=数据寄存器, 0=指令数据寄存器 */
#define GLCD_RW 2 /* 读写方式选择 : 0=写, 1=读 */
#define GLCD_EN 3 /* LCD使能(EN): 1=使能 */
#define GLCD_CS1 4 /* 片选1 : 1=选中 */
#define GLCD_CS2 5 /* 片选2 : 1=选中 */
#define GLCD_RST 6 /* 复位 : 0=复位 */
//#define GLCD_BLED 7 /* 背光 : 1=开 */
#define LCD_DISABLE 0x3E /*display off*/
#define LCD_ENABLE 0x3F /*display on*/
#define LCD_START_LINE 0xC0 /*display start line设置显示启始行 */
#define LCD_PAGE 0xB8 /*page set*///设置页地址,即行,8行为一页,共8页
#define LCD_COLUMN 0x40 /*column set*///设置Y地址,即列
#define LCD_PAGE_NUM 0x08 /*8 pages*///共8页
#define LCD_COLUMN_NUM 0x40 /*64 columns列 *///半屏共64列,0--63
#ifndef CONCAT1
#define CONCAT1(a, b) CONCAT2(a, b)
#endif
#ifndef CONCAT2
#define CONCAT2(a, b) a ## b //连接符
#endif
#define GLCD_DATAPORT CONCAT1(PORT,GLCD_DATA)//PB口
#define GLCD_DATAPORT_DDR CONCAT1(DDR,GLCD_DATA)
#define GLCD_DATAPORT_PIN CONCAT1(PIN,GLCD_DATA)
#define GLCD_CTRLPORT CONCAT1(PORT,GLCD_CTRL)//PA口
#define GLCD_CTRLPORT_DDR CONCAT1(DDR,GLCD_CTRL)
#define GLCD_CTRLPORT_PIN CONCAT1(PIN,GLCD_CTRL)
#define GLCD_STAT_BUSY 7
#define GLCD_STAT_ONOFF 5
#define GLCD_STAT_RESET 4
/***********常用操作命令和参数定义***************/
#define set_cs1() ( sbi(GLCD_CTRLPORT, GLCD_CS1) )//PB口片选1 : 1=选中
#define clr_cs1() ( cbi(GLCD_CTRLPORT, GLCD_CS1) )
#define set_cs2() ( sbi(GLCD_CTRLPORT, GLCD_CS2) )//片选2 : 1=选中
#define clr_cs2() ( cbi(GLCD_CTRLPORT, GLCD_CS2) )
#define set_en() ( sbi(GLCD_CTRLPORT, GLCD_EN) )//LCD使能(EN): 1=使能
#define clr_en() ( cbi(GLCD_CTRLPORT, GLCD_EN) )
#define set_rw() ( sbi(GLCD_CTRLPORT, GLCD_RW) )//读
#define clr_rw() ( cbi(GLCD_CTRLPORT, GLCD_RW) )//写
#define set_rs() ( sbi(GLCD_CTRLPORT, GLCD_RS) )//1=数据寄存器,
#define clr_rs() ( cbi(GLCD_CTRLPORT, GLCD_RS) )//0=指令数据寄存器
#define set_rst() ( sbi(GLCD_CTRLPORT, GLCD_RST) )
#define clr_rst() ( cbi(GLCD_CTRLPORT, GLCD_RST) )//复位
/*
#define LINE1 0
#define LINE2 1
#define LINE3 2
#define LINE4 3
#define LINE5 4
#define LINE6 5
#define LINE7 6
#define LINE8 7
*/
//#define ON 1
//#define OFF 0
/*
#define DISPLAY_ON 0x3f
#define DISPLAY_OFF 0x3e
#define DISPLAY_SET_Y 0x40
#define DISPLAY_SET_X 0xb8
#define DISPLAY_START_LINE 0xc0
*/
//小延时
void glcd_delay(unsigned int p);
//等待复位完成
void glcd_wait_for_reset(void);
//busy判断、等待
void glcd_wait_for_busy(void);
//写右半屏命令
void Lcd_WriteCmd1(unsigned char ucCmd);
//写右半屏数据
void Lcd_WriteData1(unsigned char ucData);
//写左半屏命令
void Lcd_WriteCmd2(unsigned char ucCmd);
//写左半屏数据
void Lcd_WriteData2(unsigned char ucData);
//清屏,除第一页
void Lcd_Clear(void);
//清屏
void Lcd_ClearAll(void);
//初始化
void Lcd_Init(void);
//坐标定位
void Lcd_SetPos(unsigned char ucHPos,unsigned char ucVPos); //H水平,V垂直
void draw_h16bmp(unsigned char hcol,unsigned char vpos,unsigned char width,unsigned char *bmp);
void disp_8x16_ascii(unsigned char xcol,unsigned char ypos,unsigned char ascii_code,unsigned char mode);
void disp_16x16_mark(unsigned char xcol,unsigned char ypos,unsigned char *bmp,unsigned char mode);
void Lcd_Printf_ram(unsigned char xcol,unsigned char ypos,unsigned char *ptr,unsigned char mode);
void Lcd_Printf(unsigned char xcol,unsigned char ypos,const prog_char ptr[],unsigned char mode);
//初始化界面
void DisplayFace(void);
void drawL_8x8bmp(unsigned char *bmp);
void drawR_8x8bmp(unsigned char *bmp);
void disp_8x8_ascii(unsigned char xcol,unsigned char ypos,unsigned char ascii_code,unsigned char mode);
//void Lcd_8x8Printf(unsigned char xcol,unsigned char ypos,unsigned char *ptr,unsigned char mode);
void Lcd_8x8Printf(unsigned char xcol,unsigned char ypos,const prog_char *ptr,unsigned char mode);
void display_first_face(void);
//void Lcd_Printf_12(unsigned char xcol,unsigned char ypos,unsigned char *ptr,unsigned char mode);
void Lcd_Printf_12(unsigned char xcol,unsigned char ypos,const prog_char *ptr ,unsigned char mode);
//显示符号
//void fuhao(u08 umtp,u08 hang);
void Display_8x8Int_data(unsigned char xcol,unsigned char ypos,unsigned int uiNum,unsigned char ucDigit,unsigned char ucMode);
void drawL_8x8bmp(unsigned char *bmp);
void drawR_8x8bmp(unsigned char *bmp);
void disp_8x8_ascii(unsigned char xcol,unsigned char ypos,unsigned char ascii_code,unsigned char mode);
void Lcd_8x8Printf_ram(unsigned char xcol,unsigned char ypos,unsigned char *ptr,unsigned char mode);
//void disp_8x8A_ascii(unsigned char xcol,unsigned char ypos,unsigned char ascii_code,unsigned char mode);
//void Lcd_8x8APrintf(unsigned char xcol,unsigned char ypos,unsigned char *ptr,unsigned char mode);
//一级菜单
//void display_second_face(void);
void Display_8x16Int(unsigned char xcol,unsigned char ypos,unsigned int uiNum,unsigned char ucDigit,unsigned char ucMode);
void drawL_Line(unsigned char xStart,unsigned char xLen,unsigned char yPos,unsigned char ucChar);
void drawR_Line(unsigned char xStart,unsigned char xLen,unsigned char yPos,unsigned char ucChar);
void Lcd_DispMarkHz_ChildMenu(unsigned char xcol,unsigned char ypos,unsigned char ucMode);
void Lcd_DispMarkHz_Blank(unsigned char xcol,unsigned char ypos,unsigned char ucMode);
unsigned char Display_8x8Int(unsigned char xcol,unsigned char ypos,unsigned int uiNum,unsigned char ucDigit,unsigned char ucMode,unsigned char ucDispLZero,unsigned char ucLZeroReplCh);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -