找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5654|回復(fù): 4
收起左側(cè)

DS1302+Stc12c5a60s2+按鍵的proteus仿真

[復(fù)制鏈接]
ID:402452 發(fā)表于 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};        //初始時間數(shù)組
  6. /*****************************************************************************
  7. 函數(shù)功能:向DS1302送一字節(jié)數(shù)據(jù)子程序
  8. 入口參數(shù):
  9. 出口參數(shù):
  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. 函數(shù)功能:讀DS1302一個字節(jié)子程序
  26. 入口參數(shù):
  27. 出口參數(shù):
  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. 函數(shù)功能:向DS1302某地址寫一字節(jié)數(shù)據(jù)子程序
  46. 入口參數(shù):addr,TDat
  47. 出口參數(shù):
  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. 函數(shù)功能:讀DS1302地址子程序
  65. 入口參數(shù):add
  66. 出口參數(shù):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. 函數(shù)功能:初始化DS1302子程序
  85. 入口參數(shù):time[](全局變量)
  86. 出口參數(shù):
  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. 函數(shù)功能:讀DS1302時間子程序
  102. 入口參數(shù):
  103. 出口參數(shù):全局變量(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. }
復(fù)制代碼
51hei.png

資料不全,缺源碼,求大家補全程序啊:
protues.zip (38.21 KB, 下載次數(shù): 65)


回復(fù)

使用道具 舉報

ID:495323 發(fā)表于 2019-3-24 23:51 | 顯示全部樓層
你好,我在用proteus仿真,你的芯片是怎么選擇的?有沒有教程一些可以入門的,有的話發(fā)我郵箱或是加好友也行   
回復(fù)

使用道具 舉報

ID:129825 發(fā)表于 2020-3-5 22:22 | 顯示全部樓層
你說的這個Stc12c5a60s2單片機你給的資料沒有
回復(fù)

使用道具 舉報

ID:558937 發(fā)表于 2020-3-30 23:17 | 顯示全部樓層
東西都不給就讓下載?
回復(fù)

使用道具 舉報

ID:308257 發(fā)表于 2020-4-22 16:46 | 顯示全部樓層
protues仿真不了STC12系列,沒有這個芯片,需要用AT89代替,然后外接AD芯片等。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表