找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 1530|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

關(guān)于讓數(shù)碼管上面的數(shù)字利用printf 顯示到串口助手

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
代碼如下  :
#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()
* 功能 : 延時(shí)
* 輸入 : i
* 輸出 : 無
***********************************************************************/
void delay(uchar i)         //延時(shí)函數(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 ("開始時(shí)間:%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;
       
       
        }
       
}
       

/***********************
定時(shí)器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;
  }   

}
}






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

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

[}B7H(@DCG6WPS@A[)77]@C.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:390416 發(fā)表于 2021-3-13 19:24 | 只看該作者
你可以用我這個(gè)代碼 串口打印 沒有死等的高效率代碼
串口1打印程序 可以打印3個(gè)十六位的變量 波特率9600 http://www.torrancerestoration.com/bbs/dpj-201660-1.html
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表