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

QQ登錄

只需一步,快速開始

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

STC89C52單片機(jī)溫控繼電器代碼

[復(fù)制鏈接]
ID:145511 發(fā)表于 2018-10-23 21:27 | 顯示全部樓層 |閱讀模式
打開實(shí)驗(yàn)板上的蜂鳴,響0.3秒,然后關(guān)閉0.3秒,然后依次這樣循環(huán),
同時(shí)在實(shí)驗(yàn)板上繼電器旁邊的發(fā)光二極管也會(huì)跟隨繼電器不停地閃爍

單片機(jī)源程序如下:
  1. /***************************************************************************
  2. 標(biāo)題:        溫控繼電器實(shí)驗(yàn)
  3. 實(shí)驗(yàn)板:LY5A-L2A開發(fā)板
  4. 作者:        林洋電子-單片機(jī)
  5. 說明:        溫度低于下線值啟動(dòng)繼電器,達(dá)到上線值關(guān)閉繼電器,注意:使用12M晶振下調(diào)試
  6. ******************************************************************************/

  7. //頭文件:
  8. #include <reg52.h>
  9. #include "ds18b20.h"        //引入DS18B20頭文件

  10. //引腳定義:               
  11. sbit JDQ=P1^4;                //繼電器控制
  12. sbit SMG_q = P1^0;        //定義數(shù)碼管陽(yáng)級(jí)控制腳(千位)
  13. sbit SMG_b = P1^1;        //定義數(shù)碼管陽(yáng)級(jí)控制腳(百位)
  14. sbit SMG_s = P1^2;        //定義數(shù)碼管陽(yáng)級(jí)控制腳(十位)
  15. sbit SMG_g = P1^3;        //定義數(shù)碼管陽(yáng)級(jí)控制腳(個(gè)位)

  16. //變量定義:
  17. unsigned char ly_dis[4];//定義顯示緩沖區(qū)
  18. unsigned char DSU=32;        //上線溫度
  19. unsigned char DSD=30;        //下線溫度
  20. code unsigned char table[]=
  21.                         {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  22.                                         //表:共陽(yáng)數(shù)碼管 0-9
  23. unsigned char l_posit=0;        //顯示位置

  24. //函數(shù)聲明:
  25. void display(void);//顯示函數(shù),顯示緩沖區(qū)內(nèi)容
  26. void delay(void);

  27. //主函數(shù),C語(yǔ)言的入口函數(shù):       
  28. void main()
  29. {       
  30.         unsigned int i=0;
  31.         float tt;
  32.         int ltemp;
  33.         while(1){
  34.                 if(i==0)
  35.                         tmpchange();              //溫度轉(zhuǎn)換
  36.                 if(i==100){
  37.                         tt=tmp()*0.0625;          //得到真實(shí)十進(jìn)制溫度值,因?yàn)镈S18B20
  38.                                                                 //可以精確到0.0625度,所以讀回?cái)?shù)據(jù)的最低位代表的是0.0625度。
  39.                         if(tt<=DSD)                //低于下線溫度啟動(dòng)繼電器
  40.                                 JDQ=0;               
  41.                         if(tt>=DSU)                //達(dá)到上線溫度關(guān)閉繼電器
  42.                                 JDQ=1;

  43.                           ltemp=tt*10+0.5;           //放大十倍,這樣做的目的將小數(shù)點(diǎn)后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時(shí)進(jìn)行一個(gè)四舍五入操作。
  44.                         if(ltemp<0){                //判斷第一位顯示整數(shù)還是負(fù)號(hào)
  45.                                 ly_dis[0]=0xbf;
  46.                                 ltemp=0-ltemp;       
  47.                         }
  48.                         else
  49.                                 ly_dis[0]=ltemp/1000;//顯示百位值
  50.                         ltemp=ltemp%1000;
  51.                         ly_dis[1]=ltemp/100;        //顯示溫度十位值
  52.                         ltemp=ltemp%100;
  53.                         ly_dis[2]=ltemp/10;                //顯示溫度個(gè)位值
  54.                         ly_dis[3]=ltemp%10;                //顯示小數(shù)點(diǎn)后一位
  55.                 }
  56.                 i++;
  57.                 if(i==3000)
  58.                         i=0;
  59.                 display();        //調(diào)用顯示       
  60.                 delay();       
  61.         }
  62. }

  63. //顯示函數(shù),參數(shù)為顯示內(nèi)容
  64. void display()
  65. {
  66.         P0=0XFF;                        //       
  67.         switch(l_posit){
  68.         case 0:                //選擇千位數(shù)碼管,關(guān)閉其它位
  69.                 SMG_q=0;
  70.                 SMG_b=1;       
  71.                 SMG_s=1;               
  72.                 SMG_g=1;
  73.                 P0=table[ly_dis[0]];        //輸出顯示內(nèi)容
  74.                 break;
  75.         case 1:                //選擇百位數(shù)碼管,關(guān)閉其它位
  76.                 SMG_q=1;
  77.                 SMG_b=0;       
  78.                 SMG_s=1;               
  79.                 SMG_g=1;
  80.                 P0=table[ly_dis[1]];
  81.                 break;
  82.         case 2:                //選擇十位數(shù)碼管,關(guān)閉其它位
  83.                 SMG_q=1;
  84.                 SMG_b=1;       
  85.                 SMG_s=0;               
  86.                 SMG_g=1;
  87.                 P0=table[ly_dis[2]]&0x7f;
  88.                 break;
  89.         case 3:                //選擇個(gè)位數(shù)碼管,關(guān)閉其它位
  90.                 SMG_q=1;
  91.                 SMG_b=1;       
  92.                 SMG_s=1;               
  93.                 SMG_g=0;
  94.                 P0=table[ly_dis[3]];
  95.                 break;
  96.         }
  97.         l_posit++;                //每調(diào)用一次將輪流顯示一位
  98.         if(l_posit>3)
  99.                 l_posit=0;       
  100. }

  101. //延時(shí)子函數(shù),短暫延時(shí)
  102. void delay(void){               
  103.         unsigned char i=10;
  104.         while(i--);
  105. }
復(fù)制代碼

所有資料51hei提供下載:
溫控繼電器.rar (43.53 KB, 下載次數(shù): 29)


回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2018-10-24 01:02 | 顯示全部樓層
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報(bào)

ID:108622 發(fā)表于 2018-11-4 18:11 | 顯示全部樓層
能發(fā)個(gè)電路圖給我嗎
回復(fù)

使用道具 舉報(bào)

ID:442459 發(fā)表于 2018-12-8 23:47 | 顯示全部樓層
這個(gè)程序?qū)懙恼娴暮脜柡?/td>
回復(fù)

使用道具 舉報(bào)

ID:519766 發(fā)表于 2019-4-23 17:19 | 顯示全部樓層
請(qǐng)問,有人知道控制 型號(hào)是CM1106的紅外二氧化碳傳感器模塊 的c語(yǔ)言代碼嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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