《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 解决方案 > 基于DS1302+LCD1602的数字万年历,具有按键可调功能

基于DS1302+LCD1602的数字万年历,具有按键可调功能

2015-10-15
关键词: DS1302 时钟芯片

基于DS1302+LCD1602的数字万年历,具有按键可调功能

主程序流程图:

11100721067006de6d4b8a720e.jpg

按键扫描过程中,用了三个键:

key0(功能键)

key1(增大键)

key2(减小键)

用变量num记录功能键按下次数

switch(num)

{
         case 1:  flag=1;//修改时间,禁止液晶从DS1302读数据
                     LCD_WRITE_COM(0x0f);//光标开始闪烁
                     LCD_WRITE_COM(0x80+3);//第一次按下,光标定位到年位置
                     break;

  case 2:  LCD_WRITE_COM(0x80+6);//第二次按下,光标定位到月位置
                     break;

  case 3:  LCD_WRITE_COM(0x80+9);//第三次按下,光标定位到日位置
                     break;
         case 4:  LCD_WRITE_COM(0x80+12);//第四次按下,光标定位到星期位置
                     break;
         case 5:  LCD_WRITE_COM(0x80+0x40+4);//第五次按下,光标定位到时位置
                     break;

  case 6:  LCD_WRITE_COM(0x80+0x40+7);//第六次按下,光标定位到分位置
                     break;

  case 7:  LCD_WRITE_COM(0x80+0x40+10);//第七次按下,光标定位到秒位置
                     break;

  case 8:  num=0;//第八次按下,记录清零
                     LCD_WRITE_COM(0x0c);//不显示光标
                     WRITE_1302(WRITE_PROTECT,0x00);//禁止写保护
                     WRITE_1302(0x80,(second/10*16)+second%10);//将调节后的秒写入DS1302
                     WRITE_1302(0x82,(minute/10*16)+minute%10);//将调节后的分写入DS1302
                     WRITE_1302(0x84,(hour/10*16)+hour%10);//将调节后的时写入DS1302
                     WRITE_1302(0x8a,(week/10*16)+week%10);//将调节后的星期写入DS1302
                     WRITE_1302(0x86,(day/10*16)+day%10);//将调节后的日写入DS1302

              WRITE_1302(0x88,(month/10*16)+month%10);//将调节后的月写入DS1302

              WRITE_1302(0x8c,(year/10*16)+year%10);//将调节后的年写入DS1302

              WRITE_1302(WRITE_PROTECT,0x80);//开写保护

              flag=0;//时间修改完毕,允许液晶从DS1302读数据

              break;

}

仿真时的现象:

111007211799b3de05ef81611e.png

111007205277d87cd087d4a51c.jpg

11100720549d02bfb45f72b3f8.jpg

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。