找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

X5045看門狗的單片機(jī)源程序和Proteus仿真原理圖

  [復(fù)制鏈接]
ID:175881 發(fā)表于 2017-4-5 03:58 | 顯示全部樓層 |閱讀模式
單片機(jī)X5045看門狗的驅(qū)動的仿真原理圖(proteus仿真工程文件和程序源代碼可到本帖附件下載):

0.png

單片機(jī)X5045看門狗源程序:

  1. //將數(shù)據(jù)0x55寫入X5045再讀出并送至P1口顯示
  2. #include<reg51.h>
  3. #include<intrins.h>                 //

  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. sbit  SCK=P3^4;
  7. sbit  SI=P3^5;
  8. sbit  SO=P3^6;
  9. sbit  CS=P3^7;

  10. #define WREN 0x06           //寫使能鎖存器允許
  11. #define WRDI 0x04           //寫使能鎖存器禁止
  12. #define WRSR 0x01           //寫狀態(tài)寄存器
  13. #define READ 0x03           //讀出
  14. #define WRITE 0x02          //寫入


  15. void delayxms(uint xms)     //延時xms毫秒
  16. {  uint t1,t2;
  17.    for(t1=xms;t1>0;t1--)
  18.    for(t2=110;t2>0;t2--);
  19. }

  20. uchar ReadCurrent(void)     //從X5045的當(dāng)前地址讀出數(shù)據(jù)  出口參數(shù)x
  21. {  uchar i;
  22.    uchar x=0x00;            //儲存從X5045中讀出的數(shù)據(jù)
  23.    SCK=1;
  24.    for(i=0;i<8;i++)
  25.    {  SCK=1;
  26.       SCK=0;                //在SCK的下降沿讀出數(shù)據(jù)
  27.       x<<=1;                //左移,因?yàn)橄茸x出的是最高的數(shù)據(jù)位
  28.       x|=(uchar)SO;
  29.    }
  30.    return(x);
  31. }         

  32. void WriteCurrent(uchar dat)    //寫數(shù)據(jù)到X5045  入口參數(shù)dat
  33. {  uchar i;
  34.    SCK=0;
  35.    for(i=0;i<8;i++)
  36.    {  SI=(bit)(dat&0x80);
  37.       SCK=0;
  38.       SCK=1;
  39.       dat<<=1;                  //左移,因?yàn)槭紫葘懭氲氖亲止?jié)的最高位
  40.    }
  41. }

  42. /*****************************************
  43. 狀態(tài)寄存器,可以設(shè)置看門狗的溢出時間及數(shù)據(jù)保護(hù)
  44. 入口參數(shù):rs 存儲寄存器狀態(tài)值
  45. ******************************************/

  46. void WriteSR(uchar rs)          //
  47. {  CS=0;
  48.    WriteCurrent(WREN);
  49.    CS=1;
  50.    CS=0;                    //重新拉低CS,否則下面的寫寄存器狀態(tài)指令將被丟棄
  51.    WriteCurrent(WRSR);
  52.    WriteCurrent(rs);
  53.    CS=1;
  54. }

  55. void WriteSet(uchar dat,uchar addr)         //寫數(shù)據(jù)到X5045的指定地址 入口參數(shù):addr
  56. {  SCK=0;
  57.    CS=0;
  58.    WriteCurrent(WREN);
  59.    CS=1;
  60.    CS=0;                        //重新拉低CS,否則下面的寫寄存器狀態(tài)指令將被丟棄
  61.    WriteCurrent(WRITE);
  62.    WriteCurrent(addr);
  63.    WriteCurrent(dat);
  64.    CS=1;
  65.    SCK=0;
  66. }

  67. uchar ReadSet(uchar addr)               //從X5045的指定地址讀出數(shù)據(jù) 入口參數(shù):addr;出口參數(shù):dat
  68. {  uchar dat;
  69.    SCK=0;
  70.    CS=0;
  71.    WriteCurrent(READ);
  72.    WriteCurrent(addr);
  73.    dat=ReadCurrent();
  74.    CS=1;
  75.    SCK=0;
  76.    return dat;
  77. }

  78. void WatchDog(void)                 //看門狗復(fù)位功能
  79. {  CS=1;
  80.    CS=0;                    //CS引腳的一個下降沿復(fù)位看門狗定時器
  81.    CS=1;
  82. }

  83. void main()                         //主程序
  84. {  WriteSR(0x12);                   //寫狀態(tài)寄存器(設(shè)定看門狗溢出時間600ms,寫不保護(hù))
  85.    delayxms(10);

  86.    {  WriteSet(0X00,0x10);          //將手機(jī)0x55寫入指定地址0x10
  87.       delayxms(10);
  88.       P1=ReadSet(0x10);             //將數(shù)據(jù)讀出送P1口,低電平燈亮
  89.       WatchDog();
復(fù)制代碼

0.png

該系列源碼包含有很多非常經(jīng)典,代碼風(fēng)格十分規(guī)范,而且注釋詳細(xì)的單片機(jī)例程,還帶仿真,對于MCU學(xué)習(xí)特別是初學(xué)者是很有幫助的,全部源碼下載(共幾十個項(xiàng)目):http://www.torrancerestoration.com/bbs/dpj-80575-1.html

本例程下載(含proteus仿真工程文件與源碼):
單片機(jī)X5045看門狗程序 帶Proteus仿真.rar (47.49 KB, 下載次數(shù): 120)

回復(fù)

使用道具 舉報

ID:317941 發(fā)表于 2018-4-28 12:27 | 顯示全部樓層
這是X5045嗎?咋在網(wǎng)上找的不一樣
回復(fù)

使用道具 舉報

ID:288203 發(fā)表于 2018-6-2 08:29 | 顯示全部樓層
x25045芯片是軟件里有的?為什么我的找不到
回復(fù)

使用道具 舉報

ID:105464 發(fā)表于 2018-9-10 16:36 | 顯示全部樓層
X5045看門狗的單片機(jī)源程序和Proteus仿真原理圖
回復(fù)

使用道具 舉報

ID:557394 發(fā)表于 2019-6-15 00:06 | 顯示全部樓層
為什么仿真打不開啊
回復(fù)

使用道具 舉報

ID:292427 發(fā)表于 2020-1-2 20:20 | 顯示全部樓層
SPI通信的
回復(fù)

使用道具 舉報

ID:126866 發(fā)表于 2022-2-1 21:28 | 顯示全部樓層
proteus是哪個版本的?為啥我的proteus里沒這個元件?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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