⑴ 51單片機與PC串口通信程序,求指導 ! 具體要求如下:
功能如下:
1、程序燒進去,串口接收顯示一個菜單!《如圖》A、B、……分別代表一定的功能
例如:A項,代表修改ds1302的時間的數組
2、按照菜單的提示,如:發送A就進入了修改ds1302的時間函數,串口接收界面顯
示 A,像圖片那種,並顯示修改ds1302的操作方法,如從串口發送界面發送
0162115347就表示10年10月16日21時15分34秒星期7,
3、正如第二所說,馬上輸入1010162115347,就成功的修改了ds1302相關數據,
並返回change success!到串口界面!
4、設置一個功能就是返回主菜單界面。然後又可以就行第二、三步的操作!
5、通過串口,讀取單片機裡面相關的數據,如時鍾的數據
6、說明:可以不要ds1320相關的程序,可以用發光二極體亮來代表修改功能!
⑵ 如何進行單片機與PC機的串口數據讀取通信
首先硬體要有MAX232晶元做電平轉換 或者直接用pl2303做usb轉串口.
軟體要有一個串口調試工具.
至於程序就是 (1):設置串口相關寄存器 注意波特率設置
(2):把數據放在sbuf裡面
(3):檢查是否發送完畢沒完等待 發完了就繼續放
各種單片機設置方法不一樣就給你一個51 的程序你參考一下:
//wx原創 串口調試程序 向pc發送數據 用於調試觀察數據
#include<reg52.h>
#include<hdy.h>
sbit k1=p10;
void ckfszf(char zf);
void ckfszfc(char fsgs,char zfc[]);
bit cksnbzw=0;
char fsb[]={"abcdef"};
main()
{
PCON=0x80; //串口設置
TMOD=0x20; // 以T1定時器為波特發生器 波特率:19200
TH1=0xfD;
TL1=0xfD;
TR1=1;
SCON=0X50; //串口設置模式一完畢
while(1)
{
TI=1;
ckfszfc(6,fsb);
ckfszf(' ');
ckfszfc(9,"1234567890");
ckfszf(' ');
ckfszf(' ');
ckfszf(' ');
ckfszfc(12,"AABBCCDDEEFFGG");
ckfszf(' ');
while(1);
}
}
//字元 串口發送函數 由串口向外發送一個字元
//參數1:要發送字元
//返回值:無
//備注: 本函數內部檢查上次發送是否結束
// 全局初始化要求:TI=1 保證第一次進入此函數之前TI=1
void ckfszf(char zf)
{
while(TI==0); //等待發送完畢
TI=0;
SBUF=zf;
}
//字元串 串口發送函數 由串口向外發送一個字元串
//參數1:要發送字元串個數 取值:0~255
//參數2:要發送字元串數組名 或字元串本身
//返回值:無
//備注: 本函數內部檢查上次發送是否結束
// 全局初始化要求:TI=1 保證第一次進入此函數之前TI=1
void ckfszfc(uchar fsgs,char zfc[])
{
uchar i;
cksnbzw=1;
for(i=0;i<fsgs;i++)
{
ckfszf(zfc[i]);
}
}
純手打 原創程序 給分!
⑶ 多個下位單片機與上位機pc通過串口通信的實現
如果是一個單片機具有多個串口,那麼中斷和地址是不同的,通信程序中更改下地址和中斷就好了.
如果單片機只有一個串口,那就要更改硬體電路了,串口是1對1的,不支持1對多.
422和485可以支持1對多.
給每一個下位機編寫一個不同的地址碼,放入一個寄存器中,每次上傳給上位機數據的時候,把地址碼包含在數據包中,收到有效數據後,就可以根據地址碼確認了,相當於身份ID.
如果不想在程序中修改,也可以通過撥碼開關,在外部撥到地址位,每次上電後,通過讀取撥碼開關的值來確定自己的身份ID.
上位機向下位機發送數據的時候,如果是向單個發送的,就在數據包增加要發送下位機的地址碼,如果是要向全部發送,就把地址碼設為一特殊值,當作廣播下發.
這個要在上下位機通訊協議中明確出來.
⑷ 編程實現51單片機與PC的串口通信,要求波特率設置為9600,循環發送字元串「abc
#include "reg51.h"
void initUart(void)
{
TMOD|=0x20;
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
TR1=1;
}
void main(void)
{
initUart();
EA=1;
while(1)
{
send_byte('abc');
}
}
⑸ 兩個單片機之間串口通信,PC如何監聽通信數據
PC要監聽通信數據,三者必須採用RS485匯流排,而PC需要安一個RS232轉RS485的轉換器才行,並且電腦只能處於接收狀態,兩個單片機用485匯流排互相通信。電腦端可以用串口調試助手軟體就行。
⑹ pc與單片機的串口通信,pc能正確接收單片機的數據,單片機能接收,但不能正確接收pc機的數據,怎麼回事
.......
MOV SBUF,#0B0H ; 將16進制數B0發送給pc
JNB TI,$
CLR TI
JNB RI,$ ;等待接收
CLR RI
MOV P1,SBUF ;從pc接收一個16進制數
SJMP $
END
⑺ 單片機與PC怎麼 通信
我就我所知道的給你說說。
單片機的邏輯0是0V,邏輯1是+5V;而PC用的是負邏輯,邏輯0在+9v~+15v之間,邏輯1在-9v~-15v之間。若用九針串口連接的話,先得電平轉換,(轉換晶元就是大家熟知的RS232,轉3.3v
的話用RS3232).之後最重要做麻煩的就是要把時序和波特率設置好(說白了就是遵循相同的協議),這樣單片機和PC之間就可以互聯互通了,單片機中的串口通信講的就是這方面的內容,這些資料網上很豐富,或者買個單片機開發板研究研究。
⑻ 51單片機與計算機串口通信無法讀出數據
答:
1 判斷你的硬體有沒有問題;方法是 用跳線講串口的pin2 和pin3短接,用串口調試助手發送數據看調試助手能不 能自己收到,能就說明是單片機程序有問題
2 你檢查你的波特率是生成程序是否正確, 中斷和主程序用 1樓給你程序,我看了 沒問題。
這樣就可以實現串口通信了