找回密码
 立即注册

QQ登录

只需一步,快速开始

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

通过DS18B20结合直流电机的一个小程序

[复制链接]
跳转到指定楼层
楼主
ID:243642 发表于 2017-10-28 12:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过DS18B20结合直流电机的一个小程序,希望赚一点黑币去下载附件,新手上路,请多指教

下载:
程序.rar (32.36 KB, 下载次数: 13)

单片机源程序如下:
  1. #include"temp.h"
  2. #include <reg52.h>


  3. typedef unsigned char u8;
  4. typedef unsigned int  u16;                  //定义字符类型


  5. sbit LSA=P2^2;
  6. sbit LSB=P2^3;
  7. sbit LSC=P2^4;
  8. sbit moto=P1^0;
  9. sbit beep=P1^6;                                  // 定义管脚
  10.                                                                        
  11. char num=0;                                                 
  12. u8 DisplayData[8];                                                                               //定义数组
  13. u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //段选显示数据

  14. void delay(u16 i)                  //   延时函数
  15. {
  16.         while(i--);       
  17. }
  18. void BeepSing(int temp)                  //蜂鸣器(脉冲)
  19. {
  20.     int WD;
  21.         beep=1;
  22.         WD=temp*0.0625*100+0.5;                        //放大100是为了保存小数点后两位,加0.5是为了四舍五入,单片机小数点后都省略
  23.         if(WD>26)
  24.         {
  25.             beep=0;
  26.                 delay(10);
  27.                 beep=1;
  28.                 delay(10);
  29.        
  30.         }
  31.         else
  32.         {
  33.             beep=1;
  34.         }

  35. }

  36. void Motorzd(int temp)                         //电机
  37. {
  38.     int wd;
  39.         moto=0;
  40.         wd=temp*0.0625*100+0.5;
  41.         if(wd>26)
  42.         {
  43.            moto=1;
  44.         }
  45.         else
  46.         {
  47.            moto=0;
  48.         }
  49. }

  50. void datazh(int temp)                                 //温度中转
  51. {
  52.     float zh;
  53.     if(temp<0)
  54.         {
  55.            DisplayData[0]=0x40;                   //显示负号
  56.            temp=temp-1;
  57.            temp=~temp;
  58.            zh=temp;
  59.            temp= zh*0.0625*100+0.5;
  60.         }
  61.         else
  62.         {
  63.            DisplayData[0] = 0x00;                   //无显示
  64.            zh=temp;
  65.            temp= zh*0.0625*100+0.5;
  66.         }
  67.         DisplayData[1] = smgduan[temp / 10000];                                        //百位
  68.         DisplayData[2] = smgduan[temp % 10000 / 1000];                        //十位
  69.         DisplayData[3] = smgduan[temp % 1000 / 100] | 0x80;                        //个位
  70.         DisplayData[4] = smgduan[temp % 100 / 10];                                    //小数点后一位
  71.         DisplayData[5] = smgduan[temp % 10];                                                //小数点后两位

  72. }
  73. void LEDDisplay()                                                                 //LED显示 ,位选
  74. {
  75.     u8 i;
  76.         for(i=0;i<6;i++)
  77.         {
  78.            switch(i)
  79.            {
  80.                      case(0):
  81.                       LSA=0;LSB=0;LSC=0;break;
  82.                   case(1):
  83.                       LSA=1;LSB=0;LSC=0;break;
  84.                   case(2):
  85.                       LSA=0;LSB=1;LSC=0;break;
  86.                   case(3):
  87.                       LSA=1;LSB=1;LSC=0;break;
  88.                   case(4):
  89.                       LSA=0;LSB=0;LSC=1;break;
  90.                   case(5):
  91.                       LSA=1;LSB=0;LSC=1;break;
  92.                   
  93.            }
  94.            P0=DisplayData[i];
  95.            delay(100);
  96.            P0=0x00;           //消隐
  97.         }
  98. }

  99. void main()
  100. {
  101.       while(1)
  102.           {
  103.            BeepSing(DS18B20RadeTemp());                                  //蜂鸣器
  104.            Motorzd(DS18B20RadeTemp());                                  //电机
  105.            datazh(DS18B20RadeTemp());                                 //数据处理
  106.            LEDDisplay();                                                        //数显
  107.           }

  108. }

复制代码

所有资料51hei提供下载:



评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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