找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1318|回复: 1
收起左侧

关于让数码管上面的数字利用printf 显示到串口助手

[复制链接]
ID:518934 发表于 2021-3-13 11:19 | 显示全部楼层 |阅读模式
代码如下  :
#include <STC15.H>
#include <intrins.H>
#include <stdio.h>

#define uchar unsigned char
#define uint unsigned int
        uchar time ,temp,temp1=0;

//int SS=0,MS=0;
//int time=2;
//int m=0,n=0;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数字编码  0.1.2.3.4....9
uchar yi,er,san,si;
uint num;

uchar data_L, data_H;
uchar data_0, b;


uchar flag=0;
sbit        P0_0=P0^0;



sbit k3 = P3^2;
sbit k4 = P3^3;
/********************************************************************
* 名称 : Delay()
* 功能 : 延时
* 输入 : i
* 输出 : 无
***********************************************************************/
void delay(uchar i)         //延时函数
{
  uint j,k;
  for(j=i;j>0;j--)
    for(k=500;k>0;k--);
}

/********************************************************************
* 名称 : display()
* 功能 : 数码管显示函数
* 输入 : 无
* 输出 : 无
***********************************************************************/

/*********************************************************************
串口初始化

*************************************************************/
void UART_init(void)
{                  
        //?????????1
        TMOD = 0x20;        // 0010 0000 ???1?????2(8???????)
        TH1  = 0xFD;        // ???:9600 /11.0592MHZ
        TL1  = 0xFD;        // ???:9600 /11.0592MHZ
        TR1  = 1;
        //?????????
        AUXR = 0x00;             // ???,?????1????????,S1ST2=0
        SCON = 0x50;         // 8位数据,可变波特率
        TI=1;                        // ???,??printf?????????
       
       
       
       
       
}

void display(uchar yi,uchar er,uchar san,uchar si) //显示函数
{

   P2=table[yi];
   P41 = 0;
   delay(5);
   P41 = 1;

   P2=table[er];
   P42 = 0;
   delay(5);
   P42 = 1;

   P2=table[san];
   P44 = 0;
   delay(5);
   P44 = 1;

   P2=table[si];
   P45 = 0;
   delay(5);
   P45 = 1;
}




void printf_String(void)
{        //int a=0;int b=0;int c=0;int d=0;
    char strTempA[5];
        char strTempB[5];
        char strTempC[5];
        char strTempD[5];
    //int b;
    sprintf(strTempA,"%d",temp1);/*;sprintf(strTempB,"%d",b);sprintf(strTempC,"%d",c);sprintf(strTempD,"%d",d);*/
        //char buf = a;
//        char *p = buf;
        printf ("开始时间:%s \n",strTempA/*,strTempB,strTempC,strTempD*/);
        //SBUF=0x88;
   //??:String Test String is at address i:0022   
}        













/********************************************************************
* 名称 : main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void main(void)
{   
        P0M0=0X00;P0M1=0X00;       //端口模式
        delay(5);
        P1M0=0X00;P1M1=0X00;
        delay(5);
        P2M0=0X00;P2M1=0X00;
        P3M0=0X00;P3M1=0X00;
        P4M0=0X00;P4M1=0X00;
       
        //TMOD=0x01;
        TH0=0x0D8;
        TL0=0x0F0;
         
       
       
       
        IT0=1;                       // ????????
        EX0=1;                 // ?????0
                                   // ????       

       
        IT1=1;//???????(???)
        EX1=1;//??INT0?????
       
        EA=1;
        ET0=1;
        TI=1;
        //TR0=1;
       
       
       
        while(1)
{
display(yi,er,temp1,temp);

}
       
       
       
       
/********外中断0***************/
       
}
        void init1(void) interrupt 0
        {  UART_init();
                if(k3==0){
                TR0=1;
                printf_String() ;
                }
               
/**************外中断1*******/       
}
void init2(void) interrupt 2
{
        if(k4==0){
        TR0=0;
       
       
        }
       
}
       

/***********************
定时器T0中断
*************************/
       
void TIME0(void) interrupt 1
{
//TH0=0xee;
//TL0=0x00; TH0=(65535-5100)/256;// ?? 5 ??????
TH0 = 0x0D8;
TL0 = 0x0F0;//??10ms

time++;

if(time==50)//0.5??

{

  time=0;

  temp++;

  if(temp==10)

  {
     temp=0;
     temp1=temp1+1;
  }   

}
}






想请教一下为什么会出现这种情况呀,不是应该显示  1  的吗?为什么会显示256?另外还想请教一下有没有简单的方法让数码管上的数字显示到串口助手上面?

[}B7H(@DCG6WPS@A[)77]@C.png
回复

使用道具 举报

ID:390416 发表于 2021-3-13 19:24 | 显示全部楼层
你可以用我这个代码 串口打印 没有死等的高效率代码
串口1打印程序 可以打印3个十六位的变量 波特率9600 http://www.51hei.com/bbs/dpj-201660-1.html
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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