找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 1853|回復(fù): 0
收起左側(cè)

通過(guò)DS18B20結(jié)合直流電機(jī)的一個(gè)小程序

[復(fù)制鏈接]
ID:243642 發(fā)表于 2017-10-28 12:01 | 顯示全部樓層 |閱讀模式
通過(guò)DS18B20結(jié)合直流電機(jī)的一個(gè)小程序,希望賺一點(diǎn)黑幣去下載附件,新手上路,請(qǐng)多指教

下載:
程序.rar (32.36 KB, 下載次數(shù): 13)

單片機(jī)源程序如下:
  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];                                                                               //定義數(shù)組
  13. u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //段選顯示數(shù)據(jù)

  14. void delay(u16 i)                  //   延時(shí)函數(shù)
  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是為了保存小數(shù)點(diǎn)后兩位,加0.5是為了四舍五入,單片機(jī)小數(shù)點(diǎn)后都省略
  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)                         //電機(jī)
  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)                                 //溫度中轉(zhuǎn)
  51. {
  52.     float zh;
  53.     if(temp<0)
  54.         {
  55.            DisplayData[0]=0x40;                   //顯示負(fù)號(hào)
  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;                   //無(wú)顯示
  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;                        //個(gè)位
  70.         DisplayData[4] = smgduan[temp % 100 / 10];                                    //小數(shù)點(diǎn)后一位
  71.         DisplayData[5] = smgduan[temp % 10];                                                //小數(shù)點(diǎn)后兩位

  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());                                  //電機(jī)
  105.            datazh(DS18B20RadeTemp());                                 //數(shù)據(jù)處理
  106.            LEDDisplay();                                                        //數(shù)顯
  107.           }

  108. }

復(fù)制代碼

所有資料51hei提供下載:



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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