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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

多功能醫療健康手表設計制作,可測量心率,體溫 實現計步器 比賽作品

  [復制鏈接]
跳轉到指定樓層
樓主
  這是我們暑假參加比賽的作品,含源碼,實物圖,原理圖。請大家多多指教,一起學習本作品設計了一種可以同時檢測心率和體溫,并可以實現計步功能的手表,該裝置包括單片機控制器、MLX90614紅外測溫模塊、MMA7455計步模塊、系統實時時鐘、Pulse Sensor心率模塊、OLED12864顯示模塊、nRF24L01無線通信模塊和計算機控制軟件、電源九部分。
利用MLX90614紅外測溫模塊及Pulse Sensor心率模塊采集到人的實時體溫和心率數據,通過nRF24L01無線通信模塊將采集到的數據發送到單片機控制器,經過STC89LE5A60S2微控制器進行數據處理,再將數據傳到OLED12864顯示,并通過數據線串口發送數據到電腦,然后通過LabVIEW軟件對采集到的數據進一步的處理和分析。

  同時本作品還可以將計步模塊的數據通過STC89LE5A60S2單片機送到OLED12864顯示,實現計步功能。該作品可當作一個便攜式家用醫療小系統,實時監測體溫和心率,并可實現戶外運動的計步功能,達到方便、快捷、可自由移動的目的。

實物圖計步器功能:


下面是電路原理圖:


下面是整機圖:


多功能醫療健康手表設計的所有資料下載
(里面包含2個單片機源程序,分別實現了2個功能MLX90614程序-發送-耳溫和手表顯示):
程序.rar (253.42 KB, 下載次數: 240)



計步程序jibu.h文件:
  1. #include<reg51.h>
  2. #include <intrins.h>
  3. //#define uchar unsigned char
  4. //#define uint unsigned int

  5. void KeyScan1(void);

  6. sbit Key_jibu=P2^0;

  7. #define SET_TR2 AUXR |=  0x10
  8. #define CLR_TR2 AUXR &= ~0x10

  9. #define SET_ET2 IE2 |=  0x04
  10. #define CLR_ET2 IE2 &= ~0x04


  11. //nop指令個數定義
  12. #define nops() {_nop_();_nop_();_nop_();_nop_();_nop_();}
  13. bit start_flag=0;
  14. //端口定義,可修改
  15. sbit SDA1=P1^1; //IIC數據線定義 (可自行定義引腳)
  16. sbit SCL=P1^0; //IIC時鐘線定義 (可自行定義引腳)

  17. //內部數據定義
  18. unsigned char IIC_ad_main; //器件從地址   
  19. unsigned char IIC_ad_sub;  //器件子地址            
  20. unsigned char *IIC_buf;    //發送接收數據緩沖區   
  21. unsigned char IIC_num;     //發送接收數據緩個數
  22. unsigned int step_num=0;
  23. unsigned char x1,y1,z1;
  24. int x,y,z;
  25. bit x_flag=0;  
  26. //bit z_flag=0;
  27. #define ack 1      //主應答
  28. #define no_ack 0   //從應答

  29. /*延時子程序,實現按鍵消抖功能*/
  30. void delayms( )
  31. { int i=10,j=110;
  32.   for(i=10;i>0;i--)
  33.     for(j=110;j>0;j--);
  34.   }


  35. void send232byte(unsigned char bytebuf)
  36. {
  37.         SBUF=bytebuf;
  38.         while(!TI);       
  39.     TI=0;          
  40. }

  41. void IIC_start(void){
  42.         SCL=0;
  43.         SDA1=1;
  44.         _nop_();
  45.         SCL=1;
  46.         nops();
  47.         SDA1=0;
  48.         nops();
  49.         SCL=0;
  50. }
  51. //************************************************
  52. //送停止位SDA=0->1
  53. void IIC_stop(void){
  54.         SCL=0;
  55.         _nop_();
  56.         SDA1=0;
  57.         _nop_();
  58.         SCL=1;
  59.         nops();
  60.         SDA1=1;
  61.         nops();
  62.         SCL=0;
  63. }
  64. //************************************************
  65. //主應答(包括ack:SDA=0和no_ack:SDA=0)
  66. void IIC_ack_main(bit ack_main){
  67.         SCL=0;
  68.         if(ack_main)SDA1=0; //ack主應答
  69.         else SDA1=1; //no_ack無需應答
  70.         nops();
  71.         SCL=1;
  72.         nops();
  73.         SCL=0;
  74. }
  75. //*************************************************
  76. //字節發送程序
  77. //發送c(可以是數據也可以是地址),送完后接收從應答
  78. //不考慮從應答
  79. void send_byte(unsigned char c)
  80. {
  81.         unsigned char i;
  82.         for(i=0;i<8;i++)
  83.         {
  84.                 SCL=0;
  85.                 if((c<<i) & 0x80)SDA1=1; //判斷發送位
  86.                 else SDA1=0;
  87.                 _nop_();
  88.                 SCL=1;
  89.                 nops();
  90.                 SCL=0;
  91.        
  92.         nops();
  93.         SCL=0;
  94.         }
  95.         nops();
  96.         SDA1=1; //發送完8bit,釋放總線準備接受應答位
  97.         _nop_();
  98.         SCL=1;
  99.         nops(); //sda上數據即是從應答位
  100.         SCL=0; //不考慮從應答但要控制好時序
  101. }
  102. //**************************************************
  103. //字節接收程序
  104. //接受器件傳來的數據,此程序應配合主應答函數IIC-ack main()使用
  105. //return: uchar型1字節
  106. unsigned char read_byte(void){
  107. unsigned char i;
  108. unsigned char c;
  109.         c=0;
  110.         SCL=0;
  111.         _nop_();
  112.         SDA1=1; //置數據線為輸入方式
  113.         for(i=0;i<8;i++){
  114.                 _nop_();
  115.                 SCL=0; //置時鐘線為低,準備接收數據位
  116.                 nops();
  117.                 SCL=1; //置時鐘線為高,使數據線上數據有效
  118.                 _nop_();
  119.                 c<<=1;
  120.                 if(SDA1)c+=1; //讀數據位,將接收的數據存c
  121.         }
  122.         SCL=0;
  123.         return c;
  124. }
  125. //***************************************************
  126. //向無子地址器件發送單字節數據
  127. void send_to_byte(unsigned char ad_main,unsigned char c){
  128.         IIC_start();
  129.         send_byte(ad_main); //發送器件地址
  130.         send_byte(c); //發送數據c
  131.         IIC_stop();
  132. }
  133. //***************************************************
  134. //向有子地址器件發送多字節數據
  135. void send_to_nbyte(unsigned char ad_main,unsigned char ad_sub,unsigned char *buf,unsigned char num)
  136. {   unsigned char i;
  137.     IIC_start();
  138.         send_byte(ad_main); //發送器件地址
  139.         send_byte(ad_sub); //發送器件子地址
  140.         for(i=0;i<num;i++){
  141.                 send_byte(*buf); //發送數據buf
  142.                 buf++;
  143.         }
  144.         IIC_stop();
  145. }
  146. //***************************************************
  147. //從無子地址器件讀單字節數據
  148. //function:器件地址,所讀數據存在接收緩沖區當前字節
  149. void read_from_byte(unsigned char ad_main,unsigned char *buf){
  150.         IIC_start();
  151.         send_byte(ad_main); //發送器件
  152.         *buf=read_byte();
  153.         IIC_ack_main(no_ack); //無需應答<no_ack=0>
  154.         IIC_stop();
  155.         }
  156. //***************************************************
  157. //從有子地址器件讀多個字節數據
  158. //function:
  159. void read_from_nbyte(unsigned char ad_main,unsigned char ad_sub,unsigned char *buf,unsigned char num){
  160.         unsigned char i;
  161.         IIC_start();
  162.         send_byte(ad_main);
  163.         send_byte(ad_sub);
  164.         for(i=0;i<num-1;i++){
  165.                 *buf=read_byte();
  166.                 IIC_ack_main(ack); //,主應答<ack=1>
  167.                 buf++;
  168.         }
  169.         *buf=read_byte;
  170.         buf++; //本次指針調整無意義,目的是操作后buf指向下一地址
  171.         IIC_ack_main(no_ack); //無需應答<no_ack=0>
  172.         IIC_stop();
  173. }


  174. unsigned char MMA7455_readbyte(unsigned char address)
  175. {
  176. unsigned char ret = 100;
  177.         IIC_start();                //啟動
  178.         send_byte(0x3A);        //寫入設備ID及寫信號
  179.         send_byte(address);        //X地址
  180.         IIC_start();                //重新發送開始
  181.         send_byte(0x3B);        //寫入設備ID及讀信號
  182.         ret = read_byte();        //讀取一字節
  183.         IIC_stop();

  184.         return ret;
  185. }

  186. //寫入
  187. void MMA7455_writebyte(unsigned char address, unsigned char thedata)
  188. {
  189.         IIC_start();                //啟動
  190.         send_byte(0x3A);        //寫入設備ID及寫信號
  191.         send_byte(address);        //X地址
  192.         send_byte(thedata);        //寫入設備ID及讀信號
  193.         IIC_stop();
  194. }

  195. //初始化
  196. //初始化為指定模式
  197. void MMA7455_init()
  198. {  //2g輸出 測量模式
  199.         MMA7455_writebyte(0x16, 0x05);
  200.         //根據實際環境修改校驗值
  201.         /*MMA7455_writebyte(0x10,0x10);//校正X值
  202.         MMA7455_writebyte(0x12,0x30);//校正Y值
  203.         MMA7455_writebyte(0x14,0x00);//校正Z值 */
  204. }
  205. /************************顯示程序**********************************/
  206. void display()
  207. {
  208.   if (step_num/10000>0)         //萬
  209.    OLED_ShowNum(0+8*5,4,step_num/10000,1,8*16);
  210.   else
  211.    OLED_ShowNum(0+8*5,4,0,1,8*16);
  212.       if (step_num/1000>0)        //千
  213.         OLED_ShowNum(0+8*6,4,step_num%10000/1000,1,8*16);
  214.      else
  215.         OLED_ShowNum(0+8*6,4,0,1,8*16);          
  216.                      if (step_num/100>0)        //百
  217.              OLED_ShowNum(0+8*7,4,step_num%1000/100,1,8*16);
  218.           else
  219.              OLED_ShowNum(0+8*7,4,0,1,8*16);
  220.                          if (step_num/10>0)        //十
  221.              OLED_ShowNum(0+8*8,4,step_num%100/10,1,8*16);
  222.           else
  223.              OLED_ShowNum(0+8*8,4,0,1,8*16);
  224.                          //個
  225.                         OLED_ShowNum(0+8*9,4,step_num%10,1,8*16);                    
  226. }

  227. /************讀取重力信息**************/
  228. void Dat_dispose()
  229. {
  230.            if(start_flag)
  231.      {  x1=MMA7455_readbyte(0x06);
  232.             y1=MMA7455_readbyte(0x07);
  233.         z1=MMA7455_readbyte(0x08);
  234.           }
  235.            x=x1;
  236.          y=y1;
  237.          z=z1;
  238.          if((x&0x80)==0x00)
  239.          { x=(int)((x*196)/127); //轉變成加速度值
  240.          }
  241.          else {  x=255-x;
  242.                  x=(int)((x*196)/127);//轉變成加速度值
  243.                          x=(-1)*x;
  244.                    }
  245.          if((y&0x80)==0x00)
  246.          { y=(int)((y*196)/127); //轉變成加速度值
  247.          }
  248.          else {  y=255-y;
  249.                  y=(int)((y*196)/127);//轉變成加速度值
  250.                          y=(-1)*y;
  251.                    }
  252.          if((z&0x80)==0x00)
  253.          { z=(int)(((z-10)*196)/127); //轉變成加速度值
  254.          }
  255.          else {  z=255-z;
  256.                  z=(int)(((z+12)*196)/127);//轉變成加速度值
  257.                          z=(-1)*z;
  258.                    }

  259.          if(start_flag)
  260.           {
  261.            if(y>30&&x_flag==0&&z>70&&z<100)
  262.              {x_flag=1;
  263.                   step_num++;}
  264.                 else if(y<0)
  265.                 {  x_flag=0;}
  266.            }
  267.           else x_flag=0;
  268. }

