📄 z240128.c
字号:
/*
**长沙太阳人电子有限公司SMG240128总线接口参考程序(T6963C)
**电话: 0731-4167806,4167808
**E-mail: www@sunman.cn
**Create by :谭超 E-mail: tanchao_1@126.com
**最后修改 : 2005年4月22日
**版本说明: 带显示矩形框、线、点子程序。
*/
//[字符图象输出文件=hzk.c]
//[字体名称=宋体]
//[字体大小=16]
//[字节方向=水平]
//[字位顺序=从高到低]
#include <reg51.h>
#include <math.h>
#include <hzk.c>
unsigned char xdata Lcd_Cmd_Reg _at_ 0xfdff; // C/D-P2.0 CE-P2.1 p2.0=1 p2.1=0
unsigned char xdata Lcd_Data_Reg _at_ 0xfcff; // C/D-P2.0 CE-P2.1 p2.0=0 p2.1=0
unsigned char data Lcd_CurrentX,Lcd_CurrentY,Lcd_Mask;
unsigned char code LeftMask[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01};
unsigned char code RightMask[]={0xff,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe};
#define LCD_LEFT 0
#define LCD_TOP 0
#define LCD_RIGHT 239
#define LCD_BOTTOM 127
//延时子程序
void delay(unsigned int t)
{ unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++)
;
}
//写无参数指令代码
void lcdwc(unsigned char cmdcode)
{ while((Lcd_Cmd_Reg&0x3)!=0x3); //当Lcd_Cmd_Reg低两位不同时为1
Lcd_Cmd_Reg=cmdcode;
}
//写双参数指令代码
void lcdwc3(unsigned char cmdcode,unsigned char cmddata,unsigned char cmddata2)
{ while((Lcd_Cmd_Reg&0x3)!=0x3);
Lcd_Data_Reg=cmddata;
while((Lcd_Cmd_Reg&0x3)!=0x3);
Lcd_Data_Reg=cmddata2;
while((Lcd_Cmd_Reg&0x3)!=0x3);
Lcd_Cmd_Reg=cmdcode;
}
//写数据
void lcdwd(unsigned char dispdata)
{ while((Lcd_Cmd_Reg&0x3)!=0x3);
Lcd_Data_Reg=dispdata;
while((Lcd_Cmd_Reg&0x3)!=0x3);
Lcd_Cmd_Reg=0xc0;
}
//读数据
unsigned char lcdrdata(void)
{ while((Lcd_Cmd_Reg&0x3)!=0x3);
Lcd_Cmd_Reg=0xc5;
while((Lcd_Cmd_Reg&0x3)!=0x3) ;
return Lcd_Data_Reg;
}
//内部数据地址指针定位
void lcdpos(void)
{ unsigned int CurrentAddress;
CurrentAddress=Lcd_CurrentY*30;
CurrentAddress+=Lcd_CurrentX/8;
lcdwc3(0x24,CurrentAddress&0xff,CurrentAddress/256);
}
//读数据
unsigned char lcdrd(void)
{ lcdpos();
return lcdrdata();
}
//当前坐标移动到下一个点
void lcdcursornextbyte(void)
{ Lcd_CurrentX+=8;
if(Lcd_CurrentX>LCD_RIGHT)
{ Lcd_CurrentX=LCD_LEFT;
Lcd_CurrentY++;
if(Lcd_CurrentY>LCD_BOTTOM)
Lcd_CurrentY=LCD_TOP;
}
}
void displaybyte(unsigned char dispdata)
{ lcdpos();
if(Lcd_Mask==0xff)
lcdwd(dispdata);
else
{ unsigned char d=lcdrd();
d&=(~Lcd_Mask);
d|=(dispdata&Lcd_Mask);
lcdwd(d);
}
lcdcursornextbyte();
}
//整屏显示
void lcdfill(unsigned char FillData)
{ Lcd_Mask=0xff;
for(Lcd_CurrentX=LCD_LEFT,Lcd_CurrentY=LCD_TOP;1;)
{ displaybyte(FillData);
if((Lcd_CurrentX==LCD_LEFT)&&(Lcd_CurrentY==LCD_TOP))
break;
}
}
//初始化
void lcdreset()
{ lcdwc(0x80); //设置显示模式为逻辑“或”模式
lcdwc(0x98); //开显示
lcdwc3(0x42,0,0); //设置图形显示区首地址
lcdwc3(0x43,30,0); //设置图形显示区宽度
}
#include <display8.c>
#include <point8.c>
main()
{ while(1)
{ lcdreset(); //初始化
lcdfill(0xff); //整屏显示
delay(5000);
lcdfill(0); //清屏
delay(5000);
put_str_xy(0,0,"长沙太阳人电子有限公司");
delay(5000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -