📄 ocm4_16a.c
字号:
for (i=0;i<16;i++)
send_d (1,0,chn[j*16+i]);
}
send_c (0,1,0x80);
for (j=4;j<8;j++)
{
for (i=0;i<16;i++)
send_d (0,1,chn[j*16+i]);
}
}
/*-----------------显示字符------------------*/
void chn_disp1 (void)
{
uchar i;
send_c (1,1,0x30);
send_c (1,0,0x81);
for (i=2;i<64;i++)
send_d (1,0,i);
send_c (0,1,0x80);
for (i=64;i<128;i++)
send_d (0,1,i);
}
/*-----------左半屏显示汉字或字符------------*/
void chn_disp2 (uchar const *chn)
{
uchar i,j;
send_c (1,1,0x30);
send_c (1,0,0x80);
j=0;
for (i=0;i<16;i++)
send_d (1,0,chn[j*16+i]);
send_c (1,0,0x90);
j=1;
for (i=0;i<16;i++)
send_d (1,0,chn[j*16+i]);
send_c (0,1,0x80);
j=2;
for (i=0;i<16;i++)
send_d (0,1,chn[j*16+i]);
send_c (0,1,0x90);
j=3;
for (i=0;i<16;i++)
send_d (0,1,chn[j*16+i]);
}
/*----------------显示图形-----------------*/
void img_disp (uchar const*img)
{
uchar i,j;
for(j=0;j<32;j++)
{
for(i=0;i<16;i++)
{
send_c (1,0,0x34);
send_c (1,0,y+j);
send_c (1,0,x1+i);
send_c (1,0,0x30);
send_d (1,0,img[j*32+i*2]);
send_d (1,0,img[j*32+i*2+1]);
}
}
for(j=32;j<64;j++)
{
for(i=0;i<16;i++)
{
send_c (0,1,0x34);
send_c (0,1,y+j-32);
send_c (0,1,x1+i);
send_c (0,1,0x30);
send_d (0,1,img[j*32+i*2]);
send_d (0,1,img[j*32+i*2+1]);
}
}
send_c (1,1,0x36);
}
/*--------------半屏画图形---------------*/
void img_disp1 (uchar jbdisp,uchar x,uchar const *img)
{
uchar i,j;
for(j=0;j<32;j++)
{
for(i=0;i<8;i++)
{
send_c (1,0,0x34);
send_c (1,0,y+j);
send_c (1,0,x+i);
send_c (1,0,0x30);
send_d (1,0,img[j*16+i*2]);
send_d (1,0,img[j*16+i*2+1]);
}
}
for(j=32;j<64;j++)
{
for(i=0;i<8;i++)
{
send_c (0,1,0x34);
send_c (0,1,y+j-32);
send_c (0,1,x+i);
send_c (0,1,0x30);
send_d (0,1,img[j*16+i*2]);
send_d (0,1,img[j*16+i*2+1]);
}
}
if(jbdisp==1)
{
send_c (1,1,0x36);
}
}
/*--------------显示点阵------------------*/
void lat_disp (uchar data1,uchar data2)
{
uchar i,j;
for(j=0;j<16;j++)
{
for(i=0;i<16;i++)
{
send_c (1,1,0x34);
send_c (1,1,y+j*2);
send_c (1,1,x1+i);
send_c (1,1,0x30);
send_d (1,1,data1);
send_d (1,1,data1);
}
for(i=0;i<16;i++)
{
send_c (1,1,0x34);
send_c (1,1,y+j*2+1);
send_c (1,1,x1+i);
send_c (1,1,0x30);
send_d (1,1,data2);
send_d (1,1,data2);
}
}
send_c (1,1,0x36);
}
/*--------------清DDRAM------------------*/
void clrram (void)
{
send_c (1,1,0x30);
send_c (1,1,0x01);
}
/*-----------------------------------------------*/
void send_c (uchar choe1,uchar choe2,uchar comm)
{
chk_busy (choe1,choe2);
CLR_LCD_RS ;
CLR_LCD_RW ;
if(choe1==1)
{
LCM_Data = comm ;
SET_LCD_E1;
delay_nms(5);
CLR_LCD_E1 ;
}
if(choe2==1)
{
LCM_Data = comm ;
SET_LCD_E2 ;
delay_nms(5);
CLR_LCD_E2 ;
}
}
void send_d (uchar choe1,uchar choe2,uchar dat)
{
chk_busy (choe1,choe2);
SET_LCD_RS;
CLR_LCD_RW;
if(choe1==1)
{
LCM_Data = dat ;
SET_LCD_E1 ;
delay_nms(5);
CLR_LCD_E1 ;
}
if(choe2==1)
{
LCM_Data = dat ;
SET_LCD_E2 ;
delay_nms(5);
CLR_LCD_E2 ;
}
}
void chk_busy (uchar choe1,uchar choe2)
{
if(choe1==1)
{
DDRC = 0xFF;
CLR_LCD_RS;
SET_LCD_RW;
SET_LCD_E1;
while(Busy==1);
CLR_LCD_E1;
}
if(choe2==1)
{
DDRC = 0xFF;
CLR_LCD_RS;
SET_LCD_RW;
SET_LCD_E2;
while(Busy==1);
CLR_LCD_E2;
}
}
/*------------------主程序--------------------*/
int main (void)
{
DDRD = 0xFF;
DDRG = 0x1F;
DDRC = 0XFF;
delay_nms(400);
init_lcd ();
while (1)
{
chn_disp (tab1);
delay_nms (50000);
clrram ();
chn_disp1 ();
delay_nms (50000);
clrram();
lat_disp (0xcc,0xcc);
delay_nms (50000);
clrram();
lat_disp (0x00,0x00);
chn_disp2 (tab2);
img_disp1 (1,x2,tab3);
delay_nms (50000);
clrram();
lat_disp (0xff,0x00);
delay_nms (50000);
img_disp1 (0,x1,tab3);
img_disp1 (1,x2,tab4);
delay_nms (50000);
send_c (1,1,0x34);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -