📄 glcd.h
字号:
/*——————————————————————————————————————————————
〖文件〗glcd.h
〖说明〗
HD61202 LCD Driver For AvrGcc
这只是一个最基本的驱动。
我主要用它在开发是显示调试信息,所以很多功能尚未完成(如写汉字,画图标等)。
〖硬件〗
128*64点阵液晶,芯片为三星的KS0108+KS0107,兼任日立HD61202。
在SL-AVRS实验板上实验通过。
〖作者〗
张磊,2002/5/7 初始版本,在avrgcc-2001-11版本上编译通过。
〖修改〗
张磊,2002/7/2。 增加中文注释
张磊,2002/9/12。 增加一些新宏,这样就可以在avrgcc 2002-6-25及以上版本正确编译。
张磊,2006/7/19。 修改代码,使WinAVR-20050214及以上版本正确编译。
〖版本〗
V 1.03
〖版权〗
驱动可以无限制使用 。如果你愿意,请寄你的修改拷贝给我,谢谢!
张磊(zhanglei@zj165.net)保留其修改权利,并不对使用本驱动造成的损失负责。
修改自某高手的C51版本(可惜我找不到他的详细信息),在此向他致敬。
〖其它〗
1、由于字体为5*7(我为了节省Rom),所以反白显示有问题。你只要修改字体为8*8既可。
2、反白显示,更改字体只要简单修改glcd_putc()函数中,
glcd_wr_data(pgm_read_byte(&font5x7[((chr - 32) * 5) + a]));这一行既可。
——————————————————————————————————————————————*/
#ifndef _GLCD_H_
#define _GLCD_H_
#include <avr/io.h>
//#include "avrlibdefs.h"
#include "includes.h"
/*********** 请使用大写字母来定义端口! (A,B,C,D...) ***********/
#define GLCD_DATA B /* 液晶数据口 (Data Port) */
#define GLCD_CTRL A /* 液晶控制口 (Control Port)*/
/*********** 液晶显示器接口引脚定义 ***************/
#define GLCD_RS 1//2 /* 寄存器选择 : 1=数据寄存器, 0=指令数据寄存器 */
#define GLCD_RW 2//3 /* 读写方式选择 : 0=写, 1=读 */
#define GLCD_EN 3//4 /* LCD使能(EN): 1=使能 */
#define GLCD_CS1 4//5 /* 片选1 : 1=选中 */
#define GLCD_CS2 5//6 /* 片选2 : 1=选中 */
#define GLCD_RST 6//7 /* 复位 : 0=复位 */
//#define GLCD_BLED 7 /* 背光 : 1=开 */
#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)//B口
#define GLCD_DATAPORT_DDR CONCAT1(DDR,GLCD_DATA)
#define GLCD_DATAPORT_PIN CONCAT1(PIN,GLCD_DATA)
#define GLCD_CTRLPORT CONCAT1(PORT,GLCD_CTRL)//A口
#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_clrscr( void ); /* 清屏幕 */
void glcd_gotoxy( unsigned char x, unsigned char y ); /* 范围:x(0:127), y(0:7) */
/* 写一字符, 从 ASCII(32) 到 ASCII(127) */
void glcd_putc(unsigned char chr , unsigned char style );
void glcd_puts(unsigned char *data , unsigned char style ); /* 写一字符串 */
void inline glcd_back_light_on(void); /* 打开背光 */
void inline glcd_back_light_off(void); /* 关闭背光 */
void glcd_set_dot(unsigned char x, unsigned char y); /* 画点 */
void glcd_clr_dot(unsigned char x, unsigned char y); /* 消点 */
/* 画线 */
void glcd_line(unsigned char x1 , unsigned char y1 ,unsigned char x2 , unsigned char y2);
/* 画圆 */
void glcd_circle(unsigned char x_center, unsigned char y_center, unsigned char radius);
/* 画矩形 */
void glcd_rect(unsigned char x, unsigned char y, unsigned char a, unsigned char b);
//选择起始行,范围:( 0 : 63 )
void glcd_start_line(unsigned char start);
void glcd_init(void);
void glcd_delay(unsigned int p);
void glcd_wait_for_busy(void);
void glcd_wait_for_reset(void);
void glcd_wr_cmd(unsigned char cmd);
void glcd_wr_data(unsigned char data);
unsigned char glcd_rd_data(void);
void inline glcd_set_x_addr(unsigned char x_addr);
void inline glcd_set_y_addr(unsigned char y_addr);
#endif //_GLCD_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -