钟()程序与电路如下: #include #include //库函数头文件,代码中引用了_nop_()函数 // 定义控制信号端口 sbit RS=P2^4; //P2.4 sbit RW=P2^5; //P2.5 sbit E=P2^6; //P2.6 sbit set=P3^4; //设置键 sbit enter=P3^5; //确认键 sbit add1=P3^6; //加1键 sbit sub1=P3^7; //减1键 bit k=0,f=0;//k为0表示运行状态,k为1表示设置状态;f为0表示第一行显示,f为1表示第二行显示 char sec,min,hour,week,day,month,year,n,m; unsigned char count,key; unsigned char lcdd[]=0123456789; /*声明调用函数*/ void dispd(); //日期显示函数 void dispt(); //时间显示函数 unsigned char keys();//按键扫描函数 void lcd_w_cmd(unsigned char com); //写命令字函数 void lcd_w_dat(unsigned char dat); //写数据函数 unsigned char lcd_r_start(); //读状态函数 void int1(); //初始化函数 void delay(unsigned char t); //可控延时函数 void delay1(); //软件实现延时函数,5个机器周期 /*主函数*/ void main() { TMOD=0x01; //设置为定时器模式1 TH0=0x3c; //晶振6MHz,定时时间100ms TL0=0xb0; IE=0x82; //开全局中断和定时中断 TR0=1; //启动定时器 sec=0; //秒 min=0; //分 hour=0; //时 week=0; //星期 day=1; //日 month=1; //月 year=0; //年 count=0; //中断次数清0 n=-3; //设置键按下次数,第一行日期 m=-3; //设置键按下次数,第二行时间 P0=0xff; // 送全1到P0口 int1(); // 初始化 delay(255);
while(1) { key=keys(); //读取按键 switch(key) { case 0xe0: //按下设置键 { TR0=0; k=1; if(f==0) { n=n+3; if(n==9) { n=0; m=0; f=1; }
} else { m=m+3; if(m==12) { m=0; n=0; f=0; }
} if(f==0) { lcd_w_cmd(0x0d); lcd_w_cmd(0x86+n); } else { lcd_w_cmd(0x0d); lcd_w_cmd(0xc4+m); } } break; (责任编辑:admin) |