導航:首頁 > 操作系統 > 51單片機串口怎麼輸出數值

51單片機串口怎麼輸出數值

發布時間:2022-09-06 01:40:07

❶ 51單片機 串口用 printf輸出 ,當輸出的數據類型是unsigned char的時候 電腦收到的數自動乘上了256

樓主你好。
51單片機與標准C有區別:
KEIL里擴展出了b,h,l來對輸入位元組寬的設置:
(1)b八位
(2)h十六位
(3)l三十二位
在Keil
C51中用printf輸出一個單位元組變數時要使用%bd,如
unsigned
char
counter;
printf("Current
count:
%bd\n",
counter);
而在標准C語言中都是使用%d:
printf("Current
count:
%d\n",
counter);
希望對你有幫助。

❷ 51單片機,如何用串口發送一個變數的值

四位數字組合成的值大於256,是一個雙位元組數值,所以需要發送兩次程序如下:

#include<reg51.h>
unsignedcharx;
main()
{
TMOD=0x20
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
TR1=1;
x=1234;
SBUF=x/256;
while(TI==0);
TI=0;
SBUF=x%256;
while(TI==0);
TI=0;
while(1);
}

❸ 單片機怎麼將輸入的正弦波轉化為數字量,然後從串口輸出

摘要 在51單片機運行了以下函數,DA輸出波形完美,驗證產生的DA數據無誤。

編程實現應用51單片機的串列口向PC發送數據"ABC".要求數據的輸入/輸出方式採用。

51單片機串口通訊,主函數初始化串口參數(設置串口波特率等),串口中斷函數(接收數據與發送數據處理),PC端可以使用串口助手或者串口處理軟體,單片機用按鍵觸發發送數據。

❺ 51單片機怎麼通過串口發送小數

方法多的去了,把數字37.5轉換為字元串「37.5」發送可以,用壓縮BCD碼0x37、0x05發送也可以,多得是。不一定一定要浮點處理。

❻ 51串口發送數據的格式是什麼

串列口控制寄存器SCON
SCON的位元組地址是98H,其格式如下:

SM0、SM1:串列口工作方式控制位:

SM0、SM1 工作方式 功能 波特率
00 方式0 同步移位寄存器 fosc/12

01 方式1 8位UART 可變(T1溢出率)

10 方式2 9位UART fosc/64或fosc/32

11 方式3 9位UART 可變(T1溢出率)

其中,fosc為振盪器的頻率,UART為通用非同步接收和發送器的英文縮寫。

串列口工作方式0:
當設定SM0、SM1為00時,串列口工作於方式0,它又叫同步移位寄存器輸出方式。在方式0下,數據從RXD(P3.0)端串列輸出或輸入,同步信號從TXD(P3.1)端輸出,發送或接收的數據為8位,低位在前,高位在後,沒有起始位和停止位。數據傳輸率固定為振盪器的頻率1/12,也就是每個機器周期傳送一位數據。方式0可以外接移位寄存器,將串列口擴展為並行口,也可以外接同步輸入/輸出設備。
執行任何一條以SBUF為目的寄存器指令,就開始發送。

串列口工作方式1:
當設定SM0、SM1為01時,串列口工作於方式1,為數據傳輸率可變的8位非同步通信方式,由TXD發送,RXD接收,一幀數據為10位,1位起始位(低電平),8位數據位(低位在前),1位停止位(高電平)。數據傳輸率取決於定時器1或2的溢出速率(1/溢出周期)和數據傳輸率是否加倍的選擇位SMOD。
對於有定時器/計數器2的單片機,當T2CON寄存器中RCLK和TCLK置位時,用定時器2作為接收和發送數據傳輸率發生器,而RCLK=TCLK=0時,用定時器1作為接收和發送的數據傳輸率發生器。2個定時器/計數器可以交叉使用,即發送和接收採用不同的數據傳輸率。
發送過程是由執行任何一條以SBUF為目的的寄存器指令引起的。

串列口工作方式2:
當設定SM0、SM12位為10時,串列口工作於方式2,此時串列口被定義為9位非同步通信介面。採用這種方式可接收或發送11位數據,以11位為一幀,比方式1增加了一個數據位,其餘相同。第9個數據即D8位可用作奇偶校驗或地址/數據選擇,可以通過軟體來控制它,再加特殊功能寄存器SCON中的SM2位的配合,可使MCS-51單片機串列口適用於多機通信。發送時,第9位數據為TB8,接收時,第9位數據送入RB8。方式2數據傳輸率固定,只有2個選擇,為振盪器的1/64或1/32,可由PCON的最高位選擇。

串列口工作方式3:
當設定SM0、SM1二位為11時,串列口工作於方式3。方式3與方式2類似,唯一的區別是方式3的數據傳輸率是可變的,而幀格式與方式2一樣為11位一幀。方式3也適用於多機通信。

