资源描述:
《基于1602的时钟程序(显示星期时间).doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、/*用1602设计的简单的时钟程序,程序还存在很多问题,不过已经可以显示时间,星期了。还存在什么问题欢迎指出。*//*旋风@舞2013/6/1*/#include#include#defineucharunsignedchar#defineuintunsignedintsbitE=P2^7;//1602使能引脚sbitRW=P2^6;//1602读写引脚sbitRS=P2^5;//1602数据/命令选择引脚sbitKEY1=P3^2;sbitKEY2=P3^3;sbi
2、tKEY3=P3^4;ucharnum1=0;ucharnum2=0;ucharnum3=0;ucharnum=0;uchars1=0;uchars2=0;ucharf1=0;ucharf2=0;ucharh1=0;ucharh2=0;uinta=0;ucharb=0;voiddelay()//5ms延时{_nop_();_nop_();_nop_();_nop_();_nop_();}voidDelay(uintz){uinti,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}
3、bitBusy(void){bitbusy_flag=0;RS=0;RW=1;E=1;delay();busy_flag=(bit)(P0&0x80);E=0;returnbusy_flag;}voidwcmd(uchardel)//1602输入命令函数{while(Busy());RS=0;RW=0;E=0;delay();P0=del;delay();E=1;delay();E=0;}voidwdata(uchardel)//1602写数据函数{while(Busy());RS=1;RW=0;E=0;d
4、elay();P0=del;delay();E=1;delay();E=0;}voidL1602_init(void)//1602初始化{wcmd(0x38);wcmd(0x0c);wcmd(0x06);wcmd(0x01);}/*********************************************************************名称:L1602_char(ucharhang,ucharlie,charsign)*功能:改变液晶中某位的值,如果要让第一行,第五个字符显示"
5、b",调用该函数如下L1602_char(1,5,'b')*输入:行,列,需要输入1602的数据*输出:无***********************************************************************/voidL1602_char(ucharhang,ucharlie,charsign){uchara;if(hang==1)a=0x80;if(hang==2)a=0xc0;a=a+lie-1;wcmd(a);wdata(sign);}/************
6、*********************************************************名称:L1602_string(ucharhang,ucharlie,uchar*p)*功能:改变液晶中某位的值,如果要让第一行,第五个字符开始显示"abcdef",调用该函数如下L1602_string(1,5,"abcdef;")*输入:行,列,需要输入1602的数据*输出:无**********************************************************
7、*************/voidL1602_string(ucharhang,ucharlie,uchar*p){uchara,b=0;if(hang==1)a=0x80;if(hang==2)a=0xc0;a=a+lie-1;while(1){wcmd(a++);b++;if((*p==' ')
8、
9、(b==16))break;wdata(*p);p++;}}voidOutside_Init(void){IT0=1;//负边沿触发EX0=1;//外部中断0允许}voidTime_out(){TMOD=
10、0X01;TH0=0X4c;TL0=0X00;ET0=1;TR0=1;EA=1;}voidTime_outi()interrupt1{TH0=0X4c;TL0=0X00;num++;}voidkeyscan()//按键扫描{if(KEY1==0){Delay(10);if(KEY1==0){b++;while(!KEY1);Delay(10);while(!KEY1);if(b==1){TR0=0;wcmd(0x