亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7943|回復(fù): 2
收起左側(cè)

基于51單片機(jī)'ST188心率脈搏檢測(cè)程序與原理圖分享

[復(fù)制鏈接]
ID:274459 發(fā)表于 2021-1-9 20:02 | 顯示全部樓層 |閱讀模式
內(nèi)含完整原理圖設(shè)計(jì)、文檔等

原理圖

原理圖
傳感器的引腳圖.png

元件清單:
51hei.png
元件型號(hào)    元件名稱    元件標(biāo)號(hào)
10uF    電容    C1
20PF    電容    C2, C3
10uF    電容    C4
1uF    電容    C5, C6
LED-R-3mm    指示燈    D1
LCD12864    液晶    LCD1
10K    可調(diào)電阻    RV1
10K    電阻    R2
330歐    電阻    R3, R4, R13
20K    電阻    R5, R6
10K    電阻    R7, R8
56k    電阻    R9
6.8K    電阻    R10
24K    電阻    R11
100K    電阻    R12
SW-PB    按鍵    S1
STC89C52    單片機(jī)    U1
ST188    光電開(kāi)關(guān)    U2
LM358    放大器    U3
12M    晶振    Y1


單片機(jī)源程序如下:
  1. #include <reg52.h>                 //調(diào)用單片機(jī)頭文件
  2. #define uchar unsigned char  //無(wú)符號(hào)字符型 宏定義        變量范圍0~255
  3. #define uint  unsigned int         //無(wú)符號(hào)整型 宏定義        變量范圍0~65535



  4. sbit rs=P2^5;         //寄存器選擇信號(hào) H:數(shù)據(jù)寄存器          L:指令寄存器
  5. sbit rw=P2^6;         //寄存器選擇信號(hào) H:數(shù)據(jù)寄存器          L:指令寄存器
  6. sbit e =P2^7;         //片選信號(hào)   下降沿觸發(fā)

  7. unsigned char i=0,timecount=0,displayOK=0,rate=0,aa=0;
  8. unsigned int time[6]={0};


  9. /***********************1ms延時(shí)函數(shù)*****************************/
  10. void delay_1ms(uint q)
  11. {
  12.         uint i,j;
  13.         for(i=0;i<q;i++)
  14.                 for(j=0;j<120;j++);
  15. }

  16.                                           
  17. /************ 延時(shí)函數(shù)  *****************/
  18. void delay_uint(uint z)
  19. {
  20.    while(z--);
  21. }


  22. /************ 寫命令函數(shù)  *****************/
  23. void write_com(uchar com)
  24. {

  25.    P0=com;
  26.    rw=0;
  27.    rs=0;
  28.    delay_uint(25);
  29.    e=1;
  30.    delay_uint(50);
  31.    e=0;
  32. }
  33. /************ 寫數(shù)據(jù)函數(shù)  *****************/
  34. void write_data(uchar dat)
  35. {

  36.    P0=dat;;
  37.    rw=0;
  38.    rs=1;
  39.    delay_uint(25);
  40.    e=1;
  41.    delay_uint(50);
  42.    e=0;
  43. }

  44. /**********************************************************
  45. *函數(shù)名: addr_12864
  46. *功能:寫地址
  47. *說(shuō)明:寫漢字時(shí)要寫個(gè)地址
  48. *輸入:無(wú)
  49. *返回:無(wú)
  50. **********************************************************/
  51. void addr_12864(uchar hang,uchar lie)          //地址轉(zhuǎn)換
  52. {
  53.         uchar address;
  54.         switch(hang)
  55.         {
  56.                 case 1: address=0x80 + lie ;
  57.                                 break;
  58.                 case 2: address=0x90 + lie ;
  59.                                 break;
  60.                 case 3: address=0x88 + lie ;
  61.                                 break;
  62.                 case 4: address=0x98 + lie ;
  63.                                 break;
  64.                 default :
  65.                                 break;
  66.         }        
  67.         write_com(address);
  68. }

  69. /***********************lcd1602上顯示兩位十進(jìn)制數(shù)************************/
  70. void write_sfm3(uchar hang,uchar add,uint date)
  71. {
  72.         addr_12864(hang,add);         
  73.         write_data(':');
  74.         write_data(0x30+date/100%10);
  75.         write_data(0x30+date/10%10);
  76.         write_data(0x30+date%10);        
  77. }


  78. /**********************************************************
  79. *函數(shù)名: write_string
  80. *功能:在12864上顯示字符數(shù)據(jù)
  81. *說(shuō)明:
  82. *輸入:無(wú)
  83. *返回:無(wú)
  84. **********************************************************/

  85. void write_string(uchar hang,uchar lie,uchar *p)
  86. {
  87.         addr_12864(hang,lie);          //地址轉(zhuǎn)換
  88.         while(*p != '\0')
  89.         {
  90.                 write_data(*p);
  91.                 p++;
  92.                 delay_uint(50);
  93.         }
  94. }

  95. /********************************************************************
  96. * 名稱 : init_12864()
  97. * 功能 : 初始化函數(shù)
  98. * 輸入 : cmdcode
  99. * 輸出 : 無(wú)
  100. ***********************************************************************/
  101. void init_12864()
  102. {  
  103.     write_com(0x30);
  104.     write_com(0x0c);
  105.     write_com(0x01);
  106.     delay_uint(5000);
  107.         write_string(1,0,"               ");
  108.         write_string(2,0," 心率:000/min  ");
  109.         write_string(3,0,"               ");
  110.         write_string(4,0,"               ");
  111. }

  112. /*************定時(shí)器0初始化程序***************/
  113. void time_init()         
  114. {
  115.         EA   = 1;                   //開(kāi)總中斷
  116.         TMOD = 0X01;          //定時(shí)器0、定時(shí)器1工作方式1
  117.         ET0  = 1;                  //開(kāi)定時(shí)器0中斷
  118.         TR0  = 1;                  //允許定時(shí)器0定時(shí)
  119. }


  120. /***********外部中斷0初始化程序****************/
  121. void init_int0()          //外部中斷0初始化程序
  122. {
  123.         EX0=1;                          //允許外部中斷0中斷
  124.         EA=1;                           //開(kāi)總中斷
  125.         IT0 = 1;                   //外部中斷0負(fù)跳變中斷
  126. }

  127. /****************主函數(shù)***************/
  128. void main()
  129. {        
  130.         init_12864();     //12864初始化        
  131.         time_init();      //初始化定時(shí)器
  132.         init_int0();          //外部中斷0初始化程序
  133.         while(1)
  134.         {                        
  135.                 if(displayOK==0)//如果顯示關(guān)
  136.                 {
  137.                          rate = 0;
  138.                 }
  139.                 else//如果顯示開(kāi)
  140.                 {
  141.                         rate=60000/(time[1]/5+time[2]/5+time[3]/5+time[4]/5+time[5]/5);
  142.                 }
  143.                 write_sfm3(2,5,rate);

  144.                 delay_1ms(300);
  145.         }
  146. }

  147. void int0() interrupt 0
  148. {
  149.         if(timecount<8)   //當(dāng)連續(xù)兩次檢測(cè)時(shí)間間隔小于8*50ms=400ms不處理
  150.         {
  151.                         TR0=1;//開(kāi)定時(shí)器
  152.         }
  153.         else
  154.         {
  155.                 time[i]=timecount*50+TH0+TL0;//算出間隔時(shí)間
  156.                 TH0 = 0x3c;
  157.                 TL0 = 0xb0;     // 50ms         12M
  158.                 timecount=0;//50ms計(jì)數(shù)清零
  159.                 i++;
  160.                 if(i==6)//記錄到超過(guò)等于6次時(shí)間
  161.                 {
  162.                         i=1;//計(jì)數(shù)從1開(kāi)始
  163.                         displayOK=1;    //測(cè)得5次開(kāi)始顯示?
  164.                 }                                                               
  165.         }
  166. }

  167. /*************定時(shí)器0中斷服務(wù)程序***************/
  168. void time0_int() interrupt 1
  169. {        
  170.         TH0 = 0x3c;
  171.         TL0 = 0xb0;     // 50ms         12M
  172.         timecount++;//每50ms一次計(jì)數(shù)
  173.         if(timecount>25)     //當(dāng)超過(guò)25*50ms=1.5s沒(méi)有檢測(cè)到信號(hào)停止顯示
  174.         {
  175.                         i=0;//數(shù)據(jù)個(gè)數(shù)清零
  176.                         timecount=0;//50ms計(jì)數(shù)清零
  177.                         displayOK=0;//顯示關(guān)
  178.                         TR0=0;//定時(shí)器關(guān)
  179.                         TH0 = 0x3c;
  180.                         TL0 = 0xb0;     // 50ms         12M
  181.         }
  182. }
復(fù)制代碼

所有資料51hei提供下載:
單片機(jī)脈搏計(jì) 12864.7z (1.45 MB, 下載次數(shù): 81)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1144925 發(fā)表于 2025-3-6 16:07 | 顯示全部樓層
電源模塊的p1是什么元件啊
回復(fù)

使用道具 舉報(bào)

ID:136013 發(fā)表于 2025-3-7 12:15 | 顯示全部樓層
safoji 發(fā)表于 2025-3-6 16:07
電源模塊的p1是什么元件啊

DC座唄
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表