找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10206|回复: 12
打印 上一主题 下一主题
收起左侧

51单片机驱动ADS1115在1602上显示程序源码

  [复制链接]
跳转到指定楼层
楼主
ID:226864 发表于 2017-8-11 09:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /*------------------------------------------------------------------------------------------------------------------------------------------*/

  2. /*--*************************功能:   【ADS1115单端输入检测电压】********************--*/

  3. /*--*************************CPU:    【STC12C5A60S2】*******************************--*/

  4. /*--*************************ADC芯片:【ADS1115(2差分输入或4单端输入)】***********--*/

  5. /*--*************************液晶:   【LCD1602】************************************--*/

  6. /*--*************************ADC与单片机连接:【SCL:P1.0, SDA:P1.1】*******************--*/

  7. /*--*************************检测范围:【0.00~4.99V】*********************************--*/

  8. /*----------------------------------------------------------------------------------------------------------------------------------------*/

  9. #include <reg52.h>

  10. #include <intrins.h>

  11. #define uint unsigned int

  12. #define uchar unsigned char

  13. #define _Nop() _nop_()



  14. /*------------------------以下为LCD1602显示模块端口定义及函数声明-----------------------*/

  15. sbit lcd_rs_port = P2^2;                         /*定义LCD控制端口*/

  16. sbit lcd_rw_port = P2^3;

  17. sbit lcd_en_port = P2^4;

  18. #define lcd_data_port P0


  19. unsigned char num_char_table[] ={"0123456789ABCDEF"};

  20. unsigned char Lcd_Dis1_table[] ={"Volt:         V "};                       //电压显示框架

  21. unsigned char pos_char_table[] ={"      67.9AB  V "};                    //电压显示位置


  22. void lcd_delay(uchar ms);                                                                                          //LCD1602 延时

  23. void lcd_busy_wait();                                                                                                 //LCD1602 忙等待

  24. void lcd_command_write(uchar command);                                                          //LCD1602 命令字写入

  25. void lcd_system_reset();                                                                                             //LCD1602 初始化

  26. void lcd_char_write(ucharx_pos,y_pos,lcd_dat);                                                   //LCD1602 字符写入

  27. void lcd_bad_check();                                                                                                //LCD1602 坏点检查

  28. void Num_to_Disp(uint Num);                                                                                   //LCD1602 数据处理

  29. void LcdDisp(uint num);                                                                                              //LCD1602 数据显示

  30. void delay_1ms(uchar x);                                                                                           //LCD1602 延时1ms


  31. /*------------------------以下为ADS1115模块端口定义及函数声明--------------------------*/


  32. sbit SCL = P1^0;

  33. sbit SDA = P1^1;


  34. #define TRUE             1

  35. #define FALSE            0


  36. unsigned int Config;

  37. unsigned char Writebuff[4],Readbuff[3];

  38. unsigned int Result[2];

  39. int D_ADS;                                  //转换的数字量

  40. #define Accuracy 32768      //定义ADC精度,ADS1115单端输入时15位

  41. char VCC = 4.78;                   //VCC,电压参考值


  42. #define ADDRESS_0  0x90  //ADDR PIN ->GND

  43. #define ADDRESS_1  0x92  //ADDR PIN ->VDD

  44. #define ADDRESS_2  0x94  //ADDR PIN ->SDA

  45. #define ADDRESS_3  0x96  //ADDR PIN ->SCL


  46. /************POINTERREGISTER*****************/

  47. #define Pointer_0  0x00  //Convertion register

  48. #define Pointer_1  0x01  //Config register

  49. #define Pointer_2  0x02  //Lo_thresh register

  50. #define Pointer_3  0x03  //Hi_thresh register


  51. /************CONFIG REGISTER*****************/

  52. #define OS_0   0x0000

  53. #define OS_1   0x8000


  54. #define MUX_0  0x0000 //AINp=AIN0, AINn=AIN1

  55. #define MUX_1  0x1000 //AINp=AIN0, AINn=AIN3

  56. #define MUX_2  0x2000 //AINp=AIN1, AINn=AIN3

  57. #define MUX_3  0x3000 //AINp=AIN2, AINn=AIN3

  58. #define MUX_4  0x4000 //AINp=AIN0, AINn=GND

  59. #define MUX_5  0x5000 //AINp=AIN1, AINn=GND

  60. #define MUX_6  0x6000 //AINp=AIN2, AINn=GND

  61. #define MUX_7  0x7000 //AINp=AIN3, AINn=GND


  62. #define PGA_0  0x0000  //FS=6.144V

  63. #define PGA_1  0x0200  //FS=4.096V

  64. #define PGA_2  0x0400  //FS=2.048V

  65. #define PGA_3  0x0600  //FS=1.024V

  66. #define PGA_4  0x0800  //FS=0.512V

  67. #define PGA_5  0x0A00  //FS=0.256V

  68. #define PGA_6  0x0C00  //FS=0.256V

  69. #define PGA_7  0x0E00  //FS=0.256V


  70. #define MODE_0 0x0000

  71. #define MODE_1 0x0100


  72. #define DR_0   0x0000  //Data Rate = 8

  73. #define DR_1   0x0020  //Data Rate = 16

  74. #define DR_2   0x0040  //Data Rate = 32

  75. #define DR_3   0x0060  //Data Rate = 64

  76. #define DR_4   0x0080  //Data Rate = 128

  77. #define DR_5   0x00A0  //Data Rate = 250

  78. #define DR_6   0x00C0  //Data Rate = 475

  79. #define DR_7   0x00E0  //Data Rate = 860


  80. #define COMP_MODE_0  0x0000

  81. #define COMP_MODE_1  0x0010


  82. #define COMP_POL_0   0x0000

  83. #define COMP_POL_1   0x0008


  84. #define COMP_LAT_0   0x0000

  85. #define COMP_LAT_1   0x0040


  86. #define COMP_QUE_0   0x0000

  87. #define COMP_QUE_1   0x0001

  88. #define COMP_QUE_2   0x0002

  89. #define COMP_QUE_3   0x0003


  90. //*************ADDRInitial********************/

  91. #define ADDRESS    ADDRESS_0     //ADDR PIN ->GND

  92. #define ADDRESS_W  ADDRESS|0x00 //写地址

  93. #define ADDRESS_R  ADDRESS|0x01 //读地址


  94. /*************ConfigInitial*********************/

  95. #define OS         OS_1

  96. #define MUX_A0     MUX_4     //AINp=AIN0, AINn=GND

  97. #define MUX_A1     MUX_5     //AINp=AIN1, AINn=GND

  98. #define MUX_A2     MUX_6     //AINp=AIN2, AINn=GND

  99. #define MUX_A3     MUX_7     //AINp=AIN3, AINn=GND

  100. #define PGA        PGA_1      //FS=6.144V

  101. #define MODE       MODE_1     //Continuous conversion mode

  102. #define DR         DR_7       //Data Rate = 860

  103. #define COMP_QUE   COMP_QUE_3


  104. void Delay_us_15 (void);

  105. void Delay_ms_1 (void);   //功    能:延时

  106. void Start(void);                 //功    能:完成IIC的起始条件操作

  107. void Stop(void);                 //功    能:完成IIC的终止条件操作

  108. void ACK(void);                  //功    能:完成IIC的主机应答操作

  109. void NACK(void);               //功    能:完成IIC的主机无应答操作

  110. unsigned char Check(void);//功    能:检查从机的应答操作

  111. void Write_1_Byte(unsigned char DataByte);                                                                   //写 1个字节

  112. unsigned char Write_N_Byte(unsigned char*writebuffer,unsigned char n);                //写 N个字节

  113. unsigned char Read_1_Byte(void);                                                                                     //读 1个字节

  114. void Read_N_Byte(unsigned int*readbuff,unsigned char n);                                         //读 N个字节

  115. void InitADS1115(bit S_MUX_0, bit S_MUX_1);                                                               //ADS1115初始化

  116. void WriteWord(void);                                                                                                         //写

  117. void ReadWord(void);                                                                                                          //读

  118. unsigned int ADS1115(bit S_MUX_0, bitS_MUX_1);                                                       //ADS1115取值


  119. /*--------------------------------------------------------------------------------------------------------------------------------*/

  120. /*--*********************************【 主函数 】*******************************--*/

  121. /*-------------------------------------------------------------------------------------------------------------------------------*/

  122. void main()

  123. {

  124.         unsignedint result;

  125.         

  126.         lcd_system_reset();               //LCD1602 初始化

  127.         lcd_bad_check();                   //LCD1602 坏点检查

  128.         

  129.         while(1)

  130.         {      

  131.                  result= ADS1115(0,0);    //ADS1115取值_AIN0

  132.                  //result= ADS1115(0,1); //ADS1115取值_AIN1

  133. //result = ADS1115(1,0); //ADS1115取值_AIN2

  134. //result = ADS1115(1,1); //ADS1115取值_AIN3


  135.                  LcdDisp(result);                //LCD1602显示电压值

  136.         }      

  137. }

  138. /*--------------------------------------------------------------------------------------------------------------------------------*/

  139. /*--****************************************************************************--*/

  140. /*-------------------------------------------------------------------------------------------------------------------------------*/



  141. /*------------------------以下为LCD1602显示模块函数定义-----------------------*/


  142. void lcd_delay(uchar ms)     /***********LCD1602 延时***************/

  143. {

  144.    uchar j;

  145.    while(ms--){

  146.        for(j=0;j<250;j++)

  147.            {;}

  148.        }   

  149. }


  150. void lcd_busy_wait()         /**********LCD1602 忙等待*************/

  151. {

  152.    lcd_rs_port = 0;

  153.    lcd_rw_port = 1;

  154.    lcd_en_port = 1;

  155.    lcd_data_port = 0xff;

  156.    while (lcd_data_port&0x80);

  157.    lcd_en_port = 0;


  158. }


  159. void lcd_command_write(uchar command)   /**********LCD1602 命令字写入*************/

  160. {

  161.    lcd_busy_wait();

  162.    lcd_rs_port = 0;

  163.    lcd_rw_port = 0;

  164.    lcd_en_port = 0;

  165.    lcd_data_port = command;

  166.    lcd_en_port = 1;

  167.    lcd_en_port = 0;     

  168. }


  169. void lcd_system_reset()          /**********LCD1602 初始化**************/

  170. {

  171.    lcd_delay(20);

  172.    lcd_command_write(0x38);

  173.    lcd_delay(100);

  174.    lcd_command_write(0x38);

  175.    lcd_delay(50);

  176.    lcd_command_write(0x38);

  177.    lcd_delay(10);

  178.    lcd_command_write(0x08);

  179.    lcd_command_write(0x01);

  180.    lcd_command_write(0x06);

  181.    lcd_command_write(0x0c);

  182. }


  183. void lcd_char_write(ucharx_pos,y_pos,lcd_dat)  /******LCD1602 字符写入**********/

  184. {

  185.    x_pos &= 0x0f; /* X位置范围 0~15 */

  186.    y_pos &= 0x01; /* Y位置范围 0~ 1 */

  187.    if(y_pos==1) x_pos += 0x40;

  188.    x_pos += 0x80;

  189.    lcd_command_write(x_pos);

  190.    lcd_busy_wait();

  191.    lcd_rs_port = 1;

  192.    lcd_rw_port = 0;

  193.    lcd_en_port = 0;

  194.    lcd_data_port = lcd_dat;

  195.    lcd_en_port = 1;

  196.    lcd_en_port = 0;

  197. }


  198. void lcd_bad_check()                         /******LCD1602 坏点检查**********/

  199. {

  200.    char i,j;

  201.    for(i=0;i<2;i++){

  202.        for(j=0;j<16;j++) {

  203.            lcd_char_write(j,i,0xff);

  204.            }

  205.        }

  206.    lcd_delay(200);

  207.    lcd_delay(200);

  208.         lcd_delay(200);

  209.         lcd_delay(100);

  210.         lcd_delay(200);

  211.    lcd_command_write(0x01);       //clear lcd disp

  212. }


  213. void Num_to_Disp(uint Num)           /******LCD显示数据处理*****/ //Start_1-Over_1:显示电压值,Start_2-Over_2:显示ADS1115输出数值

  214. {                                                                                                                                                            

  215.         floatNUM;                                                                                                                 //Start_1

  216.         intxx, yy, zz, zzz;


  217.         NUM= (Num  / (float)Accuracy) * VCC;                                 //ADS1115取值 = Accuracy× (Vin / VCC)

  218.         xx= (int)NUM;

  219.         yy= (int)((NUM - (float)(xx)) * 10);

  220.         zz= (int)((NUM - (float)(xx)) * 100)%10;

  221.         zzz= (int)((NUM - (float)(xx)) * 1000)%10;


  222.         pos_char_table[6]= num_char_table[xx / 10];                  //电压值十位

  223.         pos_char_table[7]=num_char_table[xx % 10];                      //电压值个位

  224.         pos_char_table[9]=num_char_table[yy];                               //电压值小数点后一位

  225.         pos_char_table[10]=num_char_table[zz];                              //电压值小数点后两位

  226.         pos_char_table[11]=num_char_table[zzz];                        //电压值小数点后三位   //Over_1


  227. /*

  228.         pos_char_table[6]= num_char_table[Num / 10000];                                               //Start_2

  229.         pos_char_table[7]= num_char_table[(Num % 10000) / 1000];   

  230.         pos_char_table[8]=num_char_table[((Num % 10) % 1000) / 100];      

  231.         pos_char_table[9]=num_char_table[(Num / 10) % 10];                        

  232.         pos_char_table[A]=num_char_table[Num % 10];                                                    //Over_2

  233. */     

  234. }


  235. void LcdDisp(uint num)                       /************LCD显示*************/

  236. {

  237.         uinti=0;


  238.         for(i=0;i<16;i++)

  239.         {

  240.                  lcd_char_write(i,0,Lcd_Dis1_table[ i]);  //显示框架

  241.         }

  242.         Num_to_Disp(num);

  243.         for(i= 6; i < 12; i++)

  244.         {

  245.                  lcd_char_write(i,0,pos_char_table[ i]);  //显示电压

  246.         }                                                                                                     

  247.         delay_1ms(100);

  248. }


  249. void delay_1ms(uchar x)                    /*******1MS为单位的延时程序******/

  250. {

  251.    uchar j;

  252.    while(x--){

  253.        for(j=0;j<125;j++)

  254.            {;}

  255.        }   

  256. }


  257. /*------------------------以下为ADS1115模块端口函数定义--------------------------*/


  258. void Delay_us_15 (void)     /*延时程序*/

  259. {

  260.    unsigned char i;

  261.    

  262.    for(i = 0;i < 15;i++)

  263.      _nop_();

  264. }

  265. void Delay_ms_1 (void)

  266. {

  267.         unsignedchar i;

  268.         for(i= 150;i > 0;i--) _nop_();

  269. }      

  270. ///*******************************************

  271. //函数名称:Start

  272. //功    能:完成IIC的起始条件操作

  273. //参    数:无

  274. //返回值  :无

  275. //********************************************/

  276. void Start(void)

  277. {

  278.        SCL=1;

  279.        SDA=1;

  280.        Delay_us_15 ();

  281.                  SDA=0;

  282.        Delay_us_15 ();

  283.                  SCL=0;

  284.        Delay_us_15 ();

  285. }

  286. //

  287. ///*******************************************

  288. //函数名称:Stop

  289. //功    能:完成IIC的终止条件操作

  290. //参    数:无

  291. //返回值  :无

  292. //********************************************/

  293. void Stop(void)

  294. {

  295.        SDA=0;

  296.        Delay_us_15 ();

  297.        SCL=1;

  298.        Delay_us_15 ();

  299.                  SDA=1;

  300.        Delay_us_15 ();

  301. }

  302. ///*******************************************

  303. //函数名称:ACK

  304. //功    能:完成IIC的主机应答操作

  305. //参    数:无

  306. //返回值  :无

  307. //********************************************/

  308. void ACK(void)

  309. {

  310.        SDA=0;

  311.        _nop_(); _nop_();

  312.        SCL=1;

  313.        Delay_us_15 ();

  314.        SCL=0;

  315.                  _nop_();_nop_();

  316.                  SDA=1;

  317.        Delay_us_15 ();

  318. }

  319. //*******************************************

  320. //函数名称:NACK

  321. //功    能:完成IIC的主机无应答操作

  322. //参    数:无

  323. //返回值  :无

  324. //********************************************/

  325. void NACK(void)

  326. {

  327.         SDA=1;

  328.         _nop_();_nop_();

  329.         SCL=1;

  330.         Delay_us_15();

  331.         SCL=0;

  332.         _nop_();_nop_();

  333.         SDA=0;   

  334.         Delay_us_15();      

  335. }

  336. //**********检查应答信号函数******************/

  337. ///*如果返回值为1则证明有应答信号,反之没有*/

  338. ///*******************************************

  339. //函数名称:Check

  340. //功    能:检查从机的应答操作

  341. //参    数:无

  342. //返回值  :从机是否有应答:1--有,0--无

  343. //********************************************/

  344. unsigned char Check(void)

  345. {

  346.    unsigned char slaveack;

  347.    

  348.    SDA=1;

  349.    _nop_(); _nop_();

  350.    SCL=1;

  351.    _nop_(); _nop_();


  352.    _nop_(); _nop_();

  353.    slaveack = SDA;   //读入SDA数值

  354.    SCL=0;

  355.    Delay_us_15 ();

  356.   

  357.    if(slaveack)    return FALSE;

  358.    else            return TRUE;

  359. }


  360. /***************Write a Byte****************/

  361. void Write_1_Byte(unsigned char DataByte)

  362. {

  363.         inti;


  364.         for(i=0;i<8;i++)

  365.         {

  366.                  if(DataByte&0x80)  //if((DataByte<<i)&0x80)

  367.                    SDA=1;

  368.                  else

  369.                    SDA=0;

  370.        Delay_us_15 ();

  371.                  SCL=1;

  372.        Delay_us_15 ();

  373.        SCL=0;

  374.        Delay_us_15 ();

  375.        DataByte <<= 1;

  376.         }

  377.        SDA=1;

  378.        _nop_();

  379. }

  380. /***************Write NByte****************/

  381. unsigned char Write_N_Byte(unsigned char*writebuffer,unsigned char n)

  382. {

  383.         inti;


  384.         for(i=0;i<n;i++)

  385.         {

  386.                  Write_1_Byte(*writebuffer);

  387.                  if(Check())

  388.                 {

  389.                          writebuffer++;

  390.                  }

  391.                  else

  392.                  {

  393.                          Stop();

  394.                      return FALSE;

  395.                  }

  396.         }

  397.         Stop();

  398.         returnTRUE;

  399. }


  400. //***************Read aByte****************/

  401. unsigned char Read_1_Byte(void)

  402. {

  403.    unsigned char data_Value = 0, FLAG, i;

  404.         

  405.    for(i=0;i<8;i++)

  406.     {

  407.       

  408.         SDA=1;

  409.         Delay_us_15();

  410.    SCL=1;

  411.         Delay_us_15();

  412.        FLAG=SDA;

  413.        data_Value <<= 1;

  414.         if(FLAG)

  415.            data_Value |= 0x01;


  416.    SCL=0;

  417.    Delay_us_15 ();

  418.     }

  419.    return data_Value;

  420. }


  421. //***************Read NByte****************/

  422. void Read_N_Byte(unsigned int*readbuff,unsigned char n)

  423. {

  424.         unsignedchar i;

  425.         

  426.         for(i=0;i<n;i++)

  427.         {

  428.                  readbuff[ i]=Read_1_Byte();

  429.                  if(i==n-1)

  430.                          NACK();  //不连续读字节

  431.                  else

  432.                          ACK();//连续读字节

  433.         }

  434.         Stop();


  435. }

  436. //*****************初始化******************/

  437. void InitADS1115(bit S_MUX_0, bit S_MUX_1)

  438. {


  439.         

  440.         if(S_MUX_0 == 0 && S_MUX_1 == 0)                                      //AIN0

  441.         Config= OS+MUX_A0+PGA+DR+COMP_QUE+MODE;

  442.         if(S_MUX_0 == 0 && S_MUX_1 == 1)                                     //AIN1

  443.         Config= OS+MUX_A1+PGA+DR+COMP_QUE+MODE;

  444.         if(S_MUX_0 == 1 && S_MUX_1 == 0)                                      //AIN2

  445.         Config= OS+MUX_A2+PGA+DR+COMP_QUE+MODE;

  446.         if(S_MUX_0 == 1 && S_MUX_1 == 1)                                      //AIN3

  447.         Config= OS+MUX_A3+PGA+DR+COMP_QUE+MODE;

  448.    

  449.    Writebuff[0]=ADDRESS_W;

  450.    Writebuff[1]=Pointer_1;

  451.    Writebuff[2]=Config/256;

  452.    Writebuff[3]=Config%256;

  453.       

  454.    Readbuff[0]=ADDRESS_W;

  455.    Readbuff[1]=Pointer_0;

  456.       

  457.    Readbuff[2]=ADDRESS_R;

  458. }


  459. //***************Write aWord***********************/

  460. void WriteWord(void)

  461. {

  462.     int t;

  463.     Start();   //写入4个字节

  464.     do

  465.     {

  466.          t=Write_N_Byte(Writebuff,4);

  467.     }while(t==0);

  468. }

  469. //***************ReadWord***********************/

  470. void ReadWord(void)

  471. {

  472.    int t;

  473.    Start();  //写入2个字节

  474.    do

  475.     {

  476.      t=Write_N_Byte(Readbuff,2);

  477.    }while(t==0);


  478.    Start();   //写入2个字节

  479.    do

  480.     {

  481.      t=Write_N_Byte(&Readbuff[2],1);

  482.    }while(t==0);

  483.    

  484.    Read_N_Byte(Result,2);  //读出2个字节


  485. }

  486. //***************ADS1115********************/

  487. unsigned int ADS1115(bit S_MUX_0, bitS_MUX_1)

  488. {

  489.    InitADS1115(S_MUX_0, S_MUX_1);

  490.    WriteWord();

  491.    Delay_ms_1();

  492.    ReadWord();

  493.         

  494.    D_ADS=Result[0]*256+Result[1];  //转换的数字量


  495.       return D_ADS;

  496. }

复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:159492 发表于 2017-11-29 11:12 | 只看该作者
你好,你用这个程序调试成功了吗?
回复

使用道具 举报

板凳
ID:167337 发表于 2017-11-29 13:50 | 只看该作者
谢谢楼主分享资源,正需要这些资料学习。不过正想老二所说,程序编译一大堆错误?不知怎样改?
回复

使用道具 举报

地板
ID:128402 发表于 2017-12-11 12:57 | 只看该作者
YQS 发表于 2017-11-29 13:50
谢谢楼主分享资源,正需要这些资料学习。不过正想老二所说,程序编译一大堆错误?不知怎样改?

错误原因使用复制后unsigned int,unsigned char 中间没有空格很多的变量和变量类型间没有空格造成的,注意修改就可以编译成功。
回复

使用道具 举报

5#
ID:159492 发表于 2017-12-13 10:52 | 只看该作者
1039629873 发表于 2017-12-11 12:57
错误原因使用复制后unsigned int,unsigned char 中间没有空格很多的变量和变量类型间没有空格造成的,注 ...

如何测量差分电压呢?
回复

使用道具 举报

6#
ID:104779 发表于 2017-12-28 21:25 | 只看该作者
请问ADS1015和这个程序能通用吗?
回复

使用道具 举报

7#
ID:325030 发表于 2018-6-12 20:45 | 只看该作者
改完了,最后一个C235错误,实在找不到哪里问题了。
回复

使用道具 举报

8#
ID:419072 发表于 2019-3-21 19:29 | 只看该作者
我编译也全部通过了,直接亮屏检测玩坏点就没有反应了,stc12c5a60s2.11.0592晶振
回复

使用道具 举报

9#
ID:503223 发表于 2019-4-2 15:00 | 只看该作者
我编译没有通过,报告是:*** ERROR L256: MODULE CONTAINS DUPLICATE SEGMENT NAMES
报告了L256错误
回复

使用道具 举报

10#
ID:585455 发表于 2020-9-25 13:52 | 只看该作者
電壓只能測到3.99v,後來修改兩處至少可以測到自己的5v,
修改處:
char VCC = 4.78;   改為    float VCC = 6.144;
#define PGA        PGA_1   改為  #define PGA        PGA_0
回复

使用道具 举报

11#
ID:421184 发表于 2021-4-20 20:55 | 只看该作者
楼主,有原理图吗?我ADS1115的AINP是AIN0,AINN是AIN1,需要怎么修改程序呢?我想看看你的原理图,谢谢啦
回复

使用道具 举报

12#
ID:1089420 发表于 2023-7-23 18:47 | 只看该作者
感谢大佬,感谢大佬,感谢大佬。我调试成功了!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

13#
ID:1089420 发表于 2023-7-23 18:48 | 只看该作者
梦随心行 发表于 2017-11-29 11:12
你好,你用这个程序调试成功了吗?

我调试成功了!!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表