SM2:多機通信控制位多機通信時工作於方式2和方式3,SM2位主要用於方式2和方式3。接收狀態,當串列口工作於方式2或方式3,以及SM2=1時,只有當接收到第9位數據(RB8)為1時,才把接收到的前8位數據送入SBUF,且置位RI發出中斷請求,否則會將接收到的數據放棄。當SM2=0時,就不管第9位數據是0還是1,都將數據送入SBUF,並發出中斷請求。

工作於方式0,SM2必須為0。

REN:允許接收位
REN用於控制數據接收的允許和禁止,REN=1允許接收,REN=0禁止接收。
TB8:發送數據位8
在方式2和方式3中,TB8是要發送的第9位數據位,在多機通信中同樣需要傳輸這一位,TB8=0表示傳輸的為數據,TB8=1代表傳輸的為地址。
RB8:接收數據位8
在方式2和方式3中,RB8存放接收到的第9位數據,用以識別接收到的數據特徵。
TI:發送中斷標志位
可定址標志位。方式0時,發送完第8位數據後,由硬體置位,其他方式下,在發送或停止位之前由硬體置位,TI=1表示幀發送結束, 向CPU發中斷申請。在中斷服務程序中,必須用軟體將其清0,取消此中斷申請。

RI:接收中斷標志位
可定址標志位。方式0時,接收完第8位數據後,該位由硬體置位,在其他工作方式下,該位由硬體置位,RI=1表示幀接收完成,向CPU發中斷申請。在中斷服務程序中,必須用軟體將其清0,取消此中斷申請。

❼ 51單片機數字怎麼以文本形式輸出

串口發送ASCII碼,字元串形式unsigned char text[] =『10』;
for(i=0;i<2;i++)
{
//串口發送(text[i]);

}

❽ 用51單片機怎麼控制輸入輸出

通常作輸入時,要選置1,但單片機上電後,默認的是置1的,只要你不是做出其它用,再做輸入,就不用置1了。但為保險起見,多置一次1,沒有關系。作輸出時,不用管它,直接用就行了。
另外,51單片機的P口的任一腳能單獨用於輸入或輸出,無需事先定義。不過,在用作輸入時要確保該管腳的輸出鎖存器中的值為
1,因為該管腳的輸出鎖存器中的值為
0
時將使該腳處於0,而無法輸入外部的高電平。具體做法,就是要麼一直將該腳用作輸入,這樣在晶元復位時管腳的輸出鎖存器復位為1;要麼在用作輸入前先給該腳寫個1,再從該腳讀取輸入信號。

❾ 51單片機,串口接收到的數據,然後轉成並行輸出,比如串口接收到02,然後再轉並行輸出一個06.該怎麼寫啊

unsignedcharserial_data;//接收到的串口數據
if(serial_data==0x02)P1=0x06;

❿ 求一個基於51單片機的C語言程序,要求從串口接收一組數據,然後將其通過串口輸出

#include <AT89X51.H>//單片機51頭文件,存放著單片機的寄存器
unsigned char dat; //用於存儲單片機接收發送緩沖寄存器SBUF裡面的內容
sbit gewei=P2^2; //個位選通定義
sbit shiwei=P2^3; //十位選通定義
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x71};
//{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,};// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
void Delay(unsigned int tc) //延時程序
{
while( tc != 0 )
{unsigned int i;
for(i=0; i<100; i++);
tc--;}
}
void LED() //LED顯示接收到的數據
{
shiwei=0;
P0=~table[dat/16];
Delay(8);
shiwei=1;
gewei=0;
P0=~table[dat%16];
Delay(5);
gewei=1;
}
void Init_Com(void)//功能:串口初始化,波特率9600,方式1
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
void main()//主程序功能:實現接收數據並把接收到的數據原樣發送回去///////
{
Init_Com();//串口初始化
// P1=0xf0;
while(1)
{
if ( RI ) //掃描判斷是否接收到數據,
{
dat = SBUF; //接收數據SBUF賦與dat
RI=0; //RI清零。
SBUF = dat; //在原樣把數據發送回去
}
LED(); //顯示接收到的數據
}
}

閱讀全文

與51單片機串口怎麼輸出數值相關的資料

熱點內容
手機碎屏解壓工具 瀏覽:245
jsonrpcphp使用 瀏覽:566
網上求職系統源碼 瀏覽:699
pdf數字不顯示 瀏覽:890
convertwordtopdf 瀏覽:253
程序編譯基本單位 瀏覽:23
python分析圖片角度 瀏覽:64
阿里雲伺服器能復制數據嗎 瀏覽:562
python拼音轉換文字 瀏覽:563
動畫遺傳演算法 瀏覽:63
php如何解析xml文件 瀏覽:702
如何改變appstore的語言 瀏覽:462
javahtmlxml 瀏覽:34
單片機啟動文件 瀏覽:811
橙app如何開啟聊天 瀏覽:899
訪問伺服器公網地址 瀏覽:666
pdf列印底色去掉 瀏覽:465
java快遞介面 瀏覽:399
哪個app可以教新爸爸 瀏覽:212
如何查看伺服器系統版本信息 瀏覽:526