/**********************************************************************
*** 功用:12864LCD显现 显现闪耀字体,各位同学能够自己修正。
*** 试验内容:0x81 0x90 0x88 0x98 别离是LCD四行的行首地址,咱们操作LCD实际的字符便是别离放在这儿面的
***开发板衔接办法: 接上有字库LCD12864 留意调理对比度,LCD12864作业电流较大,请用外接电源供电。
****************************************************************************************************/
#include
//芯片装备字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振动
#define rs RA5 //界说LCD的数据/指令操控口
#define rw RA4 //界说LCD的读/写操控口
#define e RA3 //界说LCD的使能口
#define psb RA2 //界说通讯方法操控口
#define rst RA1 //界说复位口
#define nop()asm(“nop”) //界说空操作函数
const unsigned char TAB1A[ ] = {“中科技电子网”};
const unsigned char TAB1B[ ] = {***.*********.***”};
const unsigned char TAB1C[ ] = {“0755-110”};
const unsigned char TAB1D[ ] = {“HD-34 PIC开发板”};
unsigned int lcd_x; //界说LCD页地址寄存器
unsigned int lcd_y; //界说LCD列地址寄存器
bit busy; //界说LCD忙标志位
void init(); //声明I/O口设置函数
void lcd_init(); //声明LCD初始化函数
void clear_p(); //声明清屏函数
void writelcd(const unsigned char *pt); //声明LCD写字符串函数
void wr_zb(); //声明有关显现设置函数
voidflash(); //声明设置LCD显现闪耀函数
void send_d(unsigned char x); //声明送一字节数据显现函数
void send_i(unsigned char x); //声明送一字节操控指令函数
void chk_busy(); //声明检测LCD是否作业繁忙函数
void delay(); //声明延时函数1,供各指令之间的延时和决议显现快慢
void delay1(); //声明延时函数2,用以决议显现闪耀快慢
/****************************************************************************
* 名 称:main()
* 功 能:主函数
* 进口参数:
* 出口参数:
* 说 明:
****************************************************************************/
void main()
{
init(); //调用I/O口设置函数
while (1)
{
lcd_init(); //调用LCD初始化函数
clear_p(); //调用清屏函数
send_i(0x81); //第1行
writelcd(TAB1A);
send_i(0x90); //第2行
writelcd(TAB1B);
send_i(0x88); //第3行
writelcd(TAB1C);
send_i(0x98); //第4行
writelcd(TAB1D);
delay(); //延伸显现一段时刻
flash(); //调用显现闪耀函数
clear_p(); //调用清屏函数
}
}
/****************************************************************************
* 名 称:init()
* 功 能:I/O口初始化
* 进口参数:
* 出口参数:
* 说 明:
****************************************************************************/
void init()
{
ADCON1 = 0X07; //设置A口为一般I/O口
TRISA = 0X00; //设置A口为输出
TRISD = 0X00; //设置D口为输出
PORTA = 0X00000001;
}
/****************************************************************************
* 名 称:lcd_init()
* 功 能:LCD初始化
* 进口参数:
* 出口参数:
* 说 明:
****************************************************************************/
voidlcd_init()
{
rst = 0; //复位LCD
delay(); //确保复位所需求的时刻
rst = 1; //康复LCD正常作业
nop();
psb = 1; //设置LCD为8位并口通讯
send_i(0x30); //根本指令操作
send_i(0x01); //铲除显现
send_i(0x06); //指定在写入或读取时,光标的移动方向
send_i(0x0c); //开显现,关光标,不闪耀
}