復制代碼


主程序:
  1. #include "REG51.h"
  2. #include "OLED.h"
  3. //#include "bmp.h"
  4. #include "DS1302.h"
  5. #include "NRF24L01.h"
  6. #include "key_deal.h"
  7. #include "MMA7455.h"


  8. #define false 0
  9. #define true 1
  10. #define FOSC 11059200L                //系統時鐘
  11. #define BAUD 115200                                //波特率
  12. #define T0MS (65536-FOSC/12/500)                //500HZ in 12T MODE

  13. #define ADC_POWER 0x80                        //ADC POWER CONTROL BIT
  14. #define ADC_FLAG 0x10                        //ADC COMPLETE FLAG
  15. #define ADC_START 0x08;                        //ADC START CONTROL BIT
  16. #define ADC_SPEEDLL 0x00                //540 CLOCKS
  17. #define ADC_SPEEDL 0x20                        //360 CLOCKS
  18. #define ADC_SPEEDH 0x40                        //180 CLOCKS
  19. #define ADC_SPEEDHH 0x60                //90 CLOCKS
  20. #define ADC_MASK 0x01


  21. void ADC_init(unsigned char channel);
  22. void InitTimer0(void);
  23. unsigned char ReturnPulse(void);
  24. unsigned int analogRead(unsigned char channel);
  25. unsigned char PulsePin = 5;       // Pulse Sensor purple wire connected to analog pin 0(P1.0為傳感器輸入口)
  26. int fadeRate = 0;                 // used to fade LED on with PWM on fadePin
  27. unsigned char pp1;
  28. unsigned char pp0;
  29. unsigned char pp2;
  30. unsigned char pp3;
  31. unsigned int PL1=0;

  32. void UART_init(void);
  33. void Send(void);

  34. // these variables are volatile because they are used during the interrupt service routine!
  35. volatile unsigned int BPM;                   // used to hold the pulse rate
  36. volatile unsigned int Signal;                // holds the incoming raw data
  37. volatile unsigned int IBI = 600;             // holds the time between beats, must be seeded!
  38. volatile bit Pulse = false;     // true when pulse wave is high, false when it's low
  39. volatile bit QS = false;        // becomes true when Arduoino finds a beat.
  40. volatile int rate[10];                    // array to hold last ten IBI values
  41. volatile unsigned long sampleCounter = 0;          // used to determine pulse timing
  42. volatile unsigned long lastBeatTime = 0;           // used to find IBI
  43. volatile int Peak =512;                      // used to find peak in pulse wave, seeded
  44. volatile int Trough = 512;                     // used to find trough in pulse wave, seeded
  45. volatile int thresh = 512;                // used to find instant moment of heart beat, seeded
  46. volatile int amp = 100;                   // used to hold amplitude of pulse waveform, seeded
  47. volatile bit firstBeat = true;        // used to seed rate array so we startup with reasonable BPM
  48. volatile bit secondBeat = false;      // used to seed rate array so we startup with reasonable BPM
  49. static unsigned char order=0;
  50. unsigned char DisBuff[4]={0};

  51. void Int0_Init(void);
  52. //void Int1_Init(void);
  53. void Display_Init(void);


  54. static unsigned char data temp[10];
  55. bit data T0_FLAG=0;
  56. bit data key_flag;
  57. bit data key_flag1;
  58. unsigned int mode1 = 0;

  59. void delay(unsigned int n)
  60. {
  61.         unsigned int i,j;
  62.         for(i=0;i<n;i++)
  63.                 for(j=0;j<100;j++);
  64. }



  65. int main(void)
  66. {             //u8 t;
  67.                 //delay_init();                     //延時函數初始化          
  68.         //        NVIC_Configuration();          //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級         LED_Init();                             //LED端口初始化
  69.                 OLED_Init();                        //初始化OLED
  70.                 Ds1302_Init();
  71.                 InitTimer0();
  72.                 Display_Init();
  73.                 ADC_init(PulsePin);
  74.                 //InitTimer1();
  75.                 Int0_Init();
  76.                 init_NRF24L01();
  77.                 SetRX_Mode();
  78.                 UART_init();
  79.                 //Int1_Init();       

  80.     while(1)
  81.         {
  82.              delay_ms(10);

  83.             Ds1302_Read_Time();
  84.            /*判斷按鍵2是否啟動測試*/
  85.                 if(0 == Key_Down)               
  86.             {
  87.                  delay_ms(100);
  88.                  if(0 == Key_Down)
  89.             {
  90.              mode1=mode1+1;
  91.                  }
  92.                  }
  93.                  
  94.                                 /*        測心率        */
  95.                 if(mode1==1)
  96.                 {
  97.                          OLED_ShowCHinese(0,0,0);  //心
  98.                 OLED_ShowCHinese(16,0,1); //率
  99.                 OLED_ShowString(32,0,":");
  100.                         OLED_ShowCHinese(0,2,2);  //體
  101.                 OLED_ShowCHinese(16,2,3);  //溫
  102.                 OLED_ShowString(32,2,":");
  103.                                        
  104.                 if (QS == true&&PL1>1000)
  105.                 {                       // Quantified Self flag is true when arduino finds a heartbeat
  106.                                
  107.                 QS = false;
  108.                     delay(100);
  109.                         OLED_ShowNum(0+8*5,0,DisBuff[2],1,8*16);         //百位顯示
  110.                         OLED_ShowNum(0+8*6,0,DisBuff[1],1,8*16);                                         //個十位顯示
  111.                         OLED_ShowNum(0+8*7,0,DisBuff[0],1,8*16);
  112.                     OLED_ShowString(64,0,"bpm");
  113.                                  
  114.                                   ///判斷是否異常
  115.                         if((DisBuff[1]*10+DisBuff[0])<100&&(DisBuff[1]*10+DisBuff[0])>=60&&DisBuff[2]!=1)          
  116.                         {
  117.                          OLED_ShowCHinese(0+8*12,0,24);         //正常
  118.                          OLED_ShowCHinese(0+8*14,0,26);
  119.                         }
  120.                         else if(DisBuff[1]==0&&DisBuff[2]==0&&DisBuff[0]==0)
  121.                         {        
  122.                            OLED_ShowCHinese(0+8*12,0,29);           //空
  123.                            OLED_ShowCHinese(0+8*14,0,29);
  124.                          }
  125.                         else
  126.                         {
  127.                          OLED_ShowCHinese(0+8*12,0,25);                //異常
  128.                          OLED_ShowCHinese(0+8*14,0,26);
  129.                         }               
  130.                          
  131.                          }
  132.           delay(138);                         //  take a break 19.6ms

  133.                   /*溫度測量 */
  134.                    if(nRF24L01_RxPacket(temp)&&PL1>1000)  //接收溫度
  135.                 {
  136.                         SetTX_Mode();
  137.                         delay(100);                                          
  138.                         OLED_ShowString(56,2,".");
  139.                         OLED_ShowCHinese(72,2,19);
  140.                     OLED_ShowNum(0+8*5,2,temp[3]%100/10,1,8*16);   //temp[3]存放十位
  141.                         OLED_ShowNum(0+8*6,2,temp[3]%10,1,8*16);             //個位
  142.                         OLED_ShowNum(0+8*8,2,temp[2]%100/10,1,8*16);                //temp[2]存放小數位
  143.                             if(temp[3]>=36&&temp[3]<38)
  144.                             {
  145.                               OLED_ShowCHinese(0+8*12,2,24);
  146.                               OLED_ShowCHinese(0+8*14,2,26);
  147.                              }
  148.                                 else
  149.                                    {
  150.                                       OLED_ShowCHinese(0+8*12,2,25);
  151.                                       OLED_ShowCHinese(0+8*14,2,26);
  152.                                            }  
  153.                         temp[4] = ReturnPulse();
  154.                         nRF24L01_TxPacket(temp);
  155.                         SetRX_Mode();
  156.                                
  157.            }   
  158.                 if(PL1>1000)
  159.                  {
  160.                 PL1=0;
  161.                 Send();
  162.                 }
  163.            }
  164.            if(mode1>=3)
  165.            {                                                                      
  166.                     mode1=0;
  167.                         OLED_ShowCHinese(0,0,29); //心
  168.                         OLED_ShowCHinese(16,0,29);        //率
  169.                         OLED_ShowCHinese(32,0,29);
  170.                         OLED_ShowCHinese(64,0,29);
  171.                         OLED_ShowCHinese(72,0,29);
  172.                         OLED_ShowCHinese(48,0,29);
  173.                         OLED_ShowCHinese(56,0,29);
  174.                         OLED_ShowCHinese(40,0,29);
  175.                         OLED_ShowCHinese(0+8*12,0,29);
  176.                         OLED_ShowCHinese(0+8*14,0,29);
  177.                        
  178.                                          
  179.                         OLED_ShowCHinese(0,2,29); //
  180.                         OLED_ShowCHinese(16,2,29);        //
  181.                         OLED_ShowCHinese(32,2,29);
  182.                         OLED_ShowCHinese(72,2,29);
  183.                         OLED_ShowCHinese(64,2,29);
  184.                         OLED_ShowCHinese(48,2,29);
  185.                         OLED_ShowCHinese(56,2,29);
  186.                         OLED_ShowCHinese(40,2,29);
  187.                         OLED_ShowCHinese(0+8*12,2,29);       
  188.                         OLED_ShowCHinese(0+8*14,2,29);
  189.           
  190.                 }
  191.                                      
  192.                                 OLED_ShowNum(0+8*10,4,time_buf1[6]/10,1,8*16);                  
  193.                                 OLED_ShowNum(0+8*11,4,time_buf1[6]%10,1,8*16);
  194.                                 if(0 == time_buf1[6])
  195.                                 {
  196.                             OLED_ShowNum(0+8*7,4,time_buf1[5]/10,1,8*16);
  197.                                 OLED_ShowNum(0+8*8,4,time_buf1[5]%10,1,8*16);
  198.                                         if(0 == time_buf1[5])
  199.                                         {
  200.                                             EA = 0;                                                //////
  201.                                                 OLED_ShowNum(0+8*4,4,time_buf1[4]/10,1,8*16);
  202.                                                 OLED_ShowNum(0+8*5,4,time_buf1[4]%10,1,8*16);
  203.                                                 if(0 == time_buf1[4])                                                 
  204.                                                 {                                       
  205.                                                         OLED_ShowNum(0+8*9,6,time_buf1[3]/10,1,8*16);
  206.                                                         OLED_ShowNum(0+8*10,6,time_buf1[3]%10,1,8*16);
  207.                                                         OLED_ShowCHinese(8*12,6,WEEK[time_buf1[7]]);
  208.                                                         if(0 == time_buf1[3])
  209.                                                         {
  210.                                                                         OLED_ShowNum(0+8*6,6,time_buf1[2]/10,1,8*16);
  211.                                                                         OLED_ShowNum(0+8*7,6,time_buf1[2]%10,1,8*16);
  212.                                                                 if(0 == time_buf1[2])
  213.                                                                 {
  214.                                                                         OLED_ShowNum(0+8*3,6,time_buf1[1]/10,1,8*16);
  215.                                                                         OLED_ShowNum(0+8*4,6,time_buf1[1]%10,1,8*16);
  216.                                                                 }               
  217.                                                         }
  218.                                                 }
  219.                                        
  220.                                                 InitTimer0();  //每隔一小時,重新初始化一次                               
  221.                                         }
  222.                   
  223.                                                 }
  224.                         /*        時間調整/計步按鍵判斷        */
  225.                                                                 //按鍵判斷
  226.                         if(key_flag == 1) //進入按鍵掃描
  227.                         {
  228.                                 KeyScan();
  229.                                 key_flag = 0;
  230.                                 mode1=0;
  231.                         }
  232.                                  
  233.                        
  234.                         }                 
  235.                         }
  236.                        
  237. …………余下代碼請下載附件……
復制代碼

評分

參與人數 7黑幣 +133 收起 理由
nmhhjzl + 10 贊一個!
lwf1 + 8 很給力!
yangxiaochen + 5 很給力!
chenyan + 1
飛飛藍鳥 + 5 共享資料的黑幣獎勵!
send + 4 絕世好帖!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:138247 發表于 2017-3-8 13:43 | 只看該作者
不錯喲。。。
回復

使用道具 舉報

板凳
ID:151348 發表于 2017-3-8 21:11 | 只看該作者
還不錯,功能也多
回復

使用道具 舉報

地板
ID:170098 發表于 2017-3-12 15:20 | 只看該作者
多向你們學習
回復

使用道具 舉報

5#
ID:170098 發表于 2017-3-12 15:27 | 只看該作者
如果你還喜歡健身,那么你就會很想做一個這東西了
回復

使用道具 舉報

6#
ID:185155 發表于 2017-3-31 17:53 | 只看該作者
你好  請問你的心律儀在哪里買的 型號是?
回復

使用道具 舉報

7#
ID:185155 發表于 2017-3-31 17:54 | 只看該作者
你好  請問你的心律儀是在哪里買的
回復

使用道具 舉報

8#
ID:138931 發表于 2017-4-2 15:07 | 只看該作者
如果能加上心電監測就好了
回復

使用道具 舉報

9#
ID:159521 發表于 2017-4-24 15:36 | 只看該作者
樓主,能發一下電路原理圖嗎?1327342081@qq.com,不勝感激
回復

使用道具 舉報

10#
ID:194844 發表于 2017-5-4 19:06 | 只看該作者
如果能加上心電監測就好了
回復

使用道具 舉報

11#
ID:285299 發表于 2018-3-2 10:58 | 只看該作者
厲害   很給力啊
回復

使用道具 舉報

12#
ID:275610 發表于 2018-3-13 20:29 | 只看該作者
若能連接手機app顯示心電圖就太棒了
回復

使用道具 舉報

13#
ID:248186 發表于 2018-3-21 16:55 | 只看該作者
厲害啊
回復

使用道具 舉報

14#
ID:295949 發表于 2018-3-23 15:06 來自手機 | 只看該作者
要想鏈接手機app要怎么做啊
回復

使用道具 舉報

15#
ID:82765 發表于 2018-3-23 18:41 | 只看該作者
DDbong 發表于 2018-3-23 15:06
要想鏈接手機app要怎么做啊

你好!如果手機APP顯示,要用 WIFI 或 藍牙模塊來實現;
可以加我QQ,完成方案設計
回復

使用道具 舉報

16#
ID:297504 發表于 2018-3-26 20:49 | 只看該作者
厲害厲害
回復

使用道具 舉報

17#
ID:335251 發表于 2018-7-9 15:59 | 只看該作者
請問你的心律儀是在哪里買的
回復

使用道具 舉報

18#
ID:380389 發表于 2018-7-29 10:06 來自手機 | 只看該作者
很有實用價值,感謝分享
回復

使用道具 舉報

19#
ID:380519 發表于 2018-7-29 16:06 | 只看該作者
謝謝分享,感覺你這個肯定獲獎了把。很不錯
回復

使用道具 舉報

20#
ID:370943 發表于 2018-9-18 14:59 | 只看該作者
謝謝分享,使用價值很高,很不錯的設計
回復

使用道具 舉報

21#
ID:403698 發表于 2018-9-28 17:24 | 只看該作者
cjjcjj1 發表于 2018-3-23 18:41
你好!如果手機APP顯示,要用 WIFI 或 藍牙模塊來實現;
可以加我QQ,完成方案設計

有償急需設計一款只有計步功能的,速聯系我,電話:13930396692
回復

使用道具 舉報

22#
ID:284488 發表于 2019-3-25 09:55 | 只看該作者
下載,學習了。
回復

使用道具 舉報

23#
ID:503407 發表于 2019-4-7 23:54 | 只看該作者
謝謝分享,很不錯的
回復

