欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5456|回復: 2
打印 上一主題 下一主題
收起左側

單片機可調通、斷延時繼電器控制模塊PCB工程與源碼電路圖等設計資料

[復制鏈接]
跳轉到指定樓層
樓主
Altium Designer畫的帶數碼管延時模塊原理圖和PCB圖如下:(51hei附件中可下載工程文件)


制作出來的實物圖如下:


單片機源程序如下:
  1. /********************************************************************
  2. 匯誠科技
  3. 實現功能:繼電器通、斷時間都可調控制程序(eeprom)
  4. 使用芯片:STC12C5204AD
  5. 晶振:11.0592MHZ
  6. 編譯環境:Keil
  7. 硬件環境:四位數顯兩路輸入三按鍵
  8. 作者:yang
  9. QQ:790244909
  10. 【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息!     
  11. /********************************************************************   
  12. /********************************************************************
  13. 功能說明:繼電器循環通斷控制程序
  14. 繼電器通、斷時間可調,
  15. key1功能鍵:調節模式與實時顯示模式轉換
  16. keynum=0:實時顯示計時模式
  17. keynum=1:調整繼電器設定閉合秒
  18. keynum=2:調整繼電器設定閉合分
  19. keynum=3:調整繼電器設定斷開秒
  20. keynum=4:調整繼電器設定斷開分
  21. 以上四個設定值設定好后都存入eeprom,掉電可記憶
  22. 上電時,繼電器吸合,數顯開始計時,到達設定閉合時間后斷開;數顯清零,
  23.                     數顯開始計時,到設定時間,繼電器閉合,數顯清零。。。
  24.                                         循環下去。。

  25. 設定斷開時間最大是10分59秒
  26. 設定閉合時間最大是10分59秒
  27. ********************************************************************/
  28. #include<STC12C5A60S2.H>                 //庫文件
  29. #include <intrins.h>
  30. #include"eprom.h"
  31. #define uchar unsigned char//宏定義無符號字符型
  32. #define uint unsigned int  //宏定義無符號整型

  33. #define DUAN P2          //P0口控制段
  34. #define WEI  P1          //P2口控制位
  35. sbit jdq= P3^7;
  36. sbit key1=P3^2;        //功能按鍵
  37. sbit key2=P3^3;        //增加
  38. sbit key3=P3^4;        //減小
  39. /********************************************************************
  40.                             初始定義
  41. *********************************************************************/
  42. code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //顯示段碼 數碼管字跟
  43. uchar wei[4]={0X01,0X02,0X04,0X08};                                 //位的控制端
  44. uchar numb[4];              //定義字符串
  45. uchar cnt,keynum;
  46. uchar setfen,setmiao;
  47. uchar setdf,setdm;
  48. uchar miao,fen;
  49. void IapEraseSector(uint addr);
  50. void IapProgramByte(uint addr,uchar dat);
  51. uchar IapReadByte(uint addr);
  52. bit flag=1;        //閉合斷開標志位
  53. /********************************************************************
  54.                             延時函數
  55. *********************************************************************/
  56. void delay(uchar x)    //延時程序 0.1秒
  57. {
  58.         uchar m,n,s;
  59.         for(m=x;m>0;m--)
  60.         for(n=20;n>0;n--)
  61.         for(s=248;s>0;s--);
  62. }
  63. /********************************************************************
  64.                             顯示函數
  65. *********************************************************************/        
  66. void display(uchar a ,uchar b)   //顯示函數
  67. {
  68.       WEI&=0XF0;
  69.           DUAN=seg7code[a/10];
  70.           WEI=wei[0];
  71.           delay(2);

  72.           WEI&=0XF0;  
  73.       DUAN=seg7code[a%10]&0x7f;
  74.           WEI=wei[1];
  75.           delay(2);

  76.           WEI&=0XF0;  
  77.              DUAN=seg7code[b/10];
  78.           WEI=wei[2];
  79.           delay(2);

  80.           WEI&=0XF0;  
  81.       DUAN=seg7code[b%10];
  82.           WEI=wei[3];
  83.           delay(2);
  84.            
  85.           WEI&=0XF0;
  86. }
  87. /********************************************************************
  88.                             按鍵掃描
  89. *********************************************************************/
  90. void keyscan(void)
  91. {
  92. if(key1==0)
  93. {  delay(1);
  94.     if(key1==0)
  95.     {
  96.            while(!key1);
  97.            keynum++;
  98.            TR0=0;
  99.            jdq=0;
  100.            if(keynum>=5)
  101.            {
  102.              keynum=0;
  103.                  miao=fen=0;
  104.                  TR0=1;
  105.                  jdq=1;
  106.           }
  107.     }
  108.   }
  109.   switch(keynum)
  110.   {
  111.     case 1: if(key2==0)
  112.                 {
  113.                           delay(5);
  114.                           if(key2==0)
  115.                   {
  116.                                   while(!key2)display(setfen,setmiao);
  117.                                   setmiao++;
  118.                                   if(setmiao>59)
  119.                                      setmiao=59;
  120.                                   IapEraseSector(0);
  121.                                   IapProgramByte(0,setmiao);  //寫入函數
  122.                           }
  123.                          }
  124.                         if(key3==0)
  125.                         {
  126.                           delay(5);
  127.                           if(key3==0)
  128.                   {
  129.                             while(!key3)display(setfen,setmiao);
  130.                             setmiao--;
  131.                                 if(setmiao==0||setmiao>=250)
  132.                                   setmiao=0;
  133.                             IapEraseSector(0);
  134.                             IapProgramByte(0,setmiao);  //寫入函數
  135.                           }
  136.                         }
  137.                  display(setfen,setmiao);
  138.                         break;
  139.      case 2: if(key2==0)
  140.                  {
  141.                                   delay(5);
  142.                                   if(key2==0)
  143.                           {
  144.                                           while(!key2)display(setfen,setmiao);
  145.                                           setfen++;
  146.                                           if(setfen>99)
  147.                                          setfen=99;
  148.                                           IapEraseSector(512);
  149.                                           IapProgramByte(512,setfen);  //寫入函數
  150.                           }
  151.                          }
  152.                          if(key3==0)
  153.                          {
  154.                                   delay(5);
  155.                                   if(key3==0)
  156.                           {
  157.                                     while(!key3)display(setfen,setmiao);
  158.                                     setfen--;
  159.                                     if(setfen==0||setfen>=250)
  160.                                        setfen=0;
  161.                                     IapEraseSector(512);
  162.                                     IapProgramByte(512,setfen);  //寫入函數
  163.                                   }
  164.                         }
  165.                 //        display(setfen,setmiao);
  166.                         break;
  167.                 case 3:
  168.                     if(key2==0)
  169.                 {
  170.                           delay(5);
  171.                           if(key2==0)
  172.                   {
  173.                                   while(!key2)display(setdf,setdm);
  174.                                   setdm++;
  175.                                   if(setdm>59)
  176.                                      setdm=59;
  177.                                   IapEraseSector(0);
  178.                                   IapProgramByte(0,setmiao);  //寫設定閉合時間秒
  179.                                   IapProgramByte(1,setdm);  //寫設定斷開時間秒
  180.                           }
  181.                          }
  182.                         if(key3==0)
  183.                         {
  184.                           delay(5);
  185.                           if(key3==0)
  186.                   {
  187.                             while(!key3)
  188.                                 display(setdf,setdm);
  189.                             setdm--;
  190.                                 if(setdm==0||setdm>=250)
  191.                                   setdm=0;
  192.                             IapEraseSector(0);
  193.                             IapProgramByte(0,setmiao);  //寫設定閉合時間秒
  194.                                 IapProgramByte(1,setdm);  ////寫設定斷開時間秒
  195.                           }
  196.                         }
  197.                         break;
  198.                 case 4:if(key2==0)
  199.                  {
  200.                                   delay(5);
  201.                                   if(key2==0)
  202.                           {
  203.                                           while(!key2)
  204.                                           display(setdf,setdm);;
  205.                                           setdf++;
  206.                                           if(setdf>10)
  207.                                          setdf=10;
  208.                                           IapEraseSector(512);
  209.                                           IapProgramByte(512,setfen);  //寫設定閉合時間分
  210.                                           IapProgramByte(513,setdf);  //寫設定斷開時間秒
  211.                           }
  212.                          }
  213.                          if(key3==0)
  214.                          {
  215.                                   delay(5);
  216.                                   if(key3==0)
  217.                           {
  218.                                     while(!key3)
  219.                                         display(setdf,setdm);
  220.                                     setdf--;
  221.                                     if(setdf==0||setdf>=250)
  222.                                        setdf=0;
  223.                                     IapEraseSector(512);
  224.                                     IapProgramByte(512,setfen);  //寫設定閉合時間分
  225.                                         IapProgramByte(513,setdf);  //寫設定斷開時間分
  226.                                   }
  227.                         }
  228.                 //        
  229.                         break;
  230.          default : break;
  231.   }
  232. }
  233. /********************************************************************
  234.                            定時器T0初始化
  235. *********************************************************************/
  236. void cshh()
  237. {
  238.          TMOD|=0X01; //定義定時器工作方式
  239.          TH0=0Xa6;
  240.          TL0=0X01;
  241.          ET0=1;
  242.          TR0=1;      //開定時器
  243.          EA=1;       //開中斷
  244. }
  245. /********************************************************************
  246.                             初始化函數
  247. *********************************************************************/
  248. void init_all(void)   
  249. {
  250.         P2M1=0;
  251.         P2M0=0xff;
  252.         P1M1=0;
  253.         P1M0=0x0f;
  254.         P3M1&=0x7f;
  255.         P3M0|=0x80;
  256.         P3=0xff;        
  257. }                  
  258. /********************************************************************
  259.                             主函數
  260. *********************************************************************/
  261. void main()
  262. {         
  263.         init_all();
  264.         setfen=IapReadByte(512);           //讀設定閉合秒
  265.         setdf= IapReadByte(513);                   //讀設定斷開秒
  266.         setmiao=IapReadByte(0);                          //讀設定閉合分
  267.         setdm=IapReadByte(1);                          //讀設定斷開秒
  268.         cshh();                          //定時器初始化
  269.         while(1)
  270.         {  
  271.            if(keynum==0)   //實時計時模式
  272.            {
  273.              display(fen,miao);
  274.            }
  275.            if(keynum>0&&keynum<3) //設定閉合分和秒模式
  276.              display(setfen,setmiao);
  277.            if(keynum>=3&&keynum<5) //設定斷開分和秒模式
  278.              display(setdf,setdm);
  279.        keyscan();
  280.            }
  281. }
  282. /********************************************************************
  283.                            定時器中斷函數
  284. *********************************************************************/
  285. void timer1(void)interrupt 1  
  286. {
  287.    TH0=0Xa6; //定時初值
  288.    TL0=0X01; //定時初值
  289.    cnt++;
  290.    if(cnt>=40)
  291.    {
  292.          cnt=0;
  293.          miao++;
  294.          if(miao>=60)
  295.          {
  296.            miao=0;
  297.            fen++;
  298.          }
  299.     }
  300.         if((fen>=setfen)&&(miao>=setmiao)&&flag)         
  301.     {
  302.             flag=0;
  303.         jdq=0;
  304.                 miao=0;
  305.                 fen=0;
  306.     }
  307.         if((fen>=setdf)&&(miao>=setdm)&&(flag==0))         
  308.     {
  309.         jdq=1;
  310.                 miao=0;
  311.                 fen=0;
  312.                 flag=1;
  313.     }
  314. }
