迅维网

标题: 利用影碟机16312,VFD的电子时钟89C2051+DS1302 [打印本页]

作者: 王宏仁    时间: 2012-6-8 10:09
标题: 利用影碟机16312,VFD的电子时钟89C2051+DS1302
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. /*
  5. sbit VFD_REM = P1^7;
  6. sbit VFD_CLK = P1^6;
  7. sbit VFD_STB = P1^5;
  8. sbit VFD_DIN = P1^4;

  9. sbit DS1302_IO=P2^6;
  10. sbit DS1302_CLK=P2^5;
  11. sbit DS1302_RST=P2^7;

  12. sbit k1=P3^4;//功能键
  13. sbit k2=P3^5;//增加键
  14. sbit k3=P3^6;//减小键
  15. sbit k4=P3^7;//查看键


  16. */

  17. sbit VFD_CLK = P1^6;
  18. sbit VFD_STB = P1^5;
  19. sbit VFD_DIN = P1^7;

  20. sbit k1=P3^2;//功能键 AT89C2051-6脚
  21. sbit k2=P3^3;//增加键 AT89C2051-7脚
  22. sbit k3=P3^4;//减小键 AT89C2051-8脚
  23. sbit k4=P3^5;//日期查看键 AT89C2051-9脚

  24. sbit DS1302_IO=P1^0;
  25. sbit DS1302_CLK=P3^7;
  26. sbit DS1302_RST=P1^1;

  27. bit r=1; //用来显示秒点
  28. sbit ACC0=ACC^0;
  29. sbit ACC7=ACC^7;

  30. uchar code vfdmap[]={0xfc, 0x60, 0xda, 0xf2, 0x66, 0xb6, 0xbe, 0xe0, 0xfe, 0xf6, 0x00};//0-9,-,全灭
  31. uchar code tab[]={0x00,0x10,0x20,0x40,0x80,0x01,0x02,0x04};//用于星期的

  32. uchar sec_day_shi,sec_day_ge,min_month_shi,min_month_ge,hour_year_ge,hour_year_shi;

  33. uchar a,sec,min,hour,year,month,day,week,s1num,flag,shu;
  34. unsigned char vfdbuf[]={0,0,0,0,0,0,0};
  35. uchar time[7];


  36. void vfd_cmd (uchar vfd_cmd0); /* 写命令*/
  37. void write_VFD (uchar write_VFD0); /* 写数据 */
  38. void vfd_init (void); /*16312初始化 */
复制代码

89c2051.rar (25.61 KB, 下载次数: 18)