找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3001|回复: 8
收起左侧

有大佬帮忙看看单片机程序为啥仿真时蜂鸣器不响

[复制链接]
回帖奖励 35 黑币 回复本帖可获得 35 黑币奖励! 每人限 1 次
ID:709426 发表于 2020-6-2 23:11 | 显示全部楼层 |阅读模式
求助程序和电路都在下面,怎么调试蜂鸣器都没反应。
51hei图片20200602230507.png 51hei图片20200602231018.png
  1. #include<reg52.h>
  2. #include<string.h>
  3. #include<intrins.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. unsigned long count;
  7. sbit key1=P3^4;
  8. sbit key2=P3^5;
  9. sbit dula=P2^6;
  10. sbit wela=P2^7;
  11. sbit beep=P1^4;
  12. uchar code table[]={
  13. 0x3f,0x06,0x5b,0x4f,
  14. 0x66,0x6d,0x7d,0x07,
  15. 0x7f,0x6f,0x77,0x7c,
  16. 0x39,0x5e,0x79,0x71
  17. };
  18. void delay(uint z)
  19. {
  20. uint x,y;
  21. for(x=z;x>0;x--);
  22. for(y=110;y>0;y--);
  23. }
  24. void display()
  25. {
  26. int a,b,c,d,e,f;
  27. a = count/100000%10;   //十万
  28. b = count/10000%10;    //万
  29. c = count/1000%10;     //千
  30. d = count/100%10;      //百
  31. e = count/10%10;       //十
  32. f = count/1%10;        //个

  33.     P0=0xfe; //第一个LED
  34. wela=1;
  35. wela=0;
  36. P0=table[a]; //十万位数
  37. dula=1;
  38.   dula=0;
  39.     P0=0xff;   //消隐
  40. delay(1);

  41. P0=0xfd; //第二个LED
  42. wela=1;
  43.   wela=0;
  44. P0=table[b];  // 万位位数
  45. dula=1;
  46.   dula=0;
  47. P0=0xff;
  48. delay(1);

  49. P0=0xfb; //第三个LED
  50. wela=1;
  51.   wela=0;

  52. P0=table[c];  // 千位数
  53. dula=1;
  54.   dula=0;
  55. P0=0xff;
  56. delay(1);

  57. P0=0xf7; //第四个LED
  58. wela=1;
  59.   wela=0;

  60. P0=table[d];  // 百位数
  61. dula=1;
  62.   dula=0;
  63. P0=0xff;
  64. delay(1);
  65. P0=0xef; //第五个LED
  66. wela=1;
  67.   wela=0;

  68. P0=table[e];  // 十位数
  69. dula=1;
  70.   dula=0;
  71.     P0=0xff;
  72. delay(1);

  73. P0=0xdf; //第六个LED
  74. wela=1;
  75.   wela=0;
  76. P0=table[f];  // 个位数
  77. dula=1;
  78.   dula=0;
  79. delay(1);

  80. }
  81. void key()
  82. {
  83. if(key1==0)
  84. {
  85.   delay(7);
  86.   if (key1==0)
  87.   {
  88.    count++;
  89.   }
  90.   while(!key1)
  91.   {
  92.    display();
  93.   }
  94.   delay(1);
  95.   while(!key1)
  96.   {
  97.    display();
  98.   }
  99. }

  100. if(key2==0)
  101. {
  102.   count=0;
  103. }
  104. }
  105. void main()
  106. {
  107. P3=0xff;
  108. P0=0xff;
  109. beep=1;
  110. while(1)
  111. {
  112.   key();
  113.   display();
  114.   if(count>=999999)
  115.   {
  116.    count=0;
  117.    beep=0;
  118.    delay(50);
  119.    beep=1;
  120.   }
  121. }
  122. }
复制代码

回复

使用道具 举报

ID:709426 发表于 2020-6-2 23:12 | 显示全部楼层
我是把999999改成50测试的
回复

使用道具 举报

ID:367242 发表于 2020-6-3 08:06 | 显示全部楼层
测试下晶体管有没有导通,感觉你程序主循环里少一句延时吧,BEEP一直是0。
回复

使用道具 举报

ID:70069 发表于 2020-6-3 08:37 | 显示全部楼层
if(count>=999999)//这里改为<试试
  {
   count=0;
   beep=0;
   delay(50);
   beep=1;
  }
回复

使用道具 举报

ID:213173 发表于 2020-6-3 08:48 | 显示全部楼层
此蜂鸣器没有仿真功能
无标题.jpg

回复

使用道具 举报

ID:770968 发表于 2020-6-9 16:04 | 显示全部楼层
可能是器件问题
回复

使用道具 举报

ID:600952 发表于 2020-6-10 09:42 | 显示全部楼层
蜂鸣器没有仿真功能?是不是这个蜂鸣器是无源的?需要在响时通方波?这个蜂鸣器应该有芯片驱动吧,我的就是普通的无源蜂鸣器
希望对你有帮助
回复

使用道具 举报

ID:633896 发表于 2020-7-7 12:11 | 显示全部楼层

蜂鸣器可以有问题。
回复

使用道具 举报

ID:799089 发表于 2020-7-7 14:49 | 显示全部楼层
你那个蜂鸣器有问题 ,你换个仿真软件试试
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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