📄 framebuffer.c
字号:
//GUICOM为命令地址
#define GUICOM((uchar*)0x03604000)
//GUIDATA为数据地址
#define GUIDATA((uchar*)0x03604001)
//ARM对GUI命令
void wcom(char com)
{
char *p_guic,temp;
p_guic=GUICOM;
temp=com;
*p_guic=temp;
}
void wdata(char dat)
{
char *p_guid,temp;
p_guid=GUIDATA;
temp=dat;
*p_guid=temp;
}
void GUIinit(void)
{
char i,j;
char const systab[8]=(Ox30,0x87,OxO7,Ox27,Ox42,Oxf0,Ox3O,OxOO};
char const
scrtab[10]={0x00,0x00,OxfO,0x00,Ox4O,Oxf0,OxOO,Ox8O,OxOO,OxOO};
//设置显示频率、显示行数等
wcom(Ox40);
for(i=O;i<8;i++)
wdata(syrtab[i]);
//设置Frame-buffer首地址
wcom(Ox44);
for(j=0;j<10;j++)
wdata(scrtab[j]);
//设置画面的水平移动量为0
wcom(Ox5a);
wdata(Ox00);
//设置显示区为图形,合成方式为或逻辑
wcom(Ox5b);
wdata(Ox00);
//显示
wcom(Ox59);
wdata(Ox54);
}
void GUIcrl()
{
unsigned int i,j;
wcom(Ox4c);
wcom(Ox46);
wdata(Ox00);
wdata(Ox00);
wcom(Ox42);
for(i=O;i<240;i++)
for(j=0;j<40;j++)
wdata(Ox00);
wcom(Ox46);
wdata(Ox00);
wdata(Ox00);
}
void display(uchar x,uchar y uchar const *m)
{
uchar i;
uchar temp;
unsigned int z,cursorh,cursorl;
//0x4000为Frame-buffer首地址
z=x*40+y+0x4000;
cursorh=z/256;
cursorl=z%256;
wcom(Ox4f);
wcom(Ox46);
wdata(cursorl);
wdata(cursorh);
wcom(Ox42);
for(i=O;i<8;i++)
{
temp=*(m+i);
wdata(temp);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -