⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainc.c

📁 这个是我写的以t6963为主控芯片的显示屏的程序
💻 C
📖 第 1 页 / 共 3 页
字号:
			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 + -