使用ch552的ADC测量电压,为什么没有显示数据?

#include "CH554.H"                                                   

#include "Debug.H"

#include "GPIO.H"

#include "HT1621.H"

#include "ADC.H"

#include "stdio.h"

#include

#include

#define uchar unsigned char

#define uint  unsigned int 

//                                          0      1      2      3       4       5      6       7      8        9

uchar code tabe1[11] = {0xF0,0x00,0xD0,0x90,0x20,0xB0,0xF0,0x10,0xF0,0xB0};

uchar code tabe2[11] = {0xA0,0xA0,0x60,0xE0,0xE0,0xC0,0xC0,0xA0,0xE0,0xE0};


uchar a0,a1,a2,num;


/*******************************************************************************

* Function Name  : Show_Init()

* Description    : 显示对应的电压

*******************************************************************************/

void Show_Init(uchar a0,uchar a1,uchar a2)

{

Write_1621(15,tabe1[a0],4);

Write_1621(16,tabe2[a0],4);

Write_1621(17,tabe1[a1],4);

Write_1621(18,tabe2[a1],4);

Write_1621(19,tabe1[a2],4);

Write_1621(20,tabe2[a2],4);

}

void main( ) 

{

UINT16 i;

ADCInit(0);

EA=1;              //开启全局中断

Init_1621();       //初始化HT1621

HT1621_all_off();  //清空LCD显示

while(1)

{

for(i=0;i<4;i++)

{

ADC_ChannelSelect(3);         //ADC采样电源开启和通道设置,采样通道AIN3

ADC_START = 1;                //开启采样,等待采样完成进入中断

while(ADC_START);             //采样完成,ADC_START=0

num=ADC_DATA;

mDelaymS(100);                //等待,进入下通道采集数据

}

a0=num/100;

a1=num%100/10;

a2=num%10;

Show_Init(a0,a1,a2);

}

}


用串口打印看一下执行完4次循环之后num的值变成什么


显示空白,没有数据


您可以先解决串口打印调试问题,然后将值打印出来,或者在每一行代码之间增加打印,判断是不是在什么地方卡住了。


a7c4284ba14a559bdb8b7d25ead37b6.png

742abe182ce1143fa4bbac60c592e8f.png

使用串口调试,为什么会没有数据显示?


/********************************** (C) COPYRIGHT *******************************

* File Name          : Main.C

* Author             : WCH

* Version            : V1.0

* Date               : 2018/07/25

* Description        : CH544 串口1 收发                   

*******************************************************************************/

#include "..\Public\CH554.H"                                                  

#include "..\Public\Debug.H"

#include "UART1.H"

#include "stdio.h"

#include

#pragma  NOAREGS

void main( ) 

{

//#if ( UART1_INTERRUPT == 0) 

UINT8 dat;

//#endif

    CfgFsys( );                                                                //CH554时钟选择配置   

    mDelaymS(20);

    mInitSTDIO( );                                                             //串口0调试端口初始化

    printf("start ...\n"); 

    UART1Init( );                                                              //串口1初始化

while(1)

{

if ( UART1_INTERRUPT == 0)                                                    //查询方式,收到一个字节,并转发出去

dat = CH554UART1RcvByte( );                                            //程序死等,直到收到一个字节

CH554UART1SendByte(dat);                                               //并通过串口1发回去

//#endif

}

}



看一下putchar函数实现


1638948983(1).png

这种情况是什么问题?,使用51单片机的串口调试是正确的的,想问一下是什么问题,那步出错?

#include "..\Public\CH554.H"                                                   

#include "..\Public\Debug.H"

#include "GPIO.H"

#include "stdio.h"

#include


#pragma  NOAREGS


void main( ) 

{

    UINT16 j = 0;

    CfgFsys( );                                                                //CH554时钟选择配置   

    mDelaymS(20);

    mInitSTDIO( );                                                             //串口0初始化


CH554UART0Alter();   //串口映射

    EA = 1; 

    while(1)

{

  printf("00\n");//串口打印结果

      mDelaymS(1000);

  printf("01\n");//串口打印结果

      mDelaymS(1000);

  printf("02\n");//串口打印结果

      mDelaymS(1000);

    }

}



试着切换接收的波特率呢,默认的串口输出在P31引脚


我想问一下怎么修改波特率9600,原来那个要57600波特率才可以,怎么修改变小波特率


只有登录才能回复,可以选择微信账号登录