📄 lcd_show.c
字号:
#include"PS2.H"
sbit CS = P2^5;
sbit SID=P2^6;
sbit CLK=P2^7;
sbit FSB=P2^4;
sbit RST=P2^3;
uchar code addr[]={ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f };//DDRAM地址
extern unsigned char Time[];
/*****************************函数列表*******************************/
void InitLcd( void );
void Send(unsigned char senddata);
void delay( uint t );
void WriteCmd( uchar cmd );
void WriteData( uchar Data );
void display( uchar *x_add,uchar *dat1,uchar *dat2 );
void DisHz16x16(uchar x,uchar y,uchar *Data);
void Dis5bitNumber( uchar x,uchar y, uint Number );
void DisMhz( uchar x,uchar y );
void WhiteLine( uchar line );
void CleanScreen( void );
void CleanUnit( uchar x,uchar y );
void DisTab( uchar x,uchar y );
void DisMenu( void );
void MenuLoop( uchar Tab_X,uchar Tab_Y );
void DisSaveChannelNote( void );
void DisInput(unsigned char Input);
void DisString(unsigned char *String,unsigned char Length);
unsigned char CountInput = 0;
/*****************************初始化子程序******************************/
void InitLcd(void)
{
delay( 50000 );//延时45MS
FSB = 0;
CS = 1;
WriteCmd( 0x30 );
delay( 150 );//延时150us
WriteCmd(0x30);
delay( 45 );//延时45us
WriteCmd( 0x0C );
delay( 150 );//延时150us
CleanScreen();
delay( 15000 );//延时12MS
WriteCmd(0x06);
}
/*****************************延时子程序***************************/
void delay( uint t )
{
while( t-- );
}
/***********************************************************
函数名称:
函数功能:
入口参数:
出口参数:
备 注:
***********************************************************/
void DelayUS(unsigned int n) //N us延时函数
{
unsigned int i=0;
for (i=0;i<n;i++)
_nop_();
}
/***********************************************************
函数名称:
函数功能: 发送命令
入口参数:
出口参数:
备 注:
***********************************************************/
void Send(unsigned char senddata)
{
unsigned char i;
for(i=0;i<8;i++)
{
if((senddata)&0x80)
SID = 1;
else
SID = 0;
CLK = 1;
_nop_();
CLK = 0;
senddata<<=1;
}
}
/*******************************写指令子程序***************************/
void WriteCmd( uchar cmd )
{
Send(0xf8);
Send(cmd&0xf0);
Send(cmd<<4);
DelayUS(20);
}
/***********************************写数据子程序****************************/
void WriteData(unsigned char Data)
{
Send(0xfa);
Send(Data&0xf0);
Send(Data<<4);
DelayUS(20);
}
/***********************************************************
函数名称:
函数功能:显示16X16汉字 带有X,Y坐标
入口参数:
出口参数:
备 注: X(0~~7)Y(0~~3)
***********************************************************/
void DisHz16x16(uchar x,uchar y,uchar *Data)
{
WriteCmd( addr[(8*y+x)] );
WriteData( *Data );
WriteData( *(Data+1) );
}
/***********************************************************
函数名称:
函数功能: 显示2位数字
入口参数:
出口参数:
备 注:
***********************************************************/
void Dis2bitNumber( uchar x,uchar y, uint Number )
{
WriteCmd( addr[(8*y+x)] );
WriteData( LCDNumber[(Number/16)] );
WriteData( LCDNumber[(Number%16)] );
WriteCmd( 0x30 );
}
/***********************************************************
函数名称:
函数功能: 显示4位数字
入口参数:
出口参数:
备 注:
***********************************************************/
void Dis4bitNumber( uchar x,uchar y, uint Number )
{
WriteCmd( addr[(8*y+x)] );
WriteData( LCDNumber[Number/1000] );
WriteData( LCDNumber[(Number/100)%10] );
WriteCmd( addr[(8*y+x+1)] );
WriteData( LCDNumber[(Number/10)%10] );
WriteData( LCDNumber[(Number%10)] );
WriteCmd( 0x30 );
}
/***********************************************************
函数名称:
函数功能:
入口参数:
出口参数:
备 注:
***********************************************************
void DisInput(unsigned char Input)
{
if(CountInput%2==0)
{
if(CountInput==64)
{
CountInput = 0;
CleanScreen();
}
WriteCmd( addr[CountInput/2] );
}
WriteData(Input);
if(Input==99)
{
WriteData(0x20);
}
else
{
WriteData(LCDNumber[Input]);
}
CountInput++;
}
/***********************************************************
函数名称:
函数功能:显示4位数字,其中两位为小数
入口参数:
出口参数:
备 注:
***********************************************************
void Dis5bitNumber( uchar x,uchar y, uint Number )
{
WriteCmd( addr[(8*y+x)] );
WriteData( LCDNumber[Number/1000] );
WriteData( LCDNumber[(Number/100)%10] );
WriteCmd( addr[(8*y+x+1)] );
WriteData(0x2e);
WriteData( LCDNumber[(Number/10)%10] );
WriteCmd( addr[(8*y+x+2)] );
WriteData( LCDNumber[(Number%10)] );
WriteCmd( 0x30 );
}
/***********************************************************
函数名称:
函数功能:清屏
入口参数:
出口参数:
备 注:
***********************************************************/
void CleanScreen( void )
{
WriteCmd( 0x01 );
}
/***********************************************************
函数名称:
函数功能:清除单位块
入口参数:
出口参数:
备 注:
***********************************************************
void CleanUnit( uchar x,uchar y )
{
WriteCmd( addr[(8*y+x)] );
WriteData( 0x20 );
WriteData( 0x20 );
}
/***********************************************************
函数名称:
函数功能:
入口参数:
出口参数:
备 注:
***********************************************************/
void DisString(unsigned char *String,unsigned char Length)
{
unsigned char i;
WriteCmd( addr[0] );
for(i=0;i<=Length;i++)
{
if(i%2==0)
{
if(i==64)
{
CleanScreen();
}
WriteCmd( addr[i/2] );
}
WriteData(String[i]);
}
}
/***********************************************************
函数名称:
函数功能:显示声音
入口参数:
出口参数:
备 注:
***********************************************************
void DisSoundValue( void )
{
}
/***********************************************************
函数名称:
函数功能:
入口参数:
出口参数:
备 注: 秒 分 时 日 月 星期 年
***********************************************************
void DisDs1302( void )
{
Get1302(&Time[0]);
Dis2bitNumber(0,0,Time[6]);
DisHz16x16(1,0,&nian);
Dis2bitNumber(2,0,Time[4]);
DisHz16x16(3,0,&yue);
Dis2bitNumber(4,0,Time[3]);
DisHz16x16(5,0,&ri);
// Dis2bitNumber(6,0,Time[2]);
// DisHz16x16(7,0,&ri);
Dis2bitNumber(0,1,Time[2]);
WriteData(0x3a);
Dis2bitNumber(2,1,Time[1]);
WriteData(0x3a);
Dis2bitNumber(4,1,Time[0]);
DisHz16x16(5,1,&xing);
DisHz16x16(6,1,&qi);
Dis2bitNumber(7,1,Time[5]);
}
/***********************************************************
函数名称:
函数功能:控制对目录的操作
入口参数:浮标X,Y坐标
出口参数:
备 注:
***********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -