久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1729|回復: 0
收起左側

單片機電子時鐘程序

[復制鏈接]
ID:217514 發表于 2017-7-6 00:33 | 顯示全部樓層 |閱讀模式
采用的一本教材上的算法,原封不動,沒有修改,僅供學習使用,侵刪。

下載:
電子時鐘.docx (12.77 KB, 下載次數: 6)

  1. #include<reg51.h>
  2. #include<LCD1602.H>
  3. #include<DS1302.h>
  4. #include<reg51.h>

  5. #define uchar unsigned char
  6. #define unit unsigned int
  7. bit key_flag1=0,key_flag2=0;
  8. SYSTEMTIME adjusted;

  9. uchar sec_add=0,min_add=0,hou_add=0,day_add=0,mon_add=0,yea_add=0,wee_add=0;
  10. uchar data_alarm[7]={0};

  11. int key_scan()
  12. {
  13.         int i=0;
  14.         uint temp;
  15.         P1=0xf0;
  16.         temp=P1;
  17.         if(temp!=0xf0)
  18.         {
  19.                 i=1;
  20.         }
  21.         else
  22.         {
  23.                 i=0;
  24.         }
  25.         return i;
  26. }

  27. uchar key_value()
  28. {
  29.         uint m=0,n=0,temp;
  30.         uchar value;
  31.         uchar v[4][3]={'2','1','0','5','4','3','8','7','6','b','a','9'} ;
  32.         P1=0xfe;temp=P1;if(temp!=0xfe)m=0;
  33.         P1=0xfd;temp=P1;if(temp!=0xfd)m=1;
  34.         P1=0xfb;temp=P1;if(temp!=0xfb)m=2;
  35.         P1=0xf7;temp=P1;if(temp!=0xf7)m=3;
  36.         P1=0xef;temp=P1;if(temp!=0xef)n=0;
  37.         P1=0xdf;temp=P1;if(temp!=0xdf)n=1;
  38.         P1=0xbf;temp=P1;if(temp!=0xbf)n=2;
  39.         value=v[m][n];
  40.         return value;
  41. }

  42. void adjust(void)
  43. {
  44.         if(key_scan()&&key_flag1)
  45.                 switch(key_value())
  46.                 {
  47.                         case'0':sec_add++;break;
  48.                         case'1':min_add++;break;
  49.                         case'2':hou_add++;break;
  50.                         case'3':day_add++;break;
  51.                         case'4':mon_add++;break;
  52.                         case'5':yea_add++;break;
  53.                         case'6':wee_add++;break;
  54.                         default:break;
  55.                 }
  56.         adjusted.Second+=sec_add;
  57.         adjusted.Minute+=min_add;
  58.         adjusted.Hour+=hou_add;
  59.         adjusted.Day+=day_add;
  60.         adjusted.Month+=mon_add;
  61.         adjusted.Year+=yea_add;
  62.   adjusted.Week+=wee_add;
  63.         if(adjusted.Second>59)
  64.         {
  65.                 adjusted.Second=adjusted.Second%60;
  66.                 adjusted.Minute++;
  67.         }
  68.         if(adjusted.Minute>59)
  69.         {
  70.                 adjusted.Minute=adjusted.Minute%60;
  71.                 adjusted.Hour++;
  72.         }
  73.         if(adjusted.Hour>23)
  74.         {
  75.     adjusted.Hour=adjusted.Hour%24;
  76.     adjusted.Day++;
  77.   }
  78.         if(adjusted.Day>31)
  79.                 adjusted.Day=adjusted.Day%31+1;
  80.         if(adjusted.Month>12)
  81.                 adjusted.Month=adjusted.Month%12+1;
  82.         if(adjusted.Year>100)
  83.                 adjusted.Year=adjusted.Year%100;
  84.         if(adjusted.Week>7)
  85.                 adjusted.Week=adjusted.Week%7;
  86. }
  87.                
  88. void changing(void) interrupt 0
  89. {
  90.         if(key_flag1)
  91.                 key_flag1=0;
  92.         else
  93.                 key_flag1=1;
  94. }

  95. void main()
  96. {
  97.         uint i;
  98.         uchar p1[]="D:",p2[]="T:";
  99.         SYSTEMTIME T;
  100.        
  101.         EA=1;
  102.         EX0=1;
  103.         IT0=1;
  104.         EA=1;
  105.         EX1=1;
  106.         IT1=1;
  107.         init1602();
  108.         Initial_DS1302();
  109.        
  110.         while(1)
  111.         {
  112.                 write_com(0x80);
  113.                 write_string(p1,2);
  114.                 write_com(0xc0);
  115.                 write_string(p2,2);
  116.                 DS1302_GetTime(&T);
  117.                 adjusted.Second=T.Second;
  118.                 adjusted.Minute=T.Minute;
  119.                 adjusted.Hour=T.Hour;
  120.                 adjusted.Week=T.Week;
  121.                 adjusted.Day=T.Day;
  122.                 adjusted.Month=T.Month;
  123.                 adjusted.Year=T.Year;
  124.                 adjusted.Week=T.Week;
  125.                 for(i=0;i<12;i++)
  126.                 {
  127.                         adjusted.DateString[i]=T.DateString[i];
  128.                         adjusted.TimeString[i]=T.TimeString[i];
  129.                 }
  130.                 adjust();
  131.                 DateToStr(&adjusted);
  132.                 TimeToStr(&adjusted);
  133.                 write_com(0x82);
  134.                 write_string(adjusted.DateString,11);
  135.                 write_com(0xc2);
  136.                 write_string(adjusted.TimeString,8);
  137.                 delay(10);
  138.         }
  139. }
復制代碼


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品美女| 中文字幕成人免费视频 | 日本精品视频一区二区 | 欧美久久一区二区三区 | avmans最新导航地址 | 黄网站涩免费蜜桃网站 | 成年网站在线观看 | 国产精品国产三级国产播12软件 | 中文字幕一区在线观看视频 | 亚洲精品自拍视频 | 天天综合亚洲 | 久草在线| 成年视频在线观看福利资源 | 超碰成人免费观看 | 亚洲精品久久久久久国产精华液 | 综合久久av | 精品一区av | 精品av| 欧美一区二区在线 | 亚洲欧洲精品在线 | 日本xx视频免费观看 | 日韩欧美在线观看 | 日韩在线视频一区 | 毛片免费在线观看 | 黄色一级大片在线免费看产 | 视频一区在线 | 日韩在线三级 | 免费观看av | 国产精品成人国产乱一区 | 色伊人| 国产九九精品视频 | 国内精品一区二区三区 | 国产精品久久久久久婷婷天堂 | 免费爱爱视频 | 韩日一区二区 | 亚洲综合激情 | 久草免费电影 | 精品欧美乱码久久久久久 | 精品国产乱码久久久久久88av | 久久久久久国产精品 | 国产农村妇女毛片精品久久麻豆 |