📄 fun_16.c
字号:
#include "config.h"
extern void delay(uint16 n);
/****************************************************
* Function
*****************************************************/
void data_out(uint8 dataH,dataL)
{
//8080 INTERFACE
CS1 =0;
DC = 1;
WR1 = 0;
P1 = dataL;
P0 = dataH;
WR1 = 1;
CS1 = 1;
}
void comm_out(uint8 i)
{
//8080 INTERFACE
CS1 = 0;
DC = 0;
WR1 = 0;
P1 = i;
WR1 = 1;
CS1 = 1;
}
void selectSeries(uint8 i)
{
//SELECT SERIES
switch(i)
{
case 0:
//MI = 0;//SELECT 8080
RD1 = 1;
WR1 = 1;
break;
case 1:
//MI = 1; //SELECT 6800
RD1 = 0;
WR1 = 0;
break;
default:
;
}
}
void ini_lcd(void)
{
unsigned char i;
comm_out(0xD1); // enable internal osc
comm_out(0x20); // set power control register
data_out(0,0x0f); // 7x
comm_out(0x81); // set contrast and internal Regulator resistor ratio
data_out(0,20);
data_out(0,5); // 14.5v
comm_out(0xFB); // set bias 1/9
data_out(0,2);
/*
comm_out(0xca); // select duty 1/128
data_out(0,0);
data_out(0,31);
data_out(0,0);
*/
comm_out(0xF2); // set frame ferquency
data_out(0,0x07);
data_out(0,0x10);
comm_out(0xA7); // set normal-a6 inverse-a7
comm_out(0xBC); // set data output scan direction
data_out(0,0x02);
data_out(0,0x01);
data_out(0,0x03); // 0-64k
/* comm_out(0xF1); // set com sequence
data_out(0,0xf0); // com1->com131,com0->com132
data_out(0,0x00);
data_out(0,0x00);
*/
comm_out(0xBB); // set com output
data_out(0,2);
comm_out(0x15); // Set col address
data_out(0,2); // Start col address
data_out(0,129); // End col address
comm_out(0x75); // Set page address
data_out(0,0); // Start page address
data_out(0,159); // End page address
comm_out(0x5c); // Write Display Data
comm_out(0x94); // exit sleep mode
// comm_out(0xa9); // exit partial
comm_out(0xAF); // display on
comm_out(0xce); // set color look-up table
for(i=0;i<32;i++)
data_out(i);
}
void setDispArea(uint16 s_col,e_col,s_page,e_page)
{
comm_out(0x15); // Set col address
data_out(0,s_col); // Start col address
data_out(0,e_col); // End col address
comm_out(0x75); // Set page address
data_out(0,s_page); // Start page address
data_out(0,e_page); // End page address
}
/*
void setColorLookUp(void)
{
uint8 i;
comm_out(0xce); // set color look-up table
for(i=0;i<32;i++)
data_out(i);
}
*/
void setColorMode(uint8 i)
{
switch(i)
{
case 1:
comm_out(0xBC); // set data output scan direction
data_out(0,0x00);
data_out(0,0x01);
data_out(0,0x01); // 0-256
case 2:
comm_out(0xBC); // set data output scan direction
data_out(0,0x00);
data_out(0,0x01);
data_out(0,0x00); // 0-64k
default:
;
}
}
void dispColor(uint16 row,col,uint8 colorMode,uint8 rgb1,rgb2,uint8 dly)
{
uint16 i,j;
setColorMode(colorMode);
comm_out(0x5c); // Write Display Data
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
data_out(rgb1,rgb2);
delay(dly);
}
}
}
void dispPic(uint16 row,col,uint8 colorMode,uint8 code *picture)
{
uint16 i,j;
setColorMode(colorMode);
switch (colorMode)
{
case 1:
//p256d
comm_out(0x5c); // Write Display Data
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
data_out(*(picture++),*picture);
picture ++;
}
}
break;
case 2:
//p64kd
comm_out(0x5c); // Write Display Data
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
data_out(*picture,*(++picture));
picture ++;
}
}
break;
default:
;
}
}
void dispColorY(uint16 row,col,uint8 colorMode,uint8 rgbA1, rgbA2,rgbB1,rgbB2,rgbC1,rgbC2,rgbD1,rgbD2)
{
uint16 i,j;
setColorMode(colorMode);
comm_out(0x5c); // Write Display Data
for(i=0;i<row;i++)
{
for(j=0;j<col/4;j++)
{
data_out(rgbA1,rgbA2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbB1,rgbB2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbC1,rgbC2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbD1,rgbD2);
}
}
}
void dispColorX(uint16 row,col,uint8 colorMode,uint8 rgbA1,rgbA2,rgbB1,rgbB2,rgbC1,rgbC2,rgbD1,rgbD2)
{
uint16 i,j,k;
setColorMode(colorMode);
k = row /4;
comm_out(0x5c); // Write Display Data
for(i=0;i<k;i++)
{
for(j=0;j<col;j++)
{
data_out(rgbA1,rgbA2);
}
}
for(i=0;i<k;i++)
{
for(j=0;j<col;j++)
{
data_out(rgbB1,rgbB2);
}
}
for(i=0;i<k;i++)
{
for(j=0;j<col;j++)
{
data_out(rgbC1,rgbC2);
}
}
for(i=0;i<k;i++)
{
for(j=0;j<col;j++)
{
data_out(rgbD1,rgbD2);
}
}
}
void dispColorB(uint16 row,col,uint8 colorMode,uint8 rgbA1,rgbA2,rgbB1,rgbB2,rgbC1,rgbC2,rgbD1,rgbD2)
{
uint16 i,j,k;
setColorMode(colorMode);
k = row/4;
comm_out(0x5c); // Write Display Data
for(i=0;i<k;i++)
{
for(j=0;j<col/4;j++)
{
data_out(rgbA1,rgbA2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbB1,rgbB2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbC1,rgbC2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbD1,rgbD2);
}
}
for(i=0;i<k;i++)
{
for(j=0;j<col/4;j++)
{
data_out(rgbB1,rgbB2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbC1,rgbC2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbD1,rgbD2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbA1,rgbA2);
}
}
for(i=0;i<k;i++)
{
for(j=0;j<col/4;j++)
{
data_out(rgbC1,rgbC2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbD1,rgbD2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbA1,rgbA2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbB1,rgbB2);
}
}
for(i=0;i<k;i++)
{
for(j=0;j<col/4;j++)
{
data_out(rgbD1,rgbD2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbA1,rgbA2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbB1,rgbB2);
}
for(j=0;j<col/4;j++)
{
data_out(rgbC1,rgbC2);
}
}
}
void dispColorW(uint16 row,col,uint8 colorMode,uint8 Frgb1,Frgb2,Brgb1,Brgb2)
{
uint16 i,j,k;
setColorMode(colorMode);
k = row /4;
comm_out(0x5c); // Write Display Data
for(i=0;i<k;i++)
{
for(j=0;j<col;j++)
{
data_out(Brgb1,Brgb2);
}
}
for(i=0;i<k*2;i++)
{
for(j=0;j<col/4;j++)
{
data_out(Brgb1,Brgb2);
}
for(j=0;j<col/2;j++)
{
data_out(Frgb1,Frgb2);
}
for(j=0;j<col/4;j++)
{
data_out(Brgb1,Brgb2);
}
}
for(i=0;i<k;i++)
{
for(j=0;j<col;j++)
{
data_out(Brgb1,Brgb2);
}
}
}
void dispColorG(uint16 row,col,uint8 colorMode)
{
//white 0xff,0xff
//red 0xf8,0x00
//green 0x07,0xe0
//blue 0x00,0x1f
uint16 i,j;
setColorMode(colorMode);
comm_out(0x5c); // Write Display Data
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
data_out( (0x07+(j/4)*8),(0xe0+j/4) );
}
}
}
void dispGraphic_8(uint16 row,col,uint8 colorMode,uint8 code *Graphic,uint8 F_RGB1,F_RGB2,B_RGB1,B_RGB2)
{
uint8 n, i,j,k;
uint8 tempGraphic;
setColorMode(colorMode);
//p64kd
comm_out(0x5c); // Write Display Data
for(n=0;n<row/8;n++)
{
for(i=0;i<8;i++)
{
for(j=0;j<col/8;j++)
{
tempGraphic = Graphic[i];
for(k=0;k<8;k++)
{
if(((tempGraphic)&(0x80))!= 0)
{
data_out(F_RGB1,F_RGB2);
}else
{
data_out(B_RGB1,B_RGB2);
}
tempGraphic = tempGraphic << 1;
}
}
}
}
}
void dispGraphic_16(uint16 row,col,uint8 colorMode,uint8 code *Graphic,uint8 F_RGB1, F_RGB2,B_RGB1,B_RGB2)
{
uint8 n, i,j,k;
uint8 tempGraphic;
setColorMode(colorMode);
comm_out(0x5c); // Write Display Data
//p64kd
for(n=0;n<row/16;n++)
{
for(i=0;i<16;i++)
{
for(j=0;j<col/16;j++)
{
tempGraphic = Graphic[i*2];
for(k=0;k<8;k++)
{
if(((tempGraphic)&(0x80))!= 0)
{
data_out(F_RGB1,F_RGB2);
}else
{
data_out(B_RGB1,B_RGB2);
}
tempGraphic = tempGraphic << 1;
}
tempGraphic = Graphic[i*2+1];
for(k=0;k<8;k++)
{
if(((tempGraphic)&(0x80))!= 0)
{
data_out(F_RGB1,F_RGB2);
}else
{
data_out(B_RGB1,B_RGB2);
}
tempGraphic = tempGraphic << 1;
}
}
}
}
}
void setDuty(uint8 i)
{
comm_out(0xca); // select duty
data_out(0,0);
data_out(0,i/4-1);
data_out(0,0);
}
void setBias(uint8 bias)
{
//0-1/7,1-1/8,2-1/9,3-1/10
comm_out(0xFB); // set bias
data_out(0,bias);
}
void setContrast(uint8 x,y)
{
comm_out(0x81); // set contrast and internal Regulator resistor ratio
data_out(0,x);
data_out(0,y); // 14.5v
}
/****************************************************************************
** End Of File
*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -