📄 lcd.h
字号:
/*-------------------端口定义-----------------------------*/
#define INT BIT0 //???????;?????
#define STA BIT1 //??????,1:? 0:??
#define SS BIT2 //chip select;?????
#define MOSI BIT3 //DIN
#define MISO BIT4 //DOUT
#define SCK BIT5 //DCLK
/*---------------------LCD??-----------------------------*/
#define data_out P2OUT //MCU PORTC<------> LCM
#define state P1IN //?????PINB,?????PINB
#define control P1OUT //?????PORTB
#define req BIT6 //????,H??
#define busy BIT7 //H:??????????,L:???????
/*----------------------------------------------------------*/
#define uchar unsigned char
#define uint unsigned int
#define cbi(srf,bit) (srf&=~bit)
#define sbi(srf,bit) (srf|=bit)
/*--------------------IO???----------------------------*/
void io_init(void) //IO???
{
P2DIR=0xff; //??????
P1DIR=0xff;
P1OUT=0x00;
P1DIR&=~INT;
P1DIR&=~busy;
P1DIR&=~MOSI;
}
void send (uchar dat) //??????
{
while (state&busy);
data_out=dat;
sbi(control,req);
while (!(state&busy));
cbi(control,req);
}
/*-----------------????------------------*/
void wr_zb (uchar comm,uchar addr_x,uchar addr_y)//????
{
send(comm);
send(addr_x);
send(addr_y);
}
/*---------------????---------------------*/
void delayms (uchar time)
{ int j,k;
while(time--)
{
for(j=100;j>0;j--)
for(k=200;k>0;k--)
;
}
}
/*-------------------????8X8-------------------*/
void dis_byte (uchar x,uchar y,uchar code)
{
wr_zb(0xf1,x,y);
send(code);
}
/*-------------------????8X16-------------------*/
void dis_byte_big (uchar x,uchar y,uchar code)
{
wr_zb(0xf9,x,y);
send(code);
}
/*--------------------?????--------------------*/
void dis_bit_lat (uchar x,uchar y,uchar data)
{
wr_zb(0xf2,x,y);
send(data);
}
/*--------------------??????-------------------*/
void dis_byte_lat (uchar x,uchar y,uchar data)
{
wr_zb(0xf3,x,y);
send(data);
}
/*--------------------????8bit----------------------*/
void dis_cursor (void)
{
send(0xfb);
send(0x07);
}
/*--------------------????16bit----------------------*/
void dis_cursor_big (void)
{
send(0xfb);
send(0x0f);
}
/*-----------------------????------------------------*/
void close_cursor (void)
{
send(0xfb);
send(0x00);
}
/*----------------------??????1bit-----------------------*/
void move_1 (void)
{
send(0xfc);
send(0x00);
}
/*----------------------??????2bit-----------------------*/
void move_2 (void)
{
send(0xfc);
send(0x01);
}
/*----------------------??????8bit-----------------------*/
void move_8 (void)
{
send(0xfc);
send(0x07);
}
/*----------------------????-----------------------*/
void dis_img (uchar *img)
{
uchar i,j;
for(j=0;j<128;j++)
{
for(i=0;i<30;i++)
{
wr_zb(0xf3,i,j);
send(img[j*20+i]);
}
}
}
/*-----------------???????------------------*/
void dis_chn (uchar x,uchar y,uchar num,uchar *chn)
{
uchar i=0,j=0;
while(num--)
{
if((x+i)<15)
{
wr_zb(0xf0,x+i,y+j);
send(chn[j*30+i*2]-0xa0);
send(chn[j*30+i*2+1]-0xa0);
i++;
}
else
{
i=0;
j++;
num++;
if(j==8)
{
break;
}
}
}
}
/*-----------------???????8X16-------------------*/
void dis_eng_big (uchar x,uchar y,uchar *eng)
{
uchar i=0,j=0;
while(1)
{
if((x+i)<30)
{
wr_zb(0xf9,x+i,(y+j)*16);
send(eng[j*30+i]);
i++;
if(eng[j*30+i]=='\0')
{
break;
}
}
else
{
i=0;
j++;
if(j==8)
{
break;
}
if(eng[j*30+i]=='\0')
{
break;
}
}
}
}
/*-----------------???????8X8-------------------*/
void dis_eng (uchar x,uchar y,uchar *eng)
{
uchar i=0,j=0;
while(1)
{
if((x+i)<30)
{
wr_zb(0xf1,x+i,(y+j)*8);
send(eng[j*30+i]);
i++;
if(eng[j*30+i]=='\0')
{
break;
}
}
else
{
i=0;
j++;
if(j==8)
{
break;
}
if(eng[j*30+i]=='\0')
{
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -