標(biāo)題: 單片機(jī)旋轉(zhuǎn)電子鐘制作 帶PCB原理圖,源程序 [打印本頁(yè)]

作者: 51黑ff    時(shí)間: 2016-9-8 01:59
標(biāo)題: 單片機(jī)旋轉(zhuǎn)電子鐘制作 帶PCB原理圖,源程序
旋轉(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
                              無(wú)線供電部份
三極管Q1TO921B772
三極管Q2TO9219013
電容C1CC41222
電阻R-R3RW103470
電阻R4RW10110K
二極管D1-D2DW1021N4007
二極管D3LED1紅外發(fā)射
插口J1-J2CON222P
電感L1(初級(jí)線圈)L101100匝


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


















































  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. 說(shuō)    明:往DS1302寫入1Byte數(shù)據(jù) (內(nèi)部函數(shù))
  104. 入口參數(shù):d 寫入的數(shù)據(jù)
  105. 返 回 值:無(wú)  
  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. 說(shuō)    明:從DS1302讀取1Byte數(shù)據(jù) (內(nèi)部函數(shù))
  123. 入口參數(shù):無(wú)  
  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. 說(shuō)    明:先寫地址,后寫命令/數(shù)據(jù) (內(nèi)部函數(shù))
  144. 調(diào)    用:RTInputByte() , RTOutputByte()
  145. 入口參數(shù):ucAddr: DS1302地址, ucData: 要寫的數(shù)據(jù)
  146. 返 回 值:無(wú)
  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. 說(shuō)    明:先寫地址,后讀命令/數(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. 說(shuō)    明:先寫地址,后讀命令/數(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. 返 回 值:無(wú)
  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.     //開(kāi)外部中斷0
  220.     IT0=1 ;
  221.     //外部中斷0設(shè)置為下降沿中斷
  222.     ET0=1 ;
  223.     //定時(shí)器0開(kāi)中斷
  224.     // ET1=1;   //定時(shí)器1開(kāi)中斷
  225.     TH0=(65536-630)/256 ;
  226.     TL0=(65536-630)%256 ;
  227.     TR0=1 ;
  228.     EA=1 ;
  229.     //開(kāi)總中斷
  230.    
  231.     //無(wú)限循環(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


作者: xdl0129    時(shí)間: 2016-9-10 08:54
好資料先收藏以后有空再做,
作者: 東北那誰(shuí)    時(shí)間: 2016-9-12 20:55
51有你更精彩
作者: dxa572862121    時(shí)間: 2016-9-20 16:17
早就看過(guò)這個(gè)高大上的東西,原來(lái)是51做的,要試一下
作者: tangloong    時(shí)間: 2017-5-5 13:07
好資料先收藏以后有空再做,
作者: wangyy99123    時(shí)間: 2017-5-9 09:35
感覺(jué)好厲害。
作者: ningdachun    時(shí)間: 2017-9-5 15:07
可否給份資料
作者: 13028848122    時(shí)間: 2017-9-12 18:22
樓主可以告訴我你是怎么把程序燒進(jìn)去的么
作者: kyo123    時(shí)間: 2017-10-12 20:10
剛好也要做這東西
作者: tianliangl    時(shí)間: 2018-1-25 22:54
先保存下來(lái),回頭做做。
作者: 386912599    時(shí)間: 2018-4-21 22:52
好資料收藏了
作者: 越快樂(lè)越墮落    時(shí)間: 2018-6-4 18:00
13028848122 發(fā)表于 2017-9-12 18:22
樓主可以告訴我你是怎么把程序燒進(jìn)去的么

先做一個(gè)下載板,裝上單片機(jī),接好線,下載一個(gè)燒錄器,選擇單片機(jī)型號(hào),點(diǎn)擊燒錄,給下載板通電,下載成功。這是STC單片機(jī)的大致步驟。不過(guò)要注意單片機(jī)的接線,還要有串口轉(zhuǎn)USB線,不轉(zhuǎn)也行,只是轉(zhuǎn)USB更方便,還有一根USB電源線
作者: 779380649    時(shí)間: 2019-4-22 18:29
779380649@qq.com 謝謝大佬
作者: alexjohnny    時(shí)間: 2019-6-12 14:19
有沒(méi)有大佬下載了能給我一份??
作者: 鐵蛋的設(shè)計(jì)作品    時(shí)間: 2019-9-1 17:27
alexjohnny 發(fā)表于 2019-6-12 14:19
有沒(méi)有大佬下載了能給我一份??

請(qǐng)尊重別人的勞動(dòng)成果好吧!
作者: 714960877    時(shí)間: 2020-2-13 17:26
你好,有PCB文件嗎?我資料下載了么有PCB文件
作者: wgw020    時(shí)間: 2021-12-19 09:24
非常值得學(xué)習(xí),好好學(xué)習(xí)一下,謝謝分享




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1