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

📄 mainc.c

📁 这个是我写的以t6963为主控芯片的显示屏的程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/******************************************************************************** 
函数名:Void ShowHZ16x16(unsigned char column,unsigned char lin,unsigned int hzcode) 
函数功能:显示一个汉字(16*16点阵)
          column:汉字起始列(0-15) 
          lin: 汉字起始行(0-(64-16))
		  hzcode: 汉字代码(自定义的) 
		  注:超出范围的将直接写到RAM中,可以实现卷屏效果
********************************************************************************/ 
void ShowHZ16x16(unsigned char column,unsigned char lin,unsigned int hzcode) 
{ 
    uchar i,temp1,temp2; 
    uint StartAddr; 

    StartAddr=lin*LineChar+ column+GraphicStartAddr;       //定位起始行 

    for(i=0;i<16;i++) 
    { 
      WriteCmd3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), AddrSet); 
      temp1=HZK16x16[hzcode][i*2]; 
      WriteCmd2(temp1, DataWAddrI);             // 左半部 地址加一 
      temp2=HZK16x16[hzcode][i*2+1]; 
      WriteCmd2(temp2, DataWAddrNV);            // 右半部 显示地址不变
      StartAddr=StartAddr + LineChar;           // 换到下一行
    } 
} 



/********************************************************************************
函数名: Void Show16x16Chars(unsigned char column,unsigned char lin,unsigned int hzcode,unsigned int num)
函数功能:显示一行汉字
         column:汉字起始列(0-15)
		 lin:汉字汉字起始行(0-(64-16))   
		 hzcode:第一个汉字的编码(自定义)
		 num:显示个数(0-8)
*********************************************************************************/
void Show16x16Chars(unsigned char column,unsigned char lin,unsigned int hzcode,unsigned int num)
{
    int i;
	for(i=0;i<num;i++)
	    ShowHZ16x16(column+i*2,lin,hzcode+i);
}
#endif                      // 是否允许显示汉字结束



#if ReverseShowEnable       // 是否允许反显
/******************************************************************************** 
函数名: Void ReverseShowChar(unsigned char column,unsigned char lin) 
函数功能: 反显一个字符
          column:待反显字符的起始列(0-15)
		  lin: 待反显字符的起始行(0-(64-16)) 
********************************************************************************/ 
void ReverseShowChar(unsigned char column,unsigned char lin) 
{ 
   unsigned char i; 
   unsigned char dat; 
   unsigned int StartAddr; 

   StartAddr=lin*LineChar +column+GraphicStartAddr;       //定位起始行 

   for(i=0;i<16;i++) 
   { 
     WriteCmd3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), AddrSet); //set address 
     WriteCmd1( DataRAddrNV );            // 数据一次读,地址不变 
     dat=ReadCmd();                       // 读入数据 
     dat=~dat;                            // 取反 
     WriteCmd2( dat, DataWAddrNV);        // 送回 

     StartAddr=StartAddr+ LineChar; 
   } 
} 


/******************************************************************************** 
函数名: Void ReverseShowHZ(unsigned char column,unsigned char lin) 
函数功能: 反显一个汉字 
          column:待反显汉字的起始列(0-15), 
          lin: 待反显汉字的起始行(0-(64-16)) 
********************************************************************************/ 
void ReverseShowHZ(unsigned char column,unsigned char lin)
{
    ReverseShowChar(column,lin);
	ReverseShowChar(column+1,lin);
}



/******************************************************************************** 
函数名: Void ReverseShowChars(unsigned char column,unsigned char lin,unsigned char num) 
函数功能: 反显一串字符 
          column:待反显字符的起始列(0-15), 
          lin: 待反显字符的起始行(0-(64-16)) 
          num: 待反显字符的个数
********************************************************************************/ 
void ReverseShowChars(unsigned char column,unsigned char lin,unsigned char num)
{
    uchar i;
	for(i=0;i<num;i++)
    	ReverseShowChar(column+i,lin);
}




#endif  // 是否允许反显结束



/******************************************************************************** 
函数名: Void WriteCmd1(uchar cmd)
        Void WriteCmd2(uchar dat1,uchar cmd)
        Void WriteCmd3(uchar dat1,uchar dat2,uchar cmd)
		Void WriteData(uchar dat)
函数功能: 写指令和写数据子程序
********************************************************************************/ 
void WriteCmd1(uchar cmd)                            // 写指令不带参数
{
    RWcheck();
    P3=cmd;
    WriteSingle();
}
void WriteCmd2(uchar dat1,uchar cmd)                 // 写指令带一个参数
{
    RWcheck();           // 写参数
    CDLine=0;
    P3=dat1;
    WriteSingle();
    RWcheck();           // 写指令
    P3=cmd;
    WriteSingle();
}
void WriteCmd3(uchar dat1,uchar dat2,uchar cmd)      // 写指令带两个参数
{
    RWcheck();          // 写第一个参数
    CDLine=0;
    P3=dat1;
    WriteSingle();
    RWcheck();         // 写第二个参数
    CDLine=0;
    P3=dat2;
    WriteSingle();
    RWcheck();         // 写第三个参数
    P3=cmd;
    WriteSingle();
}
void WriteData(uchar dat)                          // 写一个数据
{
    RWcheck();
    CDLine=0;
    P3=dat;
    WriteSingle();
}   



