📄 mainc.c
字号:
ShowHZ16x16(5,16,0x08);
ShowHZ16x16(7,16,0x32);
ShowHZ16x16(9,16,0x09);
ShowHZ16x16(11,16,0x32);
ShowHZ16x16(1,32,0x25); // 3.补发卡
ShowHZ16x16(3,32,0x2d);
ShowHZ16x16(5,32,0x0a);
ShowHZ16x16(7,32,0x05);
ShowHZ16x16(9,32,0x07);
ShowHZ16x16(11,32,0x32);
ShowHZ16x16(1,48,0x26); // 4.设定负荷
ShowHZ16x16(3,48,0x2d);
Show16x16Chars(5,48,0x0b,4);
return;
case 4:
case 5:
case 6:
case 7:
ShowHZ16x16(1,0,0x27); // 5.设定分时
ShowHZ16x16(3,0,0x2d);
ShowHZ16x16(5,0,0x0b);
ShowHZ16x16(7,0,0x0c);
ShowHZ16x16(9,0,0x0f);
ShowHZ16x16(11,0,0x10);
ShowHZ16x16(1,16,0x28); // 6.表箱记录
ShowHZ16x16(3,16,0x2d);
Show16x16Chars(5,16,0x11,4);
ShowHZ16x16(1,32,0x29); // 7.购电记录
ShowHZ16x16(3,32,0x2d);
ShowHZ16x16(5,32,0x15);
ShowHZ16x16(7,32,0x09);
ShowHZ16x16(9,32,0x13);
ShowHZ16x16(11,32,0x14);
ShowHZ16x16(13,32,0x32);
ShowHZ16x16(1,48,0x2a); // 8.时间校准
ShowHZ16x16(3,48,0x2d);
ShowHZ16x16(5,48,0x10);
ShowHZ16x16(7,48,0x16);
ShowHZ16x16(9,48,0x17);
ShowHZ16x16(11,48,0x18);
return;
case 8:
case 9:
case 10:
ShowHZ16x16(1,0,0x2b); // 9.数据备份
ShowHZ16x16(3,0,0x2d);
Show16x16Chars(5,0,0x19,4);
ShowHZ16x16(1,16,0x23); // 10.通讯
ShowHZ16x16(3,16,0x2c);
ShowHZ16x16(5,16,0x2d);
ShowHZ16x16(7,16,0x1d);
ShowHZ16x16(9,16,0x1e);
ShowHZ16x16(1,32,0x23); // 11.修改密码
ShowHZ16x16(3,32,0x23);
ShowHZ16x16(5,32,0x2d);
ShowHZ16x16(7,32,0x1f);
ShowHZ16x16(9,32,0x20);
ShowHZ16x16(11,32,0x03);
ShowHZ16x16(13,32,0x04);
ShowHZ16x16(0,48,0x32); // 空格
ShowHZ16x16(2,48,0x32);
ShowHZ16x16(4,48,0x32);
ShowHZ16x16(6,48,0x32);
ShowHZ16x16(8,48,0x32);
ShowHZ16x16(10,48,0x32);
ShowHZ16x16(12,48,0x32);
ShowHZ16x16(14,48,0x32);
return;
}
}
/********************************************************************************
函数名: InitLCD()
函数功能: 初始化显示模块
********************************************************************************/
void InitLCD()
{
WriteCmd3(0x00,0x00,TextHomeAddr); //设置文本显示区域首地址GraphAddr
WriteCmd3( LineChar,0x00,TextArea ); //设置文本显示区域宽度 : LineChar
WriteCmd3( GraphAddrL,GraphAddrH,0x42 ); //设置图形显示区域首地址
WriteCmd3( LineChar,0x00,GraArea ); //设置图形显示区域宽度 : LineChar
WriteCmd1(OrMode|InterCGROM); //设置显示方式: 内部部CGROM方式 文本\图形 或
// WriteCmd1(Cursor8); //设置光标形状 cursor size 8x8
WriteCmd3(0x03,0x00,OffsetReg); //偏址地址设在0x02
WriteCmd1(0x9c); //设置显示开关: 1001 1100 图形
Cursor_X=Cursor_Y=0x00;
CursorPosSet(Cursor_X,Cursor_Y);
ClearScreen(0x2000);
}
/********************************************************************************
函数名: Void ClearScreen(unsigned int ram)
函数功能: 清除整个屏幕
ram : 要清零的单元数
********************************************************************************/
void ClearScreen(uint ram)
{
unsigned int i;
// 清显示 RAM 区 0000h--2000h (8k)
WriteCmd3(0x00,0x00,AddrSet); // 设置指针地址0000H
WriteCmd1(0xb0); // 设置自动写状态
for(i=0x00;i<ram;i++) WriteData(0x00); // data=0;
WriteCmd1(0xb2); // 自动写结束
}
#if PutPixelEnable
/********************************************************************************
函数名: Pixel(unsigned char PointX,unsigned char PointY, bit Mode)
函数功能:图形函数,用于描点画图,在指定位置显示一个点;
如果显示屏超过了256*256,请修改这个函数 PointX,PointY的类型;
Mode 1:显示 0:清除该点
********************************************************************************/
void PutPixel(unsigned char PointX,unsigned char PointY, bit Mode)
{
unsigned int StartAddr=GraphicStartAddr;
unsigned char dat;
StartAddr+=PointY*LineChar + PointX/8; // StartAddr=PointY*128 + PointX;
dat=0xf0+7-PointX%8; // dat=0xf0;
if(Mode) dat=dat|0x08; // 决定是否显示该点
WriteCmd3( (unsigned char)(StartAddr),(unsigned char)(StartAddr>>8),AddrSet ); //设置该点所在单元地址
WriteCmd1(dat);
}
#endif
#if DrawLineEnable // 是否允许画线
/********************************************************************************
函数名:DrawLine( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, bit Mode)
函数功能: 画两点的直线
********************************************************************************/
void DrawLine( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, bit Mode)
{
unsigned char x,y;
float k,b;
//y1=128-y1; // 坐标变换,可不用
//y2=128-y2;
if( abs(y1-y2) <= abs(x1-x2) ){ // |k|<=1
k=(y2*1.0-y1*1.0) / (x2*1.0-x1*1.0) ;
b=y1-k*x1;
if( x1 <= x2 ) {
for(x=x1;x<=x2;x++) {
y=k*x+b;
PutPixel(x, y, Mode);
}
} f
else {
for(x=x2;x<=x1;x++) {
y=k*x+b;
PutPixel(x, y, Mode);
}
}
} #ENDIf
else{ // abs(y1-y2) > abs(x1-x2) |K|>1
k=(float)(x2-x1) / (float)(y2-y1) ;
b=x1-k*y1;
if( y1 <= y2 ){
for(y=y1;y<=y2;y++) {
x=k*y+b;
PutPixel( x , y,Mode);
}
}#ENDIf
else{
for(y=y2;y<=y1;y++) {
x=k*y+b;
PutPixel( x , y,Mode);
} #ENDFor
}
}
}#ReturnBack
#endif // 是否允许画线结束
#if DrawBoxEnable // 控制是否允许画矩形框
/********************************************************************************
函数名:DrawBox(unsigned char X1, unsigned char Y1, unsigned char X2, unsigned char Y2, bit SetReset)
函数功能:画矩形外框
********************************************************************************/
void DrawBox(unsigned char X1, unsigned char Y1, unsigned char X2, unsigned char Y2, bit SetReset)
{
#if DrawLineEnable // 采用第一种画线方式来画矩形
DrawLine(X1,Y1,X1,Y2, SetReset);
DrawLine(X1,Y2,X2,Y2, SetReset);
DrawLine(X2,Y2,X2,Y1, SetReset);
DrawLine(X2,Y1,X1,Y1, SetReset);
#endif
#if LinesEnable // 采用第二种画线方式来画矩形
Lines(X1,Y1,X1,Y2);
Lines(X1,Y1,X2,Y1);
Lines(X2,Y2,X1,Y2);
Lines(X2,Y2,X2,Y1);
#endif
}
#endif
#if LinesEnable // 是否允许第二种方式画线
/********************************************************************************
函数名:Void Lines(unsigned char Xa, unsigned char Ya, unsigned char Xb, unsigned char Yb)
函数功能: 第二种画线方式,采用增量方式,
Xa,Ya,Xb,Yb:线的起点和终点
********************************************************************************/
void Lines(unsigned char Xa,unsigned char Ya,unsigned char Xb,unsigned char Yb)
{
float X,Y,Xinc,Yinc,m;
uchar temp;
unsigned int i,step;
if(Ya>Yb){ // 做个变换,将值大的一端放在前面
temp=Yb;
Yb=Ya;
Ya=temp;
temp=Xb;
Xb=Xa;
Xa=temp;
}
if(Xa<Xb){
X=(float)Xa;
Y=(float)Ya;
}
else{
X=(float)Xb;
Y=(float)Yb;
}
m=(float)fabs(Yb-Ya)/(float)fabs(Xb-Xa); // 求出线的斜率,确定增长方向
if(m<=1){
Xinc=1.0;
step=abs(Xb-Xa);
Yinc=m;
}
else{
Xinc=1.0/m;
step=abs(Yb-Ya);
Yinc=1.0;
}
PutPixel((int)X,(int)Y,1);
for(i=0;i<step;i++){
X+=Xinc;
if(((Xb>Xa)&&(Yb>Ya))||((Xb<Xa)&&(Yb<Ya)))
Y+=Yinc;
else
Y-=Yinc;
PutPixel((int)X,(int)Y,1);
}#ENDFor
}
#endif // 是否允许第二种方式画线结束
#if ShowPictureEnable // 是否允许显示图片
/********************************************************************************
函数名:Void ShowPicture(unsigned char Startline,unsigned char Startcolumn,unsigned char LineWidth,unsigned char ColumnWidth,unsigned int address)
函数功能: 显示一幅图片
Startline,Startcolumn : 图片起始行(0-128)与列(0-15);
LineWidth,ColumnWidth : 图片的行宽(0-128)和列宽(0-15)
PicturePoint : 图片所在数组的指针,图片存储方式:左上角->右上脚->左下脚->右下脚
********************************************************************************/
void ShowPicture(unsigned char Startline,unsigned char Startcolumn,
unsigned char LineWidth,unsigned char ColumnWidth,
unsigned char *PicturePoint)
{
unsigned char i,j;
unsigned int StartAddr;
StartAddr=Startline*LineChar + Startcolumn+GraphicStartAddr; // 定位起始位置
for(i=0;i<LineWidth;i++)
{
WriteCmd3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24); // set address
for(j=0;j<ColumnWidth;j++) {
WriteCmd2( *(PicturePoint+i*ColumnWidth+j), DataWAddrI); // 将数据写如后地址加1
}
StartAddr=StartAddr + LineChar; // 换行,即换到下一行进行显示
}
}
#endif // 是否允许显示图片结束
#if ShowHZ16x16Enable // 是否允许显示16x16的汉字
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -