全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4269
推到 Plurk!
推到 Facebook!

請問有誰玩過透過RS232連接51傳送資料至PC端~~

答題得分者是:mymj
ktc
一般會員


發表:2
回覆:1
積分:0
註冊:2004-04-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-21 21:52:11 IP:61.221.xxx.xxx 未訂閱
請問有人玩過將類比數位轉換器(AD0804)所轉換的電壓值透過8051單晶片經由RS232傳輸至電腦端嗎?? 我是想將類比電壓0~5V的電壓值透過RS232送至電腦端顯示, 請問在8051這一端是不是將此值1bit接著1bit的傳至電腦端. 丟完8個bit代表一個值顯示在電腦端, 51的程式是不是要這樣子寫... 是用串列傳輸..再設定彼此的鮑率嗎..要不要設定中斷or計時ㄋ 請各方高手幫幫初學者的忙 感激不盡 謝謝!! 發表人 - ktc 於 2004/04/21 21:57:39 發表人 - ktc 於 2004/04/21 21:58:21
help
一般會員


發表:12
回覆:54
積分:13
註冊:2002-06-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-22 13:16:53 IP:211.72.xxx.xxx 未訂閱
RS232就是串列輸出入的介面.當然是一個個bit來送出。 在8051程式裏面,要利用中斷來感知又有新的資訊送進來。然後跳至中斷副程式裏去做處理。 建議你去買一本書。許多書裏都有講到。也比較清楚。 書裏沒有講到的關鍵部份再上來問,這樣比較有意思。 gogowin
------
gogowin
mymj
版主


發表:132
回覆:486
積分:608
註冊:2002-10-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-22 23:45:38 IP:210.64.xxx.xxx 未訂閱
貼上一個adc0804和uC的連線簡圖,這裡的重點是要將INTR線連到8051的INT0(12)或INT1(13)接腳 每次ADC轉換完成INTR向51的INT請求中斷 中斷程式先讀取ADC資料,然而將資料透過UART傳送到PC 推薦3本書 兩本書都是松崗鄧錦城所編著 1.8051單晶片專題製作 2.8051單晶片實作寶典 1本是文魁出版 DELPHI與RS-232串列通訊控制 我的建議先這樣作 1.先利用BCB或DELPHI或其他視窗程式開發軟體撰寫能正常工作的RS-232傳送接收軟體,並且能將所得資料顯示(可以利用兩台PC互傳) 2.作8051 UART部分,首先模擬一些數據傳送到1.所完成的程式,能將想要的正確顯示 3.作ADC部分 第2.3.制作過程,偵錯需使用數字三用表,示波器,甚至邏輯分析儀,ICE等工具,真的有問題先查電路板,在以單步執行來找碴 4.將3.完成的程式和2.的UART整個連起來 5. 信號 ADC0804 8051 PC 正確顯示結果 整個連線完成 預祝成功 < >< >0,1的世界太寂寞,閒暇時候登登山,可以洗滌生硬的心靈 發表人 - mymj 於 2004/04/22 23:51:15 發表人 - mymj 於 2004/04/22 23:55:08
david69
一般會員


發表:1
回覆:19
積分:19
註冊:2003-06-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-23 13:44:46 IP:61.220.xxx.xxx 未訂閱
我常將MCU資料透過RS232送至PC上,只不過我是用義隆的MCU來做,不過方法是一樣的。 透過RS232傳送資料有分hand shaking及非hand shaking方式。以MCU資料透過RS232上傳至PC上,我建議使用非hand shaking方式,因為PC端是用專用IC來收發,故上傳至PC不易有資料LOST的情形。我使用115200 baoud rate來傳,也還沒看到lost情形發生。而使用非hand shaking方式上傳至PC還有個好處,就是只要2根線就可,TD (在MCU端,在PC端接是RD)及 GND。 依RS232 SPEC.,-3V為"1", 3V為"0"。故以MCU直接接PC的RS232是不行的,可用一顆MAX232 ic來做介面轉換,將MCU的5V high的data轉成約-10V 的RS232 high level,而將MCU的0V low的data轉成約 10V 的RS232 high level。 再來是protocol。在送一個byte前要先送一個"0"的start bit; 而送完一個byte後,要送一個"1"的stop bit。所以要送一個byte的資料要10個bits。送data之前,兩端的baoud rate要設一樣。至於你的51是要用中斷或用計算指令的方式來傳送data都可,只是前者的是較有效率的做法,但程式較複雜。 至於PC端的RS232 UI介面,可在網路上到處找得到,其可將PC接收到的data顯示出來。 H.K. Chen
david69
一般會員


發表:1
回覆:19
積分:19
註冊:2003-06-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-23 13:47:33 IP:61.220.xxx.xxx 未訂閱
還有一件事忘了說。RS232的資料是LSB先送。 H.K. Chen
ktc
一般會員


發表:2
回覆:1
積分:0
註冊:2004-04-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-23 13:53:57 IP:163.23.xxx.xxx 未訂閱
1.電腦的那一端我是參考(C++Builder與RS232串列通訊控制,文魁出版)依書上   的參考範例做將第2與第3腳短路在同一電腦上形成一個測試環境,可以做傳送   與接收的動作 2. 3.AD0804已經可以正常顯示於LED上(類比電壓0~5V的輸入, LED上則為0~255的   變化)    目前是卡在51晶片端的程式部份..是不是AD每轉換一次之後51請求中斷, 然後再將此8bit的資料經UART傳送至PC端.. 是不是主程式傳送資料..中斷副程式..AD轉換副程式三個部份組成的
mymj
版主


發表:132
回覆:486
積分:608
註冊:2002-10-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-23 20:37:56 IP:203.67.xxx.xxx 未訂閱
參考範例做將第2與第3腳短路在同一電腦上形成一個測試環境,可以做傳送 與接收的動作 這種作法沒有交握線,兩台不同設備連線做高速傳送會掉資料 初期實驗可以考慮傳送速率低一點19.2k,9.6k,進一步在作有交握功能 要作成RS-232要有MAX232 RS232等晶片和51連接 關於8051程式規劃  強烈建議作成模組式的程式(每一功能寫成一個副程式) 1.初始化51 2.中斷副程式 3.AD轉換程式副程式 4.UART傳送程式    程式安排程序 1.3.2.4.3.2.4....    < >< >0,1的世界太寂寞,閒暇時候登登山,可以洗滌生硬的心靈
系統時間:2024-04-20 0:23:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!