📄 avr_xqv12.h
字号:
DDRC=0x00;
PORTD=0xff;
DDRD=0x00;
Un_Led();
Clear_SMG();
}
#if LCD12864==TRUE //条件编译指令
#pragma data:code //指定存储位置为Flash
const unsigned char Bitmap[]={/*-- 宽度x高度=128x64图像 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x01,0xFF,0x00,0x00,0x00,
0x00,0x00,0x0C,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0xFF,0x83,0xFF,0x80,0x00,0x00,
0x00,0x00,0x1E,0x0C,0x0F,0x00,0x00,0x00,0x00,0x01,0xFF,0xC3,0xFF,0x80,0x00,0x00,
0x00,0x00,0x1E,0x1E,0x0F,0x03,0x00,0x0C,0x00,0x01,0xFF,0xC3,0xFF,0x00,0x00,0x00,
0x00,0x00,0x1E,0x1E,0x0F,0x07,0x83,0x3F,0x00,0x01,0xC3,0xC3,0xC0,0x00,0x00,0x00,
0x00,0x00,0x1E,0x1E,0x0F,0x07,0x87,0xFF,0x80,0x03,0xC3,0xC3,0xC0,0x00,0x00,0x00,
0x00,0x00,0x1E,0x1E,0x0F,0x03,0x07,0xFF,0x80,0x03,0xC1,0x83,0xC0,0x00,0x00,0x00,
0x00,0x00,0x1E,0x1E,0x0F,0x00,0x07,0xF3,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,
0x00,0x00,0x1E,0x1E,0x0F,0x03,0x07,0xE3,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,
0x00,0x00,0x1E,0x1E,0x0F,0x07,0x87,0x83,0xC0,0x03,0xC0,0x03,0xFE,0x00,0x00,0x00,
0x00,0x00,0x1E,0x1E,0x0F,0x07,0x87,0x83,0xC0,0x03,0xC0,0x03,0xFF,0x00,0x00,0x00,
0x00,0x00,0x1E,0x1E,0x0F,0x07,0x87,0x83,0xC0,0x03,0xC0,0x03,0xFF,0x00,0x00,0x00,
0x00,0x00,0x1E,0x1E,0x0F,0x07,0x87,0x83,0xC0,0x03,0xC0,0x03,0xFE,0x00,0x00,0x00,
0x00,0x00,0x1E,0x1F,0x0F,0x07,0x87,0x83,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,
0x00,0x00,0x0F,0x3F,0x9F,0x07,0x87,0x83,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,
0x00,0x00,0x07,0xFF,0xFE,0x07,0x87,0x83,0xC0,0x03,0xC1,0x83,0xC0,0x00,0x00,0x00,
0x00,0x00,0x07,0xFB,0xFC,0x07,0x87,0x83,0xC0,0x03,0xC3,0xC3,0xC0,0x00,0x00,0x00,
0x00,0x00,0x03,0xF1,0xF8,0x0F,0xC7,0x83,0xC0,0x03,0xFF,0xC3,0xFF,0x00,0x00,0x00,
0x00,0x00,0x01,0xE0,0xF0,0x0F,0xC7,0x83,0xC0,0x03,0xFF,0xC3,0xFF,0x80,0x00,0x00,
0x00,0x00,0x00,0xC0,0x60,0x07,0x83,0x01,0x80,0x01,0xFF,0x83,0xFF,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x01,0xFF,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
#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_nus(80);
Wr_Com(0x0c); //显示状态打开
delay_nus(80);
Wr_Com(0x01); //清屏
delay_nms(40);
Wr_Com(0x60); //设定CGRAM地址
delay_nus(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_nus(80);
Wr_Com(0x30);
delay_nus(80);
}
#endif //条件编译结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -