找回密码
 立即注册
查看: 533|回复: 5

printf函数影响数码管显示

[复制链接]

5

主题

7

回帖

67

积分

注册会员

积分
67
发表于 2024-3-5 22:05:11 | 显示全部楼层 |阅读模式
#include "public.h"
#include "digital.h"


char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";

#define KEY2 P32
#define KEY3 P33

int  temp_value=0;
u8 temp_buf[8];

void Smg_dispaly(void);

void main()
{
       
  bit run_flay=0;

        sys_init();
  usb_init();
  EA = 1;
       
               
       
       
        while(1)
        {
               
               
          if(DeviceState!=DEVSTATE_CONFIGURED)
                continue;
               
          if(bUsbOutReady)
                {
                                usb_OUT_done();
                  
                }
               
   Smg_dispaly();
               
   if(run_flay==1)
         {
          
                delay_ms(1);
                temp_value++;
         }
                  
               
                if(KEY2==0)
                 {
                   delay_ms(10);
                         if(KEY2==0)
                         {
                                while(KEY2==0)
                                {
                                  Smg_dispaly();
                                }
                                delay_ms(10);
                                if(run_flay==0)temp_value=0;
                                run_flay=!run_flay;
//        if(run_flay==1)temp_value=0;
                          
                         }                                 
                 }
       
  }
}  


void Smg_dispaly(void)
{
                temp_buf[0]=gsmg_code[1];
          temp_buf[1]=gsmg_code[0]&0x7f;
          temp_buf[2]=gsmg_code[0];
                temp_buf[3]=gsmg_code[0];   
           temp_buf[4]=gsmg_code[temp_value/1000];//百位
                temp_buf[5]=gsmg_code[temp_value%1000/100]&0x7f;//十位
                temp_buf[6]=gsmg_code[temp_value%1000%100/10];//个位+小数点
                temp_buf[7]=gsmg_code[temp_value%1000%100%10];//小数点后一位
    digital_tube(temp_buf,1);
}




#include "digital.h"
#include "public.h"
u8 gsmg_code[10]={0xc0,0xf9,0xa4,0xb0,0x99,
                  0x92,0x82,0xf8,0x80,0x90,
                 };
u8 Pos_display[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 num=0;
                                                                 
/*******************************************************************************
* 函 数 名       : digital_tube
* 函数功能                 : 动态数码管显示
* 输    入       : dat:要显示的数据
                                   pos:从左开始第几个位置开始显示,范围1-8
* 输    出             : 无
*******************************************************************************/       

#ifndef _DIGITAL_H_
#define _DIGITAL_H_

#include "public.h"

#define SMG_A_DP_PORT        P6
#define KEY2        P32

extern u8 gsmg_code[10];
extern u8 Pos_display[8];

void digital_tube(u8 dat[],u8 pos);

#endif


                                                         
void digital_tube(u8 dat[],u8 pos)
{
  u8 i=0;
        u8 pos_temp=pos-1;
       

        for(i=pos_temp;i<8;i++)
        {

               
                P7=Pos_display[i];
                SMG_A_DP_PORT=dat[i-pos_temp];//传送段选数据
                printf("dat[%u]=%x\n",i-pos_temp,dat[i-pos_temp]);
                delay_ms(1);;//延时一段时间,等待显示稳定
                SMG_A_DP_PORT=0xff;//消音
        }
       
       
       
       
}


printf函数注释掉后试验箱数码管不显示

回复

使用道具 举报 送花

5

主题

7

回帖

67

积分

注册会员

积分
67
发表于 2024-3-5 22:15:18 | 显示全部楼层
为何会影响,不明白?
回复 支持 反对

使用道具 举报 送花

5

主题

7

回帖

67

积分

注册会员

积分
67
发表于 2024-3-5 22:17:15 | 显示全部楼层
使用的是stc9.62试验箱
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:508
  • 最近打卡:2025-06-28 10:05:05
已绑定手机
已实名认证

113

主题

2423

回帖

6157

积分

版主

积分
6157
发表于 2024-3-5 22:54:09 | 显示全部楼层
这个是因为你其他c文件有printf了,这边屏蔽掉会使得另一边调用堵塞。
你找找看其他c文件里面的printf一起屏蔽掉就好了。
你这个问题其实不仅是不显示,其实是整个程序卡死了
回复 支持 反对

使用道具 举报 送花

5

主题

7

回帖

67

积分

注册会员

积分
67
发表于 2024-3-6 11:06:22 | 显示全部楼层
谢谢
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:542
  • 最近打卡:2025-06-27 07:43:45
已绑定手机

28

主题

724

回帖

785

积分

高级会员

打工人

积分
785
发表于 2024-3-6 17:49:55 | 显示全部楼层
王*** 发表于 2024-3-5 22:54
这个是因为你其他c文件有printf了,这边屏蔽掉会使得另一边调用堵塞。
你找找看其他c文件里面的printf一起 ...

正解
打工人
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-30 02:45 , Processed in 0.117238 second(s), 78 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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