void WR_DATA(char dat) //数据输出函数
{
IO0SET=1<<9; //当A0为0时表示当前传输的是命令,为1时表示当前传输的是数据
IO0CLR =0xff;
IO0SET =dat;
IO0CLR = 1<<8; //来一个上升沿发数据
IO0SET =1<<8;
}
void WR_CMD(char cmd) //命令输出函数
{
IO0CLR=1<<9; //当A0为0时表示当前传输的是命令,为1时表示当前传输的是数据
IO0CLR = 0xff;
IO0SET =cmd;
IO0CLR = 1<<8; //来一个上升沿发数据
IO0SET =1<<8;
}
void LCD_write_CHchar(unsigned char x, unsigned char y, unsigned char* CHstr)
{
int i1,j1,i;
for(i=0;i<chinese_12_len;i++)
{
//判断汉字
if((*CHstr == chinese_12[i].value[0])&&(*(CHstr+1) == chinese_12[i].value[1]))
{
for(i1=0;i1<2;i1++)
{
//汉字屏幕定位
WR_CMD(0xb0+y+i1); //列
WR_CMD(0x10+x/16); //行的高四位
WR_CMD(0x00+x%16); //行的低四位 PS:具体看数据手册
for(j1=i1*16;j1<16*(i1+1);j1++)
{
WR_DATA(*(chinese_12[i].data+j1));
}
}
}
}
}
void china(unsigned char x, unsigned char y,unsigned char *string)
{
unsigned char l=0;
while(*(string+l))
{
LCD_write_CHchar(x,y,string+l);
l=l+2;
x=x+0x10;
}
}
/****************************************************************************
* 名 称:main()
* 功 能:控制LED灯闪烁。
****************************************************************************/
int main(void)
{
PINSEL0=0;
IO0DIR =0xfff;
WR_CMD(0xa1);
china(0x00,3,(unsigned char *)"电子科技大学");
return 0;
}
转载于:https://my.oschina.net/wwyyjj/blog/537495