標題: 自己做板,32X64雙色點陣時鐘制作。有程序 [打印本頁]

作者: huwen    時間: 2013-10-16 15:25
標題: 自己做板,32X64雙色點陣時鐘制作。有程序
看到網(wǎng)上有人做32X64雙色點陣時鐘,效果不錯,于是咱也買了幾塊點陣屏,做了起來,話說,看著簡單自己做起來那是相當?shù)碾y啊,由于是第一次自己做PCB,在第一次感光上循環(huán)了很多次(因為不是用的紫外線燈),左后終于曝光成功了?上н^程中都是接觸液體,而且我僅靠雙手是無法順利完成制作和照相的工作,照片就無法上傳了,僅附完成照片和成功的照片。PS:因為是第一次做這個東西,很多都不了解,在制作PCB上面浪費了很多時間,哈哈哈?匆曨l!http://player.youku.com/player.php/sid/XNDk0NjQ0ODQw/v.swf




最后放上視頻視頻效果!有需要資料的,請跟帖問我要,有建議的也灰常歡迎提出來,我也僅僅是個剛剛學51的菜鳥而已

點陣程序.rar (91.95 KB, 下載次數(shù): 435)

作者: ▓逍〓遙◆    時間: 2013-10-31 16:56
不錯,51黑有你更精彩!。。!

下面是樓主的源碼:
  1. #include <STC12C5A60S2.h>
  2. //#include <STC12C5410AD.h>
  3. //#include <STC90C58RD.h>
  4. //#include <REG52.H>
  5. //extern void delay1(unsigned int time);

  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. //this is for 1632
  9. sbit     T_CLK      = P3^5;   /*實時時鐘時鐘線引腳7 */
  10. sbit     T_IO       = P3^6;   /*實時時鐘數(shù)據(jù)線引腳6 */
  11. sbit     T_RST      = P3^7;   /*實時時鐘復位線引腳5 */
  12. sbit     ACC0=ACC^0;
  13. sbit     ACC1=ACC^1;
  14. sbit     ACC2=ACC^2;
  15. sbit     ACC3=ACC^3;
  16. sbit     ACC4=ACC^4;
  17. sbit     ACC5=ACC^5;
  18. sbit     ACC6=ACC^6;
  19. sbit     ACC7=ACC^7;


  20. /*******************************************************************  
  21. *
  22. * 名稱: v_RTInputByte
  23. * 說明:
  24. * 功能: 往DS1302寫入1Byte數(shù)據(jù)
  25. * 調用:
  26. * 輸入: ucDa 寫入的數(shù)據(jù)
  27. * 返回值: 無
  28. ***********************************************************************/
  29. void  v_RTInputByte(uchar  ucDa)  
  30. {                              
  31.     uchar  i;
  32.     ACC = ucDa;
  33.     for(i=8; i>0; i--)
  34.     {
  35.          T_IO = ACC0;          /*相當于匯編中的  RRC  */
  36. //                 delay(20);       
  37.          T_CLK = 1;
  38. //                 delay(20);       
  39.          T_CLK = 0;
  40. //                 delay(20);       
  41.          ACC = ACC >> 1;   
  42.      }     
  43. }
  44. /********************************************************************  
  45. *
  46. * 名稱: uchar uc_RTOutputByte
  47. * 說明:
  48. * 功能: 從DS1302讀取1Byte數(shù)據(jù)
  49. * 調用:
  50. * 輸入:
  51. * 返回值: ACC
  52. ***********************************************************************/
  53. uchar uc_RTOutputByte(void)  
  54. {                             
  55.     uchar i;
  56.     for(i=8; i>0; i--)
  57.     {
  58.          ACC = ACC >>1;       /*相當于匯編中的  RRC  */
  59.          ACC7 = T_IO;
  60. //                 delay(20);       
  61.          T_CLK = 1;
  62. //                 delay(20);       
  63.          T_CLK = 0;
  64. //                 delay(20);       
  65.     }     
  66.     return(ACC);
  67. }
  68. /********************************************************************  
  69. *
  70. * 名稱: v_W1302
  71. * 說明: 先寫地址,后寫命令/數(shù)據(jù)
  72. * 功能: 往DS1302寫入數(shù)據(jù)
  73. * 調用: v_RTInputByte()
  74. * 輸入: ucAddr: DS1302地址, ucDa: 要寫的數(shù)據(jù)
  75. * 返回值: 無
  76. ***********************************************************************/
  77. void  v_W1302(uchar ucAddr, uchar ucDa)
  78. {
  79.     T_RST = 0;
  80. //        delay(20);       
  81.     T_CLK = 0;
  82. //        delay(20);       
  83.     T_RST = 1;
  84. //        delay(20);       
  85.     v_RTInputByte(ucAddr);      /* 地址,命令 */
  86.     v_RTInputByte(ucDa);        /* 寫1Byte數(shù)據(jù)*/
  87.     T_CLK = 1;
  88. //        delay(20);       
  89.     T_RST =0;
  90. //        delay(20);       
  91. }
  92. /********************************************************************  
  93. *
  94. * 名稱: uc_R1302
  95. * 說明: 先寫地址,后讀命令/數(shù)據(jù)
  96. * 功能: 讀取DS1302某地址的數(shù)據(jù)
  97. * 調用: v_RTInputByte() , uc_RTOutputByte()
  98. * 輸入: ucAddr: DS1302地址
  99. * 返回值: ucDa :讀取的數(shù)據(jù)
  100. ***********************************************************************/
  101. uchar  uc_R1302(uchar ucAddr)
  102. {
  103.     uchar ucDa;
  104.     T_RST = 0;
  105. //        delay(20);       
  106.     T_CLK = 0;
  107. //        delay(20);       
  108.     T_RST = 1;
  109. //        delay(20);       
  110.     v_RTInputByte(ucAddr);      /* 地址,命令 */
  111.     ucDa = uc_RTOutputByte();   /* 讀1Byte數(shù)據(jù) */
  112.     T_CLK = 1;
  113. //        delay(20);       
  114.     T_RST =0;
  115. //        delay(20);       
  116.     return(ucDa);
  117. }
  118. /********************************************************************  
  119. *
  120. * 名稱: v_BurstW1302T
  121. * 說明: 先寫地址,后寫數(shù)據(jù)(時鐘多字節(jié)方式)
  122. * 功能: 往DS1302寫入時鐘數(shù)據(jù)(多字節(jié)方式)
  123. * 調用: v_RTInputByte()
  124. * 輸入: pSecDa: 時鐘數(shù)據(jù)地址    格式為: 秒 分 時 日 月 星期 年 控制
  125. *                 8Byte  (BCD碼)        1B 1B 1B 1B 1B  1B  1B  1B
  126. * 返回值: 無
  127. ***********************************************************************/
  128. /*void  v_BurstW1302T(uchar *pSecDa)
  129. {
  130.     uchar  i;
  131.     v_W1302(0x8e,0x00);       // 控制命令,WP=0,寫操作?
  132.     T_RST = 0;
  133.     T_CLK = 0;
  134.     T_RST = 1;
  135.     v_RTInputByte(0xbe);      // 0xbe:時鐘多字節(jié)寫命令
  136.     for (i=8;i>0;i--)         //8Byte = 7Byte 時鐘數(shù)據(jù) + 1Byte 控制
  137.     {
  138.         v_RTInputByte(*pSecDa);// 寫1Byte數(shù)據(jù)
  139.         pSecDa++;
  140.     }
  141.     T_CLK = 1;
  142.     T_RST =0;
  143. }                         */
  144. /********************************************************************  
  145. *
  146. * 名稱: v_BurstR1302T
  147. * 說明: 先寫地址,后讀命令/數(shù)據(jù)(時鐘多字節(jié)方式)
  148. * 功能: 讀取DS1302時鐘數(shù)據(jù)
  149. * 調用: v_RTInputByte() , uc_RTOutputByte()
  150. * 輸入: pSecDa: 時鐘數(shù)據(jù)地址          格式為: 秒 分 時 日 月 星期 年
  151. *                       7Byte  (BCD碼)        1B 1B 1B 1B 1B  1B  1B
  152. * 返回值: ucDa :讀取的數(shù)據(jù)
  153. ***********************************************************************/
  154. /*void  v_BurstR1302T(uchar *pSecDa)
  155. {
  156.     uchar i;
  157.     T_RST = 0;
  158.     T_CLK = 0;
  159.     T_RST = 1;
  160.     v_RTInputByte(0xbf);      // 0xbf:時鐘多字節(jié)讀命令
  161.     for (i=8; i>0; i--)      
  162.     {
  163.         *pSecDa = uc_RTOutputByte();   // 讀1Byte數(shù)據(jù)
  164.          pSecDa++;
  165.     }
  166.     T_CLK = 1;
  167.     T_RST =0;
  168. }                         */
  169. /********************************************************************  
  170. *
  171. * 名稱: v_BurstW1302R
  172. * 說明: 先寫地址,后寫數(shù)據(jù)(寄存器多字節(jié)方式)
  173. * 功能: 往DS1302寄存器數(shù)寫入數(shù)據(jù)(多字節(jié)方式)
  174. * 調用: v_RTInputByte()
  175. * 輸入: pReDa: 寄存器數(shù)據(jù)地址
  176. * 返回值: 無
  177. ***********************************************************************/
  178. /*id  v_BurstW1302R(uchar *pReDa)
  179. {
  180.     uchar  i;
  181.     v_W1302(0x8e,0x00);       // 控制命令,WP=0,寫操作
  182.     T_RST = 0;
  183.     T_CLK = 0;
  184.     T_RST = 1;
  185.     v_RTInputByte(0xfe);      // 0xbe:時鐘多字節(jié)寫命令
  186.     for (i=31;i>0;i--)        //31Byte  寄存器數(shù)據(jù)   
  187.     {
  188.         v_RTInputByte(*pReDa);        // 寫1Byte數(shù)據(jù)
  189.         pReDa++;
  190.     }
  191.     T_CLK = 1;
  192.     T_RST =0;
  193. }          */
  194. /********************************************************************  
  195. *
  196. * 名稱: uc_BurstR1302R
  197. * 說明: 先寫地址,后讀命令/數(shù)據(jù)(寄存器多字節(jié)方式)
  198. * 功能: 讀取DS1302寄存器數(shù)據(jù)
  199. * 調用: v_RTInputByte() , uc_RTOutputByte()
  200. * 輸入: pReDa: 寄存器數(shù)據(jù)地址
  201. * 返回值: 無
  202. ***********************************************************************/
  203. /*void  v_BurstR1302R(uchar *pReDa)
  204. {
  205.     uchar i;
  206.     T_RST = 0;
  207.     T_CLK = 0;
  208.     T_RST = 1;
  209.     v_RTInputByte(0xff);      // 0xbf:時鐘多字節(jié)讀命令
  210.     for (i=31; i>0; i--)       //31Byte  寄存器數(shù)據(jù)   
  211.     {
  212.         *pReDa = uc_RTOutputByte();   //讀1Byte數(shù)據(jù)
  213.          pReDa++;
  214.     }
  215.     T_CLK = 1;
  216.     T_RST =0;
  217. }                                 */

  218. void  Set_Charge(void)  
  219. {
  220.     v_W1302(0x8e,0x00);          /* 控制命令,WP=0,寫操作?*/
  221.     v_W1302(0x90,0xaa);          /* 控制命令,WP=0,寫操作?*/
  222.     v_W1302(0x8e,0x80);  /* 控制命令,WP=1,寫保護?*/
  223.         v_W1302(0x90,0xa5);
  224. }

  225. /********************************************************************  
  226. *
  227. * 名稱: v_Set1302
  228. * 說明:
  229. * 功能: 設置初始時間
  230. * 調用: v_W1302()
  231. * 輸入: pSecDa: 初始時間地址。初始時間格式為: 秒 分 時 日 月 星期 年
  232. *                       7Byte  (BCD碼)        1B 1B 1B 1B 1B  1B  1B
  233. * 返回值: 無
  234. ***********************************************************************/
  235. void  Set_Time(uchar *pSecDa)  
  236. {
  237.     uchar i;
  238.     uchar ucAddr = 0x80;
  239.    
  240.     v_W1302(0x8e,0x00);          /* 控制命令,WP=0,寫操作?*/
  241.     for(i =7;i>0;i--)
  242.     {
  243.         v_W1302(ucAddr,*pSecDa);  /* 秒 分 時 日 月 星期 年 */
  244.    
  245.         pSecDa++;
  246.         ucAddr +=2;
  247.      }
  248.      v_W1302(0x8e,0x80);  /* 控制命令,WP=1,寫保護?*/
  249. }
  250. /********************************************************************  
  251. *
  252. * 名稱: v_Get1302
  253. * 說明:
  254. * 功能: 讀取DS1302當前時間
  255. * 調用: uc_R1302()
  256. * 輸入: ucCurtime: 保存當前時間地址。當前時間格式為: 秒 分 時 日 月 星期 年
  257. *                              7Byte  (BCD碼)        1B 1B 1B 1B 1B  1B  1B
  258. * 返回值: 無
  259. ***********************************************************************/
  260. void Read_Time(uchar ucCurtime[])      
  261. {
  262.     uchar  i;
  263.     uchar  ucAddr = 0x81;
  264.     for (i=0;i<7;i++)
  265.     {
  266.          ucCurtime[i] = uc_R1302(ucAddr);/*格式為: 秒 分 時 日 月 星期 年 */
  267.          ucAddr += 2;
  268.     }
  269. }

  270. void Write_RAM(unsigned char *s,unsigned char startbyte,unsigned char length)
  271. {
  272.     uchar i;
  273.     uchar ucAddr;   
  274.    
  275.         ucAddr=0xc0+startbyte*2;

  276.         v_W1302(0x8e,0x00);          /* 控制命令,WP=0,寫操作?*/
  277.     for(i =0;i<length;i++)
  278.     {
  279.         v_W1302(ucAddr,*s);
  280.    
  281.         s++;
  282.         ucAddr +=2;
  283.      }
  284.      v_W1302(0x8e,0x80);  /* 控制命令,WP=1,寫保護?*/

  285. }

  286. void Read_RAM(unsigned char *s,unsigned char startbyte,unsigned char length)
  287. {
  288.     uchar  i;
  289.     uchar  ucAddr;
  290.        
  291.         ucAddr=0xc1+startbyte*2;
  292.     for (i=0;i<length;i++)
  293.     {
  294.          s[i] = uc_R1302(ucAddr);
  295.          ucAddr += 2;
  296.     }
  297. }

復制代碼

作者: longlong899    時間: 2013-10-31 22:54
樓主頭像挺帥的,呵呵
作者: jldqc    時間: 2013-11-1 10:30
真的不錯,51黑有你更精彩。
作者: 雨蝶的傷    時間: 2014-1-31 15:53
我想學習一下...可以給我資料嗎...386245215@qq.com
作者: liujing    時間: 2014-2-21 16:24
高端上檔次!
作者: Hugo801122    時間: 2014-2-22 01:02
牛哦,厲害!
作者: autumn888    時間: 2014-3-7 08:09
好東西,目前正在研究中
作者: zenghl    時間: 2014-4-6 14:23
不錯,下了看看。
作者: a651738901    時間: 2014-4-28 22:14
謝謝樓主慷慨,謝謝了
作者: 漣漪    時間: 2014-4-28 22:18
高手啊,我也有幾塊雙色屏改天試試,感謝分享
作者: dyun1988    時間: 2014-5-17 21:02

謝謝分享,借鑒學習學習,頂一個
作者: 周安松    時間: 2014-9-13 06:09
謝謝樓主分享!
作者: xing3198    時間: 2014-9-18 21:39
謝謝分享,借鑒學習學習,頂一個
作者: ljhn431    時間: 2014-9-19 09:14
好靚的東東,可惜我做不出來
作者: liangpin521    時間: 2014-10-13 12:07
謝謝 分享 呵呵  頂你
作者: smsr001    時間: 2015-2-16 14:29
太酷了,先收藏著,以后說不定可以用上,謝謝樓主
作者: 沉浸其中    時間: 2015-6-3 11:34
我期末要做一個點陣屏的作品,下回去看看
作者: yzl    時間: 2015-6-3 14:21
我也想做一個32*64雙色點陣時鐘制作請指教
作者: 496964453    時間: 2015-6-3 21:34
51hei論壇有你更精彩
作者: stxlpeng    時間: 2015-6-8 09:17
請問樓主,你的屏是啥借口的?
作者: stxlpeng    時間: 2015-6-8 09:17
啥接口
作者: stxlpeng    時間: 2015-6-8 15:27
能把資料發(fā)我QQ 625756413@qq.com
作者: amwguh86    時間: 2015-6-20 03:43
支持,
作者: dzljp    時間: 2015-6-20 23:26
收藏了
謝謝樓主的無私奉獻
作者: 王紅杰    時間: 2015-7-18 13:47
我想做一個給我姐當結婚禮物 ,,樓主,求助你啊 ,全部資料。1410309996@qq.com
作者: 飄搖的棉    時間: 2015-7-19 22:12
看看怎么樣
作者: fslgh123    時間: 2015-9-8 17:17
謝謝分享,支持創(chuàng)作
作者: 飛鳥無痕    時間: 2015-10-10 21:14
為什么沒有蜂鳴器呢?
作者: 飛鳥無痕    時間: 2015-10-10 21:15
非常好,改天我也做一個。
作者: moose    時間: 2015-10-12 11:48
樓主厲害
作者: wdq2347    時間: 2015-12-20 12:14
高端上檔次!
作者: 香蕉1373    時間: 2015-12-20 23:02
求資料 謝謝 郵箱397846891@qq.com
作者: 好伐好伐    時間: 2016-1-21 23:45
謝謝分享,借鑒學習學習,頂一個
作者: 好伐好伐    時間: 2016-2-12 15:02
51黑有你更精彩。。。。
作者: xsjysm888    時間: 2016-4-16 21:14
不錯,加油
作者: 18316719944    時間: 2016-11-30 22:31
家里有塊空置的點陣屏,老婆最近需要個時鐘,樓主能發(fā)控制板原理圖和程序給我嗎?剛好家里又有STC的芯片
作者: 18316719944    時間: 2016-11-30 22:32
416559076@qq.com
作者: 慕?jīng)銮锇?nbsp;   時間: 2016-12-13 18:48
樓主,江湖救急呀!1275203963@qq.com
作者: WQ1310699360    時間: 2017-1-26 18:25
話說調時沒按鍵沒紅外怎么調的?
作者: wsq0387    時間: 2017-1-28 14:13
謝謝樓主的分享!這個絕對要頂。!
作者: surubu    時間: 2017-3-7 13:45
原理圖有沒有?
作者: wl020807    時間: 2019-12-25 18:19
樓主你好:有用ds3231芯片做的嗎?




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