基于单片机的IC卡门禁系统 - 图文 下载本文

{

countt1=0;//清零计数变量,以便下一次计数使用 SS++; if(SS>59) {

SS=0; MM++; if(MM>59) {

MM=0; HH++; if(HH>23) { HH=0; DA++; if(DA>30) { DA=1; MO++; if(MO>12) { MO=1; YE++; if(YE>99) { YE=0; } } } } } } } }

/****************************************************************** - 函数名称:dis_timer() - 隶属模块:time.h - 函数属性:内部

- 参数说明:无返回值,无带入参数 - 返回说明:无

- 功能描述:系统时钟显示界面、设置时钟显示界面

*****************************************************************/ void dis_timer()//时钟日期显示函数

{uchar m;//定义一个变量用于闪烁临时计数

27

m=SS&0x01;//通过m变量的取值来实现变量闪烁 DisplayListChar(0,0,\显示固定字符20

/*------------------“年份”显示代码部分--------------------------*/ if(counter11==7)//年变量处于设置状态,1秒钟闪烁一次 {

if(m==0)//如果m=0,就将年显示出来

{lcd_goto_xy(2,0);lcd_number(YE/10);lcd_number(YE);} else //则显示空格字符。

{lcd_goto_xy(2,0);lcd_putc(' ');lcd_putc(' '); } }

else //否则年变量不处于修改状态,直接显示年

{lcd_goto_xy(2,0);lcd_number(YE/10);lcd_number(YE);}

/*------------------“间隔符”显示代码部分------------------------*/ lcd_putc('/');//间隔符显示

/*------------------“月份”显示代码部分--------------------------*/ if(counter11==6)//月变量处于设置状态,1秒钟闪烁一次 {if(m==0)//如果m=0,就将月显示出来

{lcd_goto_xy(5,0);lcd_number(MO/10);lcd_number(MO);} else //则显示空格字符。

{lcd_goto_xy(5,0);lcd_putc(' ');lcd_putc(' '); } }

else //否则年变量不处于修改状态,直接显示月

{lcd_goto_xy(5,0);lcd_number(MO/10);lcd_number(MO);}

/*------------------“间隔符”显示代码部分------------------------*/ lcd_putc('/');//间隔符显示

/*-------------------“日”显示代码部分---------------------------*/ if(counter11==5)//日变量处于设置状态,1秒钟闪烁一次 {if(m==0)//如果m=0,就将日显示出来

{lcd_goto_xy(8,0);lcd_number(DA/10);lcd_number(DA);} else //则显示空格字符。

{lcd_goto_xy(8,0);lcd_putc(' ');lcd_putc(' '); } }

else //否则年变量不处于修改状态,直接显示月

{lcd_goto_xy(8,0);lcd_number(DA/10);lcd_number(DA);}

/*------------------“间隔字符”显示代码部分----------------------*/ lcd_puts(\字符显示

/*------------------“星期”显示代码部分--------------------------*/

28

if(counter11==4)//星期变量处于设置状态,1秒钟闪烁一次 {if(m==0)//如果m=0,就将日显示出来 {lcd_goto_xy(15,0);lcd_number(XQ);} else //则显示空格字符。

{lcd_goto_xy(15,0);lcd_putc(' '); } }

else //否则年变量不处于修改状态,直接显示月

{lcd_goto_xy(15,0);lcd_number(XQ); }

/*------------------“小时”显示代码部分---------------------------*/ if(counter11==3)//小时变量处于设置状态,1秒钟闪烁一次 {if(m==0)//如果m=0,就将小时显示出来

{lcd_goto_xy(4,1);lcd_number(HH/10);lcd_number(HH);} else //则显示空格字符。

{lcd_goto_xy(4,1);lcd_putc(' ');lcd_putc(' '); } }

else //否则年变量不处于修改状态,直接显示月

{lcd_goto_xy(4,1);lcd_number(HH/10);lcd_number(HH);}

/*------------------“冒号”显示代码部分---------------------------*/ if(counter11==0)//如果不处于设置状态冒号才交替闪烁 {if(m==0)lcd_putc(':'); else lcd_putc(' '); }

else lcd_putc(':');//否则处于设置状态下,直接显示不闪烁提示

/*------------------“分钟”显示代码部分---------------------------*/ if(counter11==2)//分钟变量处于设置状态,1秒钟闪烁一次 {if(m==0)//如果m=0,就将分钟显示出来

{lcd_goto_xy(7,1);lcd_number(MM/10);lcd_number(MM);} else //则显示空格字符。

{lcd_goto_xy(7,1);lcd_putc(' ');lcd_putc(' '); } }

else //否则年变量不处于修改状态,直接显示分钟

{lcd_goto_xy(7,1);lcd_number(MM/10);lcd_number(MM);}

/*------------------“冒号”显示代码部分---------------------------*/ if(counter11==0)//如果不处于设置状态冒号才交替闪烁 {if(m==0)lcd_putc(':'); else lcd_putc(' '); }

else lcd_putc(':');//否则处于设置状态下,直接显示不闪烁提示

/*------------------“秒钟”显示代码部分---------------------------*/ if(counter11==1)//秒钟变量处于设置状态,1秒钟闪烁一次 {if(m==0)//如果m=0,就将秒钟显示出来

{lcd_goto_xy(10,1);lcd_number(SS/10);lcd_number(SS);} else //则显示空格字符。

29

{lcd_goto_xy(10,1);lcd_putc(' ');lcd_putc(' '); } }

else //否则年变量不处于修改状态,直接显示分钟

{lcd_goto_xy(10,1);lcd_number(SS/10);lcd_number(SS);} }

/****************************************************************** - 函数名称:set_time - 隶属模块:sys_app.h - 函数属性:内部

- 参数说明:无返回值,无带入参数无 - 返回说明:无

- 功能描述:系统时间设置函数,通过此函数设置时钟、日期功能。

*****************************************************************/ void set_time(void)//系统菜单——设置时间函数 {

/*时钟设置界面显示*/ dis_timer();

/*键盘扫描获取键值*/

num=keyscan();//反复扫描4*4键盘获得按键参数 /*判断是否是一次有效的按键按下*/

/*------------------被设置变量选择代码部分---------------------*/ if(num==12)//如果key_value=0代表“选择设置参数键按下” {num=255;

counter11++;//让记录设置的参数的变量值+

if(counter11>7) counter11=0; //因为只有7个参数需要修改 }

/*------------------秒钟设置程序部分代码部分-------------------*/ if(counter11==1) { if(num==13) //+

{SS++;if(SS>59) SS=59;num=255;} if(num==14) //-

{SS--;if(SS<0) SS=0;num=255;} }

/*------------------分钟设置程序部分代码部分-------------------*/ if(counter11==2) { if(num==13) //+

{MM++;if(MM>59) MM=59;num=255;} if(num==14) //-

{MM--;if(MM<0) MM=0;num=255;} }

/*------------------小时设置程序部分代码部分-------------------*/ if(counter11==3)

30