wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stc89c52rc+ds18b20+tm1650孵化器溫控器程序終于搞成了 附原理圖PCB

  [復制鏈接]
跳轉到指定樓層
樓主
ID:680729 發表于 2022-11-23 22:05 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
歷經千辛萬苦,我的孵化器溫控器終于搞成了。在此感謝51黑網友的大力支持。程序和圖紙奉上,歡迎大家指正,并加以完善。
圖片詳見:http://www.izizhuan.cn/bbs/dpj-224670-1.html

制作出來的孵化器實物圖如下:


Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機源程序如下:
  1. /******************************************
  2. 名稱:aip650的驅動
  3. 時間:2022-11-13
  4. 版本:
  5. 作者:cjz
  6. **************************************************/
  7. //頭文件
  8. #include <STC89X52RC.H>
  9. #include <absacc.h>
  10. #include  <intrins.h>
  11. #include <EEPROM.H>
  12. /*************************************************
  13.              常量、變量定義區




  14. ***************************************************/
  15. //常量定義
  16. #define true 1
  17. #define  false 0
  18. #define  uchar unsigned char
  19. #define  uint unsigned int


  20. //數組定義
  21. uchar Display_Code[13]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x80,0x40,0x00};
  22.          //共陰數碼管段碼 0,   1,  2,  3,  4 , 5,   6,  7,  8,  9,  .,   -,  不亮
  23. //uchar  Display_16Code[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
  24. //16進 制段碼(用于顯示鍵值)0,   1,   2,  3,  4,  5,   6, 7,  8,   9,  a,   b,   c,   d,   e,   f
  25. uchar Dig_Bit_Code[4]={0x68,0x6a,0x6c,0x6e};//650位碼
  26. uchar Light_Level_Code[8]={0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x01};//亮度調節


  27. uchar keyvalue;
  28. uint wendu;//用于存儲溫度值
  29. uint maxwendu;
  30. uchar maxwenduH;//最高溫度高8位
  31. uchar maxwenduL;//最高溫度低8位
  32. uint minwendu;
  33. uchar minwenduH;//最低溫度高8位
  34. uchar minwenduL;
  35. uchar menu=0, cou;//菜單標志,計數,cou1
  36. uint h;//溫度計算使用
  37. uint temp;//溫度返回值
  38. //uchar k;


  39. /***************************溫度小數部分用查表法*****************/
  40. uchar ditab[16]=
  41. {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
  42. uchar temp_data[2]={0x00,0x00};//讀出溫度暫存
  43. uchar display[5]={0x00,0x00,0x00,0x00,0x00};//顯示單元數據,共4個數據和一個運算暫用


  44. //定義IO口
  45. sbit   SDA=P3^7;
  46. sbit   SCL=P3^6;
  47. //sbit   beep=P1^4;
  48. sbit    DQ=P1^1;      //ds18b20溫度輸入口
  49. //sbit    DIN=P1^3;     //LED小數點控制


  50. /**********************************函數定義區************************************/
  51. //I2C相關
  52. /*******************************************************************************
  53. 功能:I2CWait
  54. 描述:I2C延時
  55. 參數:
  56. 返回:
  57. *******************************************************************************/
  58. void I2CWait(void)
  59. {_nop_();_nop_();_nop_();_nop_();
  60. }








  61. /*******************************************************************************
  62. 功能:I2CStart
  63. 描述:開啟I2C總線
  64. 參數:
  65. 返回:位變量,1=I2C總線可用,0=不可用
  66. *******************************************************************************/
  67. bit I2CStart(void)
  68. {   
  69.         SDA=1;
  70.         SCL=1;
  71.         I2CWait();
  72. if(!SDA)
  73.         return false;//SDA線為低電平則總線忙,退出
  74.                 SDA=0;
  75.         I2CWait();
  76.         while(SDA)
  77.                 return false;//SDA線為高電平則總線出錯,退出
  78.         SCL=0;
  79.         I2CWait();
  80.         return true;


  81. }


  82. /*******************************************************************************
  83. 功能:I2CStop(void)
  84. 描述:關閉I2C總線
  85. 參數:
  86. 返回:
  87. *******************************************************************************/
  88. void I2CStop(void)
  89. {
  90.   SDA=0;
  91.         SCL=0;
  92.         I2CWait();
  93.         SCL=1;
  94.         I2CWait();
  95.         SDA=1;


  96. }




  97. /*******************************************************************************
  98. 功能:I2CSendAck
  99. 描述:發送ACK信號
  100. 參數:
  101. 返回:
  102. *******************************************************************************/
  103. void I2CSendAck(void)
  104. {
  105.         SDA=0;
  106.         SCL=0;
  107.         I2CWait();
  108.         SCL=1;
  109.         I2CWait();
  110.         SCL=0;
  111. }




  112. /*******************************************************************************
  113. 功能:I2CSendNoAck
  114. 描述:發送  No Ack
  115. 參數:
  116. 返回:
  117. *******************************************************************************/
  118. /*void I2CSendNoAck(void)
  119. {   
  120.         SDA=1;
  121.         SCL=0;
  122.         I2CWait();
  123.         SCL=1;
  124.         I2CWait();
  125.         SCL=0;        
  126.         
  127. }*/


  128. /*******************************************************************************
  129. 功能:I2CWaitAck
  130. 描述:讀取ACK信號
  131. 參數:
  132. 返回:位變量, 1=有ACK,0=無ACK
  133. *******************************************************************************/
  134. bit I2CWaitAck(void)
  135. {
  136.      uchar errtime=255;
  137.         SCL=0;
  138.         SDA=1;
  139.         I2CWait();
  140.         SCL=1;
  141.         I2CWait();
  142.         while(SDA)
  143.         {
  144.                 errtime--;
  145.                 if(!errtime)
  146.                         SCL=0;
  147.                 return false;
  148.         }
  149.         SCL=0;
  150.         return true;
  151.     }


  152. /*******************************************************************************
  153. 功能:I2CSendByte
  154. 描述:向總線發送一個字節
  155. 參數:待發送字節demand,發送順序指示order
  156.                  order=1,從HI-->LO發送8bit數
  157.                  order=0,從LO-->HI發送8bit數
  158. 返回:
  159. *******************************************************************************/
  160. void I2CSendByte(uchar demand,bit order)
  161.                 {
  162.                         uchar i=8;
  163.                         if(order)
  164.                         {
  165.                                 while(i--)
  166.                                 {
  167.                                         SCL=0;
  168.                                         _nop_();
  169.                                         SDA=(bit)(demand&0x80);
  170.                                         demand<<=1;
  171.                                         I2CWait();
  172.                                         SCL=1;
  173.                                         I2CWait();
  174.                                 }
  175.                                 SCL=0;
  176.                         }
  177.                         else
  178.                         {
  179.                                 while(i--)
  180.                                 {
  181.                                         SCL=0;
  182.                                         _nop_();
  183.                                         SDA=(bit)(demand&0x01);
  184.                                         demand>>=1;
  185.                                         I2CWait();
  186.                                         SCL=1;
  187.                                         I2CWait();
  188.                                 }
  189.                                 SCL=0;
  190.                         }
  191.                 }


  192. /*******************************************************************************
  193. 功能:I2CReceiveByte
  194. 描述:從總線讀一個字節
  195. 參數:
  196. 返回:
  197. *******************************************************************************/
  198. uchar I2CReceiveByte(void)
  199. {
  200.         uchar i=8;
  201.         uchar ddata=0;
  202.         SDA=1;
  203.         while(i--)
  204.         {
  205.                 ddata>>=1;//數據從低位開始讀取
  206.                 SCL=0;
  207.                 I2CWait();
  208.                 SCL=1;
  209.                 I2CWait();//從低位開始 ddata|=SDA;ddata>>=1
  210.                 if(SDA)
  211.                 {
  212.                                    ddata|=0x80;
  213.                 }
  214.         }
  215.         SCL=0;
  216.              return ddata;
  217. }




  218. /*******************************************************************************
  219. 功能:從650讀鍵值
  220. 描述:
  221. 參數:
  222. 返回:uchar鍵值
  223. *******************************************************************************/
  224. uchar AipReadKey()
  225. {
  226.                   uchar key;
  227.                      I2CStart();
  228.                      I2CSendByte(0x4f,1);
  229.                  if(I2CWaitAck())
  230.                                          {
  231.                                              key=I2CReceiveByte();
  232.                                                 
  233.                                            I2CSendAck();
  234.                                          }
  235.              I2CStop();
  236.                                          return key;
  237. }


  238. /*******************************************************************************
  239. 功能:向650發送地址,和數據
  240. 描述:
  241. 參數:
  242. 返回:
  243. *******************************************************************************/
  244. void Aip650_Set(uchar add,uchar dat)
  245. {
  246.   //寫顯存必須從高地址開始寫
  247.         I2CStart();
  248.         I2CSendByte(add,1);
  249.         I2CSendAck();
  250.         I2CSendByte(dat,1);
  251.         I2CSendAck();
  252.         I2CStop();


  253. }




  254. /*******************************************************************************
  255. 功能:驅動數碼管顯示數字
  256. 描述:位碼數組中選擇對應的位地址,在段碼數組中選擇對應數字的段碼發送給650
  257. 參數:
  258. 返回:
  259. *******************************************************************************/
  260. void Aip650_DisPlay(uchar Dig_Bit,uchar Display_num)
  261. {
  262.         Aip650_Set(Dig_Bit_Code[Dig_Bit-1],Display_Code[Display_num]);


  263.          }






  264. /*******************************************************************************
  265. 功能:驅動數碼管顯示16進制數的代碼
  266. 描述:
  267. 參數:
  268. 返回:


  269. void Aip650_DisPlay16(uchar Dig_Bit16,uchar Display_num16)
  270. {   
  271.      Aip650_Set(Dig_Bit_Code[Dig_Bit16-1],Display_16Code[Display_num16]);






  272.            }


  273. *******************************************************************************/






  274. /*******************************************************************************
  275. 功能:650清屏
  276. 描述:
  277. 參數:
  278. 返回:
  279. *******************************************************************************/
  280. void Aip650_CLR()
  281. {
  282.     uchar i;
  283.         for(i=0;i<4;i++)
  284.         {
  285.         Aip650_Set(Dig_Bit_Code[i],0x00);[/i][i]
  286.         }


  287. }


  288. /*******************************************************************************
  289. 功能:設置顯示亮度
  290. 描述:
  291. 參數:
  292. 返回:
  293. *******************************************************************************/
  294. void Light_Level_Set(uchar level)
  295. {
  296.         Aip650_Set(0x48,Light_Level_Code[level-1]);
  297. }


  298. //溫度用
  299. /*******************************************************************************
  300. 功能:delay 延時程序 11us
  301. 描述:
  302. 參數:
  303. 返回:
  304. *******************************************************************************/
  305. void delay(uint t)
  306. {
  307. for(;t>0;t--);
  308. }


  309. /*******************************************************************************
  310. 功能:Ds18b20 復位函數
  311. 描述:
  312. 參數:
  313. 返回:
  314. *******************************************************************************/
  315. void ow_reset(void)
  316. {
  317. uchar presence=1;
  318.         while(presence)
  319.         {while(presence)
  320.                 {
  321.                         DQ=1;
  322.                         _nop_();_nop_();//從高拉到低
  323.                         DQ=0;
  324.                         delay(50);//550us
  325.                         DQ=1;
  326.                         delay(6);//66us
  327.                         presence=DQ;//presence=0復位成功,繼續下一步
  328.                 }
  329.                 delay(45);//延時500us
  330.                 presence=~DQ;
  331.         }
  332.         DQ=1;  //拉高電平
  333. }




  334. /*******************************************************************************
  335. 功能:Ds18b20寫命令函數
  336. 描述:向總線上寫1個字節
  337. 參數:
  338. 返回:
  339. *******************************************************************************/
  340. void write_byte(uchar val)
  341. {
  342. uchar i;
  343.         for(i=8;i>0;i--)
  344.         {DQ=1;_nop_();_nop_();//從高拉低
  345.         DQ=0; _nop_();_nop_();_nop_();_nop_();//5us
  346.                 DQ=val&0x01;// 最低位移出
  347.         delay(6);//66us
  348.         val=val/2;//右移一位}
  349. }
  350. DQ=1;
  351. delay(1);
  352. }




  353. /*******************************************************************************
  354. 功能:從18b20總線上讀1字節
  355. 描述:
  356. 參數:
  357. 返回:value
  358. *******************************************************************************/
  359. uchar read_byte(void)
  360. {
  361. uchar i;
  362.         uchar value=0;
  363.         for(i=8;i>0;i--)
  364.         {
  365.                 DQ=1;_nop_();_nop_();
  366.                 value>>=1;
  367.                 DQ=0;_nop_();_nop_();_nop_();_nop_();//4us
  368.                 DQ=1;_nop_();_nop_();_nop_();_nop_();//4us
  369.                 if(DQ)value|=0x80;
  370.                 delay(6);
  371.         }
  372.         
  373.         DQ=1;
  374.         return(value);
  375. }






  376. /*******************************************************************************
  377. 功能:讀出溫度
  378. 描述:
  379. 參數:
  380. 返回:
  381. *******************************************************************************/
  382. read_temp()
  383. {
  384. ow_reset();
  385.         delay(200);//總線復位
  386.         write_byte(0xcc);//發命令
  387.         write_byte(0x44);//發轉換命令
  388.         ow_reset();
  389.         delay(1);
  390.         write_byte(0xcc);//發命令
  391.         write_byte(0xbe);
  392.         temp_data[0]=read_byte();//讀溫度的低字節
  393.         temp_data[1]=read_byte();//讀溫度的高字節
  394.         temp=temp_data[1];
  395.         temp<<=8;
  396.         temp=temp|temp_data[0];// 兩字節合成一個整型變量
  397.         return temp;
  398. }










  399. /*******************************************************************************
  400. 功能:溫度處理
  401. 描述:二進制數的高字節的低半字節和低字節的高半字節組成一個字,這個字節轉換為十進制后,
  402. 就是溫度的百、十、個位值,而剩下的低字節的低半字節轉化成十進制后,就是溫度值的小數部分。
  403. 參數:
  404. 返回:
  405. *******************************************************************************/
  406. void work_temp(uint tem)
  407. {
  408.         uchar n=0;
  409.         if(tem>6348)          //溫度正負判斷
  410.         {tem=65536-tem;n=1;}   //負溫度求補碼,標志位置1
  411.         display[4]=tem&0x0f;
  412.         display[0]=ditab[display[4]];//存入小數部分的顯示值
  413.         display[4]=tem>>4;
  414.         display[3]=display[4]/100;//取百位數據暫存
  415.         display[1]=display[4]%100;//取后兩位數據暫存
  416.         display[2]=display[1]/10;//取十位數據暫存
  417.         display[1]=display[1]%10;
  418.         /***********符號位顯示判斷*************************/
  419.         if(!display[3])
  420.         {
  421.         display[3]=0x0c;     //最高位為0時不顯示
  422.           if(!display[2])
  423.         {
  424.         display[2]=0x0c;     //次高位為0時不顯示
  425.         }
  426.         if(n)
  427.         {display[3]=0x0b;}    //負溫度時最高位顯示“-”
  428. }
  429. }


  430. /*******************************************************************************
  431. 功能:顯示溫度
  432. 描述:處理溫度數值,發送650
  433. 參數:
  434. 返回:
  435. *******************************************************************************/
  436. void xianshiwendu(uint tem1)
  437. {
  438.          work_temp(tem1);
  439.           //Aip650_CLR();
  440.          Light_Level_Set(2);
  441.         // Aip650_DisPlay(2,10);//顯示小數點
  442.          Aip650_DisPlay(3,display[2]);//十位
  443.    Aip650_Set(Dig_Bit_Code[1],Display_Code[display[1]]|0x80);//個位加小數點
  444.         //Aip650_DisPlay(2,display[1]);//個位
  445.           Aip650_DisPlay(1,display[0]);//小數
  446. }




  447. /*******************************************************************************
  448. 功能:顯示鍵值
  449. 描述:將按鍵的16進制代碼送顯示
  450. 參數:
  451. 返回:


  452. void xianshijianzhi(uchar key1)
  453. {uchar keyL,keyH;
  454.           keyL=key1&0x0f;
  455.                 Light_Level_Set(4);
  456.         Aip650_DisPlay16(1,keyL);
  457.         keyH=key1>>4;
  458.         
  459.         Aip650_DisPlay16(2,keyH);
  460. }
  461. *******************************************************************************/
  462. /*********************************************************************************************
  463. 函數名:定時/計數器初始化函數
  464. 調  用:T_C_init();
  465. /**********************************************************************************************/
  466. void Timer0_init (void){
  467.         TMOD = 0x11; //高4位控制T/C1 [ GATE,C/T,M1,M0,GATE,C/T,M1,M0 ]
  468.         EA = 1;        //中斷總開關
  469.         TH0 = 0x3c; //16位計數寄存器T0高8位(寫入初值)
  470.         TL0 = 0xb0; //16位計數寄存器T0低8位
  471.         ET0 = 1; //T/C1中斷開關
  472.         TR0 = 0; //T/C1關閉開關        
  473. }


  474. /*********************************************************************************************
  475. 函數名:定時/計數器1中斷處理函數
  476. 調  用:[T/C1溢出后中斷處理]
  477. /*****************************/
  478. void Timer0(void) interrupt 1  using 1{ //切換寄存器組到1
  479.     cou++;                      // 軟計數器加1   
  480.     if(cou > 99){// 計數值到(5s)
  481.         cou = 0;// 軟計數器清零
  482.         eepromEraseSector(0x2000); //擦除整個扇區
  483.         eepromWrite(0x2000,maxwenduH );//將 新的溫度上限值高8位寫入 EEPROM
  484.         eepromWrite(0x2001, maxwenduL);//將 新的溫度上限值低8位寫入 EEPROM
  485.         eepromWrite(0x2002,minwenduH );//將 新的溫度下限值高8位寫入 EEPROM
  486.         eepromWrite(0x2003, minwenduL);//將 新的溫度下限值低8位寫入 EEPROM         
  487.         TR0 = 0; //T/C1停止計數
  488.         menu=0;//返回 主菜單的溫度顯示界面                 
  489.     }               
  490.         TH0 = 0x3c; //16位計數寄存器T0高8位(重新寫入初值)
  491.         TL0 = 0xb0; //16位計數寄存器T0低8位
  492. }


  493. /*******************************************************************************
  494. 功能:
  495. 描述:
  496. 參數:
  497. 返回:
  498. *******************************************************************************/
  499. void Delay1ms (unsigned int a){ // 1ms延時程序
  500.         unsigned int i;
  501.         while( --a != 0){
  502.                 for(i = 0; i < 629; i++);//STC15單片機在外部晶振為12MHz時i值上限為629  
  503.         }                                                      
  504. }


  505. /******************************主函數*****************************************
  506. 功能:
  507. 描述:
  508. 參數:
  509. 返回:
  510. *******************************************************************************/
  511. void main()
  512. {  
  513.    P3=0x00;
  514.          P1=0x00;
  515.          Aip650_CLR();
  516.          Timer0_init();//定時器初始化
  517.          
  518.         
  519.          //從eeprom讀出開啟和停止溫度
  520.          maxwenduH=eepromRead(0x2000);
  521.          maxwenduL=eepromRead(0x2001);
  522.          maxwendu=maxwenduH*256+maxwenduL;//讀出停止溫度
  523.          minwenduH=eepromRead(0x2002);
  524.          minwenduL=eepromRead(0x2003);
  525.          minwendu=minwenduH*256+minwenduL;//讀出開啟溫度*/
  526.         
  527.          
  528.           while(1)
  529.                 {
  530.                          keyvalue=AipReadKey();
  531.         /**********************顯示溫度界面******************************/
  532.                   if(menu==0){
  533.                           // for(k=15;k>0;k--){
  534.                            wendu=read_temp();
  535.                            
  536.                                 xianshiwendu(wendu);
  537.                         
  538.                                 /* if(keyvalue==0xfa){//k4按下溫度上限下限值恢復出廠設置
  539.                                 Delay1ms(10);
  540.                                 if(keyvalue==0xfa){
  541.                                        
  542.                                         maxwendu=382;//溫度上限38度
  543.                                         minwendu=370;//溫度下限37度
  544.                                         minwenduL=minwendu;
  545.                                         minwenduH=(minwendu>>8);
  546.                                         maxwenduL=maxwendu;
  547.                                         maxwenduH=(maxwendu>>8);
  548.                                         eepromEraseSector(0x2000); //擦除整個扇區
  549.                                         eepromWrite(0x2000,maxwenduH );//將 新的溫度上限值高8位寫入 EEPROM
  550.                                         eepromWrite(0x2001, maxwenduL);//將 新的溫度上限值低8位寫入 EEPROM
  551.                                         eepromWrite(0x2002,minwenduH );//將 新的溫度下限值高8位寫入 EEPROM
  552.                                         eepromWrite(0x2003, minwenduL);//將 新的溫度下限值低8位寫入 EEPROM         
  553.                                        
  554.                                 }
  555.                         }        */
  556.                    }        
  557.                         /*********************進入調溫度上限界面*******************************/
  558.                   if(menu==1){
  559.                          if(minwendu>maxwendu) //如果下限溫度高于上限溫度,顯示00
  560.                          { Aip650_CLR();
  561.                            Light_Level_Set(2);
  562.                            Aip650_DisPlay(1,0);
  563.                            Aip650_DisPlay(2,0);
  564.                          }
  565.                          else
  566.                          {
  567.                                 xianshiwendu(maxwendu);}
  568.                                 
  569.                          if(keyvalue==0xf2){
  570.                                 Delay1ms(10);
  571.                                  if(keyvalue==0xf2){
  572.                                 maxwendu++; //按下K2鍵則溫度上限加零點一度
  573.                                  cou=0;//重新計數
  574.                                  TR0 = 1; //T/C1啟動開關
  575.                                    maxwenduL=maxwendu;
  576.                                 maxwenduH=(maxwendu>>8);                                
  577.                                  while(keyvalue!=0xf2);
  578.                                 
  579.                                 }
  580.                           }
  581.                         
  582.                          if(keyvalue==0xe2){
  583.                                 Delay1ms(10);
  584.                                  if(keyvalue==0xe2){
  585.                                 maxwendu--; //按下K1鍵則溫度上限減零點一度
  586.                                  cou=0;//重新計數
  587.                                  TR0 = 1; //T/C1啟動開關
  588.                            maxwenduL=maxwendu;
  589.                                 maxwenduH=(maxwendu>>8);                                
  590.                                  while(keyvalue!=0xe2);
  591.                                 
  592.                                 }
  593.                           }
  594.                         
  595.                    }
  596.         /*********************進入調溫度下限界面*******************************/
  597.           if(menu==2){
  598.                          if(minwendu>maxwendu) //如果下限溫度高于上限溫度,顯示00
  599.                          { Aip650_CLR();
  600.                            Light_Level_Set(2);
  601.                            Aip650_DisPlay(1,0);
  602.                            Aip650_DisPlay(2,0);
  603.                          }
  604.                          else
  605.                          {
  606.                           xianshiwendu(minwendu);}
  607.                                 if(keyvalue==0xf2){
  608.                                 Delay1ms(10);
  609.                                  if(keyvalue==0xf2){
  610.                                 minwendu++; //按下K2鍵則溫度下限加零點一度
  611.                                  cou=0;//重新計數
  612.                                  TR0 = 1; //T/C1啟動開關
  613.                                    minwenduL=minwendu;
  614.                                 minwenduH=(minwendu>>8);                                 
  615.                         
  616.                                  while(keyvalue!=0xf2);
  617.                                 
  618.                                 }
  619.                         }
  620.                           
  621.                         
  622.                          if(keyvalue==0xe2){
  623.                                 Delay1ms(10);
  624.                                  if(keyvalue==0xe2){
  625.                                 minwendu--; //按下K1鍵則溫度下限減零點一度
  626.                                  cou=0;//重新計數
  627.                                  TR0 = 1; //T/C1啟動開關
  628.                            minwenduL=minwendu;
  629.                                 minwenduH=(minwendu>>8);
  630.                                  while(keyvalue!=0xe2);
  631.                                 
  632.                                 }
  633.                           }
  634.                         
  635.                   }
  636.                         /*************************按下K3鍵進入下限菜單設置界面***************************/
  637.                  
  638.                          if(keyvalue==0xea){
  639.                          cou=0;//重新計數
  640.                          TR0 = 1; //T/C1啟動開關
  641.                             menu=2; //按下K3鍵則菜單加一
  642.                            //if(menu>2){menu=0;}
  643.                         
  644.                                  while(keyvalue!=0xea);
  645.                         }
  646.                                    /*************************按下K4鍵進入上限菜單設置界面***************************/
  647.                         if(keyvalue==0xfa){
  648.                          cou=0;//重新計數
  649.                          TR0 = 1; //T/C1啟動開關
  650.                             menu=1; //按下K3鍵則菜單加一
  651.                           // if(menu>2){menu=0;}
  652.                         
  653.                                  while(keyvalue!=0xfa);
  654.                         }
  655.                                           
  656.                         
  657.         
  658.                         
  659. }
  660.                 }
復制代碼

下載:
Keil代碼.zip (65.69 KB, 下載次數: 84)
孵化器溫控器PCB文件.7z (2.64 MB, 下載次數: 61)

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

13#
ID:968288 發表于 2023-7-18 14:18 | 只看該作者
418854190 發表于 2022-11-24 14:52
用這個單片機太浪費了   換成16腳的也應該夠用
我現在不喜歡用數碼管了 用液晶屏挺好 走線簡單 顯示的內容 ...

回復

使用道具 舉報

12#
ID:968288 發表于 2023-7-18 14:14 | 只看該作者
reking8 發表于 2023-6-28 11:40
老王家是誰家?

老王電子數碼DIY
回復

使用道具 舉報

11#
ID:929517 發表于 2023-6-28 11:40 來自觸屏版 | 只看該作者
418854190 發表于 2022-11-24 14:52
用這個單片機太浪費了   換成16腳的也應該夠用
我現在不喜歡用數碼管了 用液晶屏挺好 走線簡單 顯示的內容 ...

老王家是誰家?
回復

使用道具 舉報

10#
ID:1075398 發表于 2023-5-24 08:22 | 只看該作者
boss654321 發表于 2022-11-26 18:51
能把想法變現實不錯喲,像樓主學習.我也想搞個自動喂魚的,一直都在醞釀中

自動喂魚的  有人搞好了,你在論壇里翻翻,
回復

使用道具 舉報

9#
ID:1044744 發表于 2023-3-27 10:50 | 只看該作者
418854190 發表于 2022-11-24 14:52
用這個單片機太浪費了   換成16腳的也應該夠用
我現在不喜歡用數碼管了 用液晶屏挺好 走線簡單 顯示的內容 ...

請問這個有仿真源碼嗎
回復

使用道具 舉報

8#
ID:229641 發表于 2023-1-1 16:30 來自觸屏版 | 只看該作者
418854190 發表于 2022-11-24 14:52
用這個單片機太浪費了   換成16腳的也應該夠用
我現在不喜歡用數碼管了 用液晶屏挺好 走線簡單 顯示的內容 ...

有代碼跟原理圖嗎?
回復

使用道具 舉報

7#
無效樓層,該帖已經被刪除
6#
無效樓層,該帖已經被刪除
5#
無效樓層,該帖已經被刪除
地板
ID:65707 發表于 2022-11-26 18:51 | 只看該作者
能把想法變現實不錯喲,像樓主學習.我也想搞個自動喂魚的,一直都在醞釀中
回復

使用道具 舉報

板凳
ID:261025 發表于 2022-11-24 14:52 | 只看該作者
用這個單片機太浪費了   換成16腳的也應該夠用
我現在不喜歡用數碼管了 用液晶屏挺好 走線簡單 顯示的內容也多   
下面是我做的溫控器 準備用來控制電暖風    手里沒有合適的實體按鍵就用了觸摸按鍵  屏在老王家買的

51hei截圖20221124144436.jpg (29.97 KB, 下載次數: 129)

51hei截圖20221124144436.jpg

51hei截圖20221124144451.jpg (44.35 KB, 下載次數: 118)

51hei截圖20221124144451.jpg

51hei截圖20221124144503.jpg (29.66 KB, 下載次數: 131)

51hei截圖20221124144503.jpg

51hei截圖20221124144523.jpg (53.47 KB, 下載次數: 127)

51hei截圖20221124144523.jpg

51hei截圖20221124144534.jpg (27.75 KB, 下載次數: 131)

51hei截圖20221124144534.jpg
回復

使用道具 舉報

沙發
ID:45879 發表于 2022-11-24 10:02 | 只看該作者
有沒有成品圖  欣賞一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
日本中文字幕在线免费观看| 黄色在线播放| 人妻中文字幕一区| 在线观看精品视频看看播放| 色网在线播放| 四虎精品在线| 欧美xxx黑人xxx水蜜桃| 视频在线观看免费影院欧美meiju 视频一区中文字幕精品 | 日本熟妇人妻xxxxx| 欧美xxxxxbbbbb| 任我爽在线视频| 亚洲一区精品在线观看| 国产精品一区二区三区高清在线 | 黄页网站在线| 日本在线成人| 亚洲黄页一区| 99精品桃花视频在线观看| 亚洲中国最大av网站| 日韩亚洲欧美在线| 久久久久久91| 久久综合九色99| 青青在线免费观看视频| 影音先锋男人在线| 亚洲综合免费视频| 五十路亲子中出在线观看| 欧美视频免费一区二区三区| 三上悠亚亚洲一区| 国产欧美日韩在线一区二区| 日日夜夜精品视频免费| ●精品国产综合乱码久久久久| 91精品国产欧美一区二区18| 97在线免费视频| 香蕉精品视频在线| 亚洲第一黄色网址| 国产乱码精品一区二区三区精东| 福利社在线免费视频| 亚洲色图美国十次| 成人aaaa| av一二三不卡影片| 欧美一区二区女人| 国产精品扒开腿做爽爽爽男男| 91视频 - 88av| 久久婷婷五月综合| 色哟哟中文字幕| 在线观看黄网| 成午夜精品一区二区三区软件| 蜜桃精品在线观看| 91国产丝袜在线播放| 国精产品一区一区三区有限在线| 一级全黄肉体裸体全过程| 一区二区黄色片| 五月婷婷在线观看视频| 精品视频二区| 国产一区二区在线| 久久久精品影视| 亚洲精品之草原avav久久| 狠狠色综合网站久久久久久久| 日本亚洲一区二区三区| 国产精品久久久久久无人区| 国产剧情av在线| 99久久这里有精品| 极品少妇xxxx偷拍精品少妇| 欧美日韩高清影院| 国产精品美女免费看| 国内外免费激情视频| 丰满少妇乱子伦精品看片| 成年人网站免费观看| 国产私拍福利精品视频二区| 日韩精品一区第一页| 色综合久久88色综合天天免费| 91国产美女视频| www.com毛片| av黄色在线播放| av手机免费观看| www.久久99| 粉嫩嫩av羞羞动漫久久久| 精品欧美黑人一区二区三区| 国产自产在线视频一区| 国产麻豆天美果冻无码视频| 在线观看精品视频看看播放| 少女频道在线观看免费播放电视剧| 亚洲a一区二区三区| 自拍视频在线观看一区二区| 久久久国产精品x99av| 国产 国语对白 露脸 | 无人区乱码一区二区三区| 国产美女一区二区| 亚洲高清免费观看高清完整版| 久久婷婷开心| www.av免费| 女人成午夜大片7777在线| 亚洲精品三区| 91污在线观看| 久久成年人视频| 免费在线观看毛片网站| 国产欧美久久久精品免费| 黄色国产在线| 狠色狠色综合久久| 欧美日韩电影在线| 九九九九九精品| 成人欧美一区二区三区黑人一| 美女又爽又黄免费动漫| 一区二区亚洲视频| 国产精品欧美经典| 日本国产欧美一区二区三区| 亚洲最大天堂网| 最近中文av字幕在线中文 | 欧美一区二区精美| 色就是色欧美| 亚洲天堂一区在线| 毛片免费在线观看| 在线看片欧美| 日韩午夜电影在线观看| 亚洲精品国产精品久久| 亚洲激情视频一区| 天堂在线一二区| 亚洲日本视频| 精品国产三级电影在线观看| 一区二区不卡在线视频 午夜欧美不卡' | 一区二区三区亚洲| 国产手机免费视频| 精品人妻无码一区二区| 亚洲精品白浆| 激情五月激情综合网| 伊人久久久久久久久久久| 国产伦精品一区二区三区四区视频_| 国产精品久久久午夜夜伦鲁鲁| av网址在线看| 国产 日韩 欧美大片| 欧美日本在线视频中文字字幕| 国产aⅴ爽av久久久久| 国产亚洲精品久久久网站好莱| 日本免费精品| 亚洲不卡av一区二区三区| 国产精品白丝jk白祙| 国产第一页在线播放| 国产污视频在线| 视频一区视频二区在线观看| 亚洲欧美国产精品久久久久久久| 97超碰青青草| 鲁啊鲁视频在线精品| 亚洲一区二区三区中文字幕在线观看 | 男女啪啪无遮挡网站| 素人一区二区三区| 国产精品嫩草影院av蜜臀| 国产在线久久久| 久久国产波多野结衣| 日本福利午夜视频在线| 日本欧美一区二区| 自拍偷拍亚洲精品| 青娱乐国产精品视频| 变态黄色小视频网站| 天天久久综合| 亚洲成人网在线| 欧美日韩亚洲自拍| 一个人看的视频www在线观看免费 一个人看免费www视频有多爽 | 精品国产一区二区国模嫣然| 欧美色图色综合| 日韩欧美在线视频一区二区| 国产精品极品在线观看| 欧美中文字幕一二三区视频| 一级做a爰片久久| 日本xxxx人| 91精品网站在线观看| 17c精品麻豆一区二区免费| 精品在线观看一区二区| 国产乡下妇女三片| 神马久久资源| 国产精品理伦片| 精品蜜桃一区二区三区| 波多野结衣电车痴汉| 欧美男人天堂| 亚洲人成在线播放网站岛国| 欧美日韩国产综合在线| 精品国产亚洲av麻豆| 国产精品原创视频| 午夜电影一区二区| 欧美激情亚洲天堂| 最新版天堂中文在线官网| 欧美性生活一级片| 日韩久久免费av| 黄色av网址在线播放| 国产精品在线| 999久久久91| 亚洲裸体xxxx| 97色在线观看| 一区二区三区精品在线| 91免费看片在线| 中文字幕在线观看视频网站| 亚洲AV无码精品自拍| 91久久精品无嫩草影院| 福利精品在线| 亚洲卡通欧美制服中文| 91精品少妇一区二区三区蜜桃臀| 欧美无遮挡国产欧美另类| 九七久久人人| 黄色成人精品网站| 天天综合天天综合色| 国产精品91久久久久久| 女人喷潮完整视频| 国产又粗又猛又爽又黄视频| h动漫在线视频| 欧美日韩一区二区综合| 亚洲色图视频网站| 欧美高清视频在线| 少妇无码av无码专区在线观看 | 97伦理在线四区| 东京热av一区| 美女把腿扒开让男人桶免费 | 日本一区免费| 国产黄色大片免费看| 国产视频1区| 成人日韩在线观看| 狠狠狠色丁香婷婷综合激情| 精品久久五月天| 中文字幕一区二区三区四区五区人 | 国产精品久久久久久久久久三级| 亚洲综合av在线播放| 人妻精品无码一区二区| 青春草在线视频| 麻豆国产欧美日韩综合精品二区| 欧美一区2区视频在线观看| 久久资源av| 久久国产精品免费看| 三级视频网站在线| 日韩天堂av| 欧美α欧美αv大片| 免费观看黄色的网站| 少妇一级淫片日本| 激情在线小视频| 麻豆国产欧美一区二区三区| 亚洲欧美日韩精品久久奇米色影视| 黄色片免费在线观看视频| 中文字幕永久在线视频| 精品视频在线一区二区| 精品综合免费视频观看| 日韩在线欧美在线国产在线| 小泽玛利亚视频在线观看| 久久综合香蕉| 国产精品一级在线观看| 亚洲精品欧美激情| 国产富婆一区二区三区 | 亚洲成人影院少妇| 亚洲欧美视频| 国产一级揄自揄精品视频| aa免费在线观看| 日本男人操女人| 性欧美videos白嫩| 99tv成人影院| 精品国产乱码久久久久久天美 | 久久久女人电视剧免费播放下载| 久久久久99人妻一区二区三区| 国产免费1000拍拍拍| 欧美大胆a级| 欧美日韩美女一区二区| 欧美日韩视频免费| 午夜小视频免费| 国产一区二区三区国产精品| 亚洲va欧美va天堂v国产综合| 国产偷国产偷亚洲高清97cao| 91porny九色| 欧美无毛视频| 亚洲精品国久久99热| 日韩av在线电影观看| 国产激情视频在线播放| 韩国三级大全久久网站| 91电影在线观看| 久久久久久av无码免费网站下载| 亚洲免费视频在线| 婷婷综合一区| 日韩一级二级三级精品视频| 国产精品wwwww| 德国极品另类| 亚洲一区日韩在线| 海角国产乱辈乱精品视频| 男女做暖暖视频| 男女在线观看视频| 亚洲欧美一区二区久久| 亚洲成人第一| 日韩在线第二页| 欧美韩日精品| 欧美超级免费视 在线| 国精产品视频一二二区| 成人影院www在线观看| 国产精品天干天干在观线| 久久99精品久久久久久三级| 丰满少妇被猛烈进入| 成人三级av在线| 亚洲成人在线网| 丰满少妇xbxb毛片日本| 欧美成人免费| 国产日韩在线不卡| 欧美成ee人免费视频| 深夜福利视频网站| 欧美日韩亚洲在线观看| 色噜噜亚洲精品中文字幕| 青青草华人在线视频| 色帝国亚洲欧美在线| 亚洲成人综合在线| 欧美二区在线视频| 成人免费视频网站在线看| 国内不卡的二区三区中文字幕 | 国产精品国产三级国产专区52| 在线男人天堂| 91福利视频网站| 亚洲涩涩在线观看| 头脑特工队2在线播放| 久久久久久久久久电影| 五月婷婷综合色| 美女毛片免费看| 国内久久精品视频| 精品国产一区二区三区免费| 成人影院久久久久久影院| 亚洲国产高清视频| 国产精品日韩在线| 亚洲av综合色区无码一区爱av| 欧美日中文字幕| 欧美人与性动交| 亚洲自拍一区在线观看| 国产伦精品一区二区三区免费优势| 日韩av综合中文字幕| 亚洲综合第一区| 成人午夜sm精品久久久久久久| 日韩欧美一级二级三级久久久| 欧美性生交xxxxx| 日韩电影免费观看| 在线精品视频一区二区三四 | 五月天亚洲综合小说网| 美女污污网站| jizz一区二区| 91视频成人免费| 日本粉色视频在线观看| 国产精品色在线| 亚洲熟妇av一区二区三区| 国产人成在线视频| 精品国产鲁一鲁一区二区张丽| 欧美视频国产视频| 亚洲丝袜一区| 欧美一区三区二区| 久久久久亚洲AV成人无在 | 成人免费在线视频| 精品久久久久久无码国产| 亚洲国产无线乱码在线观看| 久9re热视频这里只有精品| 久久成人在线视频| 伊人色综合久久久| 国产综合自拍| 不卡一卡2卡3卡4卡精品在| 国产精品白浆流出视频| 激情六月婷婷久久| 精品国产无码在线| 视频黄页在线| 午夜精品123| 精品无码人妻一区| 成人精品视频在线观看| 久久在精品线影院精品国产| 亚洲系列第一页| 99精品视频免费观看视频| 国产亚洲一区二区三区在线播放| 看**视频a级毛片| 中文字幕乱码日本亚洲一区二区| 北条麻妃av高潮尖叫在线观看| 色操视频在线| 亚洲欧美中文字幕| 91国产精品一区| 西西裸体人体做爰大胆久久久| 免费av在线一区二区| 午夜影院观看视频免费| 狠狠躁夜夜躁人人躁婷婷91| 在线视频第一页| 神马久久影院| 成人乱色短篇合集| h视频免费看| 亚洲.国产.中文慕字在线| 国产中年熟女高潮大集合| jizz久久精品永久免费| 国产91九色视频| 青青草免费观看完整版高清| 亚洲欧洲av一区二区三区久久| 绯色av蜜臀vs少妇| 精品三级国产| 日韩av高清不卡| 免费看大片爽| 亚洲激情综合网| 男人舔女人下部高潮全视频| 日韩人体视频| 99久久免费国| 久草.com| 欧美日韩高清影院| 中文字幕手机在线视频| 一本久久综合| 久久福利一区二区| 欧美亚洲天堂| 久久成人精品视频| 久久国产热视频| 亚洲免费成人av| 暗呦丨小u女国产精品| 欧美网站在线| 国产又黄又爽免费视频| 91三级在线|