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

QQ登錄

只需一步,快速開始

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

單片機(jī)旋轉(zhuǎn)電子鐘制作 帶PCB原理圖,源程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
旋轉(zhuǎn)電子鐘制作資料分享給大家

元件名稱型號(hào)封裝數(shù)量參數(shù)
單片機(jī)U1LQFP 441STC89C52
時(shí)鐘芯片U2DIP 41DS1302
貼片電阻RO-R19O805201K
貼片電阻R22-R25O8O5410K
貼片LEDO8O5O8O520
電阻R20AXIAL0.21470
瓷片電容C1-C4O8O5433P
紅外接收Q1TO-2201 3P
晶振X1CC2111.0592 MHZ
晶振X2CC2132.768 MHZ
排插J1SIP1SIP4
電感線圈L2(次級(jí))L10180匝
鈕扣電池座BattayAXIAL0.913V
                              無線供電部份
三極管Q1TO921B772
三極管Q2TO9219013
電容C1CC41222
電阻R-R3RW103470
電阻R4RW10110K
二極管D1-D2DW1021N4007
二極管D3LED1紅外發(fā)射
插口J1-J2CON222P
電感L1(初級(jí)線圈)L101100匝


PCB原理圖,源程序都有,想要的同學(xué)可以下去參考下。本人做成功了。就不上圖了。做的不好看。電源部分沒做成


















































  1. /***************************************************************************************************/
  2. //指針式時(shí)鐘 簡(jiǎn)單版 有待改進(jìn)!
  3. #include
  4. #define uchar unsigned char    //宏定義
  5. #define uint unsigned int
  6. //sbit KEY=P3^2 ;
  7. //sbit led1=P1^0 ;

  8. sbit ACC0=ACC^0;           //1bit數(shù)據(jù)存儲(chǔ)位
  9. sbit ACC7=ACC^7;

  10. sbit T_CLK=P3^5;                    //DS1302引腳連接
  11. sbit T_IO =P3^6;
  12. sbit T_RST=P3^7;

  13. uchar i=1 ;
  14. uint Pt,S ;
  15. uint D=0 ;
  16. uchar miao,Cent,Hour,Month,Day,Week,miaot,centt,hourt;
  17. void du1302();
  18. /*******************************************************************************/
  19. /*外部中斷0處理函數(shù)*/
  20. void intersvr0(void)interrupt 0 using 0
  21. {
  22.    
  23. //        D=D+(S-180);
  24.     //D=0;
  25.     //修正值
  26.    // Pt=580;
  27.     //得到定時(shí)器T0的初設(shè)值
  28.     S=0;
  29.            
  30.     //計(jì)數(shù)器清零,將重新計(jì)數(shù)

  31. }

  32. /*定時(shí)中斷0處理函數(shù)*/
  33. void timer0(void)interrupt 1 using 1
  34. {
  35.     TH0=(65536-630)/256 ;
  36.     TL0=(65536-630)%256 ;
  37.     //設(shè)置定時(shí)器T0的初設(shè)值
  38.     S++;
  39.     //計(jì)數(shù)
  40.     switch(S)
  41.     {
  42.         case 15 :
  43.         //0點(diǎn)
  44.         case 30 :
  45.         //1點(diǎn)
  46.         case 45 :
  47.         //2點(diǎn)
  48.         case 60 :
  49.         //3點(diǎn)
  50.         case 75 :
  51.         //4點(diǎn)
  52.         case 90 :
  53.         //5點(diǎn)
  54.         case 105 :
  55.         //6點(diǎn)
  56.         case 120 :
  57.         //7點(diǎn)
  58.         case 135 :
  59.         //8點(diǎn)
  60.         case 150 :
  61.         //9點(diǎn)
  62.         case 165 :
  63.         //10點(diǎn)
  64.         case 1 :
  65.         //11點(diǎn)
  66.         P0=0xF8 ;
  67.         while(i--);
  68.         break ;
  69.     }
  70.     //0-180   0-60
  71.     if((miaot==S/3)&&(S%3==1))
  72.     {
  73.         P0=0X07 ;
  74.         P2=0X00 ;
  75.         P1=0X00 ;
  76.         while(i--);
  77.     }
  78.     //0-180   0-60
  79.     if((centt==S/3)&&(S%3==1))
  80.     {
  81.         P0=0XFF ;
  82.         P2=0X00 ;
  83.         P1=0X00 ;
  84.                while(i--);
  85.     }
  86.    
  87.     //0-180   0-60
  88.     if((hourt==S/3)&&(S%3==1))
  89.     {
  90.         P0=0XFF ;
  91.         P2=0X0F ;
  92.         P1=0X00 ;
  93.         while(i--);
  94.     }

  95.     P0=0XFF ;
  96.     P1=0XFF ;
  97.     P2=0XFF ;
  98. }
  99. /*******************DS1302讀寫程序**********************************
  100. /********************************************************************
  101. 函 數(shù) 名:RTInputByte()
  102. 功    能:實(shí)時(shí)時(shí)鐘寫入一字節(jié)
  103. 說    明:往DS1302寫入1Byte數(shù)據(jù) (內(nèi)部函數(shù))
  104. 入口參數(shù):d 寫入的數(shù)據(jù)
  105. 返 回 值:無  
  106. ***********************************************************************/
  107. void RTInputByte(uchar d)
  108. {
  109.     uchar h;
  110.     ACC = d;
  111.     for(h=8; h>0; h--)
  112.     {
  113.         T_IO = ACC0;           /*相當(dāng)于匯編中的 RRC */
  114.         T_CLK = 1;
  115.         T_CLK = 0;
  116.         ACC = ACC >> 1;
  117.     }
  118. }
  119. /********************************************************************
  120. 函 數(shù) 名:RTOutputByte()
  121. 功    能:實(shí)時(shí)時(shí)鐘讀取一字節(jié)
  122. 說    明:從DS1302讀取1Byte數(shù)據(jù) (內(nèi)部函數(shù))
  123. 入口參數(shù):無  
  124. 返 回 值:ACC
  125. 設(shè)    計(jì):zhaojunjie           日    期:2002-03-19
  126. 修    改:                     日    期:
  127. ***********************************************************************/
  128. uchar RTOutputByte(void)
  129. {
  130.     uchar h;
  131.     for(h=8; h>0; h--)
  132.     {
  133.         ACC = ACC >>1;         /*相當(dāng)于匯編中的 RRC */
  134.         ACC7 = T_IO;
  135.         T_CLK = 1;
  136.         T_CLK = 0;
  137.     }
  138.     return(ACC);
  139. }
  140. /********************************************************************
  141. 函 數(shù) 名:W1302()
  142. 功    能:往DS1302寫入數(shù)據(jù)
  143. 說    明:先寫地址,后寫命令/數(shù)據(jù) (內(nèi)部函數(shù))
  144. 調(diào)    用:RTInputByte() , RTOutputByte()
  145. 入口參數(shù):ucAddr: DS1302地址, ucData: 要寫的數(shù)據(jù)
  146. 返 回 值:無
  147. ***********************************************************************/
  148. /*void W1302(uchar ucAddr, uchar ucDa)
  149. {
  150.     T_RST = 0;
  151.     T_CLK = 0;
  152.     T_RST = 1;
  153.     RTInputByte(ucAddr);       /* 地址,命令 */
  154. /*   RTInputByte(ucDa);       /* 寫1Byte數(shù)據(jù)*/
  155. /*   T_CLK = 1;
  156.     T_RST = 0;
  157. /*}
  158. /********************************************************************
  159. 函 數(shù) 名:R1302()
  160. 功    能:讀取DS1302某地址的數(shù)據(jù)
  161. 說    明:先寫地址,后讀命令/數(shù)據(jù) (內(nèi)部函數(shù))
  162. 調(diào)    用:RTInputByte() , RTOutputByte()
  163. 入口參數(shù):ucAddr: DS1302地址
  164. 返 回 值:ucData :讀取的數(shù)據(jù)
  165. ***********************************************************************/
  166. uchar R1302(uchar ucAddr)
  167. {
  168.     uchar ucData;
  169.     T_RST = 0;
  170.     T_CLK = 0;
  171.     T_RST = 1;
  172.     RTInputByte(ucAddr);             /* 地址,命令 */
  173.     ucData = RTOutputByte();         /* 讀1Byte數(shù)據(jù) */
  174.     T_CLK = 1;
  175.     T_RST = 0;
  176.     return(ucData);
  177. }

  178. /********************************************************************
  179. 函 數(shù) 名:Set1302()
  180. 功    能:設(shè)置初始時(shí)間
  181. 說    明:先寫地址,后讀命令/數(shù)據(jù)(寄存器多字節(jié)方式)
  182. 調(diào)    用:W1302()
  183. 入口參數(shù):pClock: 設(shè)置時(shí)鐘數(shù)據(jù)地址 格式為: 秒 分 時(shí) 日 月 星期 年
  184.                                7Byte (BCD碼)1B 1B 1B 1B 1B  1B  1B
  185. 返 回 值:無
  186. ***********************************************************************/
  187. /*void Set1302(uchar *pClock)
  188. {
  189.     uchar h;
  190.     uchar ucAddr = 0x80;
  191.     W1302(0x8e,0x00);           /* 控制命令,WP=0,寫操作?*/
  192.   /*  for(h =7; h>0; h--)
  193.     {
  194.   /*      W1302(ucAddr,*pClock);  /* 秒 分 時(shí) 日 月 星期 年 */
  195.   /*      pClock++;
  196.         ucAddr +=2;
  197.   /*  }
  198.         W1302(0xc0,0x01);
  199.         W1302(0XC2,0X03);                        //初始自動(dòng)轉(zhuǎn)換顯示時(shí)間為3秒。
  200.     W1302(0x8e,0x80);           /* 控制命令,WP=1,寫保護(hù)?*/

  201. /*}
  202. /******************讀取DS1302中的時(shí)間****************/
  203. void du1302()
  204. {
  205.       miao=R1302(0x81);  //對(duì)取 秒 分 時(shí) 日 月 星期 年
  206.           Cent=R1302(0x83);         
  207.           Hour=R1302(0x85);
  208.           //Day=R1302(0x87);
  209.           //Month=R1302(0x89);
  210.           //Week=R1302(0x8b);

  211.          
  212. }
  213. /*****主函數(shù)*****/
  214. void main(void)
  215. {
  216.     TMOD=0x01 ;
  217.     //定時(shí)器0和1工作方式都為1
  218.     EX0=1 ;
  219.     //開外部中斷0
  220.     IT0=1 ;
  221.     //外部中斷0設(shè)置為下降沿中斷
  222.     ET0=1 ;
  223.     //定時(shí)器0開中斷
  224.     // ET1=1;   //定時(shí)器1開中斷
  225.     TH0=(65536-630)/256 ;
  226.     TL0=(65536-630)%256 ;
  227.     TR0=1 ;
  228.     EA=1 ;
  229.     //開總中斷
  230.    
  231.     //無限循環(huán)
  232.     while(1)
  233.     {
  234.           du1302();
  235.         miaot=miao/16*10+miao%16 ;
  236.         centt=Cent/16*10+Cent%16 ;
  237.         hourt=Hour/16*10+Hour%16 ;
  238.         
  239.     }
  240. }
  241. /*****END*****/
