用51单片机的最小系统和LCD1602显示的电子时钟
sbit s2=P2^4; //加键 sbit s3=P2^5; //减键
sbit s4=P2^6; //保存并退出
/* 延时若干毫秒 */ void delay(uchar n) { uchar i,a,b; for(i=0;i<n;i++) for(b=199;b>0;b--) for(a=1;a>0;a--); }
/*********************************************** 函数功能:判断液晶模块的忙碌状态
返回值:result。result=1,忙碌;result=0,不忙
************************************************/ uchar 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(uchar dictate) { while(BusyTest()==1); //如果忙就等待 RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲, //就是让E从0到1发生正跳变,所以应先置"0" _nop_();