标题: 单片机光电转速传感器模拟无反应 求帮助 [打印本页]

作者: 练启泓1294949    时间: 2020-7-3 17:27
标题: 单片机光电转速传感器模拟无反应 求帮助
里面有源代码以及仿真图,但是没有变化 求大神指导


单片机源程序如下:
  1. #include<reg51.h>
  2. #include<INTRINS.H>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define LED P2
  6. uchar temp=0;
  7. sbit RS=P2^0;
  8. sbit EN=P2^1;
  9. void init();
  10. void delay();
  11. void Delay2ms()        ;
  12. void write_com(uchar com);
  13. void write_data(uchar date);
  14. void init_lcd();

  15. void main()
  16. {
  17.   while(1)
  18. {
  19.     init();
  20.   init_lcd();
  21.   }
  22. }

  23. void INT_0() interrupt 0
  24. {
  25. temp++;
  26.   delay();
  27.   LED=temp;
  28. }

  29. void init()
  30. {
  31. EA=1;
  32. EX0=1;         
  33. //IT0=0;         //用电平触发就可以,换那个光敏二极管就不行了
  34. IT0=1;
  35. LED=0;
  36. }

  37. void delay()
  38. {
  39.         uchar i,j,k;
  40.         _nop_();
  41.         i=4;
  42.         j=205;
  43.         k=187;
  44.         do
  45.         {
  46.           do
  47.             {
  48.                    while(--k);
  49.                 }while(--j);
  50.           }while(--i);
  51. }

  52. void Delay2ms()               
  53. {
  54.         uchar i, j;

  55.         _nop_();
  56.         i = 4;
  57.         j = 146;
  58.         do
  59.         {
  60.                 while (--j);
  61.         } while (--i);
  62. }

  63. void write_com(uchar com)
  64. {
  65.   RS=0;
  66.   EN=0;
  67.   P0=com;
  68.   Delay2ms();
  69.   EN=1;
  70.   Delay2ms();
  71.   EN=0;
  72. }

  73. void write_data(uchar date)
  74. {
  75.   RS=0;
  76.   EN=0;
  77.   P0=date;
  78.   Delay2ms();
  79.   EN=1;
  80.   Delay2ms();
  81.   EN=0;
  82. }

  83. void init_lcd()
  84. {
  85.   write_com(0x38);
  86.   write_com(0x0f);
  87.   write_com(0x06);
  88.   write_com(0x01);
  89. }
复制代码

所有资料51hei提供下载:
光电转速传感.rar (58.6 KB, 下载次数: 6)



作者: wulin    时间: 2020-7-3 21:21
楼主图P3.2位置画错了




作者: 不要黑    时间: 2020-7-3 23:30
P3.2 肯定是画错了,另外建议将R2改成10k或者5k测试。
程序main函数也改一下:
void main()
{
        init();
  init_lcd();
  while(1)
  {
   
  }
}
初始化函数放到while外面




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1