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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+aip650做一個孵化器的溫控,按鍵響應不知怎么搞求助

[復制鏈接]
跳轉到指定樓層
樓主
aip650做一個孵化器的溫控,溫度顯示搞定了,按鍵響應不知怎么搞。有會的嗎?請高手指點下。

單片機源程序如下:
  1. #include <absacc.h>
  2. #include <intrins.h>
  3. #include <STC89C5xRC.H>


  4. //定義常量
  5. #define true  1
  6. #define false 0


  7. #define  uchar unsigned char
  8. #define  uint  unsigned int




  9. //定義變量
  10. uchar  Display_Code[12] ={0xf5,0x05,0x73,0x57,0x87,0xd6,0xf6,0x45,0xf7,0xd7,0x08,0x02}; //段碼
  11.                                  //0,    1,   2 ,  3,  4,    5,   6,   7,   8,    9,  . ,  -
  12. uchar  Dig_Bit_Code[4]={0x6a,0x6e,0x6c,0x68};//位碼
  13. uchar   Light_Level_Code[8]={0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x01 };//亮度調節






  14. uint     h; //溫度使用
  15. uint     temp;//溫度
  16. //**************溫度小數部分用查表法***********//
  17. uchar  ditab[16]=
  18. {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
  19. uchar  temp_data[2]={0x00,0x00};             //讀出溫度暫放
  20. uchar  display[5]={0x00,0x00,0x00,0x00,0x00};     //顯示單元數據,共4個數據和一個運算暫用
  21.                                                    
  22. //定義IO口
  23. sbit        SDA=P3^6;
  24. sbit        SCL=P3^7;              




  25. sbit     DQ=P1^0;                               //溫度輸入口
  26. sbit     DIN=P1^1;                              //LED小數點控制
  27. //函數聲名
  28. /*溫度使用*/
  29. void delay(uint t);
  30. void work_temp(uint tem);
  31. read_temp();
  32. void xiashiwendu(uint tem1);
  33. uchar read_byte(void);
  34. void write_byte(uchar val);
  35. void ow_reset(void);






  36. /*I2C相關*/
  37. void I2CWait(void);
  38. bit  I2CStart(void);
  39. void I2CStop(void);
  40. void I2CSendAck(void);
  41. void I2CSendNoAck(void);
  42. bit  I2CWaitAck(void);
  43. unsigned char AipReadKey();
  44. void I2CSendByte(unsigned char demand,bit order);
  45. unsigned char I2CReceiveByte(void);
  46. //void Delay(unsigned int nn);
  47. void AiP650_CLR();
  48. void AiP650_DisPlay(unsigned char Dig_Bit,unsigned char Display_num);
  49. void AiP650_Set(unsigned char add,unsigned char dat);//數碼管顯示
  50. void Delay(unsigned int nn);
  51. void Light_Level_Set(unsigned char level);
  52. void xianshijianzhi(uint key);
  53. /*******************************************************
  54. 功能:主函數
  55. 描述:初始化、讀溫度顯示,讀鍵值處理
  56. 參數:無
  57. 返回:無
  58. ********************************************************/
  59. main()
  60. {unsigned char keyvalue;
  61.                
  62.         P3=0xFF;
  63.         
  64.         while(1)
  65.         {
  66.                  uint wendu;//溫度變量
  67.                 uint maxwd=40.0;//停止溫度
  68.                 uint minwd=30.0;//開始溫度
  69.                
  70.                 //AiP650_CLR();
  71.                 wendu=read_temp();
  72.                 xiashiwendu(wendu);
  73.                  
  74.                 keyvalue=AipReadKey();
  75.                 //if(keyvalue==0x44)
  76.    // xianshijianzhi(keyvalue);
  77.                 //if(keyvalue!=0x2e)
  78.                 //{ delay(2000);
  79.                 //if(keyvalue!=0x2e)
  80.      switch(keyvalue)
  81.                          {case 0x47:
  82.                                  Light_Level_Set(4);
  83.                                  AiP650_DisPlay(1,1);
  84.                   
  85.                                           case  0x57:
  86.                                                  Light_Level_Set(4);
  87.                                          AiP650_DisPlay(1,2);
  88.                  
  89.                                          case 0x5f:                           
  90.                                                 Light_Level_Set(4);
  91.                                          AiP650_DisPlay(1,3);
  92.                
  93.                                           case 0x67:  
  94.                                                 Light_Level_Set(4);
  95.                                          AiP650_DisPlay(1,4);
  96.                   
  97.                                           case 0x6f:
  98.                                                  Light_Level_Set(4);
  99.                                          AiP650_DisPlay(1,5);
  100.                    case 0x6c:
  101.                  Light_Level_Set(4);
  102.                          AiP650_DisPlay(1,6);
  103.                           
  104.                          case 0x77:  
  105.                  Light_Level_Set(4);
  106.                          AiP650_DisPlay(1,7);
  107.                   case 0x6e:  
  108.                                 Light_Level_Set(4);
  109.                         AiP650_DisPlay(1,8);
  110.                   
  111.                                                                   
  112.                          break;
  113.                  
  114.                         
  115.                         
  116.                         
  117.                          ; }                        
  118.                 }
  119.                
  120.         /*        unsigned char i;for(i=0;i<12;i++)
  121.                 {
  122.                         AiP650_DisPlay(1,i);
  123.                 AiP650_DisPlay(2,i);
  124.                         AiP650_DisPlay(3,i);
  125.                         Light_Level_Set(4);*/
  126.                  //此處添加顯示程序,可參考5、6、7章
  127.    // delay(500);}     
  128.          
  129.    }


  130. /*******************************************************
  131. 功能:I2CWait
  132. 描述:I2C延時
  133. 參數:無
  134. 返回:無
  135. ********************************************************/
  136. void I2CWait(void)
  137. {        
  138.         _nop_();_nop_();_nop_();_nop_();
  139. }




  140. /*******************************************************
  141. 功能:I2CStart
  142. 描述:開啟SD2000的I2C總線
  143. 參數:無
  144. 返回:位變量I2CStart,1=I2C總線可用,0=I2C總線不可用
  145. ********************************************************/
  146. bit I2CStart(void)
  147. {
  148.         SDA=1;
  149.         SCL=1;
  150.         I2CWait();
  151.         if(!SDA)return false;//SDA線為低電平則總線忙,退出
  152.         SDA=0;
  153.         I2CWait();
  154.         while(SDA)return false;//SDA線為高電平則總線出錯,退出
  155.         SCL=0;
  156.         I2CWait();
  157.         return true;
  158. }


  159. /*******************************************************
  160. 功能:I2CStop
  161. 描述:關閉SD2000的I2C總線
  162. 參數:無
  163. 返回:無
  164. ********************************************************/
  165. void I2CStop(void)
  166. {
  167.         SDA=0;
  168.         SCL=0;
  169.         I2CWait();
  170.         SCL=1;
  171.         I2CWait();
  172.         SDA=1;
  173. }


  174. /*******************************************************
  175. 功能:I2CSendAck
  176. 描述:發送 ACK
  177. 參數:無
  178. 返回:無
  179. ********************************************************/
  180. void I2CSendAck(void)
  181. {        
  182.         SDA=0;
  183.         SCL=0;
  184.         I2CWait();
  185.         SCL=1;
  186.         I2CWait();
  187.         SCL=0;
  188. }


  189. /*******************************************************
  190. 功能:I2CSendNoAck
  191. 描述:發送NO ACK
  192. 參數:無
  193. 返回:無
  194. ********************************************************/
  195. void I2CSendNoAck(void)
  196. {        
  197.         SDA=1;
  198.         SCL=0;
  199.         I2CWait();
  200.         SCL=1;
  201.         I2CWait();
  202.         SCL=0;
  203. }


  204. /*******************************************************
  205. 功能:I2CWaitAck
  206. 描述:讀取ACK信號
  207. 參數:無
  208. 返回:位變量I2CWaitAck,返回為:1=有ACK,0=無ACK
  209. ********************************************************/
  210. bit I2CWaitAck(void)  
  211. {
  212.         unsigned char errtime=255;
  213.         SCL=0;
  214.         SDA=1;
  215.         I2CWait();
  216.         SCL=1;
  217.         I2CWait();
  218.         while(SDA)
  219.         {
  220.                 errtime--;
  221.                 if(!errtime)
  222.                 SCL=0;
  223.                 return false;
  224.         }
  225.         SCL=0;
  226.         return true;
  227. }


  228. /*******************************************************
  229. 功能:I2CSendByte
  230. 描述:向SD2000發送一個字節
  231. 參數:待發送字節demand,發送順序指示order
  232.       order=1,從HI-->LO發送8bit數據
  233.       order=0,從LO-->HI發送8bit數據
  234. 返回:無
  235. ********************************************************/
  236. void I2CSendByte(unsigned char demand,bit order)
  237. {
  238.         unsigned char i=8;                       
  239.                                        
  240.         if(order)
  241.         {
  242.                 while(i--)
  243.                 {
  244.                         SCL=0;
  245.                         _nop_();
  246.                         SDA=(bit)(demand&0x80);
  247.                         demand<<=1;
  248.                         I2CWait();
  249.                         SCL=1;
  250.                         I2CWait();
  251.                 }
  252.                 SCL=0;
  253.         }
  254.      else
  255.         {
  256.                 while(i--)
  257.                  {
  258.                         SCL=0;
  259.                         _nop_();
  260.                         SDA=(bit)(demand&0x01);
  261.                         demand>>=1;
  262.                         I2CWait();
  263.                         SCL=1;
  264.                         I2CWait();
  265.                  }
  266.                  SCL=0;
  267.         }
  268. }


  269. /*******************************************************
  270. 功能:I2CReceiveByte
  271. 描述:從SD2000讀入一字節
  272. 參數:無
  273. 返回:讀取的字節I2CReceiveByte
  274. ********************************************************/
  275. unsigned char I2CReceiveByte(void)
  276. {
  277.         unsigned char i=8;
  278.         unsigned char ddata=0;
  279.         SDA=1;
  280.         while(i--)
  281.         {
  282.                 ddata>>=1;          //數據從低位開始讀取
  283.                 SCL=0;
  284.                 I2CWait();
  285.                 SCL=1;
  286.                 I2CWait();           //從低位開始 ddata|=SDA;ddata>>=1
  287.    if(SDA)
  288.                 {
  289.                         ddata|=0x80;
  290.                 }
  291.         }
  292.    SCL=0;
  293.         return ddata;
  294. }
  295. /*******************************************************
  296. 功能:讀鍵值
  297. 描述:
  298. 參數:
  299. 返回:鍵值
  300. ********************************************************/
  301. ///*
  302. unsigned char AipReadKey()
  303. {
  304.         unsigned char key;
  305.   AiP650_Set(0x4f,0x00);
  306.         if(I2CWaitAck())
  307.   {I2CStart();
  308.         key=I2CReceiveByte();
  309.                
  310.   I2CStop();}
  311. return key;}//*/


  312. /*******************************************************
  313. 功能:發送地址,數據, 數碼管顯示
  314. 描述:
  315. 參數:
  316. 返回:
  317. ********************************************************/
  318. void AiP650_Set(unsigned char add,unsigned char dat) //數碼管顯示
  319. {
  320.         //寫顯存必須從高地址開始寫
  321.         I2CStart();
  322.         I2CSendByte(add,1); //第一個顯存地址
  323.         I2CSendAck();
  324.         I2CSendByte(dat,1);
  325.         I2CSendAck();
  326.         I2CStop();
  327. }




  328. /*******************************************************
  329. 功能:驅動數碼管顯示數字
  330. 描述:顯示數字
  331. 參數:
  332. 返回:
  333. ********************************************************/
  334. void AiP650_DisPlay(unsigned char Dig_Bit,unsigned char Display_num)                //顯示一位數字
  335. {
  336.         AiP650_Set(Dig_Bit_Code[Dig_Bit-1],Display_Code[Display_num]);
  337. }


  338. /*******************************************************
  339. 功能:清屏
  340. 描述:
  341. 參數:
  342. 返回:
  343. ********************************************************/


  344. void AiP650_CLR()                                                                   //清屏
  345. {
  346.         unsigned char i;
  347.         for(i=0;i<4;i++)
  348.         {
  349.                 AiP650_Set(Dig_Bit_Code[i],0x00);                [/i][i]
  350.         }
  351. }
  352. /*******************************************************
  353. 功能:設置顯示亮度
  354. 描述:
  355. 參數:
  356. 返回:
  357. ********************************************************/
  358. void Light_Level_Set(unsigned char level)
  359. {AiP650_Set(0x48,Light_Level_Code[level-1]);}
  360. /*******************************************************
  361. 功能:Delay
  362. 描述:延時子程序
  363. 參數:延時長度nn
  364. 返回:無
  365. ********************************************************/
  366. /*void Delay(unsigned int nn)
  367. {
  368.    while(nn--);
  369.    }
  370. */
  371. //
  372. /*****************11us延時函數*************************/
  373. //
  374. void delay(uint t)
  375. {
  376.   for (;t>0;t--);
  377. }
  378. //


  379. //
  380. /****************DS18B20復位函數************************/
  381. void ow_reset(void)
  382. {
  383. char presence=1;
  384. while(presence)
  385. {
  386.   while(presence)
  387.    {
  388.     DQ=1;_nop_();_nop_();//從高拉倒低
  389. DQ=0;                                       
  390. delay(50);           //550 us
  391. DQ=1;                                       
  392. delay(6);            //66 us
  393. presence=DQ;         //presence=0 復位成功,繼續下一步
  394.    }
  395.    delay(45);            //延時500 us
  396.    presence=~DQ;         
  397. }
  398. DQ=1;                   //拉高電平
  399. }
  400. //
  401. //
  402. /****************DS18B20寫命令函數************************/
  403. //向1-WIRE 總線上寫1個字節
  404. void write_byte(uchar val)
  405. {
  406.   uchar i;
  407.   for(i=8;i>0;i--)
  408.   {
  409.    DQ=1;_nop_();_nop_();                  //從高拉倒低
  410.    DQ=0;_nop_();_nop_();_nop_();_nop_();  //5 us
  411.    DQ=val&0x01;                           //最低位移出
  412.    delay(6);                              //66 us
  413.    val=val/2;                             //右移1位
  414.    }
  415.    DQ=1;
  416.    delay(1);
  417. }
  418. //
  419. /****************DS18B20讀1字節函數************************/
  420. //從總線上取1個字節
  421. uchar read_byte(void)
  422. {
  423. uchar i;
  424. uchar value=0;
  425. for(i=8;i>0;i--)
  426. {
  427.   DQ=1;_nop_();_nop_();
  428.   value>>=1;
  429.   DQ=0;_nop_();_nop_();_nop_();_nop_();         //4 us
  430.   DQ=1;_nop_();_nop_();_nop_();_nop_();         //4 us
  431.   if(DQ)value|=0x80;
  432.   delay(6);                                     //66 us
  433. }
  434. DQ=1;
  435. return(value);
  436. }
  437. //
  438. /****************讀出溫度函數************************/
  439. //
  440. read_temp()
  441. {
  442.   ow_reset();                  //總線復位
  443.   delay(200);
  444.   write_byte(0xcc);            //發命令
  445.   write_byte(0x44);            //發轉換命令
  446.   ow_reset();
  447.   delay(1);
  448.   write_byte(0xcc);            //發命令
  449.   write_byte(0xbe);
  450.   temp_data[0]=read_byte();    //讀溫度值的第字節
  451.   temp_data[1]=read_byte();    //讀溫度值的高字節
  452.   temp=temp_data[1];
  453.   temp<<=8;                                               
  454.   temp=temp|temp_data[0];      // 兩字節合成一個整型變量。
  455.   return temp;                 //返回溫度值
  456. }
  457. //
  458. /****************溫度數據處理函數************************/


  459. //二進制高字節的低半字節和低字節的高半字節組成一字節,這個
  460. //字節的二進制轉換為十進制后,就是溫度值的百、十、個位值,而剩
  461. //下的低字節的低半字節轉化成十進制后,就是溫度值的小數部分


  462. /********************************************************/
  463. void work_temp(uint tem)
  464. {
  465. uchar n=0;
  466. if(tem>6348)                        // 溫度值正負判斷
  467.      {tem=65536-tem;n=1;}            // 負溫度求補碼,標志位置1
  468.       display[4]=tem&0x0f;           // 取小數部分的值
  469.   display[0]=ditab[display[4]];  // 存入小數部分顯示值
  470.       display[4]=tem>>4;             // 取中間八位,即整數部分的值
  471.   display[3]=display[4]/100;     // 取百位數據暫存
  472.   display[1]=display[4]%100;     // 取后兩位數據暫存
  473.   display[2]=display[1]/10;      // 取十位數據暫存
  474.   display[1]=display[1]%10;  
  475. /******************符號位顯示判斷**************************/
  476.   if(!display[3])
  477.   {
  478.     display[3]=0x0a;           //最高位為0時不顯示
  479.     if(!display[2])
  480. {
  481.    display[2]=0x0a;        //次高位為0時不顯示
  482. }
  483.   }
  484.   if(n){display[3]=0x0b;}      //負溫度時最高位顯示"-"
  485. }
  486. //
  487. //
  488. /*************************************************************
  489. 顯示溫度
  490. 功能:溫度數值處理,發送650顯示


  491. ***********************************************************/
  492. void xiashiwendu(uint tem1)
  493. {
  494.    work_temp(tem1);
  495.                 AiP650_CLR();
  496.                         Light_Level_Set(4);
  497.                 AiP650_DisPlay(2,10);//顯示小數點
  498.                 AiP650_DisPlay(3,display[2]);//百位
  499.                 AiP650_DisPlay(2,display[1]);//顯示個位
  500.                 AiP650_DisPlay(1,display[0]);//小數






  501. }
  502. /******************顯示鍵值*************************************
  503. 功能:將鍵值發送650顯示




  504. ****************************************************************/
  505. void xianshijianzhi(uint key)
  506. {key=key&0x0a;
  507.         
  508.                   Light_Level_Set(4);
  509.          
  510.          AiP650_DisPlay(2,key);
  511. }
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:123289 發表于 2022-11-3 09:15 | 只看該作者
1、先編個【按鍵】程序,識別到XX鍵被按下了。
2、再編個【響應】程序,即按鍵后,你想干的活。
3、列個EXCEL表,列出XX鍵、或組合鍵分別要干的活。
4、運行【按鍵】程序,識別按鍵,再分別調用列表中的【響應】。
回復

使用道具 舉報

板凳
ID:680729 發表于 2022-11-3 11:16 | 只看該作者
有aip650按鍵程序的例子嗎?
回復

使用道具 舉報

地板
ID:161164 發表于 2022-11-3 12:01 | 只看該作者
jzcjz 發表于 2022-11-3 11:16
有aip650按鍵程序的例子嗎?

這樣改看看



回復

使用道具 舉報

5#
ID:680729 發表于 2022-11-3 16:28 | 只看該作者
不是讀按鍵,是按鍵響應的。它那個按鍵的碼表好像不對啊。
回復

使用道具 舉報

6#
ID:883242 發表于 2022-11-3 19:18 | 只看該作者
按鍵和溫度是完全不相關的兩件事,不存在“aip650按鍵程序的例子”,樓主還是先靜下心來,想想你需要你幾個按鍵,每個按鍵是干什么用的。你的項目需要哪些功能,這些按鍵是否能夠全部滿足。
回復

使用道具 舉報

7#
ID:213173 發表于 2022-11-3 21:12 | 只看該作者
jzcjz 發表于 2022-11-3 16:28
不是讀按鍵,是按鍵響應的。它那個按鍵的碼表好像不對啊。


最多28個鍵
void key_service()
{

        num=AipReadKey();
        switch(num)
        {
                case 0x44: /*任務 1*/ break;
                case 0x4c: /*任務 2*/ break;
                case 0x54: /*任務 3*/ break;
                case 0x5c: /*任務 4*/ break;
                ......     /*任務 n*/ break;
                case 0x77: /*任務28*/ break;
        }

}
回復

使用道具 舉報

8#
ID:680729 發表于 2022-11-3 22:07 | 只看該作者
按鍵沒反應,鍵值都試了一遍。
keyvalue=AipReadKey();
     switch(keyvalue)
                         {case 0x45:
                                 Light_Level_Set(4);
                                 AiP650_DisPlay(2,1);
                  break;
                                          case  0x55:
                                                 Light_Level_Set(4);
                                         AiP650_DisPlay(2,2);
                 break;
                                         case 0x5d:                           
                                                Light_Level_Set(4);
                                         AiP650_DisPlay(2,3);
                break;
                                          case 0x65:  
                                                Light_Level_Set(4);
                                         AiP650_DisPlay(2,4);
                  break;
                                          case 0x6d:
                                                 Light_Level_Set(4);
                                         AiP650_DisPlay(2,5);
                                         break;
                   case 0x75:
                 Light_Level_Set(4);
                         AiP650_DisPlay(2,6);
                                
                                                           
                         break;
                 
                       
                         
                         
                         ; }                         
                }
回復

使用道具 舉報

9#
ID:213173 發表于 2022-11-4 06:27 | 只看該作者
jzcjz 發表于 2022-11-3 22:07
按鍵沒反應,鍵值都試了一遍。
keyvalue=AipReadKey();
     switch(keyvalue)

要按照廠家推薦的硬件電路,DIG端串接2K電阻,否則無法正常讀取鍵值。你的數碼管已經能正常顯示數字,可以用來顯示鍵值,以判斷讀鍵是否正確。TM1650分新舊版本,鍵碼不同,AIP650是不是也有新舊版本不得而知。
回復

使用道具 舉報

10#
ID:220661 發表于 2022-11-4 07:43 | 只看該作者
另外,現在的51單片機速度有點快,IIC速度太快了擴展芯片跟不上。表現為顯示正常按鍵讀不到,別問我怎么知道的。
回復

使用道具 舉報

11#
ID:680729 發表于 2022-11-4 15:17 | 只看該作者
一時搞不定,試了好多方法,心累啊。水平有限,現丑現丑。
回復

使用道具 舉報

12#
ID:680729 發表于 2022-11-5 09:14 | 只看該作者
看了蕊片,是FDZY650,它與aip650不同?沒有資料。引腳和aip650是一樣的,就不知按鍵代碼是不是一樣。
回復

使用道具 舉報

13#
ID:680729 發表于 2022-11-5 20:56 | 只看該作者
uchar  Display_16code[16]={0xf5,0x05,0x73,0x57,0x87,0xd6,0xf6,0x45,0xf7,0xd7,0xbf,0xbe,0xf8,0x3f,0xfa,0xba};
/******************顯示鍵值*************************************
功能:將鍵值發送650顯示


****************************************************************/
void xianshijianzhi(uchar key1)
{uchar a,b;
         a=key1&0x0f;
    AiP650_CLR();   
                  Light_Level_Set(4);
         
         AiP650_DisPlay(2,Display_16code[a-1]);
        b=key1>>4;
         b=b&0x0f;
          
          Light_Level_Set(4);
         
         AiP650_DisPlay(1,Display_16code[b-1]);
         
}


鍵值顯示22,按鍵無變化。不懂意思,難道讀不出鍵值?
回復

使用道具 舉報

14#
ID:680729 發表于 2022-11-5 21:46 | 只看該作者
按鍵有反應了。顯示值不太對。
uchar  Display_16code[16]={0xf5,0x05,0x73,0x57,0x87,0xd6,0xf6,0x45,0xf7,0xd7,0xbf,0xbe,0xf8,0x3f,0xfa,0xba};
//0,    1,   2 ,  3,  4,    5,   6,   7,   8,    9,  a,  b,c,d,e,f
/*******************************************************
功能:讀鍵值
描述:
參數:
返回:鍵值
********************************************************/
///*
unsigned char AipReadKey()
{
        unsigned char key;
  //AiP650_Set(0x4f,0x00);

   I2CStart();       
   I2CSendByte(0x4f,1);
        // I2CWaitAck() ;
        //if(I2CWaitAck())
        //I2CSendByte(0x00,1);
        if(I2CWaitAck())
        {key=I2CReceiveByte();
                       
        I2CSendAck();
        //if(I2CWaitAck())       
  //{ I2CSendByte(0x00,1);
       
                                //}
        }
        I2CStop();
return key;}//*/
/******************顯示鍵值*************************************
功能:將鍵值發送650顯示


****************************************************************/
void xianshijianzhi(uchar key1)
{uchar a,b;
         a=key1&0x0f;
    AiP650_CLR();   
                  Light_Level_Set(4);
         
         AiP650_DisPlay(1,a);
        b=key1>>4;
         b=b&0x0f;
          
          Light_Level_Set(4);
         
         AiP650_DisPlay(2,b);
         
}
回復

使用道具 舉報

15#
ID:213173 發表于 2022-11-5 22:06 | 只看該作者
jzcjz 發表于 2022-11-5 21:46
按鍵有反應了。顯示值不太對。
uchar  Display_16code[16]={0xf5,0x05,0x73,0x57,0x87,0xd6,0xf6,0x45,0xf ...

曾經使用TM1650,也不清楚是新舊版本,按鍵無反應。后用數碼管顯示鍵值觀察,與手冊不一致。但修改按鍵服務函數與之對應后按鍵功能正常。
回復

使用道具 舉報

16#
ID:680729 發表于 2022-11-5 23:49 | 只看該作者
鍵值摸清楚了,分別是a0,a4,ac,a8,b4,b8. 但是能顯示,switch 和顯示函數一塊兒用就能掃到鍵,單獨switch又不行了。可能真的是650跟不上單片機的速度。怎么解決呢?
回復

使用道具 舉報

17#
ID:213173 發表于 2022-11-6 10:28 | 只看該作者
jzcjz 發表于 2022-11-5 23:49
鍵值摸清楚了,分別是a0,a4,ac,a8,b4,b8. 但是能顯示,switch 和顯示函數一塊兒用就能掃到鍵,單獨switch又 ...

不存在650跟不上單片機的速度問題,這是用STC8G1K08驅動TM1650的單鍵控制時鐘設置的局部代碼:
  1. //==============TM1650驅動部分=====================
  2. //us延時函數
  3. void Delay_us(unsigned int i)//@12MHz
  4. {
  5.         while(--i)
  6.         {
  7.                 _nop_();
  8.                 _nop_();
  9.         }
  10. }
  11. //開始信號
  12. void Start1650(void)
  13. {
  14.         CLK = 1;
  15.         DIO = 1;
  16.         Delay_us(5);
  17.         DIO = 0;
  18. }
  19. //寫一個字節 高位在前低位在后
  20. void WrByte1650(uchar oneByte)
  21. {
  22.         uchar i;
  23.         CLK = 0;
  24.         Delay_us(1);
  25.         for(i=0;i<8;i++)
  26.         {
  27.                 oneByte = oneByte<<1;
  28.                 DIO = CY;
  29.                 CLK = 0;
  30.                 Delay_us(5);
  31.                 CLK = 1;
  32.                 Delay_us(5);
  33.                 CLK = 0;
  34.         }
  35. }
  36. //應答ACK信號
  37. void Ask1650(void)
  38. {
  39.         uchar timeout = 1;
  40.         CLK = 1;
  41.         Delay_us(5);
  42.         CLK = 0;
  43.         while((DIO)&&(timeout<=100))
  44.         {
  45.                 timeout++;
  46.         }
  47.         Delay_us(5);
  48.         CLK = 0;
  49. }
  50. //停止信號
  51. void Stop1650(void)
  52. {
  53.         CLK = 1;
  54.         DIO = 0;
  55.         Delay_us(5);
  56.         DIO = 1;
  57. }
  58. //寫顯示地址和數據
  59. void Set1650(uchar add,uchar dat)
  60. {                                          
  61.         Start1650();     //開始
  62.         WrByte1650(add); //寫地址
  63.         Ask1650();       //應答
  64.         WrByte1650(dat); //寫數據
  65.         Ask1650();       //應答
  66.         Stop1650();      //停止
  67. }
  68. //顯示命令格式:空位  亮度等級位   7/8段位  空位  開關位
  69. //顯示命令格式: 0    1   1   1     1/0     0 0    1/0

  70. //初始化1650
  71. void Init1650()
  72. {
  73.         Set1650(0x48,0x31); //3級亮度 開顯示
  74. }
  75. //掃描1650按鍵
  76. uchar Scan1650_Key()
  77. {  
  78.         uchar i;
  79.         uchar rekey;
  80.         Start1650();     //開始
  81.         WrByte1650(0x49);//讀按鍵命令 0100 1111
  82.         Ask1650();                 //應答
  83.         for(i=0;i<8;i++)
  84.         {
  85.                 CLK = 1;
  86.                 rekey<<=1;
  87.                 if(DIO)rekey++;
  88.                 Delay_us(5);
  89.                 CLK = 0;
  90.         }
  91.         Ask1650();                  //應答
  92.         Stop1650();       //停止
  93.         return rekey;     //返回鍵值
  94. }
  95. //按鍵服務函數
  96. void key_service()
  97. {
  98.         static uint time=0;  //計數變量
  99.         temp=Scan1650_Key(); //讀取鍵值
  100.         if(temp==0x4E)       //按鍵按下
  101.         {
  102.                 time++;
  103.                 if(time>=key_L)  //長按
  104.                 {
  105.                         switch(KeySec)
  106.                         {
  107.                                 case 1: TIME[2]++;if(TIME[2]>23)TIME[2]=0; break;
  108.                                 case 2: TIME[1]++;if(TIME[1]>59)TIME[1]=0; break;
  109.                         }
  110.                         time=key_I;  //連+間隔
  111.                         num=500;     //自復位變量賦值(5秒)
  112.                 }
  113.         }
  114.         else                                //松手
  115.         {
  116.                 if(time>key_S && time<key_I)//短按
  117.                 {
  118.                         num=500;    //自復位變量賦值(5秒)
  119.                         KeySec++;
  120.                         if(KeySec>3)
  121.                         {
  122. //                                KeySec=0;
  123.                                 num=1;
  124.                         }
  125.                 }
  126.                 time=0;
  127.         }
  128. }
復制代碼
回復

使用道具 舉報

18#
ID:680729 發表于 2022-11-10 21:38 | 只看該作者
現在數碼管干脆就不亮了,更換蕊片也不行,難道單片機壞了?換一片也不亮,搞什么鬼。跟我過不去啊。
回復

使用道具 舉報

19#
ID:680729 發表于 2022-11-11 22:05 | 只看該作者
換蕊片,換單片機,查軟件,為什么本來是可以點亮的,為什么就不亮了。吐血啊。數碼管也是好的。沒思路了。嗨。
回復

使用道具 舉報

20#
ID:680729 發表于 2022-11-13 08:53 | 只看該作者
抓到鬼了。同樣的代碼,手工輸入的運行正常,復制粘貼的,編譯無錯但刷進去不能運行。

#include <STC89C5xRC.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit   key=P1^3;


void Delay(uint x)
{uchar t;
        while(x--)
        {
        for(t=0;t<120;t++);}
}
/*void delay(uint t)
{
  for (;t>0;t--);
}*/
/*main()
{key=0;
while(1)
{Delay(150);
key=~key;}
}
*/

void main()
{   
                //P3=0xFF;
          key=0;
        while(1);
        {
                Delay(150);
                 
                key=~key;


                         
        };
               
         
   
         
   }
回復

使用道具 舉報

21#
ID:161164 發表于 2022-11-13 17:38 | 只看該作者

回復

使用道具 舉報

22#
ID:680729 發表于 2022-11-15 21:45 | 只看該作者
跟這爛芯片杠上了,重新把代碼手工輸了一遍。但還是不行。請各位高人指點迷津。
  1. /**********************************手工輸入********
  2. 名稱:aip650的驅動
  3. 時間:2022-11-13
  4. 版本:

  5. **************************************************/
  6. //頭文件
  7. #include <STC89X52RC.H>
  8. #include <absacc.h>
  9. #include  <intrins.h>

  10. /*************************************************
  11.              常量、變量定義區


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

  18. //數組定義
  19. uchar Display_Code[13]={0xf5,0x05,0x73,0x57,0x87,0xd6,0xf6,0x45,0xf7,0xd7,0x08,0x02,0x00};
  20.          //共陰數碼管段碼 0,   1,  2,  3,  4 , 5,   6,  7,  8,  9,  .,   -,  不亮
  21. uchar  Display_16Code[16]={0xf5,0x05,0x73,0x57,0x87,0xd6,0xf6,0x45,0xf7,0xd7,0xe7,0xb6,0xf0,0x37,0xf2,0xe2};
  22. //16進 制段碼(用于顯示鍵值)0,   1,   2,  3,  4,  5,   6, 7,  8,   9,  a,   b,   c,   d,   e,   f
  23. uchar Dig_Bit_Code[4]={0x6a,0x6e,0x6c,0x68};//650位碼
  24. uchar Light_Level_Code[8]={0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x01};//亮度調節

  25. uchar keyvalue;
  26. uint wendu;//用于存儲溫度值

  27. uint h;//溫度計算使用
  28. uint temp;//溫度返回值
  29. /***************************溫度小數部分用查表法*****************/
  30. uchar ditab[16]=
  31. {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
  32. uchar temp_data[2]={0x00,0x00};//讀出溫度暫存
  33. uchar display[5]={0x00,0x00,0x00,0x00,0x00};//顯示單元數據,共4個數據和一個運算暫用

  34. //定義IO口
  35. sbit   SDA=P3^7;
  36. sbit   SCL=P3^6;

  37. sbit    DQ=P1^0;      //ds18b20溫度輸入口
  38. sbit    DIN=P1^1;     //LED小數點控制

  39. /**********************************函數定義區************************************/
  40. //I2C相關
  41. /*******************************************************************************
  42. 功能:I2CWait
  43. 描述:I2C延時
  44. 參數:
  45. 返回:
  46. *******************************************************************************/
  47. void I2CWait(void)
  48. {_nop_();_nop_();_nop_();_nop_();
  49. }




  50. /*******************************************************************************
  51. 功能:I2CStart
  52. 描述:開啟I2C總線
  53. 參數:
  54. 返回:位變量,1=I2C總線可用,0=不可用
  55. *******************************************************************************/
  56. bit I2CStart(void)
  57. {   
  58.         SDA=1;
  59.         SCL=1;
  60.         I2CWait();
  61. if(!SDA)
  62.         return false;//SDA線為低電平則總線忙,退出
  63.                 SDA=0;
  64.         I2CWait();
  65.         while(SDA)
  66.                 return false;//SDA線為高電平則總線出錯,退出
  67.         SCL=0;
  68.         I2CWait();
  69.         return true;

  70. }

  71. /*******************************************************************************
  72. 功能:I2CStop(void)
  73. 描述:關閉I2C總線
  74. 參數:
  75. 返回:
  76. *******************************************************************************/
  77. void I2CStop(void)
  78. {
  79.   SDA=0;
  80.         SCL=0;
  81.         I2CWait();
  82.         SCL=1;
  83.         I2CWait();
  84.         SDA=1;

  85. }


  86. /*******************************************************************************
  87. 功能:I2CSendAck
  88. 描述:發送ACK信號
  89. 參數:
  90. 返回:
  91. *******************************************************************************/
  92. void I2CSendAck(void)
  93. {
  94.         SDA=0;
  95.         SCL=0;
  96.         I2CWait();
  97.         SCL=1;
  98.         I2CWait();
  99.         SCL=0;
  100. }


  101. /*******************************************************************************
  102. 功能:I2CSendNoAck
  103. 描述:發送  No Ack
  104. 參數:
  105. 返回:
  106. *******************************************************************************/
  107. void I2CSendNoAck(void)
  108. {   
  109.         SDA=1;
  110.         SCL=0;
  111.         I2CWait();
  112.         SCL=1;
  113.         I2CWait();
  114.         SCL=0;        
  115.         
  116. }

  117. /*******************************************************************************
  118. 功能:I2CWaitAck
  119. 描述:讀取ACK信號
  120. 參數:
  121. 返回:位變量, 1=有ACK,0=無ACK
  122. *******************************************************************************/
  123. bit I2CWaitAck(void)
  124. {
  125.      uchar errtime=255;
  126.         SCL=0;
  127.         SDA=1;
  128.         I2CWait();
  129.         SCL=1;
  130.         I2CWait();
  131.         while(SDA)
  132.         {
  133.                 errtime--;
  134.                 if(!errtime)
  135.                         SCL=0;
  136.                 return false;
  137.         }
  138.         SCL=0;
  139.         return true;
  140.     }

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

  181. /*******************************************************************************
  182. 功能:I2CReceiveByte
  183. 描述:從總線讀一個字節
  184. 參數:
  185. 返回:
  186. *******************************************************************************/
  187. uchar I2CReceiveByte(void)
  188. {
  189.         uchar i=8;
  190.         uchar ddata=0;
  191.         SDA=1;
  192.         while(i--)
  193.         {
  194.                 ddata>>=1;//數據從低位開始讀取
  195.                 SCL=0;
  196.                 I2CWait();
  197.                 SCL=1;
  198.                 I2CWait();//從低位開始 ddata|=SDA;ddata>>=1
  199.                 if(SDA)
  200.                 {
  201.                                    ddata|=0x80;
  202.                 }
  203.         }
  204.         SCL=0;
  205.              return ddata;
  206. }


  207. /*******************************************************************************
  208. 功能:從650讀鍵值
  209. 描述:
  210. 參數:
  211. 返回:uchar鍵值
  212. *******************************************************************************/
  213. uchar AipReadKey()
  214. {
  215.                   uchar key;
  216.                      I2CStart();
  217.                      I2CSendByte(0x4f,1);
  218.                  if(I2CWaitAck())
  219.                                          {
  220.                                              key=I2CReceiveByte();
  221.                                                 
  222.                                            I2CSendAck();
  223.                                          }
  224.              I2CStop();
  225.                                          return key;
  226. }

  227. /*******************************************************************************
  228. 功能:向650發送地址,和數據
  229. 描述:
  230. 參數:
  231. 返回:
  232. *******************************************************************************/
  233. void Aip650_Set(uchar add,uchar dat)
  234. {
  235.   //寫顯存必須從高地址開始寫
  236.         I2CStart();
  237.         I2CSendByte(add,1);
  238.         I2CSendAck();
  239.         I2CSendByte(dat,1);
  240.         I2CSendAck();
  241.         I2CStop();

  242. }


  243. /*******************************************************************************
  244. 功能:驅動數碼管顯示數字
  245. 描述:位碼數組中選擇對應的位地址,在段碼數組中選擇對應數字的段碼發送給650
  246. 參數:
  247. 返回:
  248. *******************************************************************************/
  249. void Aip650_DisPlay(uchar Dig_Bit,uchar Display_num)
  250. {
  251.         Aip650_Set(Dig_Bit_Code[Dig_Bit-1],Display_Code[Display_num]);

  252.          }



  253. /*******************************************************************************
  254. 功能:驅動數碼管顯示16進制數的代碼
  255. 描述:
  256. 參數:
  257. 返回:
  258. *******************************************************************************/
  259. void Aip650_DisPlay16(uchar Dig_Bit16,uchar Display_num16)
  260. {   
  261.      Aip650_Set(Dig_Bit_Code[Dig_Bit16-1],Display_16Code[Display_num16]);



  262.            }





  263. /*******************************************************************************
  264. 功能:650清屏
  265. 描述:
  266. 參數:
  267. 返回:
  268. *******************************************************************************/
  269. void Aip650_CLR()
  270. {
  271.     uchar i;
  272.         for(i=0;i<4;i++)
  273.         {
  274.         Aip650_Set(Dig_Bit_Code[i],0x00);
  275.         }

  276. }

  277. /*******************************************************************************
  278. 功能:設置顯示亮度
  279. 描述:
  280. 參數:
  281. 返回:
  282. *******************************************************************************/
  283. void Light_Level_Set(uchar level)
  284. {
  285.         Aip650_Set(0x48,Light_Level_Code[level-1]);
  286. }


  287. /*******************************************************************************
  288. 功能:delay 延時程序 11us
  289. 描述:
  290. 參數:
  291. 返回:
  292. *******************************************************************************/
  293. void delay(uint t)
  294. {
  295. for(;t>0;t--);
  296. }

  297. /*******************************************************************************
  298. 功能:Ds18b20 復位函數
  299. 描述:
  300. 參數:
  301. 返回:
  302. *******************************************************************************/
  303. void ow_reset(void)
  304. {
  305. uchar presence=1;
  306.         while(presence)
  307.         {while(presence)
  308.                 {
  309.                         DQ=1;
  310.                         _nop_();_nop_();//從高拉到低
  311.                         DQ=0;
  312.                         delay(50);//550us
  313.                         DQ=1;
  314.                         delay(6);//66us
  315.                         presence=DQ;//presence=0復位成功,繼續下一步
  316.                 }
  317.                 delay(45);//延時500us
  318.                 presence=~DQ;
  319.         }
  320.         DQ=1;  //拉高電平
  321. }


  322. /*******************************************************************************
  323. 功能:Ds18b20寫命令函數
  324. 描述:向總線上寫1個字節
  325. 參數:
  326. 返回:
  327. *******************************************************************************/
  328. void write_byte(uchar val)
  329. {
  330. uchar i;
  331.         for(i=8;i>0;i--)
  332.         {DQ=1;_nop_();_nop_();//從高拉低
  333.         DQ=0; _nop_();_nop_();_nop_();_nop_();//5us
  334.                 DQ=val&0x01;// 最低位移出
  335.         delay(6);//66us
  336.         val=val/2;//右移一位}
  337. }
  338. DQ=1;
  339. delay(1);
  340. }


  341. /*******************************************************************************
  342. 功能:從18b20總線上讀1字節
  343. 描述:
  344. 參數:
  345. 返回:value
  346. *******************************************************************************/
  347. uchar read_byte(void)
  348. {
  349. uchar i;
  350.         uchar value=0;
  351.         for(i=8;i>0;i--)
  352.         {
  353.                 DQ=1;_nop_();_nop_();
  354.                 value>>=1;
  355.                 DQ=0;_nop_();_nop_();_nop_();_nop_();//4us
  356.                 DQ=1;_nop_();_nop_();_nop_();_nop_();//4us
  357.                 if(DQ)value|=0x80;
  358.                 delay(6);
  359.         }
  360.         
  361.         DQ=1;
  362.         return(value);
  363. }



  364. /*******************************************************************************
  365. 功能:讀出溫度
  366. 描述:
  367. 參數:
  368. 返回:
  369. *******************************************************************************/
  370. read_temp()
  371. {
  372. ow_reset();
  373.         delay(200);//總線復位
  374.         write_byte(0xcc);//發命令
  375.         write_byte(0x44);//發轉換命令
  376.         ow_reset();
  377.         delay(1);
  378.         write_byte(0xcc);//發命令
  379.         write_byte(0xbe);
  380.         temp_data[0]=read_byte();//讀溫度的低字節
  381.         temp_data[1]=read_byte();//讀溫度的高字節
  382.         temp=temp_data[1];
  383.         temp<<=8;
  384.         temp=temp|temp_data[0];// 兩字節合成一個整型變量
  385.         return temp;
  386. }





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

  418. /*******************************************************************************
  419. 功能:顯示溫度
  420. 描述:處理溫度數值,發送650
  421. 參數:
  422. 返回:
  423. *******************************************************************************/
  424. void xianshiwendu(uint tem1)
  425. {
  426.          work_temp(tem1);
  427.           Aip650_CLR();
  428.          Light_Level_Set(4);
  429.          Aip650_DisPlay(2,10);//顯示小數點
  430.          Aip650_DisPlay(3,display[2]);//十位
  431.    Aip650_DisPlay(2,display[1]);//個位
  432.    Aip650_DisPlay(1,display[0]);//小數
  433. }


  434. /*******************************************************************************
  435. 功能:顯示鍵值
  436. 描述:將按鍵的16進制代碼送顯示
  437. 參數:
  438. 返回:
  439. *******************************************************************************/
  440. void xianshijianzhi(uchar key1)
  441. {uchar a,b;
  442.         a=key1&0x0f;
  443.         Aip650_ClR();
  444.         Light_Level_Set(4);
  445.         Aip650_DisPlay16(1,a);
  446.         b=key1>>4;
  447.         b=b&0x0f;
  448.         Aip650_DisPlay(2,b);
  449. }





  450. /******************************主函數*****************************************
  451. 功能:
  452. 描述:
  453. 參數:
  454. 返回:
  455. *******************************************************************************/
  456. void main()
  457. {
  458.     P3=0xff;
  459.          P1=0xff;
  460.          
  461.          
  462.           while(1)
  463.                 {Aip650_CLR();
  464.           Light_Level_Set(4);
  465.                         Aip650_DisPlay(1,8);
  466.                 Aip650_DisPlay(2,8);        
  467.                 Aip650_DisPlay(3,8);        
  468.                         //keyvalue=AipReadKey();
  469.                         P16=~P16;
  470.                         P17=~P17;
  471.                         delay(150);
  472.                                                 //wendu=read_temp();

  473.                         //xianshiwendu(wendu);
  474.                         //xianshijianzhi(keyvalue);        
  475.   //if(wendu>29)
  476.                 //P13=~P13;
  477.                         }

  478. }
復制代碼
回復

使用道具 舉報

23#
ID:213173 發表于 2022-11-16 06:32 | 只看該作者
jzcjz 發表于 2022-11-15 21:45
跟這爛芯片杠上了,重新把代碼手工輸了一遍。但還是不行。請各位高人指點迷津。

這么多警告不解決,你還想正常運行?


回復

使用道具 舉報

24#
ID:680729 發表于 2022-11-16 07:17 | 只看該作者
不懂啊,跟棒錘差不了多少。
回復

使用道具 舉報

25#
ID:680729 發表于 2022-11-17 10:47 | 只看該作者
今天終于把數碼管點亮了。真是歷經千辛萬苦,搞單片機真是折磨人呢。程序沒什么大問題。問題應該出在焊接環節。焊直插蕊片用的自制焊臺,雖然有接地,但仍然有靜電?換兩片都不行,難道毀了兩個片子?后來干脆重新畫圖上貼片的用風槍。aip650這個片子,可能對靜電很敏感,容易壞。
程序和原理圖PCB文件:http://www.zg4o1577.cn/bbs/dpj-225200-1.html
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美日韩精品一区二区三区 | 成人精品视频在线 | 一级毛片在线视频 | 欧美久久不卡 | 久久免费视频1 | 日韩中文字幕一区二区 | 精品中文字幕一区二区三区 | 日本黄色大片免费看 | 日韩精品一区二区三区中文在线 | 久久一二三区 | 二区视频| 国产极品车模吞精高潮呻吟 | 中文字幕成人网 | 91免费在线视频 | 在线免费观看毛片 | 久久亚洲国产精品 | 一区二区三区久久久 | 欧美不卡视频一区发布 | 美女国内精品自产拍在线播放 | 精品国产乱码久久久久久丨区2区 | 国产精品99久久久久久久久 | 国产视频三级 | 91av大全| 91精品国产自产精品男人的天堂 | 妹子干综合 | 91在线资源 | 国产精品一区二区av | 欧洲一区二区视频 | 国产欧美日韩综合精品一区二区 | 久久九精品 | 仙人掌旅馆在线观看 | 性欧美精品一区二区三区在线播放 | 1级黄色大片 | 91精品国产91久久综合桃花 | 国产一区二区电影网 | 国产精品区一区二区三 | 亚洲精品久久久久久久久久久 | 国产精品久久久久久久久久了 | 日日干夜夜操 | 国产剧情一区二区三区 | 黄网在线观看 |