久久久久久久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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩三区在线观看 | 五月婷婷激情网 | 亚洲啊v| 国产日韩欧美一区 | 国产激情视频在线免费观看 | 国产欧美三区 | 国产av毛片 | 免费影视在线观看 | 国产精品久久久亚洲 | 男人天堂99 | av一区二区在线观看 | 日日干日日射 | 久久久久久影院 | 99在线视频观看 | 国产精品1区 | 久久久青草婷婷精品综合日韩 | 日本黄色片免费在线观看 | 欧美视频成人 | 国产a区| 色爱综合网 | 99久久免费精品 | 国产精品视频一区二区三区四区国 | www4虎| 超碰免费在线 | 国产在线精品一区 | 久久久久久久一区 | 五月婷婷中文 | 天天操天天插 | 成人高清在线 | 国产成人免费视频网站高清观看视频 | 日本在线精品视频 | 中文字幕人成人 | 成人av资源在线 | 亚洲精品日韩精品 | 欧美一级网站 | 福利视频大全 | 亚洲 欧美 综合 | www.蜜桃av | 在线观看国产视频 | 亚洲成人三级 | 天天干天天操天天射 |