找回密码
 立即注册

QQ登录

只需一步,快速开始

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

BMP180数据手册+STM32例程+51单片机例程

  [复制链接]
跳转到指定楼层
楼主
ID:205817 发表于 2017-5-29 13:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,正巧在做一个bmp180课题,找的一点资料


里面有如下文件:
51单片机BMP180气压计例程
STM32_bmp180例程
STM32F103气压计BMP180例程


BMP180数据手册pdf格式文件(附件中可下载):


STM32单片机源程序如下:
  1. #include "BMP180.h"
  2. #include "delay.h"
  3. //////////////////////////////////////////////////////////////////////////////////
  4. //气压传感器BMP180的STM32驱动,本程序只供学习使用
  5. //////////////////////////////////////////////////////////////////////////////////
  6.   
  7. //初始化IIC
  8. void IIC_Init(void)
  9. {
  10.       
  11. GPIO_InitTypeDef GPIO_InitStructure;
  12. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );
  13.    
  14. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;
  15. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽输出
  16. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  17. GPIO_Init(GPIOB, &GPIO_InitStructure);
  18. GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11); //PB10,PB11 输出高

  19. }
  20. //产生IIC起始信号
  21. void IIC_Start(void)
  22. {

  23. SDA_OUT();     //sda线输出
  24. IIC_SDA=1;   
  25. IIC_SCL=1;
  26. delay_us(4);
  27. IIC_SDA=0;//START:when CLK is high,DATA change form high to low
  28. delay_us(4);
  29. IIC_SCL=0;//钳住I2C总线,准备发送或接收数据

  30. }
  31. //产生IIC停止信号
  32. void IIC_Stop(void)
  33. {

  34. SDA_OUT();//sda线输出
  35. IIC_SCL=0;
  36. IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
  37. delay_us(4);
  38. IIC_SCL=1;
  39. IIC_SDA=1;//发送I2C总线结束信号
  40. delay_us(4);  

  41. }
  42. //等待应答信号到来
  43. //返回值:1,接收应答失败
  44. //        0,接收应答成功
  45. u8 IIC_Wait_Ack(void)
  46. {

  47. u8 ucErrTime=0;
  48. SDA_IN();      //SDA设置为输入
  49. IIC_SDA=1;delay_us(1);  
  50. IIC_SCL=1;delay_us(1);
  51. while(READ_SDA)
  52. {

  53. ucErrTime++;
  54. if(ucErrTime>250)
  55. {

  56. IIC_Stop();
  57. return 1;

  58. }

  59. }
  60. IIC_SCL=0;//时钟输出0   
  61. return 0;

  62. }
  63. //产生ACK应答
  64. void IIC_Ack(void)
  65. {

  66. IIC_SCL=0;
  67. SDA_OUT();
  68. IIC_SDA=0;
  69. delay_us(2);
  70. IIC_SCL=1;
  71. delay_us(2);
  72. IIC_SCL=0;

  73. }
  74. //不产生ACK应答   
  75. void IIC_NAck(void)
  76. {

  77. IIC_SCL=0;
  78. SDA_OUT();
  79. IIC_SDA=1;
  80. delay_us(2);
  81. IIC_SCL=1;
  82. delay_us(2);
  83. IIC_SCL=0;

  84. }     
  85. //IIC发送一个字节
  86. //返回从机有无应答
  87. //1,有应答
  88. //0,无应答
  89. void IIC_Send_Byte(u8 txd)
  90. {
  91.                         
  92.     u8 t;  
  93. SDA_OUT();   
  94.     IIC_SCL=0;//拉低时钟开始数据传输
  95.     for(t=0;t<8;t++)
  96.     {
  97.                
  98.         //IIC_SDA=(txd&0x80)>>7;
  99. if((txd&0x80)>>7)
  100. IIC_SDA=1;
  101. else
  102. IIC_SDA=0;
  103. txd<<=1;  
  104. delay_us(2);   //对TEA5767这三个延时都是必须的
  105. IIC_SCL=1;
  106. delay_us(2);
  107. IIC_SCL=0;
  108. delay_us(2);
  109.      
  110. }

  111. }   
  112. //读1个字节,ack=1时,发送ACK,ack=0,发送nACK  
  113. u8 IIC_Read_Byte(unsigned char ack)
  114. {

  115. unsigned char i,receive=0;
  116. SDA_IN();//SDA设置为输入
  117.     for(i=0;i<8;i++ )
  118. {

  119.         IIC_SCL=0;
  120.         delay_us(2);
  121. IIC_SCL=1;
  122.         receive<<=1;
  123.         if(READ_SDA)receive++;  
  124. delay_us(1);
  125.      
  126. }
  127.     if (!ack)
  128.         IIC_NAck();//发送nACK
  129.     else
  130.         IIC_Ack(); //发送ACK  
  131.     return receive;

  132. }

  133. u8 BMP180_ReadOneByte(u8 ReadAddr)
  134. {
  135.    
  136. u8 temp=0;      
  137.     IIC_Start();
  138. IIC_Send_Byte(BMP180_WR_ADDR);   //发送写命令
  139. IIC_Wait_Ack();  
  140.     IIC_Send_Byte(ReadAddr);   //发送要读的寄存器地址
  141. IIC_Wait_Ack();   
  142. IIC_Start();     
  143. IIC_Send_Byte(BMP180_RD_ADDR);           //进入接收模式  
  144. IIC_Wait_Ack();
  145.     temp=IIC_Read_Byte(0);  
  146.     IIC_Stop();//产生一个停止条件   
  147. return temp;

  148. }



  149. // u16 BMP180_ReadTowByte(u8 ReadAddr)
  150. // {
  151.    
  152. // u16 temp=0;      
  153. //     IIC_Start();
  154. // IIC_Send_Byte(BMP180_WR_ADDR);   //发送写命令
  155. // IIC_Wait_Ack();  
  156. //     IIC_Send_Byte(ReadAddr);   //发送要读的寄存器地址
  157. // IIC_Wait_Ack();   
  158. // IIC_Start();     
  159. // IIC_Send_Byte(BMP180_RD_ADDR);           //进入接收模式  
  160. // IIC_Wait_Ack();
  161. // IIC_Send_Byte(BMP180_RD_ADDR);           //进入接收模式  
  162. // IIC_Wait_Ack();
  163. //     temp=IIC_Read_Byte(0);  
  164. //     IIC_Stop();//产生一个停止条件   
  165. // return temp;
  166. //
  167. }
  168. //在AT24CXX指定地址写入一个数据
  169. //WriteAddr  :写入数据的目的地址   
  170. //DataToWrite:要写入的数据
  171. void BMP180_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
  172. {
  173.            
  174.     IIC_Start();

  175. IIC_Send_Byte(BMP180_WR_ADDR);    //发送写命令
  176.   
  177. IIC_Wait_Ack();  
  178.     IIC_Send_Byte(WriteAddr);   //发送地址
  179. IIC_Wait_Ack();      
  180. IIC_Send_Byte(DataToWrite);     //发送字节  
  181. IIC_Wait_Ack();        
  182.     IIC_Stop();//产生一个停止条件
  183. delay_us(1);

  184. }

  185. // int BMP180_CRC_Read(u8 addr)
  186. // {

  187. // u16 temp;
  188. // temp = (BMP180_ReadOneByte(addr)<<8)|BMP180_ReadOneByte(addr+1);   
  189. // return temp;
  190. //
  191. }
  192. short BMP180_CRC_Read(u8 addr)
  193. {

  194.         u8 msb,lsb;
  195.         short data;
  196.         IIC_Start();
  197.         IIC_Send_Byte(BMP180_WR_ADDR);   //发送写命令
  198.         IIC_Wait_Ack();  
  199.         IIC_Send_Byte(addr);   //发送要读的寄存器地址
  200.         IIC_Wait_Ack();
  201.         IIC_Start();
  202.         IIC_Send_Byte(BMP180_RD_ADDR);
  203.          
  204.         IIC_Wait_Ack();
  205.         msb=IIC_Read_Byte(1);
  206.         //IIC_Wait_Ack();
  207.         lsb=IIC_Read_Byte(0);
  208.         //IIC_Wait_Ack();
  209.         IIC_Stop();
  210.         delay_us(5);
  211.         data= msb << 8;
  212.         data|= lsb;
  213.         return data;

  214. }
  215. u16 BMP085_Get_UT(void)
  216. {

  217.         IIC_Start();
  218.         IIC_Send_Byte(BMP180_WR_ADDR);//发送写命令
  219.         //IIC_Wait_Ack();
  220.         IIC_Send_Byte(0xf4);        //发送字
  221.         //IIC_Wait_Ack();
  222.         IIC_Send_Byte(0x2E);
  223.         IIC_Stop();
  224.         delay_ms(5);
  225. ……………………

  226. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
BMP180数据手册 STM32例程 51例程.zip (1.65 MB, 下载次数: 708)


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

使用道具 举报

来自 2#
ID:371423 发表于 2018-8-18 21:49 | 只看该作者
恕我直言,文件里面51那部分函数写的跟翔一样,typedef覆盖了一部分数据类型,有些关键字还有缺失,比如unsigned少了第一个u,变成了nsigned这样。缩进乱七八糟,空格和换行哪里都是。说是例程,实际上是从例程把主函数删去,只剩下BMP180相关的部分了,可以明显看到残留的各种头文件和残缺的显示函数。
倒不是说楼主怎么样,也许这程序也不是楼主大人写的,但是这质量,不忍直视。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

来自 3#
ID:371423 发表于 2018-8-18 22:21 | 只看该作者
之前说的有些言重了,我把BMP180的51部分驱动函数排版了一下,函数声明已经在C文件里写了,不再需要h头文件。声明一下,还没有进行测试,只是将楼主的函数整理了一下而已。传上来给大家验证好了。

BMP180.zip (1.74 KB, 下载次数: 136)

评分

参与人数 1黑币 +70 收起 理由
admin + 70 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:217778 发表于 2017-7-7 00:16 | 只看该作者
楼主好人,谢谢分享
回复

使用道具 举报

5#
ID:249600 发表于 2017-11-15 10:42 | 只看该作者
多谢楼主分享!!正在找相关的资料呢
回复

使用道具 举报

6#
ID:263209 发表于 2017-12-19 11:10 | 只看该作者
你好,楼主,我用了你在资料里面发的51单片机例程,是不是需要相应配套的主函数。。还
回复

使用道具 举报

7#
ID:265439 发表于 2017-12-22 19:40 | 只看该作者
谢谢分享
回复

使用道具 举报

8#
ID:259873 发表于 2017-12-30 22:31 | 只看该作者
下载还要积分真是的。才开始啥都不会啊。。。。。。
回复

使用道具 举报

9#
ID:329290 发表于 2018-5-14 08:41 | 只看该作者
谢谢分享
回复

使用道具 举报

10#
ID:339914 发表于 2018-5-28 16:39 | 只看该作者
楼主好人,谢谢分享2333
回复

使用道具 举报

11#
ID:43600 发表于 2018-5-30 11:26 | 只看该作者
Just need, Thanks !!!
回复

使用道具 举报

12#
ID:342435 发表于 2018-5-31 19:53 | 只看该作者
感谢楼主 正需要用这个呢
回复

使用道具 举报

13#
ID:343102 发表于 2018-6-1 20:12 | 只看该作者
多谢楼主分享!
回复

使用道具 举报

14#
ID:343102 发表于 2018-6-1 21:55 | 只看该作者
谢谢分享,下来学习学习。
回复

使用道具 举报

15#
ID:291796 发表于 2018-6-13 22:00 | 只看该作者
编译失败,不能使用
回复

使用道具 举报

16#
ID:345352 发表于 2018-6-26 20:45 来自手机 | 只看该作者
厉害,底层还是比较少人研究的
回复

使用道具 举报

17#
ID:297157 发表于 2018-7-5 09:48 | 只看该作者
牛啊,谢谢分享,一起加油!
回复

使用道具 举报

18#
ID:380510 发表于 2018-7-29 15:47 | 只看该作者
牛逼啊 可是怎么才能下载呢
回复

使用道具 举报

19#
ID:380510 发表于 2018-7-29 15:49 | 只看该作者
下载那 牛逼啊大兄弟
回复

使用道具 举报

20#
ID:382569 发表于 2018-8-3 15:25 | 只看该作者
感谢楼主的分享
回复

使用道具 举报

21#
ID:384623 发表于 2018-8-9 15:04 | 只看该作者
楼主好人,谢谢分享
回复

使用道具 举报

22#
ID:384848 发表于 2018-8-10 09:22 | 只看该作者
谢谢分享
回复

使用道具 举报

23#
ID:432447 发表于 2018-12-4 17:05 | 只看该作者
谢谢楼主。。。
回复

使用道具 举报

24#
ID:406692 发表于 2018-12-19 16:14 | 只看该作者
谢谢楼主。
回复

使用道具 举报

25#
ID:331281 发表于 2019-1-8 16:48 | 只看该作者
感谢,准备开发一款相关产品,很有参考价值
回复

使用道具 举报

26#
ID:331281 发表于 2019-1-8 16:50 | 只看该作者
NPC-1024 发表于 2018-8-18 22:21
之前说的有些言重了,我把BMP180的51部分驱动函数排版了一下,函数声明已经在C文件里写了,不再需要h头文件 ...

怎么办,直接伸手要了,不过感谢整理,论坛有你更精彩1
回复

使用道具 举报

27#
ID:496214 发表于 2019-3-27 09:24 | 只看该作者
谢谢楼上大神的分享 辛苦了
回复

使用道具 举报

28#
ID:500212 发表于 2019-3-28 22:44 | 只看该作者
楼主真爱啊
回复

使用道具 举报

29#
ID:158375 发表于 2019-5-31 15:56 | 只看该作者
谢谢楼主分享。
谢谢沙发。
回复

使用道具 举报

30#
ID:361551 发表于 2019-7-12 10:16 | 只看该作者
正在用这个模块,感觉很有用
回复

使用道具 举报

31#
ID:705277 发表于 2020-3-15 09:29 | 只看该作者
谢谢楼主
回复

使用道具 举报

32#
ID:721117 发表于 2020-4-8 12:02 | 只看该作者
NPC-1024 发表于 2018-8-18 22:21
之前说的有些言重了,我把BMP180的51部分驱动函数排版了一下,函数声明已经在C文件里写了,不再需要h头文件 ...

多谢分享
回复

使用道具 举报

33#
ID:79544 发表于 2021-4-26 08:44 | 只看该作者
  1. //#include<intrins.h>
  2. #include<reg52.h>
  3. sbit BMP180_SCL=P0^3;
  4. sbit BMP180_SDA=P0^4;

  5. #define BMP180_SlaveAddress 0xee//定义器件在IIC总线中的从地址
  6. #define OSS 0//Over sampling Setting(note:code is not set up to use other OSS values)

  7. void Init_BMP180();
  8. void BMP180_Calculate();

  9. long BMP180_Temperature=0;//温度值
  10. long BMP180_Pressure=0;//压力值
  11. long BMP180_Height=0;//相对海拔高度值

  12. int dis_data;
  13. short ac1;
  14. short ac2;
  15. short ac3;
  16. unsigned short ac4;
  17. unsigned short ac5;
  18. unsigned short ac6;
  19. short b1;
  20. short b2;
  21. short mb;
  22. short mc;
  23. short md;

  24. void BMP180_Delay5us()//@11.0592MHz
  25. {
  26.         unsigned char i;

  27.         _nop_();
  28.         i=11;
  29.         while(--i);
  30. }

  31. void BMP180_Delay4500us()//@11.0592MHz
  32. {
  33.         unsigned char i, j;

  34.         _nop_();
  35.         _nop_();
  36.         i = 49;
  37.         j = 101;
  38.         do
  39.         {
  40.                 while (--j);
  41.         } while (--i);
  42. }

  43. void BMP180_IIC_Start()
  44. {
  45.         BMP180_SDA=1;//拉高数据线
  46.         BMP180_SCL=1;//拉高时钟线
  47.         BMP180_Delay5us();//延时
  48.         BMP180_SDA=0;//产生下降沿
  49.         BMP180_Delay5us();//延时
  50.         BMP180_SCL=0;//拉低时钟线
  51. }

  52. void BMP180_IIC_Stop()
  53. {
  54.         BMP180_SDA=0;//拉低数据线
  55.         BMP180_SCL=1;//拉高时钟线
  56.         BMP180_Delay5us();//延时
  57.         BMP180_SDA=1;//产生上升沿
  58.         BMP180_Delay5us();//延时
  59. }

  60. void BMP180_IIC_SendACK(bit ack)//发送应答信号,参数0:ACK1:NAK
  61. {
  62.         BMP180_SDA=ack;//写应答信号
  63.         BMP180_SCL=1;//拉高时钟线
  64.         BMP180_Delay5us();//延时
  65.         BMP180_SCL=0;//拉低时钟线
  66.         BMP180_Delay5us();//延时
  67. }

  68. bit BMP180_IIC_ReceiveACK()
  69. {
  70.         BMP180_SCL=1;//拉高时钟线
  71.         BMP180_Delay5us();//延时
  72.         CY=BMP180_SDA;//读应答信号
  73.         BMP180_SCL=0;//拉低时钟线
  74.         BMP180_Delay5us();//延时

  75.         return CY;
  76. }

  77. void BMP180_IIC_SendByte(unsigned char dat)
  78. {
  79.         unsigned char i;

  80.         for(i=0;i<8;i++)//8位计数器
  81.         {
  82.                 dat<<=1;//移出数据的最高位
  83.                 BMP180_SDA=CY;//送数据口
  84.                 BMP180_SCL=1;//拉高时钟线
  85.                 BMP180_Delay5us();//延时
  86.                 BMP180_SCL=0;//拉低时钟线
  87.                 BMP180_Delay5us();//延时
  88.         }
  89.         BMP180_IIC_ReceiveACK();
  90. }

  91. unsigned char BMP180_IIC_RecvByte()
  92. {
  93.         unsigned char i;
  94.         unsigned char dat=0;

  95.         BMP180_SDA=1;//使能内部上拉,准备读取数据,
  96.         for(i=0;i<8;i++)//8位计数器
  97.         {
  98.                 dat<<=1;
  99.                 BMP180_SCL=1;//拉高时钟线
  100.                 BMP180_Delay5us();//延时
  101.                 dat|=BMP180_SDA;//读数据
  102.                 BMP180_SCL=0;//拉低时钟线
  103.                 BMP180_Delay5us();//延时
  104.         }
  105.         return dat;
  106. }

  107. short BMP180_IIC_MultRead(unsigned char ST_Address)//读取两个字节
  108. {
  109.         unsigned char msb,lsb;
  110.         short _data;
  111.         BMP180_IIC_Start();//起始信号
  112.         BMP180_IIC_SendByte(BMP180_SlaveAddress);//发送设备地址+写信号
  113.         BMP180_IIC_SendByte(ST_Address);//发送存储单元地址
  114.         BMP180_IIC_Start();//起始信号
  115.         BMP180_IIC_SendByte(BMP180_SlaveAddress+1);//发送设备地址+读信号

  116.         msb=BMP180_IIC_RecvByte();//BUF[0]存储
  117.         BMP180_IIC_SendACK(0);//回应ACK
  118.         lsb=BMP180_IIC_RecvByte();
  119.         BMP180_IIC_SendACK(1);//最后一个数据需要回NOACK

  120.         BMP180_IIC_Stop();//停止信号
  121.         Delay5ms();
  122.         _data=msb<<8;
  123.         _data|=lsb;
  124.         return _data;
  125. }

  126. long BMP180_Read_Temperature()
  127. {
  128.         BMP180_IIC_Start();//起始信号
  129.         BMP180_IIC_SendByte(BMP180_SlaveAddress);//发送设备地址+写信号
  130.         BMP180_IIC_SendByte(0xF4);//writeregisteraddress
  131.         BMP180_IIC_SendByte(0x2E);//writeregisterdatafortemp
  132.         BMP180_IIC_Stop();//发送停止信号
  133.         Delay_1ms(10);//maxtimeis4.5ms

  134.         return (long)BMP180_IIC_MultRead(0xF6);
  135. }

  136. long BMP180_Read_Pressure()
  137. {
  138.         long BMP180_Pressure=0;

  139.         BMP180_IIC_Start();//起始信号
  140.         BMP180_IIC_SendByte(BMP180_SlaveAddress);//发送设备地址+写信号
  141.         BMP180_IIC_SendByte(0xF4);//writeregisteraddress
  142.         BMP180_IIC_SendByte(0x34);//writeregisterdataforpressure
  143.         BMP180_IIC_Stop();//发送停止信号
  144.         BMP180_Delay4500us();//max time is 4.5ms

  145.         BMP180_Pressure=BMP180_IIC_MultRead(0xF6);
  146.         BMP180_Pressure&=0x0000FFFF;

  147.         return BMP180_Pressure;
  148. }

  149. void Init_BMP180()//初始化BMP180
  150. {
  151.         ac1=BMP180_IIC_MultRead(0xAA);
  152.         ac2=BMP180_IIC_MultRead(0xAC);
  153.         ac3=BMP180_IIC_MultRead(0xAE);
  154.         ac4=BMP180_IIC_MultRead(0xB0);
  155.         ac5=BMP180_IIC_MultRead(0xB2);
  156.         ac6=BMP180_IIC_MultRead(0xB4);
  157.         b1=BMP180_IIC_MultRead(0xB6);
  158.         b2=BMP180_IIC_MultRead(0xB8);
  159.         mb=BMP180_IIC_MultRead(0xBA);
  160.         mc=BMP180_IIC_MultRead(0xBC);
  161.         md=BMP180_IIC_MultRead(0xBE);
  162. }

  163. void BMP180_Calculate()
  164. {
  165.         unsigned int ut;
  166.         unsigned long up;
  167.         long x1,x2,b5,b6,x3,b3,p;
  168.         unsigned long b4,b7;

  169.         ut=BMP180_Read_Temperature();//读取温度
  170.         up=BMP180_Read_Pressure();//读取压强
  171.         x1=(((long)ut-(long)ac6)*(long)ac5)>>15;
  172.         x2=((long)mc<<11)/(x1+md);
  173.         b5=x1+x2;
  174.         BMP180_Temperature=((b5+8)>>4);
  175.         b6=b5-4000;
  176.         //Calculate B3
  177.         x1=(b2*(b6*b6)>>12)>>11;
  178.         x2=(ac2*b6)>>11;
  179.         x3=x1+x2;
  180.         b3=(((((long)ac1)*4+x3)<<OSS)+2)>>2;

  181.         //Calculate B4
  182.         x1=(ac3*b6)>>13;
  183.         x2=(b1*((b6*b6)>>12))>>16;
  184.         x3=((x1+x2)+2)>>2;
  185.         b4=(ac4*(unsigned long)(x3+32768))>>15;

  186.         b7=((unsigned long)(up-b3)*(50000>>OSS));
  187.         if(b7<0x80000000)
  188.         {
  189.                 p=(b7<<1)/b4;
  190.         }
  191.         else
  192.         {
  193.                 p=(b7/b4)<<1;
  194.         }

  195.         x1=(p>>8)*(p>>8);
  196.         x1=(x1*3038)>>16;
  197.         x2=(-7357*p)>>16;
  198.         BMP180_Pressure=p+((x1+x2+3791)>>4);

  199.         BMP180_Height=(101325-BMP180_Pressure)*9;
  200. }
复制代码
回复

使用道具 举报

34#
ID:791943 发表于 2022-3-25 21:05 | 只看该作者

请问这是51单片机的完整代码吗?
回复

使用道具 举报

35#
ID:277928 发表于 2023-3-27 13:42 | 只看该作者
感谢楼主的热心分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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