#include<reg52.h>
#include"yejin.h"
#define uchar unsigned char
#define uint unsigned int
sbit CS=P0^0;
sbit SID=P0^1;
sbit SCLK=P0^2;
sbit PSB=P0^3;
uchar code disp1[]={"液晶显示"};
uchar code disp2[]={"好的天气"};
uchar code disp3[]={"开心过好每一天"};
uchar code disp4[]={"天气挺好"};
void delay_1ms(uint x) //延时
{
uint i,j;
for(j=0;j<x;j++)
for(i=0;i<110;i++);
}
void send_command(uchar command_data)
{
uchar i;
uchar i_data;
i_data=0xf8;//写指令
CS=1;
SCLK=0;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);//取字节最高位,(1)高到低依次送给SID,从而发给液晶
SCLK=0;
SCLK=1;
i_data=i_data<<1;//(1)
}
i_data=command_data;
i_data&=0xf0; //
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
i_data=command_data;//高4位取出,低4位补0
i_data<<=4; //+上;低4位移到高4位,原来的低4位自动补0
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
CS=0;
delay_1ms(10);
}
void send_data(uchar command_data)
{
uchar i;
uchar i_data;
i_data=0xfa;
CS=1;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
i_data=command_data;
i_data&=0xf0;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
i_data=command_data;
i_data<<=4;
for(i=0;i<8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data<<1;
}
CS=0;
delay_1ms(10);
}
void lcd_init() //初始化
{
PSB=0;
delay_1ms(100);
send_command(0x30);
send_command(0x02);
send_command(0x06);
send_command(0x0c);
send_command(0x01);
send_command(0x80);
}
void display_1()
{
uchar a;
send_command(0x80); //第一行
for(a=0;a<12;a++)
{
send_data(disp1[a]);
}
}
void display_2()
{
uchar a;
send_command(0x90); //第二行
for(a=0;a<12;a++)
{
send_data(disp2[a]);
}
}
void display_3()
{
uchar a;
send_command(0x88); //第三行
for(a=0;a<12;a++)
{
send_data(disp3[a]);
}
}
void display_4()
{
uchar a;
send_command(0x98); //第四行
for(a=0;a<12;a++)
{
send_data(disp4[a]);
}
}
再写一个 yejin.h 就可以了。
|