標題: 關于讓數(shù)碼管上面的數(shù)字利用printf 顯示到串口助手 [打印本頁]

作者: wh132987    時間: 2021-3-13 11:19
標題: 關于讓數(shù)碼管上面的數(shù)字利用printf 顯示到串口助手
代碼如下  :
#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};//共陽數(shù)字編碼  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)         //延時函數(shù)
{
  uint j,k;
  for(j=i;j>0;j--)
    for(k=500;k>0;k--);
}

/********************************************************************
* 名稱 : display()
* 功能 : 數(shù)碼管顯示函數(shù)
* 輸入 : 無
* 輸出 : 無
***********************************************************************/

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

*************************************************************/
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位數(shù)據(jù),可變波特率
        TI=1;                        // ???,??printf?????????
       
       
       
       
       
}

void display(uchar yi,uchar er,uchar san,uchar si) //顯示函數(shù)
{

   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()
* 功能 : 主函數(shù)
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
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;
  }   

}
}






想請教一下為什么會出現(xiàn)這種情況呀,不是應該顯示  1  的嗎?為什么會顯示256?另外還想請教一下有沒有簡單的方法讓數(shù)碼管上的數(shù)字顯示到串口助手上面?

[}B7H(@DCG6WPS@A[)77]@C.png (61.85 KB, 下載次數(shù): 97)

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

作者: 人人學會單片機    時間: 2021-3-13 19:24
你可以用我這個代碼 串口打印 沒有死等的高效率代碼
串口1打印程序 可以打印3個十六位的變量 波特率9600 http://www.torrancerestoration.com/bbs/dpj-201660-1.html




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1