久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4382|回復: 4
收起左側

STC89C52單片機溫控繼電器代碼

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

單片機源程序如下:
  1. /***************************************************************************
  2. 標題:        溫控繼電器實驗
  3. 實驗板:LY5A-L2A開發板
  4. 作者:        林洋電子-單片機
  5. 說明:        溫度低于下線值啟動繼電器,達到上線值關閉繼電器,注意:使用12M晶振下調試
  6. ******************************************************************************/

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

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

  16. //變量定義:
  17. unsigned char ly_dis[4];//定義顯示緩沖區
  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.                                         //表:共陽數碼管 0-9
  23. unsigned char l_posit=0;        //顯示位置

  24. //函數聲明:
  25. void display(void);//顯示函數,顯示緩沖區內容
  26. void delay(void);

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

  43.                           ltemp=tt*10+0.5;           //放大十倍,這樣做的目的將小數點后第一位也轉換為可顯示數字,同時進行一個四舍五入操作。
  44.                         if(ltemp<0){                //判斷第一位顯示整數還是負號
  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;                //顯示溫度個位值
  54.                         ly_dis[3]=ltemp%10;                //顯示小數點后一位
  55.                 }
  56.                 i++;
  57.                 if(i==3000)
  58.                         i=0;
  59.                 display();        //調用顯示       
  60.                 delay();       
  61.         }
  62. }

  63. //顯示函數,參數為顯示內容
  64. void display()
  65. {
  66.         P0=0XFF;                        //       
  67.         switch(l_posit){
  68.         case 0:                //選擇千位數碼管,關閉其它位
  69.                 SMG_q=0;
  70.                 SMG_b=1;       
  71.                 SMG_s=1;               
  72.                 SMG_g=1;
  73.                 P0=table[ly_dis[0]];        //輸出顯示內容
  74.                 break;
  75.         case 1:                //選擇百位數碼管,關閉其它位
  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:                //選擇十位數碼管,關閉其它位
  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:                //選擇個位數碼管,關閉其它位
  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++;                //每調用一次將輪流顯示一位
  98.         if(l_posit>3)
  99.                 l_posit=0;       
  100. }

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

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


回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

ID:442459 發表于 2018-12-8 23:47 | 顯示全部樓層
這個程序寫的真的好厲害
回復

使用道具 舉報

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜天堂精品久久久久 | 国内成人免费视频 | 免费视频一区二区 | 欧美一区二区三区大片 | 久久久久久久久久久成人 | 狠狠躁躁夜夜躁波多野结依 | 午夜不卡福利视频 | 韩国成人在线视频 | 999热精品视频 | 亚洲国产精品suv | 欧美一级精品片在线看 | 91在线观看| 国产精品成av人在线视午夜片 | av国产在线观看 | 无码日韩精品一区二区免费 | 一级黄色毛片免费 | 人操人人 | 9191在线播放 | 二区在线观看 | 国产视频一区二区三区四区五区 | 亚洲欧美综合精品久久成人 | 91精品国产综合久久香蕉922 | 欧美一区二区三区视频在线播放 | 亚洲天堂影院 | 久久狠狠 | 韩日一区 | 欧美日韩不卡合集视频 | 久久男人天堂 | 韩日一区二区 | 欧美国产中文字幕 | 91九色porny首页最多播放 | 人人爱干 | 国产一卡二卡三卡 | 国产日韩一区二区三免费高清 | 亚洲欧美久久 | 欧美一级片在线 | 狠狠的干 | 亚洲女人天堂成人av在线 | 国产一区二区三区久久久久久久久 | 国产欧美日韩在线观看 | 精品国产一区一区二区三亚瑟 |