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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2902|回復: 2
收起左側

使用STC15單片機驅動的OLED DS1302時鐘

[復制鏈接]
ID:466381 發(fā)表于 2021-2-13 02:14 | 顯示全部樓層 |閱讀模式
以前搞的一個項目,現(xiàn)在拿出來分享一下代碼(實物很久以前就損壞了)

單片機源程序如下:
  1. #include<stc15f2k60s2.h>
  2. #include<LQ12864.h>
  3. #include<ds1302.h>
  4. #include<ds18b20.h>
  5. sbit SetMode=P5^4;
  6. sbit SetTimes=P5^5;

  7. void delayk(unsigned int MS)   //誤差 0us
  8. {
  9.         while(MS--)
  10.         {
  11.     unsigned char a,b;
  12.     for(b=129;b>0;b--)
  13.         for(a=45;a>0;a--);
  14. }
  15. }
  16. unsigned int tem;
  17. unsigned char GK;//水平測
  18. unsigned char model=0;
  19. unsigned char code Shuzi[]="0123456789:-";
  20. unsigned char TimeMode[9];
  21. unsigned char DateMode[11];
  22. unsigned char TempMode[6];
  23. unsigned char GKMode[3];
  24. unsigned char InitTime[7]={0,0,14,4,4,4,19};//秒分時日月周年
  25. unsigned int Celsius;
  26. void KeysCan()
  27. {
  28. if(!SetMode)
  29. {
  30. delayk(50);
  31. model++;
  32. if(model==7){model=0;}
  33. while(!SetMode);
  34. }
  35. }
  36. unsigned char Gaokao()
  37. {
  38. unsigned char temp;
  39. switch(InitTime[4])
  40. {
  41.         case 4:temp=70-InitTime[3];break;
  42.         case 5:temp=40-InitTime[3];break;
  43.         case 6:temp=9-InitTime[3];break;
  44. }
  45. return(temp);
  46. }

  47. void TMPdisplay()
  48. {
  49. TempMode[0]=Shuzi[tem%1000/100];
  50. TempMode[1]=Shuzi[tem%100/10];
  51. TempMode[2]='.';
  52. TempMode[3]=Shuzi[tem%10];
  53. TempMode[4]='^';
  54. TempMode[5]='C';
  55. TempMode[6]='\0';

  56. OLED_P8x16Str(64,0,TempMode);
  57. }

  58. void SMG()
  59. {
  60. unsigned char a;
  61. a=read1302(Read_hour);
  62. InitTime[2]=((a>>4)*10+(a&0x0f));
  63. TimeMode[0]=Shuzi[a>>4];
  64. TimeMode[1]=Shuzi[a&0x0f];
  65. TimeMode[2]=Shuzi[10];
  66. a=read1302(Read_minute);
  67. InitTime[1]=((a>>4)*10+(a&0x0f));
  68. TimeMode[3]=Shuzi[a>>4];
  69. TimeMode[4]=Shuzi[a&0x0f];
  70. TimeMode[5]=Shuzi[10];
  71. a=read1302(Read_second);        
  72. InitTime[0]=((a>>4)*10+(a&0x0f));
  73. TimeMode[6]=Shuzi[a>>4];
  74. TimeMode[7]=Shuzi[a&0x0f];        
  75. TimeMode[8]='\0';

  76. a=read1302(Read_year);
  77. InitTime[6]=((a>>4)*10+(a&0x0f));
  78. DateMode[0]=Shuzi[2];        
  79. DateMode[1]=Shuzi[0];        
  80. DateMode[2]=Shuzi[a>>4];        
  81. DateMode[3]=Shuzi[a&0x0f];        
  82. DateMode[4]=Shuzi[11];
  83. a=read1302(Read_month);        
  84. InitTime[4]=((a>>4)*10+(a&0x0f));
  85. DateMode[5]=Shuzi[a>>4];        
  86. DateMode[6]=Shuzi[a&0x0f];        
  87. DateMode[7]=Shuzi[11];
  88. a=read1302(Read_day);        
  89. InitTime[3]=((a>>4)*10+(a&0x0f));
  90. DateMode[8]=Shuzi[a>>4];        
  91. DateMode[9]=Shuzi[a&0x0f];        
  92. DateMode[10]='\0';        

  93. GK=Gaokao();
  94. GKMode[0]=Shuzi[GK/10];
  95. GKMode[1]=Shuzi[GK%10];
  96. GKMode[2]='\0';
  97. }


  98. void main()
  99. {
  100. OLED_Init();
  101. Draw_BMP(0,0,128,8,Zhangtianlan);
  102. delayk(300);
  103. OLED_CLS();
  104.         OLED_P8x16Str(4,4,"Time:");
  105. for(model=0;model<8;model++)
  106. {
  107. OLED_P16x16Ch(16*model,6,model,CNY);
  108. }
  109. model=0;
  110. init_ds1302_io();


  111. while(1)
  112. {
  113. unsigned char b,c;
  114. TMPchange();
  115. for(c=0;c<15;c++)
  116. {
  117. KeysCan();
  118. if(!SetTimes)
  119. {
  120. delayk(20);
  121. switch(model)
  122. {
  123.         case 0:InitTime[model]=0;SetTime(InitTime);break;
  124.         case 1:InitTime[model]++;  if(InitTime[model]==60){InitTime[model]=0;}  SetTime(InitTime);break;
  125.         case 2:InitTime[model]++;  if(InitTime[model]==24){InitTime[model]=0;} SetTime(InitTime);break;
  126.         
  127.         case 3:InitTime[model]++;  
  128.         switch(InitTime[model+1])
  129.                 {
  130.                 case 2:if(InitTime[model]==29){InitTime[model]=1;}break;
  131.                 case 4:if(InitTime[model]==31){InitTime[model]=1;}break;
  132.                 case 6:if(InitTime[model]==31){InitTime[model]=1;}break;
  133.                 case 9:if(InitTime[model]==31){InitTime[model]=1;}break;
  134.                 case 11:if(InitTime[model]==31){InitTime[model]=1;}break;
  135.                 default:if(InitTime[model]==32){InitTime[model]=1;}break;
  136.                 }
  137.         SetTime(InitTime);
  138.         break;

  139.         case 4:InitTime[model]++;  if(InitTime[model]==13){InitTime[model]=1;}  SetTime(InitTime);break;
  140.         case 5:InitTime[model]++;  if(InitTime[model]==8){InitTime[model]=1;}  SetTime(InitTime);break;
  141.         case 6:InitTime[model]++;  if(InitTime[model]==100){InitTime[model]=0;}  SetTime(InitTime);break;
  142. }
  143. while(!SetTimes);
  144. }
  145. SMG();
  146. b=read1302(Read_week);
  147. InitTime[5]=((b>>4)*10+(b&0x0f));
  148. switch(b)
  149. {
  150.         case 1:OLED_P8x16Str(96,2,"Mon");break;
  151.         case 2:OLED_P8x16Str(96,2,"Tue");break;
  152.         case 3:OLED_P8x16Str(96,2,"Wed");break;
  153.         case 4:OLED_P8x16Str(96,2,"Thu");break;
  154.         case 5:OLED_P8x16Str(96,2,"Fri");break;
  155.         case 6:OLED_P8x16Str(96,2,"Sat");break;
  156.         case 7:OLED_P8x16Str(96,2,"Sun");break;
  157. }
  158. OLED_P8x16Str(52,4,TimeMode);
  159. OLED_P8x16Str(5,2,DateMode);
  160. switch(model+1)
  161. {
  162.         case 1:OLED_P8x16Str(4,0,"SetSec\0");break;
  163.         case 2:OLED_P8x16Str(4,0,"SetMin\0");break;
  164.         case 3:OLED_P8x16Str(4,0,"SetHou\0");break;
  165.         case 4:OLED_P8x16Str(4,0,"SetDay\0");break;
  166.         case 5:OLED_P8x16Str(4,0,"SetMon\0");break;
  167.         case 6:OLED_P8x16Str(4,0,"SetWek\0");break;
  168.         case 7:OLED_P8x16Str(4,0,"SetYea\0");break;//break;
  169. }
  170. TMPdisplay();
  171. OLED_P8x16Str(96,6,GKMode);
  172. }
  173. tem=TMPget();
  174. }
  175. }
復制代碼

所有程序51hei提供下載:
OLED-DS1302時鐘 STC15版.zip (83.98 KB, 下載次數: 49)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:410182 發(fā)表于 2021-3-11 23:43 | 顯示全部樓層
學習一下,為啥不用注釋呀
回復

使用道具 舉報

ID:466381 發(fā)表于 2021-3-16 23:31 | 顯示全部樓層
yuzhihang123 發(fā)表于 2021-3-11 23:43
學習一下,為啥不用注釋呀

很久以前的代碼,當時寫的時候沒注釋
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久这里只有精品首页 | 亚洲二区精品 | 亚洲一区二区中文字幕 | 夜夜久久| 欧美视频1区| 一区二区在线不卡 | 亚洲 欧美 日韩 精品 | 黑人巨大精品欧美一区二区免费 | 久久不射网| 国产综合精品一区二区三区 | 天天躁日日躁aaaa视频 | 美女人人操 | 久久久久久久久久久蜜桃 | 国产精品一区三区 | 99免费看 | 亚洲精品电影网在线观看 | 亚洲欧美视频一区二区 | 久久久www成人免费无遮挡大片 | 九色av| 久草综合在线视频 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 日韩中文电影 | 丁香婷婷成人 | 国产一级一级毛片 | 91精品国产综合久久久亚洲 | 亚洲成av人片在线观看无码 | 中文字幕在线免费视频 | 国产精品高清一区二区三区 | caoporn国产精品免费公开 | 国产资源视频 | 日韩欧美精品在线播放 | 天天曰夜夜操 | 成人片免费看 | 毛片区| 精品国产一区探花在线观看 | 日韩一区二区三区四区五区 | 日韩网 | 日韩视频精品在线 | 成人av在线播放 | 国产一区二区自拍 | 国产精品麻|