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

📄 glcd.h

📁 AVRMEG32编写的一个项目代码,里面包含一般应用的模块.
💻 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 + -