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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6389|回復: 6
打印 上一主題 下一主題
收起左側

LED雙色單元板+STC12C5A60S2+DS1302制作電子鐘

  [復制鏈接]
跳轉到指定樓層
樓主
單位淘汰下的雙色LED單元板,大部分都能正常使用,拿來研究了一下,結合網上的一些程序,制作了一個電子鐘,初次發貼,見笑。。。
成品圖

亞克力板

粘合

打孔,安裝

合體


幾點說明:
1、單片機必須用STC12C5A60S2,不能用89C51,要用推挽輸出才能正常顯示。
2、溫度沒用18B20,用的是10K感溫頭。
3、單元板比較費電,5W左右,單獨供電,所以用了兩5V電源(用一個電源時DS1302不能正常工作)。

單片機源程序如下:
  1. #include"STC12C5A60S2.h"               /*頭文件的包含*/
  2. #include"zimo.h"
  3. #include <intrins.h>
  4. #include <ADC.H>
  5. #include"led_595.h"
  6. #include"DS1302.h"            



  7. sbit K1=P3^0;
  8. sbit K2=P3^1;
  9. sbit K3=P3^2;
  10. sbit K4=P3^3;

  11. unsigned char SetState,SetPlace=0;
  12. void Int0Configuration();

  13. unsigned char code temp_table[]={67, 70, 72, 74, 76, 78, 81, 83, 85, 87,
  14.                                                                  89, 90, 91, 93, 95, 97, 100,103,106,110,
  15.                                                                  113,116,119,122,125,128,131,133,136,139,
  16.                                                                  141,143,146,148,150,152,154,157,159,161,
  17.                                                                  163,165,167,169,171,173,175,176,178,180,
  18.                                                                  182,184,186,187,189,191,193,194,196,198,
  19.                                                                  199,200,201,202};
  20. unsigned int temp_change(unsigned char temp1)
  21. {
  22.         unsigned int i;
  23.         for(i=0;i<=63;i++)
  24.         {
  25.                 if(temp_table[i]>temp1) break;        
  26.         }
  27.         if(temp_table[i]==0) return 0;
  28.                 else if(temp_table[i]==63) return 640;
  29.                         else
  30.                         {
  31.                                 return (unsigned int)((temp1-temp_table[i-1])*10/(temp_table[i]-temp_table[i-1])+(i-1)*10+5);
  32.                         }


  33. }


  34. void SendTime(void)
  35. {
  36.         unsigned int TempData;
  37.         GetTime();
  38.         TempData=GetADCResult(2);
  39.         TempData=temp_change(TempData);
  40.         line1_num[2]=TableDs1302[6]/10;
  41.         line1_num[3]=TableDs1302[6]%10;
  42.         line1_num[5]=TempData/100;
  43.         line1_num[6]=TempData%100/10;
  44.         line2_num[0]=TableDs1302[4]/10;
  45.         line2_num[1]=TableDs1302[4]%10;
  46.         line2_num[3]=TableDs1302[3]/10;
  47.         line2_num[4]=TableDs1302[3]%10;
  48.         line2_num[7]=TableDs1302[5]+10;
  49.         line3_num[0]=TableDs1302[2]/10;
  50.         line3_num[1]=TableDs1302[2]%10;
  51.         line3_num[3]=TableDs1302[1]/10;
  52.         line3_num[4]=TableDs1302[1]%10;
  53.         line3_num[6]=TableDs1302[0]/10;
  54.         line3_num[7]=TableDs1302[0]%10;
  55. }


  56. void main()
  57. {
  58.         unsigned int i;
  59.         LED_Init();       
  60.         DelayMS(100);
  61.         InitADC();
  62.         DelayMS(1000);
  63.         Int0Configuration();

  64.         if(K2==0)
  65.         {
  66.                  DelayMS(1000);

  67.                  InitDS1302();
  68.        
  69.        
  70.        
  71.         }



  72.         while(1)
  73.         {
  74.                 if(SetState==0)
  75.                 {
  76.                         SendTime();
  77.                         for(i=0;i<10;i++)        LED_Display();
  78.                 }
  79.                 else
  80.                 {
  81.                         SendTime();
  82.                         for(i=0;i<20;i++)        LED_Display();
  83.                         for(i=0;i<2;i++)
  84.                         {
  85.                                 if(SetPlace==0)        {line3_num[6]=11;line3_num[7]=11;}
  86.                                 if(SetPlace==1)        {line3_num[3]=11;line3_num[4]=11;}
  87.                                 if(SetPlace==2)        {line3_num[0]=11;line3_num[1]=11;}
  88.                                 if(SetPlace==3)        {line2_num[3]=10;line2_num[4]=10;}
  89.                                 if(SetPlace==4)        {line2_num[0]=10;line2_num[1]=10;}
  90.                                 if(SetPlace==5)        {line2_num[7]=10;}
  91.                                 if(SetPlace==6)        {line1_num[2]=10;line1_num[3]=10;}
  92.                                 LED_Display();
  93.                         }
  94.                        
  95.                         if(K1==0)                //檢測按鍵K1是否按下
  96.                         {
  97.                                 LED_Display();        //消除抖動
  98.                                 if(K1==0)
  99.                                 {
  100.                                         SetPlace++;
  101.                                         if(SetPlace>=7)
  102.                                                 SetPlace=0;                                       
  103.                                 }

  104.                                 while((i<50)&&(K1==0))         //檢測按鍵是否松開
  105.                                 {
  106.                                         LED_Display();
  107.                                         i++;
  108.                                 }
  109.                                 i=0;
  110.                         }          
  111.                         if(K2==0)                //檢測按鍵K2是否按下
  112.                         {
  113.                                 LED_Display();        //消除抖動
  114.                                 if(K2==0)
  115.                                 {
  116.                                         TableDs1302[SetPlace]++;
  117.                                         if((TableDs1302[SetPlace]>=60)&&(SetPlace<2))                //分秒只能到59
  118.                                         {
  119.                                                 TableDs1302[SetPlace]=0;
  120.                                         }
  121.                                         if((TableDs1302[SetPlace]>=24)&&(SetPlace==2))                //小時只能到23
  122.                                         {
  123.                                                 TableDs1302[SetPlace]=0;
  124.                                         }
  125.                                         if((TableDs1302[SetPlace]>=32)&&(SetPlace==3))                //日只能到31
  126.                                         {
  127.                                                 TableDs1302[SetPlace]=1;       
  128.                                         }
  129.                                         if((TableDs1302[SetPlace]>=13)&&(SetPlace==4))                //月只能到12
  130.                                         {
  131.                                                 TableDs1302[SetPlace]=1;
  132.                                         }       
  133.                                         if((TableDs1302[SetPlace]>=8)&&(SetPlace==5))                //周只能到7
  134.                                         {
  135.                                                 TableDs1302[SetPlace]=1;
  136.                                         }               
  137.                                         if((TableDs1302[SetPlace]>=31)&&(SetPlace==6))                //年暫時到2030
  138.                                         {
  139.                                                 TableDs1302[SetPlace]=0;
  140.                                         }               


  141.                                         InitDS1302();
  142.                                 }
  143.                                
  144.                                 while((i<50)&&(K2==0))         //檢測按鍵是否松開
  145.                                 {
  146.                                         LED_Display();
  147.                                         i++;
  148.                                 }
  149.                                 i=0;
  150.                                
  151.                         }                                               
  152.                 }
  153.         }
  154. }


  155. void Int0Configuration()
  156. ……………………

  157. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
LED_595_1302.rar (43.65 KB, 下載次數: 101)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:87149 發表于 2018-1-13 06:33 | 只看該作者
厲害牛人啊
回復

使用道具 舉報

板凳
ID:277136 發表于 2018-1-18 09:18 | 只看該作者
感謝樓主分享!!!
回復

使用道具 舉報

地板
ID:101726 發表于 2018-6-21 02:16 | 只看該作者
感謝 熱心分享
回復

使用道具 舉報

5#
ID:496315 發表于 2019-4-15 10:12 | 只看該作者
感謝 熱心分享
回復

使用道具 舉報

6#
ID:356562 發表于 2021-2-12 08:12 | 只看該作者
STC 1T的單片機速度快,讀寫DS1302和DS18B20需要調整時序。
回復

使用道具 舉報

7#
ID:977804 發表于 2022-3-17 23:16 來自手機 | 只看該作者
很歷害,樓主用心了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜激情视频在线 | 欧美精品一二三区 | 久草在线视频中文 | 欧美一二三区 | jizz在线免费观看 | 国产九九精品视频 | 欧美激情一区二区三区 | 中文字幕亚洲专区 | 国产人成精品一区二区三 | 国产亚洲精品精品国产亚洲综合 | 日韩视频一区二区 | 好姑娘高清在线观看电影 | 日韩精品在线一区二区 | 一区二区三区电影在线观看 | 国产成人jvid在线播放 | 欧美日韩高清一区 | 伊人伊人 | 九九av| 91成人精品 | 午夜小视频在线播放 | 红桃视频一区二区三区免费 | 亚洲精品在 | 午夜av一区二区 | 欧美成人一级 | 日韩一区二区三区精品 | 在线观看黄免费 | 欧美精品一区二区三区蜜桃视频 | 青青久草 | 成年免费在线观看 | 色天天综合 | 亚洲国产精品久久人人爱 | 日本一级淫片免费啪啪3 | 国产精品高清一区二区 | 国产成人精品午夜视频免费 | 国产高清精品在线 | 国产小u女发育末成年 | 日韩乱码av | 美女视频一区 | 国产精品日韩 | 看a网站 | 欧美日韩中文在线 |