復(fù)制代碼







旋轉(zhuǎn)LED資料.zip

4.18 MB, 下載次數(shù): 185, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
5760985 + 5 很給力!

查看全部評(píng)分

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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:112242 發(fā)表于 2016-9-10 08:54 | 只看該作者
好資料先收藏以后有空再做,
回復(fù)

使用道具 舉報(bào)

板凳
ID:136460 發(fā)表于 2016-9-12 20:55 | 只看該作者
51有你更精彩
回復(fù)

使用道具 舉報(bào)

地板
ID:134810 發(fā)表于 2016-9-20 16:17 來自手機(jī) | 只看該作者
早就看過這個(gè)高大上的東西,原來是51做的,要試一下
回復(fù)

使用道具 舉報(bào)

5#
ID:196897 發(fā)表于 2017-5-5 13:07 | 只看該作者
好資料先收藏以后有空再做,
回復(fù)

使用道具 舉報(bào)

6#
ID:198504 發(fā)表于 2017-5-9 09:35 來自手機(jī) | 只看該作者
感覺好厲害。
回復(fù)

使用道具 舉報(bào)

7#
ID:229326 發(fā)表于 2017-9-5 15:07 | 只看該作者
可否給份資料
回復(fù)

使用道具 舉報(bào)

8#
ID:232386 發(fā)表于 2017-9-12 18:22 | 只看該作者
樓主可以告訴我你是怎么把程序燒進(jìn)去的么
回復(fù)

使用道具 舉報(bào)

9#
ID:238958 發(fā)表于 2017-10-12 20:10 | 只看該作者
剛好也要做這東西
回復(fù)

使用道具 舉報(bào)

10#
ID:279798 發(fā)表于 2018-1-25 22:54 | 只看該作者
先保存下來,回頭做做。
回復(fù)

使用道具 舉報(bào)

11#
ID:298016 發(fā)表于 2018-4-21 22:52 | 只看該作者
好資料收藏了
回復(fù)

使用道具 舉報(bào)

12#
ID:99130 發(fā)表于 2018-6-4 18:00 | 只看該作者
13028848122 發(fā)表于 2017-9-12 18:22
樓主可以告訴我你是怎么把程序燒進(jìn)去的么

先做一個(gè)下載板,裝上單片機(jī),接好線,下載一個(gè)燒錄器,選擇單片機(jī)型號(hào),點(diǎn)擊燒錄,給下載板通電,下載成功。這是STC單片機(jī)的大致步驟。不過要注意單片機(jī)的接線,還要有串口轉(zhuǎn)USB線,不轉(zhuǎn)也行,只是轉(zhuǎn)USB更方便,還有一根USB電源線
回復(fù)

使用道具 舉報(bào)

13#
ID:517489 發(fā)表于 2019-4-22 18:29 來自手機(jī) | 只看該作者
779380649@qq.com 謝謝大佬
回復(fù)

使用道具 舉報(bào)

14#
ID:560864 發(fā)表于 2019-6-12 14:19 | 只看該作者
有沒有大佬下載了能給我一份??
回復(fù)

使用道具 舉報(bào)

15#
ID:606097 發(fā)表于 2019-9-1 17:27 來自手機(jī) | 只看該作者
alexjohnny 發(fā)表于 2019-6-12 14:19
有沒有大佬下載了能給我一份??

請(qǐng)尊重別人的勞動(dòng)成果好吧!
回復(fù)

使用道具 舉報(bào)

16#
ID:317206 發(fā)表于 2020-2-13 17:26 | 只看該作者
你好,有PCB文件嗎?我資料下載了么有PCB文件
回復(fù)

使用道具 舉報(bào)

17#
ID:82732 發(fā)表于 2021-12-19 09:24 | 只看該作者
非常值得學(xué)習(xí),好好學(xué)習(xí)一下,謝謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表