第48节:利用DS1302做一个实时时钟
时间:11-22
来源:互联网
点击:
- ucMonth--;
- if(ucMonth<1)
- {
- ucMonth=1;
- }
- ucWd1Part2Update=1;//更新显示
- break;
- case 3: //日
- ucDate--;
- if(ucDate<1)
- {
- ucDate=1;
- }
- ucWd1Part3Update=1;//更新显示
- break;
- }
- break;
- case 2:
- switch(ucPart) //在不同的局部变量下,相当于二级菜单
- {
- case 1://时
- ucHour--;
- if(ucHour>23)
- {
- ucHour=0;
- }
- ucWd2Part1Update=1;//更新显示
- break;
- case 2: //分
- ucMinute--;
- if(ucMinute>59)
- {
- ucMinute=0;
- }
- ucWd2Part2Update=1;//更新显示
- break;
- case 3: //秒
- ucSecond--;
- if(ucSecond>59)
- {
- ucSecond=0;
- }
- ucWd2Part3Update=1;//更新显示
- break;
- }
- break;
- }
- ucVoiceLock=1;//原子锁加锁,保护主函数与中断函数的共享变量uiVoiceCnt
- uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。
- ucVoiceLock=0;//原子锁解锁,保护主函数与中断函数的共享变量uiVoiceCnt
- ucKeySec=0;//响应按键服务处理程序后,按键编号清零,避免一致触发
- break;
- case 3://短按设置按键 对应朱兆祺学习板的S9键
- switch(ucWd)//在不同的窗口下,设置不同的参数
- {
- case 1:
- ucPart++;
- if(ucPart>3)
- {
- ucPart=1;
- ucWd=2; //切换到第二个窗口,设置时分秒
- ucWd2Update=1;//窗口2更新显示
- }
- ucWd1Update=1;//窗口1更新显示
- break;
- case 2:
- if(ucPart>0) //在窗口2的时候,要第一次激活设置时间,必须是长按3秒才可以,这里短按激活不了第一次
- {
- ucPart++;
- if(ucPart>3)//设置时间结束
- {
- ucPart=0;
- /* 注释五:
- * 每个月份的天数最大值是不一样的,在写入ds1302时钟芯片内部数据前,应该做一次调整。
- * 有的月份最大28天,有的月份最大29天,有的月份最大30天,有的月份最大31天,
- */
- ucDate=date_adjust(ucYear,ucMonth,ucDate); //日调整 避免日的数值在某个月份超范围
- ucYearBCD=number_to_bcd(ucYear);//原始数值转BCD
- ucMonthBCD=number_to_bcd(ucMonth); //原始数值转BCD
- ucDateBCD=number_to_bcd(ucDate);//原始数值转BCD
- ucHourBCD=number_to_bcd(ucHour);//原始数值转BCD
- ucMinuteBCD=number_to_bcd(ucMinute);//原始数值转BCD
- ucSecondBCD=number_to_bcd(ucSecond);//原始数值转BCD
- Write1302 (WRITE_PROTECT,0X00); //禁止写保护
- Write1302 (WRITE_YEAR,ucYearBCD); //年修改
- Write1302 (WRITE_MONTH,ucMonthBCD); //月修改
- Write1302 (WRITE_DATE,ucDateBCD); //日修改
- Write1302 (WRITE_HOUR,ucHourBCD); //小时修改
- Write1302 (WRITE_MINUTE,ucMinuteBCD); //分钟修改
- Write1302 (WRITE_SECOND,ucSecondBCD); //秒位修改
DS1302实时时 相关文章:
- 如何实现DS1302实时时钟表显示在1602LCD液晶(11-18)
- LCD1602液晶显示DS1302实时时钟Proteus仿真(11-13)
- AT89C2051+LCD1602+DS1302实时时钟设计(c51)(11-10)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)