📄 12864.c.120724154204
字号:
/*****************************************
*文件名:lcd12864.c
*功能:LCD12864串行方式AVR驱动程序
*日期:2010年7月10日
****************************************/
#include "12864.h" //包含头文件
/*****************************************
*函数名:delay_12864
*功能:利用寄存器操作实现延时效果
*参数:延时变量x
*返回值:无
****************************************/
void delay_ms(uint x)
{
uint i,j;
for(j=0;j<x;j++)
for(i=0;i<1141;i++);
}
void delay_us(uint x)
{
uint i,j;
for(j=0;j<x;j++)
for(i=0;i<40;i++);
}
//清屏
void CLE_Screen(void)
{
Write_Command(CLR_SCREEN);
delay_ms(7);
}
/*****************************************
*函数名:send_command
*功能:向LCD控制器的寄存器写指令
*参数:指令command_data
*返回值:无
****************************************/
void LCD_init(void)
{
delay_ms(100);
DDRE|=(1<<5);
DDRE|=(1<<3);
DDRE|=(1<<1);
delay_ms(1);
CLE_Screen();
Write_Command(RE_ADDR);//显示地址归位0x02
Write_Command(BASIC);//选择基本指令集0x30
Write_Command(CURSOR_OFF);//光标关
Write_Command(0x08);
Write_Command(0x10);
Write_Command(0x38);
Write_Command(0x80);
Write_Command(DISPLYAY_ON);//开显示0x0c
}
//向12864发送一个字节的数据
void Write_One_Date(unsigned char date)
{
unsigned char i;
SCLK_CLE;//时钟总线拉低
delay_us(1);
for(i=0;i<8;i++)//把数据送到线上去
{
if(date&0x80)
{SID_SET;}
else
{SID_CLE;}
delay_us(1);
SCLK_SET;//时钟总线拉高,数据传送给显示屏
delay_us(1);
SCLK_CLE;
delay_us(1);
date=date<<1;//高位先发
}
}
//发送命令
void Write_Command(unsigned char CMD)
{
CS_SET;
Write_One_Date(0xf8);//命令控制字
Write_One_Date(CMD&0xf0);
Write_One_Date(CMD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -