普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1607|回复: 2

动态数码管,没有显示蜂鸣器还一直响怎么解决

[复制链接]

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-12-24 11:33:13 | 显示全部楼层 |阅读模式
我写的代码和教程的差不多,为什么没有显示数字0~7,还一直响,下面是我写的
  1. #include "reg52.h"
  2. typedef unsigned char u8;
  3. typedef unsigned int u16;

  4. #define smg_k P0//定义P0口

  5. sbit LA=P2^3;
  6. sbit LB=P2^4;
  7. sbit LC=P2^5;

  8. u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  9. 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数码管显示0~9,A~F

  10. void delay_10us(u16 x)
  11. {
  12.         while(x--);
  13. }//延时函数
  14. void smg_play()
  15. {
  16.         u8 i=0;
  17.         for(i=0;i<8;i++)
  18.         {
  19.                 switch(i)
  20.                 {
  21.                         case 0:LA=1;LB=1;LC=1;break;
  22.                         case 1:LA=1;LB=1;LC=0;break;
  23.                         case 2:LA=1;LB=0;LC=1;break;
  24.                         case 3:LA=1;LB=0;LC=0;break;
  25.                         case 4:LA=0;LB=1;LC=1;break;
  26.                         case 5:LA=0;LB=1;LC=0;break;
  27.                         case 6:LA=0;LB=0;LC=1;break;
  28.                         case 7:LA=0;LB=0;LC=0;break;
  29.                 }
  30.                 smg_k=gsmg_code[i];
  31.                 delay_10us(100);
  32.                 smg_k=0x00;
  33.         }
  34. }
  35.        
  36. void mian()
  37. {       
  38.         while(1)
  39.         {
  40.                 smg_play();
  41.         }
  42. }
复制代码
教程的代码如下
  1. /**************************************************************************************
  2. 深圳市普中科技有限公司(PRECHIN 普中)
  3. 技术支持:www.prechin.net
  4. PRECHIN
  5. 普中

  6. 实验名称:动态数码管实验
  7. 接线说明:       
  8. 实验现象:下载程序后“数码管模块”显示01234567
  9. 注意事项:                                                                                                                                                                  
  10. ***************************************************************************************/
  11. #include "reg52.h"

  12. typedef unsigned int u16;        //对系统默认数据类型进行重定义
  13. typedef unsigned char u8;

  14. #define SMG_A_DP_PORT        P0        //使用宏定义数码管段码口

  15. //定义数码管位选信号控制脚
  16. sbit LSA=P2^2;
  17. sbit LSB=P2^3;
  18. sbit LSC=P2^4;

  19. //共阴极数码管显示0~F的段码数据
  20. u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  21.                                 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  22. /*******************************************************************************
  23. * 函 数 名       : delay_10us
  24. * 函数功能                 : 延时函数,ten_us=1时,大约延时10us
  25. * 输    入       : ten_us
  26. * 输    出             : 无
  27. *******************************************************************************/
  28. void delay_10us(u16 ten_us)
  29. {
  30.         while(ten_us--);       
  31. }

  32. /*******************************************************************************
  33. * 函 数 名       : smg_display
  34. * 函数功能                 : 动态数码管显示
  35. * 输    入       : 无
  36. * 输    出             : 无
  37. *******************************************************************************/
  38. void smg_display(void)
  39. {
  40.         u8 i=0;

  41.         for(i=0;i<8;i++)
  42.         {
  43.                    switch(i)//位选
  44.                 {
  45.                         case 0: LSC=1;LSB=1;LSA=1;break;
  46.                         case 1: LSC=1;LSB=1;LSA=0;break;
  47.                         case 2: LSC=1;LSB=0;LSA=1;break;
  48.                         case 3: LSC=1;LSB=0;LSA=0;break;
  49.                         case 4: LSC=0;LSB=1;LSA=1;break;
  50.                         case 5: LSC=0;LSB=1;LSA=0;break;
  51.                         case 6: LSC=0;LSB=0;LSA=1;break;
  52.                         case 7: LSC=0;LSB=0;LSA=0;break;
  53.                 }
  54.                 SMG_A_DP_PORT=gsmg_code[i];//传送段选数据
  55.                 delay_10us(100);//延时一段时间,等待显示稳定
  56.                 SMG_A_DP_PORT=0x00;//消音
  57.         }
  58. }

  59. /*******************************************************************************
  60. * 函 数 名       : main
  61. * 函数功能                 : 主函数
  62. * 输    入       : 无
  63. * 输    出             : 无
  64. *******************************************************************************/
  65. void main()
  66. {       
  67.         while(1)
  68.         {
  69.                    smg_display();
  70.         }               
  71. }
复制代码


回复

使用道具 举报

1

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2022-12-24 11:50:04 | 显示全部楼层
改回来还是显示不了数字,蜂鸣器没有响了
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-7 21:24 , Processed in 0.097512 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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