数字电子钟课程设计报告 联系客服

发布时间 : 星期三 文章数字电子钟课程设计报告更新完毕开始阅读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());