找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2021|回复: 2
打印 上一主题 下一主题
收起左侧

单片机+ds1302+仿真程序 用三个按键调时间

[复制链接]
回帖奖励 1 黑币 回复本帖可获得 1 黑币奖励! 每人限 1 次(中奖概率 10%)
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <REGX52.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define data8 P0
  5. sbit rst=P1^0;
  6. sbit sck=P1^1;
  7. sbit sda=P1^2;
  8. sbit rs=P1^3;
  9. sbit rw=P1^4;
  10. sbit e=P1^5;
  11. sbit key1=P2^0;
  12. sbit key2=P2^1;
  13. sbit key3=P2^2;
  14. sbit start= P2^3;
  15. sbit ale=P1^6;
  16. sbit eoc=P1^7;
  17. sbit oe=P2^4;
  18. uchar table1[]="TIME:";
  19. uchar table2[]="DATE:";
  20. uchar table[]="0123456789:-";
  21. uchar code chuzhi[]={0x80,0x34,0x18,0x15,0x04,0x04,0x21,0x00};
  22. uchar code dizhi[]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x80};
  23. uchar code chushi1602[]={0x38,0x0c,0x01};
  24. uchar chuncu[7]={0};
  25. uchar song,temp1,adc;
  26. void delayms(uint xms)
  27. {
  28.         uchar i;uint j;
  29.         for(j=xms;j>0;j--)
  30.                 for(i=110;i>0;i--);
  31. }
  32. void ad();
  33. void t0()
  34. {
  35.     TMOD = 0x01;
  36.     TH0 = 0x0FE;
  37.     TL0 = 0x0C;
  38.     EA = 1;
  39.     ET0 = 1;
  40.     TR0 = 1;
  41. }
  42. void zl1602(uchar zlduan)
  43. {
  44.         rs=0;
  45.         rw=0;
  46.         data8=zlduan;
  47.         delayms(1);
  48.         e=1;
  49.         delayms(5);
  50.         e=0;

  51. }  
  52. void sj1602(uchar sjduan)
  53. {
  54.         rs=1;
  55.         rw=0;
  56.         data8=table[sjduan];
  57.         delayms(1);
  58.         e=1;
  59.         delayms(5);
  60.         e=0;

  61. }
  62. void sc1602(uchar sjduan)
  63. {
  64.         rs=1;
  65.         rw=0;
  66.         data8=sjduan;
  67.         delayms(1);
  68.         e=1;
  69.         delayms(5);
  70.         e=0;
  71. }
  72. void cs1602()
  73. {
  74.         uchar i;
  75.         for(i=0;i<3;i++)
  76.         {
  77.                 zl1602(chushi1602[i]);        
  78.         }
  79. }


  80. void cs1302()
  81. {
  82.         rst=0;
  83.         sck=0;
  84.         rst=1;
  85. }
  86. void xie1302(uchar temp) //1000 0000
  87. {
  88.         uchar i;
  89.         for(i=8;i>0;i--)
  90.         {
  91.                 sda=temp&0x01;   //0
  92.                 sck=0;
  93.                 sck=1;
  94.                 temp>>=1;           //0100 0000
  95.         }
  96. }
  97. uchar song1302()
  98. {
  99.         uchar i;
  100.         for(i=0;i<8;i++)
  101.         {
  102.                
  103.                 if(sda)
  104.                 {
  105.                         song|=0x80;
  106.                 }
  107.                         sck=1;
  108.                         sck=0;
  109.                          song>>=1;
  110.         }
  111.                 return(song);
  112. }
复制代码



全部资料51hei下载地址:
ds1302+仿真.zip (53.81 KB, 下载次数: 48)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:78901 发表于 2021-4-24 22:43 | 只看该作者
经过仿真,设置超出设置范围出错
回复

使用道具 举报

板凳
ID:28992 发表于 2021-4-25 04:15 | 只看该作者
excellent work, thank you sir!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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