找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5085|回复: 4
收起左侧

DS1302+Stc12c5a60s2+按键的proteus仿真

[复制链接]
ID:402452 发表于 2018-11-26 19:22 | 显示全部楼层 |阅读模式
DS1302+Stc12c5a60s2+按键

0.png

单片机源程序如下:
  1. #include "ds1302.h"
  2. unsigned char second,minute,hour,week,day,month,year;                //秒、分、时、星期、日、月、年
  3. //---DS1302时钟初始化2016年5月7日星期六12点00分00秒。---//
  4. //---存储顺序是秒分时日月周年,存储格式是用BCD码---//
  5. unsigned char time[]={0x06,0x03,0x14,0x03,0x12,0x30,0x00};        //初始时间数组
  6. /*****************************************************************************
  7. 函数功能:向DS1302送一字节数据子程序
  8. 入口参数:
  9. 出口参数:
  10. *****************************************************************************/
  11. void InputByte(unsigned char byte1)
  12. {
  13.         char i;
  14.         for(i=8;i>0;i--)
  15.         {
  16.                 DS1302_IO=(bit)(byte1&0x01);
  17.                 DS1302_CLK=1;
  18.                 _nop_();
  19.                 DS1302_CLK=0;
  20.                 byte1>>=1;
  21.         }
  22.         return;
  23. }
  24. /*****************************************************************************
  25. 函数功能:读DS1302一个字节子程序
  26. 入口参数:
  27. 出口参数:
  28. *****************************************************************************/
  29. unsigned char outputbyte(void)  
  30. {
  31.         unsigned char i;
  32.         unsigned ucdat=0;
  33.         for(i=8;i>0;i--)
  34.         {
  35.                 DS1302_IO=1;
  36.                 ucdat>>=1;
  37.                 if(DS1302_IO)ucdat|=0x80;
  38.                 DS1302_CLK=1;
  39.                 _nop_();
  40.                 DS1302_CLK=0;
  41.          }
  42.          return(ucdat);
  43. }
  44. /*****************************************************************************
  45. 函数功能:向DS1302某地址写一字节数据子程序
  46. 入口参数:addr,TDat
  47. 出口参数:
  48. *****************************************************************************/
  49. void write_ds1302(unsigned char addr,unsigned char TDat)
  50. {
  51.         DS1302_RST=0;
  52.         _nop_();
  53.         DS1302_CLK=0;
  54.         _nop_();
  55.         DS1302_RST=1;
  56.          InputByte(addr);
  57.         _nop_();
  58.         InputByte(TDat);
  59.         DS1302_CLK=1;
  60.         _nop_();
  61.         DS1302_RST=0;
  62. }
  63. /*****************************************************************************
  64. 函数功能:读DS1302地址子程序
  65. 入口参数:add
  66. 出口参数:timedata
  67. *****************************************************************************/
  68. unsigned char read_ds1302(unsigned char addr)
  69. {
  70.         unsigned char timedata;
  71.         DS1302_RST=0;
  72.         _nop_();
  73.         DS1302_CLK=0;
  74.         _nop_();
  75.         DS1302_RST=1;
  76.         InputByte(addr);
  77.         timedata=OutputByte();
  78.         DS1302_CLK=1;
  79.         _nop_();
  80.         DS1302_RST=0;
  81.         return(timedata);
  82. }
  83. /*****************************************************************************
  84. 函数功能:初始化DS1302子程序
  85. 入口参数:time[](全局变量)
  86. 出口参数:
  87. *****************************************************************************/
  88. void initial_ds1302()
  89. {
  90.         write_ds1302(0x8e,0x00);                //写保护寄存器,在对时钟或RAM写前WP一定要为0
  91.         write_ds1302(0x8c,time[0]);                //年
  92.         write_ds1302(0x88,time[1]);                //月
  93.         write_ds1302(0x86,time[2]);                //日
  94.         write_ds1302(0x8A,time[3]);                //星期
  95.         write_ds1302(0x84,time[4]);                //时
  96.         write_ds1302(0x82,time[5]);                //分
  97.         write_ds1302(0x80,time[6]);                //秒
  98.         write_ds1302(0x8e,0x80);                //写保护寄存器
  99. }
  100. /*****************************************************************************
  101. 函数功能:读DS1302时间子程序
  102. 入口参数:
  103. 出口参数:全局变量(second,minute,hour,week,day,month,year)
  104. *****************************************************************************/
  105. void read_time()
  106. {
  107.         second=read_ds1302(0x81);                //秒寄存器
  108.         minute=read_ds1302(0x83);                //分
  109.         hour=read_ds1302(0x85);                        //时
  110.         week=read_ds1302(0x8B);                        //星期
  111.         day=read_ds1302(0x87);                        //日
  112.         month=read_ds1302(0x89);                //月
  113.         year=read_ds1302(0x8d);                        //年
  114.    
  115. }
复制代码
51hei.png

资料不全,缺源码,求大家补全程序啊:
protues.zip (38.21 KB, 下载次数: 64)
回复

使用道具 举报

ID:495323 发表于 2019-3-24 23:51 | 显示全部楼层
你好,我在用proteus仿真,你的芯片是怎么选择的?有没有教程一些可以入门的,有的话发我邮箱或是加好友也行   
回复

使用道具 举报

ID:129825 发表于 2020-3-5 22:22 | 显示全部楼层
你说的这个Stc12c5a60s2单片机你给的资料没有
回复

使用道具 举报

ID:558937 发表于 2020-3-30 23:17 | 显示全部楼层
东西都不给就让下载?
回复

使用道具 举报

ID:308257 发表于 2020-4-22 16:46 | 显示全部楼层
protues仿真不了STC12系列,没有这个芯片,需要用AT89代替,然后外接AD芯片等。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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