找回密码
 立即注册

QQ登录

只需一步,快速开始

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

X5045看门狗的单片机源程序和Proteus仿真原理图

  [复制链接]
跳转到指定楼层
楼主
单片机X5045看门狗的驱动的仿真原理图(proteus仿真工程文件和程序源代码可到本帖附件下载):



单片机X5045看门狗源程序:

  1. //将数据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           //写状态寄存器
  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的当前地址读出数据  出口参数x
  21. {  uchar i;
  22.    uchar x=0x00;            //储存从X5045中读出的数据
  23.    SCK=1;
  24.    for(i=0;i<8;i++)
  25.    {  SCK=1;
  26.       SCK=0;                //在SCK的下降沿读出数据
  27.       x<<=1;                //左移,因为先读出的是最高的数据位
  28.       x|=(uchar)SO;
  29.    }
  30.    return(x);
  31. }         

  32. void WriteCurrent(uchar dat)    //写数据到X5045  入口参数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;                  //左移,因为首先写入的是字节的最高位
  40.    }
  41. }

  42. /*****************************************
  43. 状态寄存器,可以设置看门狗的溢出时间及数据保护
  44. 入口参数:rs 存储寄存器状态值
  45. ******************************************/

  46. void WriteSR(uchar rs)          //
  47. {  CS=0;
  48.    WriteCurrent(WREN);
  49.    CS=1;
  50.    CS=0;                    //重新拉低CS,否则下面的写寄存器状态指令将被丢弃
  51.    WriteCurrent(WRSR);
  52.    WriteCurrent(rs);
  53.    CS=1;
  54. }

  55. void WriteSet(uchar dat,uchar addr)         //写数据到X5045的指定地址 入口参数:addr
  56. {  SCK=0;
  57.    CS=0;
  58.    WriteCurrent(WREN);
  59.    CS=1;
  60.    CS=0;                        //重新拉低CS,否则下面的写寄存器状态指令将被丢弃
  61.    WriteCurrent(WRITE);
  62.    WriteCurrent(addr);
  63.    WriteCurrent(dat);
  64.    CS=1;
  65.    SCK=0;
  66. }

  67. uchar ReadSet(uchar addr)               //从X5045的指定地址读出数据 入口参数:addr;出口参数: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)                 //看门狗复位功能
  79. {  CS=1;
  80.    CS=0;                    //CS引脚的一个下降沿复位看门狗定时器
  81.    CS=1;
  82. }

  83. void main()                         //主程序
  84. {  WriteSR(0x12);                   //写状态寄存器(设定看门狗溢出时间600ms,写不保护)
  85.    delayxms(10);

  86.    {  WriteSet(0X00,0x10);          //将手机0x55写入指定地址0x10
  87.       delayxms(10);
  88.       P1=ReadSet(0x10);             //将数据读出送P1口,低电平灯亮
  89.       WatchDog();
复制代码



该系列源码包含有很多非常经典,代码风格十分规范,而且注释详细的单片机例程,还带仿真,对于MCU学习特别是初学者是很有帮助的,全部源码下载(共几十个项目):http://www.51hei.com/bbs/dpj-80575-1.html

本例程下载(含proteus仿真工程文件与源码):
单片机X5045看门狗程序 带Proteus仿真.rar (47.49 KB, 下载次数: 119)

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

使用道具 举报

沙发
ID:317941 发表于 2018-4-28 12:27 | 只看该作者
这是X5045吗?咋在网上找的不一样
回复

使用道具 举报

板凳
ID:288203 发表于 2018-6-2 08:29 | 只看该作者
x25045芯片是软件里有的?为什么我的找不到
回复

使用道具 举报

地板
ID:105464 发表于 2018-9-10 16:36 | 只看该作者
X5045看门狗的单片机源程序和Proteus仿真原理图
回复

使用道具 举报

5#
ID:557394 发表于 2019-6-15 00:06 | 只看该作者
为什么仿真打不开啊
回复

使用道具 举报

6#
ID:292427 发表于 2020-1-2 20:20 | 只看该作者
SPI通信的
回复

使用道具 举报

7#
ID:126866 发表于 2022-2-1 21:28 | 只看该作者
proteus是哪个版本的?为啥我的proteus里没这个元件?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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