数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1745|回复: 6

[C51] YF-S201水流传感器采样程序有问题请教高手指点

[复制链接]
发表于 2022-6-20 13:18:28 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
本帖最后由 慕名而来 于 2022-6-20 13:18 编辑

玩一个YF-S201水流传感器,就是那种内部带叶轮、霍尔传感器的水量计量的器件,当叶轮旋转时每转一圈会输出一个脉冲,累计450个脉冲等效于流过了1L水量,原本以为挺简单的采样代码竟然没有实现功能,一时之间又想不明白问题所在就发帖请各位帮忙看看问题之所在,先谢了!
一、先描述一下实验目标:
1.系统上电并且不吹气时LED灯不亮。
2.给传感器吹气,当叶轮旋转超过300圈(计数300个)时LED灯亮起并保持点亮。
3.断电并重新上电可以重复上述过程。
二、下述代码实验结果:
1.LED灯上电不亮是正确的。
2.吹气后叶轮旋转无论快满都不能点亮LED。
三、代码测试现象描述:
引入串口输出代码,以便在串口助手窗口中查看中断状态,
1.将串口输出语句加在中断函数中可以在串口助手上看到变量累加正常。
2.将串口输出语句加在主函数中无输出数据变化的显示
代码如下:

  1. /*************************************************************/
  2. #include <STC15W.h>
  3. #include <intrins.h>
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. #define FOSC 11059200L         //系统频率
  7. #define BAUD 9600         //串口波特率
  8. /***********I/O口位功能定义*****************************/
  9. sbit JY=P5^5;  //继电器控制端口
  10. sbit LED=P5^4;
  11. //sbit DT=P3^3;
  12. uint t0=0,flag=0,tmd=0;
  13. /****显示延迟-延时函数**********************************/
  14. void delay_1ms (uint a)
  15. {
  16.     uchar i,j;
  17.     while( a-- != 0)
  18.     {
  19.         _nop_();
  20.         _nop_();
  21.         _nop_();
  22.         i = 11;
  23.         j = 190;
  24.         do
  25.         {
  26.             while (--j);
  27.         }
  28.         while (--i);
  29.     }
  30. }

  31. //====定时器T0与外部中断0初始化函数(函数由stc_isp软件自动生成)=========
  32. //定时器T0的16位自动重装模式

  33. void T0_Init(void)                //50毫秒@12.000MHz
  34. {
  35.     //////
  36.     INT0 = 1;
  37.     IT0 = 0; //设置INT0的中断类型 (1:仅?降沿 0:上升沿和?降沿)
  38.     EX0 = 1;
  39. }
  40. //================================================
  41. void UartInit(void)
  42. {
  43.     SCON = 0x50; //8位可变波特率
  44.     T2L = (65536 - (FOSC/4/BAUD)); //设置波特率重装值
  45.     T2H = (65536 - (FOSC/4/BAUD))>>8;
  46.     AUXR = 0x14; //定时器T2为1T模式, 并启动定时器2
  47.     AUXR |= 0x01; //选择定时器T2为串口1的波特率发生器
  48.     ES = 1; //使能串口1中断
  49.     EA = 1;
  50. }
  51. //================================================
  52. void data_out(uchar dat)
  53. {
  54.     SBUF=dat;
  55.     while(!TI);
  56.     TI=0;
  57. }
  58. //====主函数===================================
  59. main()
  60. {
  61.     T0_Init();        //T0设定初始化
  62.     UartInit();

  63.     P5M1&=0xff;
  64.     P5M0&=0x00;
  65.     P3M1&=0xff;
  66.     P3M0&=0x00;
  67.     JY=0;//初始化继电器控制端口
  68.     LED=1;

  69.     TR0=0;
  70. //----------------------------------------------------------
  71.     while(1)
  72.     {

  73.         if(tmd>300)
  74.         {
  75.             tmd=0;
  76.             flag=1;
  77.         }
  78.         if(flag)
  79.             LED=0;
  80.         else
  81.             LED=1;

  82.     }
  83. }
  84. //=============================================
  85. void exint0() interrupt 0 //INT0中断入口
  86. {
  87.     //TR0=1;
  88.     tmd++; //累计脉冲个数
  89.     //data_out(tmd);

  90. }
复制代码


发表于 2022-6-20 14:02:26 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-20 20:28:00 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2022-6-22 21:12:03 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-23 12:33:25 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2023-2-3 18:17:03 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2023-2-4 15:37:08 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-12-9 08:07 , Processed in 0.187201 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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