文档介绍:: .
脚
sbit E=P2^6; //使能信号位,将 E 位定义为 引脚
sbit BF=P0^7; //忙碌标志位,,将 BF 位定义为 引脚
unsigned char code table[]="2012-02-10 week5"; //初始化液晶显示 16
unsigned char code table1[]=" 12:59:32"; //12
unsigned char count,s1num;
char second,minute,hour,day,month,year,week;
sbit s1=P3^0; //功能键
sbit s2=P3^1; //加键
sbit s3=P3^2; //减键
sbit s4=P3^3; //保存并退出
sbit P3_4=P3^4; //信号灯
/*****************************************************
函数功能:延时 1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是 1 毫秒
***************************************************/
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:延时若干毫秒
入口参数:n
***************************************************/
void delay(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
delay1ms();
}
/*****************************************************
函数功能:判断液晶模块的忙碌状态
返回值:result。result=1,忙碌;result=0,不忙
***************************************************/
unsigned char BusyTest(void)
{bit result;
RS=0; //根据规定,RS 为低电平,RW 为高电平时,可以读状态
RW=1;
E=1; //E=1,才允许读写
_nop_(); //空操作
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
result=BF; //将忙碌标志电平赋给 result
E=0; //将 E 恢复低电平
return result;
}
/*****************************************************
函数功能:写指令
入口参数:dictate
***************************************************/
void WriteInstruction (unsigned char dictate)
{
while(BusyTest()==1); //如果忙就等待
RS=0; //根据规定,RS 和 R/W 同时为低电平时,可以写入指令
RW=0;
E=0; //E 置低电平(根据表 8-6,写指令时,E 为高脉冲,
//