📄 12864.h
字号:
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define SetSclk (PORTC|=0x80)
#define ClrSclk (PORTC&=~0x80)
#define SetRs (PORTD|=0x40)
#define ClrRs (PORTD&=~0x40)
#define SetSid (PORTC|=0x40)
#define ClrSid (PORTC&=~0x40)
const unsigned char Bitmap[]={/*-- 宽度x高度=128x64图像 --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFC,0x0C,0x1F,0xF8,0x38,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFC,0x0C,0x0F,0xF8,0x38,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF8,0x06,0x0F,0xF8,0x30,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF8,0x06,0x07,0xF0,0x30,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF8,0x06,0x07,0xF0,0x70,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF0,0x03,0x07,0xF0,0x60,0x70,0x3F,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x01,0xFF,
0xFF,0xF0,0x03,0x03,0xE0,0x60,0x70,0x3F,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x01,0xFF,
0xFF,0xF0,0x03,0x83,0xE0,0xE0,0xF0,0x3F,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x01,0xFF,
0xFF,0xE0,0x01,0x83,0x80,0xC0,0xE0,0x7F,0xDF,0xFF,0xFF,0xFE,0x1F,0xFF,0xFF,0xFF,
0xFF,0xE0,0x41,0x81,0x80,0xC0,0x80,0x7F,0x8F,0xFF,0xFF,0xF2,0x60,0x10,0x27,0xFF,
0xFF,0xE0,0xC1,0xC1,0x81,0xC0,0x00,0x7F,0x8F,0xFF,0xFF,0xE2,0x00,0x10,0x27,0xFF,
0xFF,0xC0,0xC0,0xC1,0x81,0x80,0x00,0xFF,0x8F,0xFF,0xFF,0xE2,0x00,0x13,0xE7,0xFF,
0xFF,0xC0,0xE0,0xC0,0x01,0x80,0x01,0xFF,0x9F,0xFF,0xFF,0xC2,0x04,0x93,0xE7,0xFF,
0xFF,0xC0,0xE0,0x60,0x03,0x80,0x07,0xFF,0x1F,0xFF,0xFF,0xC2,0x04,0x90,0x27,0xFF,
0xFF,0xC0,0x00,0x60,0x03,0x00,0x0F,0xFF,0x3F,0xFF,0xFF,0x82,0x04,0x90,0x27,0xFF,
0xFF,0x80,0x00,0x60,0x03,0x02,0x0F,0xFF,0xBF,0xFF,0xFF,0x12,0x04,0x93,0xE7,0xFF,
0xFF,0x80,0x00,0x30,0x07,0x06,0x07,0xFF,0xBF,0xFF,0xFF,0x12,0x04,0x93,0xE7,0xFF,
0xFF,0x80,0x00,0x30,0x06,0x06,0x07,0xFF,0xBF,0xFF,0xFF,0x12,0x04,0x90,0x27,0xFF,
0xFF,0x00,0x00,0x30,0x06,0x07,0x07,0xFF,0x9F,0xFF,0xFE,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x07,0xF8,0x18,0x0E,0x0F,0x07,0xF7,0xDF,0xE1,0xFE,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x07,0xFC,0x18,0x0C,0x0F,0x03,0x80,0xC3,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFE,0x07,0xFC,0x1C,0x0C,0x0F,0x03,0x00,0x00,0x08,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x0F,0xFE,0x1C,0x1C,0x1F,0x83,0x0F,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xBF,0x83,0x03,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xBF,0x83,0x03,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFE,0x1F,0xFF,0xFF,0xFF,0x80,0x03,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFF,0x80,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFF,0xD8,0x00,0x4F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xC8,0x00,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0xE3,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x20,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xE0,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x40,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFE,0x07,0xC3,0xFF,0x99,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xE0,0x93,0xC8,0x07,0x39,0xFF,0xFF,0x18,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFC,0x9F,0x90,0xE4,0x00,0x3F,0xFF,0x30,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xE0,0x01,0x93,0xE4,0xC3,0x3F,0xFF,0x11,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFC,0x9F,0x13,0xE4,0xC7,0x3F,0xFF,0x87,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFC,0x13,0x93,0xE4,0xC3,0x3F,0xFF,0xC3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF8,0x07,0x93,0xE4,0x09,0x3F,0xFF,0xC1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xE0,0xCF,0x93,0xE4,0xC9,0x3F,0xFF,0x89,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFC,0x89,0x93,0xE4,0xCF,0x3F,0xFF,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFC,0x21,0x93,0xE4,0x0F,0x3F,0xFF,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF0,0xF1,0x93,0x04,0xC8,0x7F,0xFF,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
#pragma data:data
/*******************************************************/
/****** 函数名称: SendData() ******/
/****** 功 能: 向LCD发送数据,串行方式 ******/
/****** 参 数: data--待发送的数据 ******/
/****** 返回值 : 无 ******/
/*******************************************************/
void SendData(unsigned char data)
{
unsigned char i;
for(i=0;i<8;i++) //循环8次
{
ClrSclk; //置低CLK
if(data&0x80) //判断数据极性
SetSid; //如果数据为1置高
else
ClrSid; //否则置低
data<<=1; //右移一位
SetSclk; //置高CLK
}
}
/*******************************************************/
/****** 函数名称: Wr_Com() ******/
/****** 功 能: 向LCD发送命令 ******/
/****** 参 数: data--待发送的命令字 ******/
/****** 返回值 : 无 ******/
/*******************************************************/
void Wr_Com(unsigned char data)
{
SetRs; //片选LCD12864
SendData(0xf8); //命令字:写命令
SendData(data&0xf0); //写命令字高4位
SendData(data<<4); //写命令字低4位
ClrRs; //释放片选
}
/*******************************************************/
/****** 函数名称: Wr_Date() ******/
/****** 功 能: 向LCD发送数据 ******/
/****** 参 数: data--待发送的数据 ******/
/****** 返回值 : 无 ******/
/*******************************************************/
void Wr_Date(unsigned char data)
{
SetRs; //片选LCD12864
SendData(0xfa); //命令字:写数据
SendData(data&0xf0); //写数据高4位
SendData(data<<4); //写数据低4位
ClrRs; //释放片选
}
/*******************************************************/
/****** 函数名称: Clear_All() ******/
/****** 功 能: 清LCD屏幕 ******/
/****** 参 数: 无 ******/
/****** 返回值 : 无 ******/
/*******************************************************/
void Clear_All(void)
{
Wr_Com(0x01); //命令字
delay_nms(40);
}
/*******************************************************/
/****** 函数名称: Lcd_Init() ******/
/****** 功 能: 初始化LCD ******/
/****** 参 数: 无 ******/
/****** 返回值 : 无 ******/
/*******************************************************/
void Lcd_Init(void)
{
DDRC=0xc0; //设置控制管脚方向
DDRD=0x40;
Wr_Com(0x30); //功能设定:基本指令集
delay(80);
Wr_Com(0x0c); //显示状态打开
delay(80);
Wr_Com(0x01); //清屏
delay_nms(40);
Wr_Com(0x60); //设定CGRAM地址
delay(80);
}
/*******************************************************/
/****** 函数名称: LCD_set_xy() ******/
/****** 功 能: 设置LCD显示坐标 ******/
/****** 参 数: 显示字符串的位置,X:0-15,Y:0-1*****/
/****** 返回值 : 无 ******/
/*******************************************************/
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
switch(y)
{
case 0:
address = 0x80 + x; //计算显示地址
break;
case 1:
address = 0x90 + x; //计算显示地址
break;
case 2:
address = 0x88 + x; //计算显示地址
break;
case 3:
address = 0x98 + x; //计算显示地址
break;
default:address = 0x80 + x;
}
Wr_Com( address); //写地址命令
}
/*******************************************************/
/****** 函数名称: LCD_write_string() ******/
/****** 功 能: 中英文字符串显示函数 ******/
/****** 参 数: *s--英文字符串指针 ******/
/****** X、Y--显示字符串的位置 ******/
/****** 返回值 : 无 ******/
/*******************************************************/
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y ); //写显示地址
while (*s) //是否到字符串尾
{
Wr_Date (*s ); //写显示数据
s ++; //字符串地址加1
}
}
/*******************************************************/
/****** 函数名称: ShowBmp() ******/
/****** 功 能: 显示一幅128*64的BMP位图 ******/
/****** 参 数: 无 ******/
/****** 返回值 : 无 ******/
/*******************************************************/
void ShowBmp(void)
{
unsigned int i,a,x=0,y=0;
Wr_Com(0x34);
for(a=0;a<32;a++)
{
Wr_Com(0x80+a);
Wr_Com(0x80);
for(i=0;i<8;i++)
{
Wr_Date(Bitmap[y+x]);
Wr_Date(Bitmap[y+x+1]);
x+=2;
}
x=0;
for(i=0;i<8;i++)
{
Wr_Date(Bitmap[512+y+x]);
Wr_Date(Bitmap[512+y+x+1]);
x+=2;
}
x=0;
y+=16;
}
Wr_Com(0x36);
delay(80);
Wr_Com(0x30);
delay(80);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -