為什么調用printf在這個板子上輸出中文會出現亂碼,我拿不同的板子試了基本一樣的代碼就沒亂碼,板子應該沒有問題,請賜教
1.png (31.17 KB, 下載次數: 55)
下載附件
2018-10-23 17:31 上傳
2.png (12.75 KB, 下載次數: 50)
下載附件
2018-10-23 17:31 上傳
3.png (68.79 KB, 下載次數: 61)
下載附件
2018-10-23 17:31 上傳
4.png (31.48 KB, 下載次數: 54)
下載附件
2018-10-23 17:31 上傳
單片機源碼如下:
- #include<STC15F2K60S2.H>
- #include <stdio.h>
- #define uchar unsigned char
- #define uint unsigned int
- uint a;
- bit flag=0;
- float b;
- void delayms(int ms);
- void allinit();
- void keyscan();
- void PCreceive();
- void UartInit(void); //串口初始化
- void main()
- {
- a=100; b=0.01;
- UartInit();//串口初始化
- EA=1; //打開總中斷
- ES=1; //串口1中斷
- allinit(); //初始化板子
- while(1)
- {
- if(flag==1)
- {
- flag=0;
- PCreceive();
- }
- keyscan();
- }
- }
- void PCreceive()
- {
- TI=1;
- printf(" hello world! \n" );delayms(5);
- printf(" 總水量:%dL \n" ,a);delayms(5);
- printf(" 瞬時速度:%.1fL/min\n\n",b); delayms(5);
- }
- void UartInit(void) //9600bps@11.0592MHz
- {
- SCON = 0x50; //8位數據,可變波特率
- AUXR |= 0x01; //串口1選擇定時器2為波特率發生器
- AUXR |= 0x04; //定時器2時鐘為Fosc,即1T
- T2L = 0xE0; //設定定時初值
- T2H = 0xFE; //設定定時初值
- AUXR |= 0x10; //啟動定時器2
- }
- void keyscan()
- {
- if(P33==0)
- {
- delayms(5);
- if(P33==0)
- {
- flag=1;
- }
- while(!P33);
- }
- }
- void delayms(int ms) //延時函數
- {
- int i,j;
- for(i=ms;i>0;i--)
- for(j=845;j>0;j--);
- }
- void allinit() //初始化板子的,不會有問題
- {
- P2=0XA0;
- P0=0X00;//關閉蜂鳴器,繼電器
- P2=0X80;
- P0=0XFF;//關閉LED燈
- P2=0XC0;
- P0=0XFF;//選擇所有數碼管
- P2=0XFF;
- P0=0XFF;//關閉所有數碼管
- }
復制代碼
|