單片機系列文章為我們團隊其他成員的文章,原發表于與非網,先整理項目文章集中于此
原地址:http://www.eefocus.com/bbs/article_1156_541662.html
轉載須注明原地址
首先說下,我和另外一位同學是在智能家居系統中負責單片機部分的成員,我們是計算機專業的,初次接觸單片機,以下內容僅適合菜鳥的單片機入門教程。
我們想要實現的功能是PC和51單片機的串口通信,即PC發指令給51,51能夠做出相應的反應,51那邊按了有關按鈕后,PC能收到這個信號。這對于電氣,動機專業的同學來說是再簡單不過的事了,但是我是學計算機軟件的,對硬件不懂。所以下面我要寫的內容都是我一步一步摸索的過程。希望對那些還沒有入門的同學有一些幫助。
我打定主意要學51后,就去網上搜資料。加了2個51群。有什么不懂的就去群里問。他們都推薦先看郭天祥的《新概念51單片機 C語言 教程》(絕非打廣告)。于是網上下了一個PDF(附件太大了就不上傳了,自己去網上搜)。一點點開始看,當然了,對于學計算機的我來說,C語言還是懂一點的,所以看起書來比較輕松,一邊看一邊對著KEIL和proteus練習、仿真。總結起來就一點:查表。各種芯片,哪個管腳有什么功能等等都是查表,然后寫程序,有點繁瑣,于是我就直接看和我的任務有關的部分,就是51和PC的串口通信那部分。
關于這一部分,網上也都有很多教程,由于當時我還沒有買各種元件,所以打算先在筆記本上仿真,于是我找了很多資料,但都說得模棱兩可,而且有關于筆記本和51通信的資料很少,其中我看到一篇文章描述的還算清楚,百度文庫地址:http://wenku.baidu.com/view/49c49c0d6c85ec3a87c2c5f0.html 我照著上面的步驟做,PC和51還是不能通信,后來可以說是經過我的各種折騰吧,也不知道怎么的就連上了。下面把我的詳細過程說下。
在筆記本上模擬PC和51通信:
先看一下電路圖吧:
此電路的主要功能就是在PC上發送一個數字,7段數碼管能顯示相應的數字,發送指定的字母,相應的LED燈會亮或滅。另外LED還可以被物理開關控制。網上說在proteus里仿真不需要MAX232和晶振,但是在實際連電路的時候還是需要的。這里我因為我當時不知道怎么連MAX232所以就沒有連。好了,要想實現在筆記本上模擬51和PC通信,需要以下軟件:
1) proteus
2) 虛擬串口調試軟件(因為筆記本沒有物理串口,所以只能虛擬出來)
3) 串口調試助手
Proteus安裝沒什么好說的,虛擬串口調試軟件在下面的附件中,安裝很簡單,網上找一下,打開虛擬串口軟件,它的界面是這樣的:
左邊的physical ports就是物理串口,由于我的筆記本沒有物理串口,所以為空;virtual ports就是虛擬串口,我之前用過,所以有4個串口,other virtual ports其他串口,不管。
你現在要做的就是在右邊,端口一,二上選擇com1,com2(因為有些串口調試助手只能選擇1,2兩個口,所以為了照顧后面的操作,最好選擇com1,com2),然后點擊添加端口。這樣左邊virtual ports就會多出2個串口,像上圖,com2后面有[9600-N-8-1]說明有程序在用這個端口,波特率是9600,校驗位為NONE,數據位為8,停止位為1等。其他的就是空的,沒有程序在用。
這樣就虛擬出了2個串口,比如COM1和COM2。
然后你打開proteus軟件,打開上面的電路圖,雙擊單片機選擇相應的.hex文件,設置晶振等。重要的一步是:雙擊compim,設置見下圖。
其中的physical port我們選com1,表明這相當于51引出來的一個串口,波特率設置為9600,注意這里的9600要和你的源代碼相一致,我的源代碼(在末尾附件)中有TH1 = 0xfd;這樣一句,就是設置了波特率為9600,所以你這里也要選9600. 校驗位為NONE,數據位為8,停止位為1等。設置好后點OK保存。到這一步你就把proteus中的操作完成了。
(由于附件受限,另開一貼)