找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机DS18B20温控步进电机Proteus仿真加源程序

[复制链接]
跳转到指定楼层
楼主
DS18B20温控步进电机仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code zs[]={0x01,0x02,0x04,0x08};
  5. sbit DQ=P0^0;
  6. void delay(uint M)
  7. {
  8. uint i;
  9. for(i=0;i<M;i++)
  10. {
  11.   ;
  12. }
  13. }
  14. void run(uint N)
  15. {
  16. uchar k;
  17. for(k=0;k<=3;k++)
  18. {
  19.   P2=zs[k];
  20.   delay(N);
  21. }
  22. }

  23. void init()
  24. {
  25. uint m;
  26. DQ=1;
  27. delay(4);
  28. DQ=0;
  29. delay(45);
  30. DQ=1;
  31. while(DQ)
  32. {
  33.   m++;
  34.   if(m>=100)break;
  35. }
  36. }

  37. void write(uchar order)
  38. {
  39. uint j;
  40. DQ=1;
  41. delay(20);
  42. for (j=8; j>0; j--)
  43. {
  44.   DQ = 0;
  45.   DQ = order&0x01;
  46.   delay(5);
  47.   DQ = 1;
  48.   order>>=1;
  49.   delay(10);
  50. }
  51. delay(5);
  52. }
  53. uchar read()
  54. {
  55. unsigned char n=0;
  56. unsigned char dat = 0;
  57. DQ=1;
  58. delay(20);

  59. for (n=8;n>0;n--)
  60. {
  61.   DQ = 0;
  62.   dat>>=1;
  63.   DQ = 1;
  64.   if(DQ)
  65.    {dat|=0x80;}
  66.   delay(4);
  67. }
  68. return(dat);
  69. }
  70. void main()
  71. {

  72. while(1)
  73. {
  74. uchar Teml=0x00;
  75. uchar Temh=0x00;
  76. uchar Tem=0x00;
  77. init();
  78. write(0xcc);
  79. write(0x44);
  80. while(DQ==0)
  81. {
  82.   ;
  83. }
  84. init();
  85. write(0xcc);
  86. write(0xbe);
  87. Teml=read();
  88. Temh=read();
  89. Temh=Temh<<4;
  90. Teml=Teml>>4;
  91. Tem=Temh|Teml;
  92. P1=~Tem;
  93. if(Tem<=15)
  94. {
  95.   run(1000);
  96.   }
  97.   else if((Tem>15)&(Tem<=25))
  98.   {
  99.    run(3000);
  100.   }
  101. else if((Tem>25)&(Tem<=35))
  102.   {
  103.    run(6000);
  104.   }

  105. else if((Tem>35)&(Tem<=45))
  106.   {
  107.    run(4000);
  108.   }
  109. else if((Tem>45)&(Tem<=55))
  110.   {
  111.    run(3000);
  112.   }

  113. else if((Tem>55)&(Tem<=65))
  114.   {
  115.    run(2000);
  116.   }
  117. else if((Tem>65)&(Tem<=75))
  118.   {
  119.    run(1000);
  120.   }
  121. else
  122.   {
  123.    run(500);
  124.   }
  125. }
  126. }
复制代码

所有资料51hei提供下载:
ourdev_446260.rar (59.45 KB, 下载次数: 55)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:451441 发表于 2019-1-21 12:17 | 只看该作者
谢谢LZ分享,学习!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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