/******************************************************************************** 
函数名: Void ReadCmd() 
函数功能: 读数据子程序 
********************************************************************************/ 
uchar ReadCmd()
{
    uchar ReturnValue;
    RWcheck();
	CDLine=0;
	ReadLine=0;
    ReturnValue=P3;
    ReadLine=1;
    return ReturnValue;
}


/******************************************************************************** 
函数名: Void CursorPosSet(uchar X,uchar Y) 
函数功能:  光标位置设置 
********************************************************************************/ 
void CursorPosSet(unsigned char x,unsigned char y) 
{ 
   WriteCmd3(x,y,CursorPointer);         //X的取值范围0-20;Y的取值范围0-15; 
} 


#if CursorEnable           // 控制是否允许对光标的控制
/******************************************************************************** 
函数名: Void CursorUp() 
函数功能:  光标向上移动一格 
********************************************************************************/ 
void CursorUp() 
{ 
        if(Cursor_Y>0)Cursor_Y-=1; 
        WriteCmd3(Cursor_X,Cursor_Y,CursorPointer); 
} 



/******************************************************************************** 
函数名: Void CursorDown() 
函数功能:  光标向下移动一格 
********************************************************************************/ 
void CursorDown() 
{ 
        if(Cursor_Y<8)Cursor_Y+=1; 
        WriteCmd3(Cursor_X,Cursor_Y,CursorPointer); 
} 



/******************************************************************************** 
函数名: Void CursorRight() 
函数功能:  光标向右移动一格 
********************************************************************************/ 
void CursorRight() 
{ 
        if(Cursor_X<20)Cursor_X+=1; 
        WriteCmd3(Cursor_X,Cursor_Y,CursorPointer); 
} 



/******************************************************************************** 
函数名: Void CursorLeft() 
函数功能:  光标向左移动一格 
********************************************************************************/ 
void CursorLeft() 
{ 
        if(Cursor_X>0)Cursor_X-=1; 
        WriteCmd3(Cursor_X,Cursor_Y,CursorPointer); 
} 



/******************************************************************************** 
函数名: Void CursorEnter() 
函数功能:  光标换行
********************************************************************************/ 
void CursorEnter() 
{ 
   Cursor_X=0; 
   Cursor_Y+=1; 
   WriteCmd3(Cursor_X,Cursor_Y,CursorPointer); 
} 

#endif        // 是否允许控制光标结束

/******************************************************************************** 
函数名: Void ReadState() 
函数功能:  读状态字,返回当前状态
********************************************************************************/ 
uchar ReadState()
{
    uchar ReturnValue;
    DataPort=0xff;
    CDLine=1;
	ReadLine=0;
    ReturnValue=P3;
    ReadLine=1;
    return ReturnValue;
}



/******************************************************************************** 
函数名: Void RWcheck() 
函数功能: 判断状态位STA1,STA0子程序(读写指令和读写数据状态),在写指令的读,
          写数据之前这两个标志位必须同时为1 
********************************************************************************/ 
void RWcheck()
{
    do{
        ;
    }while( !(ReadState()&0x03) );
}




#if AutoWcharEnable          // 是否允许自动写开始
/******************************************************************************** 
函数名: Void AutoRcheck() 
函数功能: 判断状态位STA2的子程序(数据自动读状态),该位在数据自动读操作过程中
          取代STA0和STA1有效。在连续读过程中每读一次之前都要确认STA2=1
********************************************************************************/ 
void AutoRcheck()
{
    do{
        ;
    }while( !(ReadState()&0x04) );
}



/******************************************************************************** 
函数名: Void AutoWcheck() 
函数功能: 判断状态位STA3子程序(数据自动写状态) 
********************************************************************************/ 
void AutoWcheck()
{
    do{
        ;
    }while( !(ReadState()&0x08) );
}
#endif                    // 是否允许自动写结束

/*判断状态位STA6子程序(屏读/屏拷贝状态)

st6:lcall read_state
    jb acc.6,err
    ret
err:ljmp st6
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -