找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15247|回复: 42
收起左侧

自己做板,32X64双色点阵时钟制作。有程序

  [复制链接]
ID:55980 发表于 2013-10-16 15:25 | 显示全部楼层 |阅读模式
看到网上有人做32X64双色点阵时钟,效果不错,于是咱也买了几块点阵屏,做了起来,话说,看着简单自己做起来那是相当的难啊,由于是第一次自己做PCB,在第一次感光上循环了很多次(因为不是用的紫外线灯),左后终于曝光成功了。可惜过程中都是接触液体,而且我仅靠双手是无法顺利完成制作和照相的工作,照片就无法上传了,仅附完成照片和成功的照片。PS:因为是第一次做这个东西,很多都不了解,在制作PCB上面浪费了很多时间,哈哈哈。看视频!
121030l3m5ec3chipvy3z0.jpg.thumb.jpg
121017wngf1snu396jnww1.jpg.thumb.jpg
121504o0c4rl9t0ernwcck.jpg.thumb.jpg
121557wv6dvzvbdqd1ddmi.jpg.thumb.jpg
最后放上视频视频效果!有需要资料的,请跟帖问我要,有建议的也灰常欢迎提出来,我也仅仅是个刚刚学51的菜鸟而已

点阵程序.rar (91.95 KB, 下载次数: 435)

评分

参与人数 2黑币 +10 收起 理由
孤星..残月 + 5
18316719944 + 5 楼主能发份控制卡原理图和程序给我吗?黑币.

查看全部评分

回复

使用道具 举报

ID:51142 发表于 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;   /*实时时钟数据线引脚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数据
  25. * 调用:
  26. * 输入: ucDa 写入的数据
  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数据
  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. * 说明: 先写地址,后写命令/数据
  72. * 功能: 往DS1302写入数据
  73. * 调用: v_RTInputByte()
  74. * 输入: ucAddr: DS1302地址, ucDa: 要写的数据
  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数据*/
  87.     T_CLK = 1;
  88. //        delay(20);       
  89.     T_RST =0;
  90. //        delay(20);       
  91. }
  92. /********************************************************************  
  93. *
  94. * 名称: uc_R1302
  95. * 说明: 先写地址,后读命令/数据
  96. * 功能: 读取DS1302某地址的数据
  97. * 调用: v_RTInputByte() , uc_RTOutputByte()
  98. * 输入: ucAddr: DS1302地址
  99. * 返回值: ucDa :读取的数据
  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数据 */
  112.     T_CLK = 1;
  113. //        delay(20);       
  114.     T_RST =0;
  115. //        delay(20);       
  116.     return(ucDa);
  117. }
  118. /********************************************************************  
  119. *
  120. * 名称: v_BurstW1302T
  121. * 说明: 先写地址,后写数据(时钟多字节方式)
  122. * 功能: 往DS1302写入时钟数据(多字节方式)
  123. * 调用: v_RTInputByte()
  124. * 输入: pSecDa: 时钟数据地址    格式为: 秒 分 时 日 月 星期 年 控制
  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:时钟多字节写命令
  136.     for (i=8;i>0;i--)         //8Byte = 7Byte 时钟数据 + 1Byte 控制
  137.     {
  138.         v_RTInputByte(*pSecDa);// 写1Byte数据
  139.         pSecDa++;
  140.     }
  141.     T_CLK = 1;
  142.     T_RST =0;
  143. }                         */
  144. /********************************************************************  
  145. *
  146. * 名称: v_BurstR1302T
  147. * 说明: 先写地址,后读命令/数据(时钟多字节方式)
  148. * 功能: 读取DS1302时钟数据
  149. * 调用: v_RTInputByte() , uc_RTOutputByte()
  150. * 输入: pSecDa: 时钟数据地址          格式为: 秒 分 时 日 月 星期 年
  151. *                       7Byte  (BCD码)        1B 1B 1B 1B 1B  1B  1B
  152. * 返回值: ucDa :读取的数据
  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:时钟多字节读命令
  161.     for (i=8; i>0; i--)      
  162.     {
  163.         *pSecDa = uc_RTOutputByte();   // 读1Byte数据
  164.          pSecDa++;
  165.     }
  166.     T_CLK = 1;
  167.     T_RST =0;
  168. }                         */
  169. /********************************************************************  
  170. *
  171. * 名称: v_BurstW1302R
  172. * 说明: 先写地址,后写数据(寄存器多字节方式)
  173. * 功能: 往DS1302寄存器数写入数据(多字节方式)
  174. * 调用: v_RTInputByte()
  175. * 输入: pReDa: 寄存器数据地址
  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:时钟多字节写命令
  186.     for (i=31;i>0;i--)        //31Byte  寄存器数据   
  187.     {
  188.         v_RTInputByte(*pReDa);        // 写1Byte数据
  189.         pReDa++;
  190.     }
  191.     T_CLK = 1;
  192.     T_RST =0;
  193. }          */
  194. /********************************************************************  
  195. *
  196. * 名称: uc_BurstR1302R
  197. * 说明: 先写地址,后读命令/数据(寄存器多字节方式)
  198. * 功能: 读取DS1302寄存器数据
  199. * 调用: v_RTInputByte() , uc_RTOutputByte()
  200. * 输入: pReDa: 寄存器数据地址
  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:时钟多字节读命令
  210.     for (i=31; i>0; i--)       //31Byte  寄存器数据   
  211.     {
  212.         *pReDa = uc_RTOutputByte();   //读1Byte数据
  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. }

复制代码
回复

使用道具 举报

ID:43781 发表于 2013-10-31 22:54 | 显示全部楼层
楼主头像挺帅的,呵呵
回复

使用道具 举报

ID:14052 发表于 2013-11-1 10:30 | 显示全部楼层
真的不错,51黑有你更精彩!!
回复

使用道具 举报

ID:58986 发表于 2014-1-31 15:53 | 显示全部楼层
我想学习一下...可以给我资料吗...386245215@qq.com
回复

使用道具 举报

ID:59173 发表于 2014-2-21 16:24 | 显示全部楼层
高端上档次!
回复

使用道具 举报

ID:59153 发表于 2014-2-22 01:02 | 显示全部楼层
牛哦,厉害!
回复

使用道具 举报

ID:53433 发表于 2014-3-7 08:09 | 显示全部楼层
好东西,目前正在研究中
回复

使用道具 举报

ID:46750 发表于 2014-4-6 14:23 | 显示全部楼层
不错,下了看看。
回复

使用道具 举报

ID:61227 发表于 2014-4-28 22:14 | 显示全部楼层
谢谢楼主慷慨,谢谢了
回复

使用道具 举报

ID:61200 发表于 2014-4-28 22:18 | 显示全部楼层
高手啊,我也有几块双色屏改天试试,感谢分享
回复

使用道具 举报

ID:33668 发表于 2014-5-17 21:02 | 显示全部楼层

谢谢分享,借鉴学习学习,顶一个
回复

使用道具 举报

ID:47760 发表于 2014-9-13 06:09 | 显示全部楼层
谢谢楼主分享!
回复

使用道具 举报

ID:66338 发表于 2014-9-18 21:39 | 显示全部楼层
谢谢分享,借鉴学习学习,顶一个
回复

使用道具 举报

ID:65864 发表于 2014-9-19 09:14 | 显示全部楼层
好靓的东东,可惜我做不出来
回复

使用道具 举报

ID:60628 发表于 2014-10-13 12:07 | 显示全部楼层
谢谢 分享 呵呵  顶你
回复

使用道具 举报

ID:73674 发表于 2015-2-16 14:29 | 显示全部楼层
太酷了,先收藏着,以后说不定可以用上,谢谢楼主
回复

使用道具 举报

ID:81901 发表于 2015-6-3 11:34 | 显示全部楼层
我期末要做一个点阵屏的作品,下回去看看
回复

使用道具 举报

ID:73815 发表于 2015-6-3 14:21 | 显示全部楼层
我也想做一个32*64双色点阵时钟制作请指教
回复

使用道具 举报

ID:81950 发表于 2015-6-3 21:34 | 显示全部楼层
51hei论坛有你更精彩
回复

使用道具 举报

ID:67984 发表于 2015-6-8 09:17 | 显示全部楼层
请问楼主,你的屏是啥借口的?
回复

使用道具 举报

ID:67984 发表于 2015-6-8 09:17 | 显示全部楼层
啥接口
回复

使用道具 举报

ID:67984 发表于 2015-6-8 15:27 | 显示全部楼层
能把资料发我QQ 625756413@qq.com
回复

使用道具 举报

ID:79642 发表于 2015-6-20 03:43 来自手机 | 显示全部楼层
支持,
回复

使用道具 举报

ID:67678 发表于 2015-6-20 23:26 | 显示全部楼层
收藏了
谢谢楼主的无私奉献
回复

使用道具 举报

ID:86023 发表于 2015-7-18 13:47 | 显示全部楼层
我想做一个给我姐当结婚礼物 ,,楼主,求助你啊 ,全部资料。1410309996@qq.com
回复

使用道具 举报

ID:85940 发表于 2015-7-19 22:12 | 显示全部楼层
看看怎么样
回复

使用道具 举报

ID:65533 发表于 2015-9-8 17:17 | 显示全部楼层
谢谢分享,支持创作
回复

使用道具 举报

ID:88360 发表于 2015-10-10 21:14 | 显示全部楼层
为什么没有蜂鸣器呢?
回复

使用道具 举报

ID:88360 发表于 2015-10-10 21:15 | 显示全部楼层
非常好,改天我也做一个。
回复

使用道具 举报

ID:92134 发表于 2015-10-12 11:48 | 显示全部楼层
楼主厉害
回复

使用道具 举报

ID:99651 发表于 2015-12-20 12:14 | 显示全部楼层
高端上档次!
回复

使用道具 举报

ID:65980 发表于 2015-12-20 23:02 | 显示全部楼层
求资料 谢谢 邮箱397846891@qq.com
回复

使用道具 举报

ID:103808 发表于 2016-1-21 23:45 | 显示全部楼层
谢谢分享,借鉴学习学习,顶一个
回复

使用道具 举报

ID:103808 发表于 2016-2-12 15:02 | 显示全部楼层
51黑有你更精彩!!!!!
回复

使用道具 举报

ID:93151 发表于 2016-4-16 21:14 | 显示全部楼层
不错,加油
回复

使用道具 举报

ID:151073 发表于 2016-11-30 22:31 | 显示全部楼层
家里有块空置的点阵屏,老婆最近需要个时钟,楼主能发控制板原理图和程序给我吗?刚好家里又有STC的芯片
回复

使用道具 举报

ID:151073 发表于 2016-11-30 22:32 | 显示全部楼层
回复

使用道具 举报

ID:126804 发表于 2016-12-13 18:48 | 显示全部楼层
楼主,江湖救急呀!1275203963@qq.com
回复

使用道具 举报

ID:83466 发表于 2017-1-26 18:25 | 显示全部楼层
话说调时没按键没红外怎么调的啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表