復制代碼
【簡介】
一、 尺寸:88.1cmX44.7cmX2cm
工作電壓:直流12;
特點:
1、可編程(通過下載排針可下載程序),比較靈活
2、具有兩路(IN0IN1)控制/檢測信號輸入端(也可作為兩路AD采樣輸入)
3、有三個按鍵輸入可以用來編程作為調節參數
4、一路DS18B20溫度采集            
5、具有繼電器吸合指示燈
6、可控制交流220V/10A一下設備。(最大控制設備2000W
7、可實現一路信號(低電平有效)輸入控制繼電器延時閉合,延時通斷功能
8、具有繼電器吸合指示燈
四、默認功能:
l 溫度設定要有存儲功能,斷電重新啟動時,設定的溫度值有記憶。
l 設定報警溫度值,設定溫度范圍是0125
l 溫度設定用三個按鍵完成。分別為:key1功能鍵、key2調節鍵
l 按鍵要有防抖動功能。
l 按功能鍵key1時顯示上次的溫度設定值。同時設定溫度的百位值閃爍,按上調鍵一次溫度升高一度,同理,再次按下功能鍵時,十位進行調節。。
l 開機顯示設定溫度值,過5秒后顯示實測溫度。
l 當超過設定溫度值時繼電器吸合,低于設定溫度時斷開
l 串口發送溫度值(注:需要改動板子,外加晶振)
五、可以根據顧客要求設計各種產品模塊,延時、溫度報警、電腦控制等等
六、DS18B20簡介
DS18B20數字溫度傳感器接線方便,封裝成后可應用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號多種多樣,有LTM8877LTM8874等等。主要根據應用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環測溫,鍋爐測溫,機房測溫,農業大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數字測溫和控制領域。
1: 技術性能描述
獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。
、測溫范圍 55℃+125℃,固有測溫誤差(注意,不是分辨率,這里之前是錯誤的)0.5℃
、支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,最多只能并聯8個,實現多點測溫,如果數量過多,會使供電電源電壓過低,從而造成信號傳輸的不穩定。
、工作電源: 3~5V/DC
、在使用中不需要任何外圍元件
測量結果以9~12位數字量方式串行傳送
、不銹鋼保護管直徑 Φ6
、適用于DN15~25, DN40~DN250各種介質工業管道和狹小空間設備測溫
標準安裝螺紋 M10X1, M12X1.5, G1/2”任選
PVC電纜直接出線或德式球型接線盒出線,便于與其它電器設備連接


全部資料51hei下載地址:
帶數碼管可編程可調節延時模塊DXP資料.rar (289.32 KB, 下載次數: 65)
原理圖.doc (30.5 KB, 下載次數: 47)
例程.rar (271.33 KB, 下載次數: 62)
產品使用手冊.docx (4.54 MB, 下載次數: 49)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:4021 發表于 2018-9-28 08:24 | 只看該作者
這個教程和說明對不上吧   
回復

使用道具 舉報

板凳
ID:439389 發表于 2019-8-20 14:02 | 只看該作者
看看,謝謝
回復

使用道具 舉報

無效樓層,該帖已經被刪除
5#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表