LOASE 发表于 2022-12-24 11:33:13

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

我写的代码和教程的差不多,为什么没有显示数字0~7,还一直响,下面是我写的#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;

#define smg_k P0//定义P0口

sbit LA=P2^3;
sbit LB=P2^4;
sbit LC=P2^5;

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

void delay_10us(u16 x)
{
        while(x--);
}//延时函数
void smg_play()
{
        u8 i=0;
        for(i=0;i<8;i++)
        {
                switch(i)
                {
                        case 0:LA=1;LB=1;LC=1;break;
                        case 1:LA=1;LB=1;LC=0;break;
                        case 2:LA=1;LB=0;LC=1;break;
                        case 3:LA=1;LB=0;LC=0;break;
                        case 4:LA=0;LB=1;LC=1;break;
                        case 5:LA=0;LB=1;LC=0;break;
                        case 6:LA=0;LB=0;LC=1;break;
                        case 7:LA=0;LB=0;LC=0;break;
                }
                smg_k=gsmg_code;
                delay_10us(100);
                smg_k=0x00;
        }
}
       
void mian()
{       
        while(1)
        {
                smg_play();
        }
}
教程的代码如下/**************************************************************************************
深圳市普中科技有限公司(PRECHIN 普中)
技术支持:www.prechin.net
PRECHIN
普中

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

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

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

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

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

/*******************************************************************************
* 函 数 名       : delay_10us
* 函数功能               : 延时函数,ten_us=1时,大约延时10us
* 输    入       : ten_us
* 输    出           : 无
*******************************************************************************/
void delay_10us(u16 ten_us)
{
        while(ten_us--);       
}

/*******************************************************************************
* 函 数 名       : smg_display
* 函数功能               : 动态数码管显示
* 输    入       : 无
* 输    出           : 无
*******************************************************************************/
void smg_display(void)
{
        u8 i=0;

        for(i=0;i<8;i++)
        {
                   switch(i)//位选
                {
                        case 0: LSC=1;LSB=1;LSA=1;break;
                        case 1: LSC=1;LSB=1;LSA=0;break;
                        case 2: LSC=1;LSB=0;LSA=1;break;
                        case 3: LSC=1;LSB=0;LSA=0;break;
                        case 4: LSC=0;LSB=1;LSA=1;break;
                        case 5: LSC=0;LSB=1;LSA=0;break;
                        case 6: LSC=0;LSB=0;LSA=1;break;
                        case 7: LSC=0;LSB=0;LSA=0;break;
                }
                SMG_A_DP_PORT=gsmg_code;//传送段选数据
                delay_10us(100);//延时一段时间,等待显示稳定
                SMG_A_DP_PORT=0x00;//消音
        }
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能               : 主函数
* 输    入       : 无
* 输    出           : 无
*******************************************************************************/
void main()
{       
        while(1)
        {
                   smg_display();
        }               
}

LOASE 发表于 2022-12-24 11:40:50

。。。。用错口了

LOASE 发表于 2022-12-24 11:50:04

改回来还是显示不了数字,蜂鸣器没有响了
页: [1]
查看完整版本: 动态数码管,没有显示蜂鸣器还一直响怎么解决