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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

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

使用道具 舉報

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

使用道具 舉報

板凳
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:65707 發表于 2022-11-26 18:51 | 只看該作者
能把想法變現實不錯喲,像樓主學習.我也想搞個自動喂魚的,一直都在醞釀中
回復

使用道具 舉報

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

有代碼跟原理圖嗎?
回復

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

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

老王家是誰家?
回復

使用道具 舉報

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

老王電子數碼DIY
回復

使用道具 舉報

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

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜一区二区三区 | 欧美色人| 在线看免费的a | 国产中文字幕在线观看 | 久久久久久久久久性 | 国产成人精品综合 | 中文字幕一区二区三区四区五区 | 国产精品一区二区三区四区五区 | 国产99热| 亚洲国产网 | 色男人的天堂 | 伊人久久精品 | 日韩精品一区二区三区视频播放 | 九九热这里只有精品6 | 日日摸天天添天天添破 | 99精品电影| 精品欧美一区二区三区久久久 | 中文字幕人成乱码在线观看 | 精品成人av| 国产精品中文字幕一区二区三区 | 超碰成人在线观看 | av中文字幕在线 | 国产视频观看 | 国产精品区一区二区三 | www.国产精| 亚洲 欧美 日韩 精品 | www.99热.com| 欧洲亚洲视频 | 日韩视频―中文字幕 | 自拍中文字幕 | 国产精品电影在线观看 | 91久久夜色精品国产网站 | 国产日韩精品一区二区 | 欧美日韩三级在线观看 | 久久久91精品国产一区二区三区 | 韩国av网站在线观看 | 97人人澡人人爽91综合色 | 武道仙尊动漫在线观看 | 一区二区不卡视频 | 久久九九色 | 欧美一区二区在线观看 |