📄 雪中梅花.c
字号:
ddd();
tupian(tab4);
ddd();
tupian(tab5);
ddd();
tupian(tab6);
ddd();
}
}
/******************************************************************
延时程序
****************************************************************/
void delay(unchar ms)
{unchar i;
for(i=0;i<ms;i++)
{_nop_();}
}
/***************************************************************
检测子程序
***************************************************************/
BOOL lcd_bz()
{
BOOL result;
rs = 0;
rw = 1;
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (BOOL)(P0 & 0x80);
ep = 0;
return result;
}
/*********************************************************************
命令写入子程序
********************************************************************/
void lcd_wcmd(unchar cmd)
{
while(lcd_bz())
rs = 0;
rw = 0;
ep = 0;
_nop_();
_nop_();
P0 = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
/***************************************************************************
数据写入子程序
****************************************************************************/
void lcd_wdat(unchar dat)
{
while(lcd_bz());
rs = 1;
rw = 0;
ep = 0;
P0 = dat;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 1;
_nop_();
_nop_();
_nop_();
_nop_();
ep = 0;
}
/**************************************************************************
从LCD中读出数据
*****************************************************************************/
unsigned char Lcd_ReadData(void)
{
unsigned char Temp;
while(lcd_bz());
P0=0xff;
rs=1;
rw=1;
ep=1;
_nop_();
Temp=P0;
ep=0;
return Temp;
}
/*向LCD中写入图片*/
void tupian(unsigned char *tab)
{unchar jishu1,jishu2;
for(jishu2=0;jishu2<32;jishu2++)
{for(jishu1=0;jishu1<8;jishu1++)
{lcd_wcmd(0x36);
lcd_wcmd(jishu2+0x80); //行地址
lcd_wcmd(jishu1+0x80); //列地址
lcd_wdat(*tab);
tab++;
lcd_wdat(*tab);
tab++;
lcd_wcmd(0x30);
}
}
for(jishu2=0;jishu2<32;jishu2++)
{for(jishu1=8;jishu1<16;jishu1++)
{lcd_wcmd(0x36);
lcd_wcmd(jishu2+0x80); //行地址
lcd_wcmd(jishu1+0x80); //列地址
lcd_wdat(*tab);
tab++;
lcd_wdat(*tab);
tab++;
lcd_wcmd(0x30);
}
}
}
/***************************************
向LCD指定坐标写入一个象素,象素颜色有两种,0代表白(无显示),1代表黑(有显示)
****************************************/
void Lcd_PutPixel(unsigned char x,unsigned char y,unsigned char Color)
{
unsigned char z,w;
unsigned int Temp;
if(x>=128||y>=64)
return;
Color=Color%2;
w=15-x%16;//确定对这个字的第多少位进行操作
x=x/16;//确定为一行上的第几字
if(y<32) //如果为上页
z=0x80;
else //否则如果为下页
z=0x88;
y=y%32;
lcd_wcmd(0x36);
lcd_wcmd(y+0x80); //行地址
lcd_wcmd(x+z); //列地址
Temp=Lcd_ReadData();//先空读一次
Temp=(unsigned int)Lcd_ReadData()<<8;//再读出高8位
Temp|=(unsigned int)Lcd_ReadData();//再读出低8位
if(Color==1) //如果写入颜色为1
Temp|=MaskTab[w];//在此处查表实现加速
else //如果写入颜色为0
Temp&=~MaskTab[w];//在此处查表实现加速
lcd_wcmd(y+0x80); //行地址
lcd_wcmd(x+z); //列地址
lcd_wdat(Temp>>8);
lcd_wdat(Temp&0x00ff);
lcd_wcmd(0x30);
}
void Lcd_HoriLine(unsigned char x,unsigned char y,unsigned char Length,unsigned char Color)
{
unsigned char i;
if(Length==0)
return;
for(i=0;i<Length;i++)
{
Lcd_PutPixel(x+i,y,Color);
}
}
void lcd_init()
{lcd_wcmd(0x30);
lcd_wcmd(0x0c);
lcd_wcmd(0x01);
lcd_wcmd(0x06);
}
void ddd()
{unchar i,j;
for(i=0;i<250;i++)
{for(j=0;j<250;j++)
{_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -