📄 1.c
字号:
a1<<=1;
}
lcdpos();
p=YSIZE&0x7;
if(ly<8){
if(YSIZE<8){
Lcd_Mask=LeftMask[k]&RightMask[p];
a1=lcdrd();
a1&=(~Lcd_Mask);
a1|=(a2&Lcd_Mask);
lcdwd(a1);
ly=YSIZE;
Lcd_CurrentY+=YSIZE-k;
}
else{
Lcd_Mask=LeftMask[k];
a1=lcdrd();
a1&=(~Lcd_Mask);
a1|=(a2&Lcd_Mask);
lcdwd(a1);
ly+=8-k;
Lcd_CurrentY+=8-k;
}
}
else if(ly>=YSIZE-p){
if(k>=p){
s--;
a1=*s;
a2=0;
for(p=0;p<k;p++){
a2<<=1;
if((a1&0x80)==0x80){
a2++;
}
a1<<=1;
}
p=YSIZE&0x7;
}
Lcd_Mask=RightMask[p];
a1=lcdrd();
a1&=(~Lcd_Mask);
a1|=(a2&Lcd_Mask);
lcdwd(a1);
ly+=p;
Lcd_CurrentY+=p;
}
else{
lcdwd(a2);
ly+=8;
Lcd_CurrentY+=8;
}
a1=*s;
}
}
Lcd_CurrentY=y;
}
/************************************************************************
函数名:
参数:
功能:显示汉字
返回值:
************************************************************************/
void displaychinesechardot(uint Index){
uchar code *s;
s=ChineseCharDot+Index*CHINESECHARDOTSIZE;{ //赋值汉字点阵首地址(数组名+ )
if(Lcd_CurrentX>LCD_RIGHT-CHINESECHARSIZE+1){
Lcd_CurrentX=LCD_LEFT;
Lcd_CurrentY+=CHINESECHARSIZE;
if(Lcd_CurrentY>LCD_BOTTOM-CHINESECHARSIZE+1){
Lcd_CurrentY=LCD_TOP;
}
}
putsizeimage(CHINESECHARSIZE,CHINESECHARSIZE,s);
}
}
/************************************************************************
函数名:
参数:
功能:显示英文字符
返回值:
************************************************************************/
void displayenglishchardot(uint Index){
uchar code *s;
s=EnglishCharDot+Index*ENGLISHCHARDOTSIZE;
if(Lcd_CurrentX>LCD_RIGHT-ENGLISHCHARSIZE+1){
Lcd_CurrentX=LCD_LEFT;
Lcd_CurrentY+=CHINESECHARSIZE;
if(Lcd_CurrentY>LCD_BOTTOM-CHINESECHARSIZE+1){
Lcd_CurrentY=LCD_TOP;
}
}
putsizeimage(ENGLISHCHARSIZE,CHINESECHARSIZE,s);
}
/************************************************************************
函数名:
参数:
功能:信息显示
返回值:
************************************************************************/
void putchar(uint cTemp){
uint i;
if(cTemp<128){
for(i=0;i!=ENGLISHCHARNUMBER;i++){
if(cTemp==EnglishCode[i]){
displayenglishchardot(i);
break;
}
}
}
else{
for(i=0;i!=CHINESECHARNUMBER;i++){
DogReset();
if(cTemp==ChineseCode[i]){
displaychinesechardot(i);
break;
}
}
}
}
/************************************************************************
函数名:
参数:
功能:显示汉字或英文字符
返回值:
************************************************************************/
void put_str(uchar code *s){
uint i;
for(;*s!=0;s++){
DogReset();
i=*s;
if(*s>127){
s++;
i=i*256+*s;
}
if(i=='\n'){
Lcd_CurrentX=LCD_LEFT;
if(Lcd_CurrentY>LCD_BOTTOM-CHINESECHARSIZE+1){
Lcd_CurrentY=LCD_TOP;
}
else{
Lcd_CurrentY+=CHINESECHARSIZE;
}
}
putchar(i);
}
}
/************************************************************************
函数名:
参数:
功能:显示汉字或英文字符
返回值:
************************************************************************/
void put_str_xy(uchar x,uchar y,uchar code *s){
Lcd_CurrentX=x;
Lcd_CurrentY=y;
put_str(s);
}
/************************************************************************
函数名:
参数:
功能:点
返回值:
************************************************************************/
void pointxy(uchar x,uchar y,uchar bitdata){
uchar a1,p;
Lcd_CurrentX=x;
Lcd_CurrentY=y;
lcdpos();
p=(Lcd_CurrentY%8)&0x7;
a1=lcdrd()&Mask1[p];
if(bitdata>0){
a1|=Mask2[p];
}
lcdwd(a1);
}
/************************************************************************
函数名:
参数:
功能:线
返回值:
************************************************************************/
void linexy(uchar x0,uchar y0,uchar x1,uchar y1,uchar bitdata){
uchar i;
uint k;
if(abs(y1-y0)>abs(x1-x0)){
if(y1>y0){
for(i=y0;i<=y1;i++){
DogReset();
if(x1>x0){
k=x1-x0;
k*=(i-y0);
k/=y1-y0;
pointxy(x0+k,i,bitdata);
}
else{
k=x0-x1;
k*=(i-y0);
k/=y1-y0;
pointxy(x0-k,i,bitdata);
}
}
}
else{
for(i=y0;i>=y1;i--){
DogReset();
if(x1>x0){
k=x1-x0;
k*=(y0-i);
k/=y0-y1;
pointxy(x0+k,i,bitdata);
}
else{
k=x0-x1;
k*=(y0-i);
k/=y0-y1;
pointxy(x0-k,i,bitdata);
}
}
}
}
else{
if(x1>x0){
for(i=x0;i<=x1;i++){
DogReset();
if(y1==y0){
pointxy(i,y0,bitdata);
}
else if(y1>y0){
k=y1-y0;
k*=(i-x0);
k/=x1-x0;
pointxy(i,y0+k,bitdata);
}
else{
k=y0-y1;
k*=(i-x0);
k/=x1-x0;
pointxy(i,y0-k,bitdata);
}
}
}
else{
for(i=x0;i>=x1;i--){
DogReset();
if(y1==y0){
pointxy(i,y0,bitdata);
}
else if(y1>y0){
k=y1-y0;
k*=(x0-i);
k/=x0-x1;
pointxy(i,y0+k,bitdata);
}
else{
k=y0-y1;
k*=(x0-i);
k/=x0-x1;
pointxy(i,y0-k,bitdata);
}
}
}
}
}
/************************************************************************
函数名:
参数:
功能:矩形
返回值:
************************************************************************/
/*
void rect(uchar x0,uchar y0,uchar x1,uchar y1,uchar bitdata){
linexy(x0,y0,x0,y1,bitdata);
linexy(x0,y0,x1,y0,bitdata);
linexy(x0,y1,x1,y1,bitdata);
linexy(x1,y0,x1,y1,bitdata);
}
/**************************************************************************
* 函数原型: void delay_ms_ms(uint Count)
* 功 能: 延时Count个ms
**************************************************************************/
void delay_ms(register uint Count){
register uchar T;
for(;Count>0;Count--){
for(T=0;T<250;T++){
#if STC89C58
#if STCSPD_1
// STC89C58,22.1184MHz晶振,12分频,此时延时准确
_nop_(); _nop_(); _nop_(); _nop_();
#elif STCSPD_2
_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_();
#endif
#elif W77E58
_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
#endif
}
DogReset();
}
}
/************************************************************************
函数名:
参数:
功能:片1测忙
返回值:
************************************************************************/
void lcdwaitidle1(void){
DATA=0xff;
A0PIN=0;
CS1PIN=0;
RDPIN=0;
while((DATA&0x80)==0x80){
DogReset();
}
RDPIN=1;
CS1PIN=1;
}
/************************************************************************
函数名:
参数:
功能:片2测忙
返回值:
************************************************************************/
void lcdwaitidle2(void){
DATA=0xff;
A0PIN=0;
CS2PIN=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -