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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 48527|回復(fù): 150
打印 上一主題 下一主題
收起左側(cè)

OLED12864+DS3231的萬年歷制作,帶農(nóng)歷,大字體(單片機(jī)源碼+實(shí)物)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
最近逛論壇,看到有做OLED 屏幕顯示的萬年歷,但都沒有把農(nóng)歷加進(jìn)去;我這個(gè)把農(nóng)歷加上了,時(shí)分秒大字體顯示;溫度是讀的DS3231的溫度顯示出來的;OLED12864和DS3231時(shí)鐘芯片都是IIC通信的,共用時(shí)鐘線和數(shù)據(jù)線,接線簡單;4個(gè)按鍵(設(shè)置,+,-,退出),校時(shí)的時(shí)候,按設(shè)置鍵,相應(yīng)的位會(huì)閃爍,再按+-調(diào)整,設(shè)置鍵按到第8次就退出設(shè)置,設(shè)置的位較多,中途按退出鍵也可以退出設(shè)置。單片機(jī):用12T,或1T的都可以,我用的STC12C5A60S2,1T刷新快些;DS3231是買的模塊;OLED是0.96寸黃藍(lán)雙色的,實(shí)物比照片好看,就是太小了,
附件里有完整的源代碼。

制作出來的實(shí)物圖如下:


部分源代碼:
  1. #include "reg51.h"
  2. #include "intrins.h"
  3. #include "codetab.h"
  4. #include "nongli.h"


  5. #define uint  unsigned int
  6. #define uchar unsigned char

  7. // ------------------------------------------------------------
  8. // IO口模擬I2C通信

  9. // ------------------------------------------------------------
  10. sbit SCL=P3^6; //串行時(shí)鐘
  11. sbit SDA=P3^7; //串行數(shù)據(jù)

  12. sbit KEY1=  P3^0;                  //調(diào)整
  13. sbit KEY2=  P3^1;                  //++
  14. sbit KEY3=  P3^2;                  //--
  15. sbit KEY4=  P3^3;                  //退出

  16. uchar  a1,a2,a3,a4;                      //按鍵消抖用
  17. uchar  disflag=0; //時(shí)間調(diào)整相關(guān)



  18. #define        Brightness        0xcf //
  19. #define X_WIDTH         128
  20. #define Y_WIDTH         64

  21. /********************************************************************************************************
  22. **         DS3231常數(shù)定義
  23. ********************************************************************************************************/
  24. #define DS3231_WriteAddress 0xD0    //器件寫地址
  25. #define DS3231_ReadAddress  0xD1    //器件讀地址
  26. #define DS3231_SECOND       0x00    //秒
  27. #define DS3231_MINUTE       0x01    //分
  28. #define DS3231_HOUR         0x02    //時(shí)
  29. #define DS3231_WEEK         0x03    //星期
  30. #define DS3231_DAY          0x04    //日
  31. #define DS3231_MONTH        0x05    //月
  32. #define DS3231_YEAR         0x06    //年

  33. #define DS3231_TEMPERATUREH 0x11    //溫度寄存器高字節(jié)(8位)        整數(shù)部分
  34. #define DS3231_TEMPERATUREL 0x12    //溫度寄存器低字節(jié)(低2位) 小數(shù)部分



  35. #define NACK    1
  36. #define ACK     0

  37. uchar shan_count; //:號(hào)閃爍計(jì)時(shí)變量
  38. uchar shan_js;    //校時(shí)閃爍計(jì)時(shí)變量
  39. bit flag;                //校時(shí)閃爍標(biāo)志
  40. char hour,minute,second,year,month,day,date,week;
  41. uint TH3231;
  42. bit        ack;                //應(yīng)答標(biāo)志位
  43. /*********************OLED驅(qū)動(dòng)程序用的延時(shí)程序************************************/
  44. /*void delay(unsigned int z)
  45. {
  46.         unsigned int x,y;
  47.         for(x=z;x>0;x--)
  48.                 for(y=1100;y>0;y--);  
  49. }        */
  50. void        Delay5US()           //@12.000MHz           延時(shí)5us
  51. {
  52.    _nop_(); _nop_();        _nop_();_nop_(); //1T單片機(jī)用4個(gè)nop,12T用1個(gè)nop
  53. }


  54. /**************************/
  55. void Timer0Init(void)                //10毫秒@11.0592MHz
  56. {
  57. //        AUXR &= 0x7F;                //定時(shí)器時(shí)鐘12T模式
  58.         TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
  59.         TMOD |= 0x01;                //設(shè)置定時(shí)器0,16位模式
  60.         TL0 = 0x00;                //設(shè)置定時(shí)初值
  61.         TH0 = 0xDC;                //設(shè)置定時(shí)初值
  62.         TF0 = 0;                //清除TF0標(biāo)志
  63.         TR0 = 1;                //定時(shí)器0開始計(jì)時(shí)
  64.         ET0 = 1;
  65.         EA = 1;
  66. }

  67. /**********************************************
  68. //IIC Start
  69. **********************************************/
  70. void IIC_Start()
  71. {
  72.    SCL = 1;               
  73.    SDA = 1;
  74.    SDA = 0;
  75.    SCL = 0;
  76. }

  77. /**********************************************
  78. //IIC Stop
  79. **********************************************/
  80. void IIC_Stop()
  81. {
  82.    SCL = 0;
  83.    SDA = 0;
  84.    SCL = 1;
  85.    SDA = 1;
  86. }


  87. /********************************************************************************************************
  88. **         3231
  89. ********************************************************************************************************/


  90. uchar        BCD2HEX(uchar val)
  91. {
  92.         return        ((val>>4)*10)+(val&0x0f);
  93. }

  94. uchar        HEX2BCD(uchar val)
  95. {
  96.         return        (((val%100)/10)<<4)|(val%10);
  97. }


  98. void SendByte(uchar c)
  99. {
  100.     uchar BitCnt;
  101.    
  102.     for(BitCnt=0;BitCnt<8;BitCnt++)         //要傳送的數(shù)據(jù)長度為8位
  103.     {
  104.         if((c<<BitCnt)&0x80)
  105.             SDA=1;                          //判斷發(fā)送位
  106.         else
  107.             SDA=0;     
  108.         SCL=1;                            //置時(shí)鐘線為高,通知被控器開始接收數(shù)據(jù)位
  109.         Delay5US();                       //保證時(shí)鐘高電平周期大于4μs   
  110.         SCL=0;
  111.     }
  112.     SDA=1;                                  //8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位
  113.     SCL=1;
  114.     Delay5US();
  115.     if(SDA==1)
  116.         ack=0;   
  117.     else
  118.         ack=1;                              //判斷是否接收到應(yīng)答信號(hào)
  119.     SCL=0;
  120.     Delay5US();
  121. }           

  122. uchar RcvByte()
  123. {
  124.    uchar retc;
  125.    uchar BitCnt;

  126.    retc=0;
  127.    SDA=1;                           //置數(shù)據(jù)線為輸入方式
  128.    for(BitCnt=0;BitCnt<8;BitCnt++)
  129.    {
  130.         SCL=0;                      //置時(shí)鐘線為低,準(zhǔn)備接收數(shù)據(jù)位      
  131.         Delay5US();                 //時(shí)鐘低電平周期大于4.7μs                       
  132.         SCL=1;                      //置時(shí)鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效
  133.         Delay5US();
  134.         retc=retc<<1;
  135.         if(SDA==1)
  136.             retc=retc+1;            //讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入retc中
  137.         Delay5US();
  138.    }
  139.    SCL=0;
  140.    return(retc);
  141. }                           

  142. void Ack_I2C(bit a)
  143. {
  144.         SDA        =        a;  
  145.     SCL=1;                     
  146.     Delay5US();             //時(shí)鐘低電平周期大于4us   
  147.     SCL=0;                  //清時(shí)鐘線,鉗住I2C總線以便繼續(xù)接收
  148.     Delay5US();   
  149. }                                            

  150. uchar write_byte(uchar addr, uchar write_data)
  151. {
  152.     IIC_Start();
  153.     SendByte(DS3231_WriteAddress);
  154.     if (ack == 0)
  155.         return 0;
  156.    
  157.     SendByte(addr);   
  158.     if (ack == 0)
  159.         return 0;
  160.    
  161.     SendByte(write_data);
  162.     if (ack == 0)
  163.         return 0;
  164.    
  165.     IIC_Stop();
  166.     Delay5US();      
  167.     Delay5US();      
  168.     return 1;
  169. }                                          

  170. uchar read_current()
  171. {
  172.     uchar read_data;
  173.     IIC_Start();
  174.     SendByte(DS3231_ReadAddress);
  175.     if(ack==0)
  176.         return(0);              
  177.     read_data = RcvByte();
  178.     Ack_I2C(1);
  179.     IIC_Stop();
  180.     return read_data;
  181. }                                                

  182. uchar read_random(uchar random_addr)
  183. {
  184.     uchar Tmp;
  185.         IIC_Start();
  186.     SendByte(DS3231_WriteAddress);
  187.     if(ack==0)
  188.         return(0);            
  189.     SendByte(random_addr);
  190.     if(ack==0)
  191.         return(0);
  192.         Tmp=read_current();
  193.         if(random_addr==DS3231_HOUR)
  194.                 Tmp&=0x3f;
  195.                                             
  196.     return(BCD2HEX(Tmp));//都轉(zhuǎn)10進(jìn)制輸出
  197. }

  198. /***********************/
  199. uchar read_random1(uchar random_addr)  //這個(gè)是讀溫度函數(shù)
  200. {
  201.     uchar Tmp;
  202.         write_byte(0x0e,0x20);//0x0e寄存器的CONV位置1開啟溫度轉(zhuǎn)換,要這句,溫度實(shí)時(shí)刷新,這句不要,溫度要64s才刷新1次
  203.         IIC_Start();
  204.     SendByte(DS3231_WriteAddress);
  205.     if(ack==0)
  206.         return(0);            
  207.     SendByte(random_addr);
  208.     if(ack==0)
  209.         return(0);
  210.         Tmp=read_current();
  211.         return Tmp;
  212. }                                 

  213. void ModifyTime(uchar address,uchar num)
  214. {
  215.     uchar temp=0;
  216.            if(address>6 && address <0) return;
  217.     temp=HEX2BCD(num);
  218.         write_byte(address,temp);
  219. }
復(fù)制代碼

全部資料51hei下載地址:
OLED 萬年歷 (顯示正負(fù)溫度版).rar (224.28 KB, 下載次數(shù): 1683)




評(píng)分

參與人數(shù) 7黑幣 +186 收起 理由
wenzedong + 15
slhslhhao + 8 共享資料的黑幣獎(jiǎng)勵(lì)!
HJJQQ + 8 共享資料的黑幣獎(jiǎng)勵(lì)!
凌凈清河 + 15 美觀和功能兼有,真是佳作了!
清風(fēng)兌酒 + 10 很給力!
溯行 + 30 最近剛好在找^O^
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏104 分享淘帖 頂16 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:68847 發(fā)表于 2019-1-3 19:28 來自手機(jī) | 只看該作者
贊一個(gè)!正是我準(zhǔn)備做的!
回復(fù)

使用道具 舉報(bào)

板凳
ID:458424 發(fā)表于 2019-1-4 09:18 | 只看該作者
請(qǐng)問利用STC單片機(jī),將滑動(dòng)變阻器的分壓輸入AD轉(zhuǎn)換接口,實(shí)現(xiàn)4通道的模擬量轉(zhuǎn)換為數(shù)字量,在12864上顯示。芯片是STC15F2K60S2.怎么做?感謝!
回復(fù)

使用道具 舉報(bào)

地板
ID:386381 發(fā)表于 2019-1-4 10:56 來自手機(jī) | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

5#
ID:448843 發(fā)表于 2019-1-4 13:41 來自手機(jī) | 只看該作者
oled這樣一直顯示不會(huì)燒屏嗎
回復(fù)

使用道具 舉報(bào)

6#
ID:460043 發(fā)表于 2019-1-4 23:11 來自手機(jī) | 只看該作者
樓主感謝!
回復(fù)

使用道具 舉報(bào)

7#
ID:35873 發(fā)表于 2019-1-5 01:37 | 只看該作者
這個(gè)漂亮  有空也玩玩   多謝分享
回復(fù)

使用道具 舉報(bào)

8#
ID:64089 發(fā)表于 2019-1-5 11:35 | 只看該作者
比較完整的資料,很不錯(cuò)。
回復(fù)

使用道具 舉報(bào)

9#
ID:317383 發(fā)表于 2019-1-5 14:46 | 只看該作者
很有幫助,!!!
回復(fù)

使用道具 舉報(bào)

10#
ID:371527 發(fā)表于 2019-1-26 11:31 | 只看該作者
OLED+DS3231+農(nóng)歷轉(zhuǎn)換的常規(guī)程序,頂!
回復(fù)

使用道具 舉報(bào)

11#
ID:164850 發(fā)表于 2019-1-26 15:36 來自手機(jī) | 只看該作者
樓主可以幫忙改一份用90c58單片機(jī)的嗎,萬分感謝。
回復(fù)

使用道具 舉報(bào)

12#
ID:328121 發(fā)表于 2019-1-29 09:15 | 只看該作者
做得不錯(cuò),值得學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

13#
ID:476677 發(fā)表于 2019-2-15 08:27 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報(bào)

14#
ID:476713 發(fā)表于 2019-2-15 09:59 | 只看該作者
贊一個(gè)!正是我準(zhǔn)備做的!
回復(fù)

使用道具 舉報(bào)

15#
ID:46323 發(fā)表于 2019-2-15 11:04 | 只看該作者
請(qǐng)問樓主,農(nóng)歷如何計(jì)算
回復(fù)

使用道具 舉報(bào)

16#
ID:140489 發(fā)表于 2019-2-18 11:59 | 只看該作者
ygnlhxyzj 發(fā)表于 2019-2-15 11:04
請(qǐng)問樓主,農(nóng)歷如何計(jì)算

資料里面有農(nóng)歷轉(zhuǎn)換的程序,你下載看看就知道了
回復(fù)

使用道具 舉報(bào)

17#
ID:167337 發(fā)表于 2019-2-18 12:56 | 只看該作者
謝謝樓主分享好資料,請(qǐng)問可否加入GPS或WIFI主動(dòng)校時(shí)?
回復(fù)

使用道具 舉報(bào)

18#
ID:140489 發(fā)表于 2019-2-18 16:23 | 只看該作者
YQS 發(fā)表于 2019-2-18 12:56
謝謝樓主分享好資料,請(qǐng)問可否加入GPS或WIFI主動(dòng)校時(shí)?

DS3231內(nèi)部帶溫補(bǔ)晶振,精度已經(jīng)很高了,沒必要加GPS校時(shí)了
回復(fù)

使用道具 舉報(bào)

19#
ID:140489 發(fā)表于 2019-2-18 16:27 | 只看該作者
YQS 發(fā)表于 2019-2-18 12:56
謝謝樓主分享好資料,請(qǐng)問可否加入GPS或WIFI主動(dòng)校時(shí)?

DS3231供電用3.3V,精度很高的,測試了2個(gè)月,與手機(jī)時(shí)間對(duì)比1秒不差
回復(fù)

使用道具 舉報(bào)

20#
ID:478583 發(fā)表于 2019-2-21 17:26 | 只看該作者

學(xué)習(xí)學(xué)習(xí)備用
回復(fù)

使用道具 舉報(bào)

21#
ID:479216 發(fā)表于 2019-2-22 11:00 來自手機(jī) | 只看該作者
謝謝樓主,了
回復(fù)

使用道具 舉報(bào)

22#
ID:483038 發(fā)表于 2019-3-1 23:41 | 只看該作者
厲害了
回復(fù)

使用道具 舉報(bào)

23#
ID:64089 發(fā)表于 2019-3-2 17:34 | 只看該作者
lids 發(fā)表于 2019-2-18 16:23
DS3231內(nèi)部帶溫補(bǔ)晶振,精度已經(jīng)很高了,沒必要加GPS校時(shí)了

沒錯(cuò),我DIY一個(gè)數(shù)字鐘,15年到現(xiàn)在沒有調(diào)過時(shí)間,所以后面設(shè)計(jì)都用它了,主要是省心。
回復(fù)

使用道具 舉報(bào)

24#
ID:254251 發(fā)表于 2019-3-7 13:04 | 只看該作者
再加一個(gè)鬧鐘功能就更好了
回復(fù)

使用道具 舉報(bào)

25#
ID:124995 發(fā)表于 2019-3-20 13:19 | 只看該作者
灰常不錯(cuò),贊一個(gè)
回復(fù)

使用道具 舉報(bào)

26#
ID:495514 發(fā)表于 2019-3-22 09:24 來自手機(jī) | 只看該作者
求電路原理圖在哪里???
回復(fù)

使用道具 舉報(bào)

27#
ID:96491 發(fā)表于 2019-3-28 11:09 | 只看該作者
電路圖在哪里?
回復(fù)

使用道具 舉報(bào)

28#
ID:140489 發(fā)表于 2019-3-28 16:55 | 只看該作者

電路圖

OLED.jpg (49.3 KB, 下載次數(shù): 294)

OLED.jpg
回復(fù)

使用道具 舉報(bào)

29#
ID:164850 發(fā)表于 2019-3-29 08:06 來自手機(jī) | 只看該作者
lids 發(fā)表于 2019-3-28 16:55
電路圖

手上沒有12c5a60s2.用15f2k60s2芯片測試了一下,顯示不正常,要更改那里。
回復(fù)

使用道具 舉報(bào)

30#
ID:324043 發(fā)表于 2019-3-29 12:53 來自手機(jī) | 只看該作者
不錯(cuò)謝謝樓主分享。
回復(fù)

使用道具 舉報(bào)

31#
ID:140489 發(fā)表于 2019-4-1 12:34 | 只看該作者
luxianjun 發(fā)表于 2019-3-29 08:06
手上沒有12c5a60s2.用15f2k60s2芯片測試了一下,顯示不正常,要更改那里。

改接口定義就可以了,sbit SCL=P?^?; //串行時(shí)鐘
sbit SDA=P?^?; //串行數(shù)據(jù)
把?號(hào)改為你硬件連接的端口
回復(fù)

使用道具 舉報(bào)

32#
ID:350991 發(fā)表于 2019-4-8 20:02 | 只看該作者
下載來看了,那個(gè)農(nóng)歷算法有點(diǎn)看不懂,想要更詳細(xì)的注釋

回復(fù)

使用道具 舉報(bào)

33#
ID:479611 發(fā)表于 2019-4-8 20:21 來自手機(jī) | 只看該作者
急。。調(diào)試沒反應(yīng),就是按鍵沒反應(yīng),還有時(shí)鐘也沒有反應(yīng)。
回復(fù)

使用道具 舉報(bào)

34#
ID:140489 發(fā)表于 2019-4-9 12:06 | 只看該作者
晴天彡小霖 發(fā)表于 2019-4-8 20:21
急。。調(diào)試沒反應(yīng),就是按鍵沒反應(yīng),還有時(shí)鐘也沒有反應(yīng)。

看下你接線有沒有錯(cuò),只要線接對(duì)了,不會(huì)有問題的
回復(fù)

使用道具 舉報(bào)

35#
ID:104477 發(fā)表于 2019-4-9 13:28 來自手機(jī) | 只看該作者
這個(gè)還要外接晶振的,太舊了
回復(fù)

使用道具 舉報(bào)

36#
ID:479611 發(fā)表于 2019-4-10 16:01 來自手機(jī) | 只看該作者
lids 發(fā)表于 2019-4-9 12:06
看下你接線有沒有錯(cuò),只要線接對(duì)了,不會(huì)有問題的

它一直保持這個(gè)圖片,就是不會(huì)開始運(yùn)行

1554883270677..jpg (1.22 MB, 下載次數(shù): 221)

1554883270677..jpg
回復(fù)

使用道具 舉報(bào)

37#
ID:481522 發(fā)表于 2019-4-10 18:30 | 只看該作者
樓主 這個(gè)用紐扣電池供電可以嗎?
回復(fù)

使用道具 舉報(bào)

38#
ID:140489 發(fā)表于 2019-4-11 09:21 | 只看該作者
晴天彡小霖 發(fā)表于 2019-4-10 16:01
它一直保持這個(gè)圖片,就是不會(huì)開始運(yùn)行

時(shí)鐘模塊的sck,sda和oled的sck,sda是接在一起的,看圖片,時(shí)鐘模塊的數(shù)據(jù)是讀出來了的,具體原因靠你自己查找了
回復(fù)

使用道具 舉報(bào)

39#
ID:140489 發(fā)表于 2019-4-11 09:26 | 只看該作者
可愛的小丹寶 發(fā)表于 2019-4-10 18:30
樓主 這個(gè)用紐扣電池供電可以嗎?

你選用3.3V供電的單片機(jī)應(yīng)該可以的,你可以試一下
回復(fù)

使用道具 舉報(bào)

40#
ID:367948 發(fā)表于 2019-4-14 14:35 | 只看該作者
感謝樓主
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 视频一区二区中文字幕日韩 | 亚洲高清视频一区二区 | 欧美日韩18 | 日韩久久久久 | 久久久免费| 日韩一级| 国产精品久久久久久久免费观看 | 亚洲免费精品 | 成人教育av| 免费a级毛片在线播放 | 精品欧美乱码久久久久久1区2区 | 免费激情av | 天天操网| 色偷偷888欧美精品久久久 | 国产在线h | 浴室洗澡偷拍一区二区 | 视频一区二区三区在线观看 | 国产在线精品免费 | 黄a在线播放 | 欧美男人天堂 | 亚洲久久一区 | 亚洲最大看片网站 | 国产精品福利网 | 精品网| 日韩av一区二区在线观看 | 91社区在线观看高清 | 欧美精品一区二区三区四区五区 | a黄视频| 欧美精品一二区 | 97国产一区二区精品久久呦 | av国产精品毛片一区二区小说 | 国产欧美性成人精品午夜 | 成年女人免费v片 | www国产成人免费观看视频,深夜成人网 | 性色综合 | 久久国际精品 | 在线视频一区二区 | 九九伦理片 | 最新中文字幕 | 午夜视频在线 | 91亚洲精品国偷拍自产在线观看 |