📄 12864_chuankou_drive.h
字号:
#include<iom8v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
#define CS_0 PORTD&=~(1<<PDD4) //片选RS
#define CS_1 PORTD|=(1<<PD4)
#define SID_0 PORTD&=~(1<<PD5) //数据 RW
#define SID_1 PORTD|=(1<<PD5)
#define SCLK_0 PORTD&=~(1<<PD6) //时钟 E
#define SCLK_1 PORTD|=(1<<PD6)
#define RST_0 PORTD&=~(1<<PD7) //复位 RST
#define RST_1 PORTD|=(1<<PD7)
/**********************函数声明***************************************/
void delay_us(int t);
void delay_ms(unsigned int t);
void send_byte(uchar bbyte);
void lcd_wcmd(uchar cmd);
void lcd_wdat(uchar dat);
//*******************延时 us 8****************************************
void delay_us(int t)
{
do
t--;
while(t>1);
}
//*******************延时 ms *****************************************
void delay_ms(unsigned int t)
{
while(t!=0)
{
delay_us(1142);
t--;}
}
/*********************发送1字节函数****************************/
void send_byte(uchar bbyte)
{
uchar i;
for(i=0;i<8;i++)
{
if(bbyte&0X80)
{SID_1;}
else
{SID_0;}
SCLK_1;
SCLK_0;
bbyte<<=1;
}
}
/************************写命令函数**********************************/
void lcd_wcmd(uchar cmd)
{
uchar star_data,Hdata,Ldata;
star_data=0XF8;
Hdata=cmd&0XF0;
Ldata=(cmd<<4)&0XF0;
send_byte(star_data);
delay_us(1);
send_byte(Hdata);
delay_us(1);
send_byte(Ldata);
delay_us(1);
}
/**************************写数据函数***************************************/
void lcd_wdat(uchar dat)
{
uchar star_data,Hdata,Ldata;
star_data=0XFA;
Hdata=dat&0XF0;
Ldata=(dat<<4)&0XF0;
send_byte(star_data);
delay_us(1);
send_byte(Hdata);
delay_us(1);
send_byte(Ldata);
delay_us(1);
}
/**************************初始化函数*************************************/
void lcd_init(void)
{
//PSB_0;
RST_0;
delay_ms(3);
RST_1;
delay_ms(3);
CS_1;
lcd_wcmd(0X34);
delay_ms(5);
lcd_wcmd(0X30);
delay_ms(5);
lcd_wcmd(0X0C);
delay_ms(5);
lcd_wcmd(0X01);
delay_ms(5);
}
/********************清屏*********************/
void lcd_clr(void)
{
lcd_wcmd(0X01);
delay_ms(5);
}
/********************位置定义***********************/
void locatexy(uchar x,uchar y)
{
if(y==0){lcd_wcmd(0X80+x);}
else if(y==1){lcd_wcmd(0X90+x);}
else if(y==2){lcd_wcmd(0X88+x);}
else if(y==3){lcd_wcmd(0X98+x);}
}
/********************显示内容***********************/
void lcd_write_str(uchar x,uchar y,uchar *s)
{
locatexy(x,y);
while(*s)
{
lcd_wdat(*s);
s++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -