亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 基于51單片機的輝光鐘開源資料(pcb+外殼CAD+程序) [打印本頁]

作者: YangC233    時間: 2019-3-14 10:36
標題: 基于51單片機的輝光鐘開源資料(pcb+外殼CAD+程序)
IN14輝光鐘 PCB文件及程序源碼說明(轉(zhuǎn)自舸輪綜合船舶)

版本V1.1

除了右邊有一個8550外,PCB中幾乎所有的三極管型號均為13001

7805最好加一個微型的散熱器,實測發(fā)熱較大

NE555只是拿來閃爍冒號的,不是升壓的,需另外配升壓板

NE555右上方那個R 500k阻值具體是多少需要試,這個阻值決定了冒號的閃爍頻率

閃爍的冒號(氖泡)從板子左下角的兩個2pin分別接入,切記不可并聯(lián)后接入

PowerRealy是一個繼電器,是用來控制升壓模塊通斷的,封裝是典型黃色的HK信號繼電器

繼電器左邊的兩個接口,標有- S +的是紅外熱釋探頭的接入口,實現(xiàn)人來自動開,可在-和S之間再并聯(lián)一個自鎖開關可實現(xiàn)手動開關,另一個是-IN+是電源輸入,參考電壓12v,電流約0.2A

單片機左邊的2pin接口是升壓模塊電源接口

調(diào)時按鈕是KEY1 KEY2

R4 R2 R7 R1是四個8路排阻,排阻有小白點的一端對準焊盤正方形的一端

板子下方中間的+HV-是升壓模塊輸出接入點

其左邊的Out+分別接4個輝光管的陽極

為了節(jié)省板子(偷懶)沒有采用常規(guī)的74HC573鎖存器一組一組掃描著輸出,而是采用每個引腳專門控制一位,但引腳剛好又差了一個,無奈就加了一個573,把變化最小的第一位數(shù)字和調(diào)時按鈕接在上面
左上角的2032BAT是接紐扣電池的,能夠?qū)崿F(xiàn)掉電走時,但我不知為何沒成功
現(xiàn)在程序還不是很完善,有一些bug,已知的有:在整點時小時位會延時1分鐘,比如從20:59到21:00時會先跳到20:00然后一分鐘后才會變?yōu)?1:01,調(diào)時時有時候小時那邊會一直在十內(nèi)循環(huán),不管他直接多按幾輪一般能出來,調(diào)分時有時會只有個位動,好像這時候只能重啟了。

焊接時一定要注意三極管引腳之間別短路了!
焊接時一定要注意三極管引腳之間別短路了!
焊接時一定要注意三極管引腳之間別短路了!

即使看著沒短路也要用萬用表打一下以防萬一,Protel自帶的三極管封裝為什么引腳焊盤之間距離如此感人我也不知道

四組Out-(注意最右邊那三個是一組,最左邊從Q25和Q26中間引腳引出的兩個引腳也是一組)各自接什么參照網(wǎng)上的51單片機引腳定義再對照下表:(左邊第一位代表從左往右第幾個輝光管,第二位表示此輝光管對應引腳的數(shù)字,右邊表示單片機的對應引腳)
11 P22
12 P23
20 P34
21 P06
22 P07
23 P21
24 P20
25 P17
26 P30
27 P31
28 P32
29 P33
30 P03
31 P04
32 P02
33 P01
34 P05
35 P00
40 P16
41 P35
42 P36
43 P37
44 P10
45 P11
46 P12
47 P13
48 P14
49 P15







Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit  DS1302_CLK = P2^4;        
  5. sbit  DS1302_IO  = P2^5;                     
  6. sbit  DS1302_RST = P2^6;            
  7. sbit dSW=P2^7;
  8. sbit mode=P2^2;
  9. sbit inc=P2^3;
  10. sbit d11=P2^2;
  11. sbit d12=P2^3;
  12. sbit d20=P3^4;
  13. sbit d21=P0^6;
  14. sbit d22=P0^7;
  15. sbit d23=P2^1;
  16. sbit d24=P2^0;
  17. sbit d25=P1^7;
  18. sbit d26=P3^0;
  19. sbit d27=P3^1;
  20. sbit d28=P3^2;
  21. sbit d29=P3^3;
  22. sbit d30=P0^3;
  23. sbit d31=P0^4;
  24. sbit d32=P0^2;
  25. sbit d33=P0^1;
  26. sbit d34=P0^5;
  27. sbit d35=P0^0;
  28. sbit d40=P1^6;
  29. sbit d41=P3^7;
  30. sbit d42=P3^6;
  31. sbit d43=P3^5;
  32. sbit d44=P1^0;
  33. sbit d45=P1^1;
  34. sbit d46=P1^2;
  35. sbit d47=P1^3;
  36. sbit d48=P1^4;
  37. sbit d49=P1^5;
  38. sbit  ACC0 = ACC^0;  
  39. sbit  ACC7 = ACC^7;
  40. uchar temp,date,hour,minute,second,position;
  41. void delay(uint z)
  42. {
  43. uint x,y;
  44. for(x=z;x>0;x--)
  45.   for(y=112;y>0;y--);
  46. }
  47. void DS1302InputByte(unsigned char d)
  48. {
  49.     unsigned char i;
  50.     ACC = d;
  51.     for(i=8; i>0; i--)
  52.     {
  53.         DS1302_IO = ACC0;            
  54.         DS1302_CLK = 1;
  55.         DS1302_CLK = 0;
  56.         ACC = ACC >> 1;
  57.     }
  58. }
  59. unsigned char DS1302OutputByte(void)
  60. {
  61.     unsigned char i;
  62.     for(i=8; i>0; i--)
  63.     {
  64.         ACC = ACC >>1;            
  65.         ACC7 = DS1302_IO;
  66.         DS1302_CLK = 1;
  67.         DS1302_CLK = 0;
  68.     }
  69.     return(ACC);
  70. }
  71. void Write1302(unsigned char ucAddr, unsigned char ucDa)
  72. {
  73.     DS1302_RST = 0;
  74.     DS1302_CLK = 0;
  75.     DS1302_RST = 1;
  76.     DS1302InputByte(ucAddr);      
  77.     DS1302InputByte(ucDa);     
  78.     DS1302_CLK = 1;
  79.     DS1302_RST = 0;
  80. }

  81. unsigned char Read1302(unsigned char ucAddr)
  82. {
  83.     unsigned char ucData;
  84.     DS1302_RST = 0;
  85.     DS1302_CLK = 0;
  86.     DS1302_RST = 1;
  87.     DS1302InputByte(ucAddr|0x01);      
  88.     ucData = DS1302OutputByte();      
  89.     DS1302_CLK = 1;
  90.     DS1302_RST = 0;
  91.     return(ucData);
  92. }
  93. void DS1302_init()
  94. {
  95.   if(Read1302(0xc1) != 0xf0)
  96.   {
  97.    Write1302(0x8e,0x00) ;
  98.    Write1302(0xc0,0xf0) ;
  99.    Write1302(0x8c,0x10) ;
  100.    Write1302(0x88,0x04) ;
  101.    Write1302(0x86,0x06) ;
  102.    Write1302(0x84,0x23) ;
  103.    Write1302(0x82,0x59) ;
  104.    Write1302(0x80,0x55) ;
  105.    Write1302(0x90,0xa4) ;      
  106.    Write1302(0x8e,0x80) ;  
  107.   }
  108. }
  109. #define uchar unsigned char
  110. #define uint unsigned int
  111. unsigned char ly_dis[4];
  112.         unsigned int i=0;
  113.         float tt;
  114.         int ltemp;
  115. void display()
  116. {
  117. uchar D1,D2,D3,D4;
  118. D1=hour/16;
  119. D2=hour%16;
  120. D3=minute/16;
  121. D4=minute%16;
  122. if (D1==0)
  123.         {dSW=1;d11=0;d12=0;dSW=0;delay(1);d11=1;d12=1;}
  124. else if (D1==1)
  125.         {dSW=1;d11=1;d12=0;dSW=0;delay(1);d11=1;d12=1;}
  126. else if (D1==2)
  127.         {dSW=1;d11=0;d12=1;dSW=0;delay(1);d11=1;d12=1;}
  128. if (D2==0)
  129.         {d20=1;d21=0;d22=0;d23=0;d24=0;d25=0;d26=0;d27=0;d28=0;d29=0;}
  130. else if (D2==1)
  131.         {d20=0;d21=1;d22=0;d23=0;d24=0;d25=0;d26=0;d27=0;d28=0;d29=0;}
  132. else if (D2==2)
  133.         {d20=0;d21=0;d22=1;d23=0;d24=0;d25=0;d26=0;d27=0;d28=0;d29=0;}
  134. else if (D2==3)
  135.         {d20=0;d21=0;d22=0;d23=1;d24=0;d25=0;d26=0;d27=0;d28=0;d29=0;}
  136. else if (D2==4)
  137.         {d20=0;d21=0;d22=0;d23=0;d24=1;d25=0;d26=0;d27=0;d28=0;d29=0;}
  138. else if (D2==5)
  139.         {d20=0;d21=0;d22=0;d23=0;d24=0;d25=1;d26=0;d27=0;d28=0;d29=0;}
  140. else if (D2==6)
  141.         {d20=0;d21=0;d22=0;d23=0;d24=0;d25=0;d26=1;d27=0;d28=0;d29=0;}
  142. else if (D2==7)
  143.         {d20=0;d21=0;d22=0;d23=0;d24=0;d25=0;d26=0;d27=1;d28=0;d29=0;}
  144. else if (D2==8)
  145.         {d20=0;d21=0;d22=0;d23=0;d24=0;d25=0;d26=0;d27=0;d28=1;d29=0;}       
  146. else if (D2==9)
  147.         {d20=0;d21=0;d22=0;d23=0;d24=0;d25=0;d26=0;d27=0;d28=0;d29=1;}

  148. if (D3==0)
  149.         {d30=1;d31=0;d32=0;d33=0;d34=0;d35=0;}
  150. else if (D3==1)
  151.         {d30=0;d31=1;d32=0;d33=0;d34=0;d35=0;}
  152. else if (D3==2)
  153.         {d30=0;d31=0;d32=1;d33=0;d34=0;d35=0;}
  154. else if (D3==3)
  155.         {d30=0;d31=0;d32=0;d33=1;d34=0;d35=0;}
  156. else if (D3==4)
  157.         {d30=0;d31=0;d32=0;d33=0;d34=1;d35=0;}
  158. else if (D3==5)
  159.         {d30=0;d31=0;d32=0;d33=0;d34=0;d35=1;}

  160. if (D4==0)
  161.         {d40=1;d41=0;d42=0;d43=0;d44=0;d45=0;d46=0;d47=0;d48=0;d49=0;}
  162. else if (D4==1)
  163.         {d40=0;d41=1;d42=0;d43=0;d44=0;d45=0;d46=0;d47=0;d48=0;d49=0;}
  164. else if (D4==2)
  165.         {d40=0;d41=0;d42=1;d43=0;d44=0;d45=0;d46=0;d47=0;d48=0;d49=0;}
  166. else if (D4==3)
  167.         {d40=0;d41=0;d42=0;d43=1;d44=0;d45=0;d46=0;d47=0;d48=0;d49=0;}
  168. else if (D4==4)
  169.         {d40=0;d41=0;d42=0;d43=0;d44=1;d45=0;d46=0;d47=0;d48=0;d49=0;}
  170. else if (D4==5)
  171.         {d40=0;d41=0;d42=0;d43=0;d44=0;d45=1;d46=0;d47=0;d48=0;d49=0;}
  172. else if (D4==6)
  173.         {d40=0;d41=0;d42=0;d43=0;d44=0;d45=0;d46=1;d47=0;d48=0;d49=0;}
  174. else if (D4==7)
  175.         {d40=0;d41=0;d42=0;d43=0;d44=0;d45=0;d46=0;d47=1;d48=0;d49=0;}
  176. else if (D4==8)
  177.         {d40=0;d41=0;d42=0;d43=0;d44=0;d45=0;d46=0;d47=0;d48=1;d49=0;}       
  178. else if (D4==9)
  179.         {d40=0;d41=0;d42=0;d43=0;d44=0;d45=0;d46=0;d47=0;d48=0;d49=1;}
  180.        
  181. }
  182. void set()
  183. {
  184.        
  185.   if(mode==0)
  186.     {
  187.     delay(5);
  188.     if(mode==0)
  189.       {
  190.                                  while(!mode);
  191.                                 hour=Read1302(0x85);
  192.                                 minute=Read1302(0x83);
  193.                                 while(1)
  194.                                 {
  195.                                                         if(inc==0)
  196.                                                         { delay(5);
  197.                                                                 if(inc==0)
  198.                                                          {
  199.                                                                  while(!inc);
  200.                                                                        
  201.                                                                         hour=(hour/16)*10+hour%16;
  202.                                                                         hour++;
  203.                                                                  if(hour==24) hour=0;
  204.                                                                  hour=(hour/10)*16+hour%10;
  205.                                                        
  206.                                                                 }  
  207.                                                         }
  208.                                                          if(mode==0)
  209.                                                          {
  210.                                                                  while(!mode);
  211.                                                                  while(1)
  212.                                                                         {
  213.                                                                               if(inc==0)
  214.                                                                                                 { delay(5);
  215.                                                                                                         if(inc==0)
  216.                                                                                                          {
  217.                                                                                                                  while(!inc);
  218.                                                                                                         minute=(minute/16)*10+minute%16;
  219.                                                                                                         minute++;
  220.                                                                                                         if(minute==60) minute=0;
  221.                                                                                                                  minute=(minute/10)*16+minute%10;
  222.                                                                                                                 display();  
  223.                                                                                                                 }  
  224.                                                                                                 }
  225.                                                                                                 if(mode==0)
  226.                                                                                                 {
  227.                                                                                                         while(!mode);
  228.                                                                                                        
  229.                                                                                                        
  230.                                                                                                          Write1302(0x8e,0x00) ;
  231.                                                                                                          Write1302(0x84,hour) ;
  232.                                                                                                                 Write1302(0x8e,0x80) ;
  233.                                                                                                                 hour=Read1302(0x85);
  234.                                                                                                                        
  235.                                                                                                                  Write1302(0x8e,0x00) ;
  236.                                                                                                                  Write1302(0x82,minute) ;
  237.                                                                                                                         Write1302(0x8e,0x80) ;
  238.                                                                                                                  minute=Read1302(0x83);
  239.                                                                                                         display();
  240.                                                                                                         return;
  241.                                                                                                        
  242.                                                                                                 }
  243.                                                                         }
  244.                                                         }
  245.                                                         display();  
  246.                                 }
  247.       }
  248.      }  
  249. }
  250. void main()
  251. {
  252.         delay(10);
  253. DS1302_init();
  254.         delay(80);
  255. while(1)
  256. {
  257.   date=Read1302(0x87);
  258.   hour=Read1302(0x85);
  259.   minute=Read1302(0x83);
  260.   second=Read1302(0x81);
  261.         if  (hour==0x23&&minute==0x59&&second==0x59)
  262.         {
  263.                 delay(100);
  264.                 Write1302(0x8e,0x00) ;
  265.          Write1302(0x84,0x00) ;
  266.         hour=0;
  267. second=0;       
  268.                 Write1302(0x80,0x00) ;               
  269.          Write1302(0x82,0x00) ;
  270.                 Write1302(0x8e,0x80) ;
  271.          minute=0;
  272.         }
  273.                
  274.   display();  
  275.                         set();
  276.         }

  277. }
復制代碼

所有資料51hei提供下載:
程序.zip (40.73 KB, 下載次數(shù): 38)
外殼.zip (403.55 KB, 下載次數(shù): 34)
PCB文件.zip (781.37 KB, 下載次數(shù): 42)







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