📄 12864.c
字号:
#include"init.h"
#include"12864.h"
#include"delay.h"
/**********************************************************
12864等待空闲
**********************************************************/
void wait(void)
{
P0=0xff;
RS=0;
RW=1;
EN=0;
delay_n10us(1);
EN=1;
while(SUBF&0x80);
}
/**********************************************************
12864写一条指令
**********************************************************/
void write_com(uchar com)
{
wait();
EN=0;
RS=0;
RW=0;
P0=com;
EN=0;
EN=1;
delay_nms(1);
EN=0;
}
/**********************************************************
12864写一个字符
**********************************************************/
void write_dat(uchar dat)
{
wait();
EN=0;
RS=1;
RW=0;
P0=dat;
EN=0;
EN=1;
delay_nms(1);
EN=0;
}
/**********************************************************
12864初始化
**********************************************************/
void init_12864()
{
PSB=1;
Rst=1;
NC =1;
delay_nms(100);
write_com(0x30);
delay_n10us(50);
write_com(0x30);
delay_n10us(5);
write_com(0x0c);
delay_n10us(20);
write_com(0x01);
delay_n10us(2);
write_com(0x06);
delay_n10us(10);
}
/**********************************************************
12864写字符 row代表行,first代表从第几位开始写 dat写的内容
**********************************************************/
void char_12864(uchar row,uchar first,uint dat)
{
switch(row)
{
case 1: write_com(0x80+first);
write_dat(dat);
delay_n10us(2); break;
case 2: write_com(0x90+first);
write_dat(dat);
delay_n10us(2); break;
case 3: write_com(0x88+first);
write_dat(dat);
delay_n10us(2); break;
case 4: write_com(0x98+first);
write_dat(dat);
delay_n10us(2); break;
}
}
/**********************************************************
12864写2个字节 row代表行,first代表从第几位开始写* dat写的内容
**********************************************************/
void char2_12864(uchar row,uchar first,uchar dat)
{
uchar i;
switch(row)
{
case 1: write_com(0x80+first); //显示年月日使用
for(i=0;i<2;i++)
{
write_dat(clock[dat+i]+0x30);
delay_n10us(2);
}
break;
case 2: write_com(0x90+first); //显示时间使用
for(i=0;i<2;i++)
{
write_dat(clock[dat+i]+0x30);
delay_n10us(2);
}
break;
case 3: write_com(0x88+first); //显示星期使用
for(i=0;i<2;i++)
{
write_dat(clock[dat+i]);
delay_n10us(2);
}
break;
case 4: write_com(0x98+first); //显示温度使用
for(i=0;i<6;i++)
{
write_dat(TempData[dat+i]);
delay_n10us(1);
}
break;
}
}
/**********************************************************
12864写字符串 row代表行,first代表从第几位开始写 * dat写的内容
**********************************************************/
void string_12864(uchar row,uchar first,uchar *dat)
{
uchar i;
switch(row)
{
case 1: write_com(0x80+first);
for(i=0;dat[i]!='\0';i++)
{
write_dat(dat[i]);
delay_n10us(2);
}
break;
case 2: write_com(0x90+first);
for(i=0;dat[i]!='\0';i++)
{
write_dat(dat[i]);
delay_n10us(2);
}
break;
case 3: write_com(0x88+first);
for(i=0;dat[i]!='\0';i++)
{
write_dat(dat[i]);
delay_n10us(2);
}
break;
case 4: write_com(0x98+first);
for(i=0;dat[i]!='\0';i++)
{
write_dat(dat[i]);
delay_n10us(2);
}
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -