发布时间 : 星期三 文章数字电子钟课程设计报告更新完毕开始阅读e6239e6cb80d6c85ec3a87c24028915f804d84c1
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
bit b_KeyShock=0; //键盘防抖动标志位。
//当按键中断产生时,首先判断此位。 //0--执行键盘扫描及键码处理程序;1--不执行。
bit b_KillShock=0; //防抖标志清除位:0--不清除;1--清除。
unsigned char uc_KillCount=1; //抖动标志清除计数,使用定时器1。
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//<<<<<<<<<<<<<<<<<<<<<<键
盘
扫
描
开
启
标
志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> bit b_KeyScan=0; //0--不扫描; //1--扫描。
/<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 定时刷新时 间>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> TIME stCurrentTime; //存储从DS1302获取的时间,以及显示字符串。 bit b_TimeRefresh=0; //定时刷新标志。 unsigned char uc_TimeRefresh=0; //定时刷新计数。 void main() { vdInitialize(); //初始化LCD。 vDSInitialize(); //初始化DS1302。 SCANPORT=0x0F; //初始化键盘。 vWriteCMD(0x81); vShowChar(\ vWriteCMD(0xC1); vShowChar(\ //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中断0,用于开启键盘扫描及键码处理标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> IT0=1; // 中断方式:下降沿。 EX0=1; // 开启外部中断。 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于防抖动标志清除 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> TH1=TIME1H; TL1=TIME1L; TR1=1; //开启定时器1 ET1=1; //开定时器1中断 EA=1; while(1) { //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 定时刷新时 间>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> if(b_TimeRefresh==1) //没900ms执行1次,刷新LCD时间显示。 { b_TimeRefresh=0; //恢复标志。 vDSGetTime(&stCurrentTime); //获取当前时间 并将其存入指定数组。 vDateString(&stCurrentTime); //生成日期字符串。 vTimeString(&stCurrentTime); //生成时间字符串。 vWriteCMD(0x86); //向LCD写入当前时间。 vShowChar(stCurrentTime.ucaDateString); vWriteCMD(0xC6); vShowChar(stCurrentTime.ucaTimeString); } //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<键盘扫描及键码处理>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> if(b_KeyScan==1) //如果有按键按下,则进行按键扫描和键码处理。 { b_KeyScan=0; vKeyProcess(ucKeyScan());