使用道具 舉報

24#
ID:65956 發表于 2019-4-8 09:35 | 只看該作者
不錯的想法,不錯的設計,但體積和電池續航問題怎樣呢?
回復

使用道具 舉報

25#
ID:743099 發表于 2020-5-3 00:58 | 只看該作者
labview文件可以發嗎
回復

使用道具 舉報

26#
ID:961921 發表于 2021-8-31 14:45 | 只看該作者
感謝博主的干貨
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 不卡一二区 | 国产成人精品久久二区二区91 | 久久高清精品 | 好婷婷网| 狠狠狠 | 亚洲免费一区二区 | 国产精品久久久久久一区二区三区 | 浮生影院免费观看中文版 | 亚洲高清在线播放 | 国产欧美日韩精品一区 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 免费在线观看av网站 | 精品国产乱码久久久久久蜜臀 | 国产一区精品 | 超碰地址 | 欧美日韩成人在线 | 亚洲精品久久久一区二区三区 | av影音在线| 日韩毛片视频 | 国产区精品在线观看 | 国产一区二区在线视频 | www.日韩系列 | 在线观看中文字幕视频 | 人人爽人人爽人人片av | 欧美久久国产 | 国产精品久久久久久久久久三级 | 久久美女视频 | 亚洲色片网站 | 久久久久亚洲精品 | 日韩三级在线 | 九色视频网 | 欧美午夜视频 | 人人澡人人爱 | xx性欧美肥妇精品久久久久久 | 一区二区三区在线免费 | 华人黄网站大全 | 亚洲精品久久久久久国产精华液 | 综合精品久久久 | 精品国产精品国产偷麻豆 | 成人在线视频免费观看 | 欧美久久精品一级黑人c片 91免费在线视频 |