📄 hg16016005t.c
字号:
WR_PORT =0;
WR_PORT =1;
CS_PORT=1;
}
//Write Display RAM Data
#pragma disable
void wr_dat(uchar dat)
{
RS_PORT =1;
WR_PORT =1;
RD_PORT =1;
CS_PORT =0;
DataPort = dat;
WR_PORT =0;
WR_PORT =1;
CS_PORT=1;
}
/*******************************************************************************
*
* 函数名称 : ST7529Ini(void)
* 功能描述 : 初始化控制器
* 函数说明 :
* 调用函数 : 无
* 全局变量 : 无
* 输入参数 : 无
* 返回值 : 无
* 设计者 : Joshua Chiang
* 修改者 : --
* 版本号 : 1.0
*
*******************************************************************************/
#pragma disable
void ST7529Ini(void)
{
wr_cmd(0X30); //EXT=0
wr_cmd(0X94); //SLEEP OUT
wr_cmd(0XD1); //OSC ON
wr_cmd(0x20); //POWER CONTROL SET
wr_dat(0X0B); //BOOSTER ON
wr_cmd(0x81); //ELECTRONIC CONTROL
wr_dat(0X30); //DL
wr_dat(0X04); //DH
wr_cmd(0xCA); //DISPLAY CONTROL
wr_dat(0X04); //CLD=0,NOT DIVIDE
wr_dat(0X27); //1/160 DUTY 39
wr_dat(0X00); //FR
wr_cmd(0xA7); //Reverse display
wr_cmd(0xBB); //COM SCAN DIRECTION
wr_dat(0X02); //C79->C0,C80->C159
wr_cmd(0xBC); //Data Scan Direction
wr_dat(0X00);
wr_dat(0X00); //CLR=0
wr_dat(0X02); //32 Gray-scale 3byte 3pixel mode
wr_cmd(0x75); //Line address set
wr_dat(0x00); //Start Line
wr_dat(0x9F); //End Line
wr_cmd(0x15); //Column address set
wr_dat(0x00); //Start Column
wr_dat(0x35); //End Column
wr_cmd(0x31); //ext=1
wr_cmd(0x32); //Analog circuit set
wr_dat(0X07); //FR=12.7KHZ
wr_dat(0X02); //Booster FR=6KHZ
wr_dat(0X01); //1/11bias
wr_cmd(0x34); //Dithering off
wr_cmd(0x30); //EXT=0
wr_cmd(0xAF); //DISP ON
}
//Write Data To DDRAM
#pragma disable
void disp_dots(uchar dat1,uchar dat2)
{
uchar uc_RowCnt,uc_ColCnt;
wr_cmd(0x30);//EXT=0
wr_cmd(0x75); //Line address set
wr_dat(0x00); //Start Line
wr_dat(0x9F); //End Line
wr_cmd(0x15); //Column address set
wr_dat(0x00); //Start Column
wr_dat(0x35); //End Column
wr_cmd(0X5C);//Write data to DDRAM
for (uc_RowCnt=0;uc_RowCnt<80;uc_RowCnt++)
{
for (uc_ColCnt=0;uc_ColCnt<54;uc_ColCnt++)
{
wr_dat(dat1);
wr_dat(dat1);
wr_dat(dat1);
};
for (uc_ColCnt=0;uc_ColCnt<54;uc_ColCnt++)
{
wr_dat(dat2);
wr_dat(dat2);
wr_dat(dat2);
};
};
delayms();
}
//Write Data To DDRAM
#pragma disable
void disp_dots2(uchar dat1,uchar dat2,uchar dat3)
{
uchar uc_RowCnt,uc_ColCnt;
wr_cmd(0x30);//EXT=0
wr_cmd(0x75); //Line address set
wr_dat(0x00); //Start Line
wr_dat(0x9F); //End Line
wr_cmd(0x15); //Column address set
wr_dat(0x00); //Start Column
wr_dat(0x35); //End Column
wr_cmd(0X5C);//Write data to DDRAM
for (uc_RowCnt=0;uc_RowCnt<160;uc_RowCnt++)
for (uc_ColCnt=0;uc_ColCnt<54;uc_ColCnt++)
{
wr_dat(dat1);
wr_dat(dat2);
wr_dat(dat3);
};
delayms();
}
#pragma disable
void disp_dots3(uchar dat1,uchar dat2,uchar dat3)
{
uchar uc_ColCnt;
wr_dat(dat1);
for (uc_ColCnt=0;uc_ColCnt<158;uc_ColCnt++)
wr_dat(dat2);
wr_dat(dat3);
wr_dat(0x00);
wr_dat(0x00);
}
//Draw Border
#pragma disable
void disp_bord(void)
{
uchar uc_RowCnt;
wr_cmd(0x30);//EXT=0
wr_cmd(0x75); //Line address set
wr_dat(0x00); //Start Line
wr_dat(0x9F); //End Line
wr_cmd(0x15); //Column address set
wr_dat(0x00); //Start Column
wr_dat(0x35); //End Column
wr_cmd(0x5C);//Write data to DDRAM
disp_dots3(0xFF,0xFF,0xFF);
for(uc_RowCnt=0;uc_RowCnt<158;uc_RowCnt++)
disp_dots3(0xFF,0x00,0xFF);
disp_dots3(0xFF,0xFF,0xFF);
delayms();
}
#pragma disable
void disp_bmp(xchar *bmparea)
{
uchar uc_RowCnt,uc_ColCnt;
uchar uc_CharCode,uc_BitCnt;
wr_cmd(0x30);//EXT=0
wr_cmd(0x75); //Line address set
wr_dat(0x00); //Start Line
wr_dat(0x9F); //End Line
wr_cmd(0x15); //Column address set
wr_dat(0x00); //Start Column
wr_dat(0x35); //End Column
wr_cmd(0X5C);//Write data to DDRAM
for(uc_RowCnt=0;uc_RowCnt<160;uc_RowCnt++)
{
for(uc_ColCnt=0;uc_ColCnt<20;uc_ColCnt++)
{
uc_CharCode = *bmparea++;
for(uc_BitCnt=0;uc_BitCnt<8;uc_BitCnt++)
{
if((uc_CharCode&0x80) == 0)
wr_dat(0x00);
else
wr_dat(0xFF);
//仅仅点亮panel上面的一个点---需要一个byte
uc_CharCode =uc_CharCode <<1;
}
};
wr_dat(0x00);
wr_dat(0x00);
};
delayms();
}
void main()
{
EA=1; //Interurupt Enabled
IT0 = 1;//INT0 Low Level Trigger
EX0 = 1;//INT0 Enabled
RST_PORT = 0;
delay();
delay();
RST_PORT = 1;
delay();
delay();
ST7529Ini();
while (1)
{
disp_dots(0xFF,0xFF); //All Dots Display
disp_dots(0x00,0x00); //Clear Screen
disp_dots(0xFF,0x00); //Seperate Rows I
disp_dots(0x00,0xFF); //Seperate Rows II
disp_dots2(0xFF,0xFF,0x00); //Seperate Rows I
disp_dots2(0x00,0xFF,0xFF); //Seperate Rows II
disp_bord();//Display The Border
disp_dots(0x00,0x00); //Clear Screen
disp_bmp(HTDISPLAY);//Display The Corp Name
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -