基于STC12C5410AD的字库型12864的使用
#include intrins.h>
sbit E_CLK =P1^2; //时钟使能
sbit RW_SID=P1^1;//串行数据输入、输出端
sbit RS_CS =P1^0;//片选端
//宏定义
#define uint unsigned int
#define uchar unsigned char
//下面是数组定义
uchar code ts[]={"黄河远上白云间"};
uchar code tw[]={"一片孤城万仞山"};
uchar code ta[]={"羌笛何须怨杨柳"};
uchar code tb[]={"春风不度玉门关"};
//延时子函数
void delay(unsigned int xms)
{
unsigned int i,j;
for(i=0; ixms; i++)
for(j=0;j110;j++)
{};
}
//串行发送一字节数据
void Send_Byte(unsigned char dat)
{
unsigned char i;
for(i=0;i8;i++)
{
delay(1);
P1M0=0;
P1M1=1;
E_CLK=0; //时钟线拉低
if(dat0x80)
RW_SID=1;
else
RW_SID=0;
E_CLK=1;
dat=dat1;
}
}
//控制命令
void Send_command(unsigned char dat)
{
P1M0=0;
P1M1=1;
RS_CS=1;
Send_Byte(0xF8);//11111,00,0 RW=0,RS=0 同步标志
Send_Byte(dat0xF0);//高四位
Send_Byte((dat0x0F)4);//低四位
RS_CS=0;
}
//显示数据或单字节字符
void Send_Dat(unsigned char dat)
{
RS_CS=1;
Send_Byte(0xFA);//11111,01,0 RW=0,RS=1
Send_Byte(dat0xF0);//高四位
Send_Byte((dat0x0F)4);//低四位
RS_CS=0;
}
void display_1()
{
uchar a;
Send_command(0x80);
for(a=0;a14;a++)
{
Send_Dat(ts[a]);
}
}
void display_2()
{
uchar b;
Send_command(0x90);
for(b=0;b14;b++)
{
Send_Dat(tw[b]);
}
}
void display_3()
{
uchar c;
Send_command(0x88);
for(c=0;c14;c++)
{
Send_Dat(ta[c]);
}
}
void display_4()
{
uchar d;
Send_command(0x98);
for(d=0;d14;d++)
{
Send_Dat(tb[d]);
}
}
//初始化 LCD
void init(void)
{
P1M0=0;
P1M1=1;
RS_CS=0;
delay(1);
Send_command(0x30);//功能设置,一次送8位数据,基本指令集
Send_command(0x0c);//0000,1100 整体显示,游标on,游标位置on
Send_command(0x01);//0000,0001 清DDRAM
Send_command(0x02);//0000,0010 DDRAM地址归位
Send_command(0x80);//1000,0000 设定DDRAM 7位地址000,0000到地址计数器AC
}
void main(void)
{
init();
delay(1);
display_1();
display_2();
display_3();
display_4();
while(1);
}
评论