用Proteus學習51單片機之串口

2020-12-13 電子產品世界

  串口的理論知識我就不記了,網上多的是。51單片機的串口,有4種方式,分別為方式0,方式1,方式2,方式3.由於我的目的,使用串口主要是為了和電腦進行通信,所以主要使用方式1(事實上我也只學了方式1,其他方式等用到的時候再學吧)。

本文引用地址:http://www.eepw.com.cn/article/201701/342562.htm

  串口的方式1,其波特率與定時器T1相關,公式如下:

  方式1波特率 = (2SMOD×32)/(T1溢出率)

  SMOD是一個寄存器,一般我們就取0了

  T1的溢出率,即每秒T1計數滿幾次(相關知識可以看看前面筆記的記錄)

  正是因為如上的公式,所以設置TH1和TL1的初值,就能控制方式1的波特率了。不過一般波特率是固定的那麼幾種,像2400,4800和9600等,要用的時候查一下初值就成了。

  由於用的是Proteus來模擬串口(我的筆記本電腦根本沒串口),所以需要一個虛擬串口的軟體。推薦使用的是Visual Serial Port Driver,用起來非常的簡單,直接點擊Add Pair就成了,會自動增加一對串口,模擬的時候,分別連接這兩個埠就成。添加好後,可以把這個程序關閉,埠仍舊可以使用。

  要說一下的是,這軟體是一個收費軟體(能免費使用14天),所以,如果只想學習一下串口的話,我們就自私一下吧,不購買了,直接使用一個控制軟體時間的軟體(比如Run As Date),讓程序以為時間一直沒變,就能一直試用了……

  要試驗一下Proteus是否可以進行串口連接,可以直接打開安裝目錄下的\SAMPLES\Interactive Simulation\COMPIM Demo,設置好波特率等參數後,使用「串口調試助手」,向Proteus發送數據,看看能否接收到。

  運行後的效果:

  如果像上圖一樣,在「助手」中輸入數據,可以在Proteus的虛擬終端中接收到,說明可以進行串口的仿真了。如果不能接收,則需要檢查一下,波特率等參數是否設置的一致,特別是串口,要設置的「成雙成對」,如從「串口助手」的COM1發送到Proteus的COM2

  ------------------------------------------------------------------

  開始進入實際編碼,我希望寫一個上位機程序,來控制單片機,單片機很簡單,就是從P2口,接8個LED燈,而上位機程序則可以控制燈的亮或者暗,原理圖如下:

  實物做的時候,由於電腦的串口和單片機的串口電平不同,需要使用MAX232晶片做電平轉換,但是這裡是模擬,就不加晶片了,同樣能正常運行。加上虛擬終端,是為了直接看到接收到的數據,方便調試。

  上位機程序如下圖,使用C#編寫,編程工具是VS 2008,因為用的是最簡單的語法,所以是基於.NET 2.0寫的。

  上位機寫的特別簡單,選擇好埠後連接,然後控制單片機。可以做到控制任意燈的開和關,下面的控制則可以做到全開或全關,流水燈則是讓單片機演示一次流水燈(演示期間不再接受上位機控制)。上位機的控制代碼特別簡單,就是給單片機發送一個8位的byte(這個花了我很多時間,因為單片機上的char是8位的,我自然而然的把C#上的char也當成是8位了,結果就是發給單片機的時候會出現錯誤,感謝群裡大蝦的熱情幫助)。控制格式如下(最低位為第0位):

  位數作用

  0表示選擇第幾個燈,0001表示選擇第1個燈,0101表示選擇第5個燈,當第5,6,7位任意位為1時,則無效

  1

  2

  3

  4表示選擇的燈是開還是關,1表示開

  51表示流水燈

  61表示全滅

  71表示全開

  數據位從高位檢查起,所以如果第7位為1 ,則後面幾位不管設置成什麼,都會是燈全開的效果。

  單片機程序和上位機程序都寫得很簡單,裡面有詳細注釋,應該一看就能明白了。演示效果如下(錄製的不是很流暢……):


相關焦點

  • 一種基於Proteus的單片機虛擬實驗室的建立方法
    0 引 言  單片機的學習是一個實踐性很強的過程,目前的單片機實驗室基本採用硬體仿真設備搭建,受資金和場地的限制,單片機實驗室配置的靈活性和完整性受到一定的限制。一般的虛擬實驗室僅包含單片機系統的調試,本文在此基礎上又加入了與上位機的聯合調試。  在此,以使用VB通過RS 232串口控制51單片機LED的亮滅為例,介紹基於PC和軟體建立單片機虛擬實驗室的過程。  1 單片機虛擬實驗室的構成  原理框圖如圖1所示。
  • 單片機使用printf函數的兩種辦法
    今天就簡單來說說怎麼在51單片機中使用"printf"函數:包括使用自帶的printf函數和自己動手寫一個printf函數,再貼代碼之前先介紹幾個相關的知識,主要用於自己寫printf函數。③內部拓展RAM定義:集成在單片機內部的數據存儲器,在物理上是內部,但邏輯上是外部,訪問時需要使用MOVX或者xdata訪問,具體可以看STC8051手冊,如下所示從這裡可以看出,STC12C5A60S2單片機內部含有1024byte=1Kbyte的內部拓展RAM,在訪問的時候,使用C語言的時候,需要加上xdata才可以訪問,使用彙編的時候需要用MOVX指令訪問
  • proteus仿真之8位數碼管動態掃描顯示試驗
    /*Proteus 仿真之8位共陰數碼管動態掃描實驗*/,我在這裡把簡單的過程及源文件發上來,供入門的朋友學習。 DHT11溫溼度檢測器 基於51單片機的proteus仿真 單片機源程序如下:#include <reg52.h>
  • 51單片機與PC通信總結
    51單片機的串口,是個全雙工的串口,發送數據的同時,還可以接收數據。當串行發送完畢後,將在標誌位 TI 置 1,同樣,當收到了數據後,也會在 RI 置 1。
  • 51單片機輕鬆入門與實踐 — 暢學單片機
    ,講解當前最熱門的51單片機的C程序設計!使廣大學者可邊學邊練習製作該模塊,既能高效地系統學習知識,又能提高動手能力。      在多角度、多方面的實例化講解中,讀者不僅掌握了單片機系統開發的基本技能,還開闊了單片機流行應用的視野。因此本課程適合所有51單片機應用開發人員,電子愛好者、大中院校相關專業學生、工程技術人員的學習課程,也可作為短期培訓課程,是單片機愛好者從入門到深入的經典課程。
  • 學習電路仿真:基於proteus電路仿真軟體的步進電機仿真
    本文中,將基於proteus電路仿真軟體的步進電機仿真,一起來了解下吧。步進電機廣泛應用在生產實踐的各個領域。它最大的應用是在數控工具機的製造中,因為步進電機不需要A/D轉換,能夠直接將數字脈衝信號轉化成為角位移,所以被認為是理想的數控工具機的執行元件。
  • 暢學三合一51單片機實戰教程
    ,講解當前最熱門的51單片機的C程序設計!使廣大學者可邊學邊練習製作該模塊,既能高效地系統學習知識,又能提高動手能力。      在多角度、多方面的實例化講解中,讀者不僅掌握了單片機系統開發的基本技能,還開闊了單片機流行應用的視野。因此本課程適合所有51單片機應用開發人員,電子愛好者、大中院校相關專業學生、工程技術人員的學習課程,也可作為短期培訓課程,是單片機愛好者從入門到深入的經典課程。
  • 51單片機實現scanf和printf函數
    最開始學習C語言時,使用printf和scanf進行格式化輸入輸出十分方便。學習單片機有很長時間了,之前要再屏幕上顯示一個變量或者通過串口傳出一些變量值觀測的話,需要進行一系列的取餘取整運算,很是麻煩。
  • 用Proteus學習51單片機之數碼管
    用鎖存器的目的,是為了減小IO口的使用,本來至少得用15根IO口的,用了鎖存器後,只需要用10根IO口,若是繼續增加數碼管,IO口的增加也是一根根增加了。這樣,就做到了單片機的1組輸出腳,可以控制多個設備的目的。
  • 51,AVR,PIC,MSP430,STM32單片機比較
    >stc 51系列:(增強型51單片機)價格便宜(從性價比方面說),功能多,抗幹擾能力強(如根據宏晶所說,那stc的抗幹擾能力就是超強,超屌.),eeprom大,出廠時程序引導區就已經加密,並且stc解密的市面價格在1.5w到2.5w之間,可見解密難度大,在一定程度上保護了單片機工程師的利益和產品開發商的利益。生產時就已經考慮到與傳統51的兼容問題,兼容做的很好,又增加了許多功能,軟復位功能我比較喜歡。缺點:資料就是宏晶網上的資料,資料少,不適合初學者---我指學習它自己增加的功能。
  • 安卓手機與51單片機間藍牙通信的實現
    藍牙耳機今天分享下如利用藍牙4.0模塊建立安卓手機和51單片機間的藍牙通信。(1)安卓智慧型手機一部,只用是近幾年的智慧型手機都內嵌藍牙模塊,藍牙4.0及以上(2)任意51單片機最小系統都可使用,如下文連結。
  • 淺談STM32和51單片機之間的區別
    單片微型計算機簡稱單片機,簡單來說就是集CPU(運算、控制)、RAM(數據存儲-內存)、ROM(程序存儲)、輸入輸出設備(串口、並口等)和中斷系統處於同一晶片的器件,在我們自己的個人電腦中,CPU、RAM、ROM、I/O這些都是單獨的晶片,然後這些晶片被安裝在一個主板上,這樣就構成了我們的PC主板,進而組裝成電腦,而單片機只是將這所有的集中在了一個晶片上而已。
  • 單片機視頻教程
    :http://www.eepw.com.cn/article/274018.htm一、單片機視頻教程- -銳志51單片機開發板  銳志51單片機開發板視頻教程網址為:http://v.eepw.com.cn/video/playlist/id/4269  是廣大電子愛好者自學51單片機的好去處
  • Proteus 與 kilec51聯機調試入門實驗
    這是在Proteus 中做的簡單圖 用單片機AT89C51 1K電阻 LED-RED 5V電源 做成的;相信對於Proteus 這是一張簡單的圖,但是這個是可以仿真的,從電路上我們知道只要給P2.7口低電平二極體就會發光;所以該試驗就是通過聯機用程序實現二極體的亮;這張圖命名為led.dsn,保存在test中; 下面開始做kile部分的程序了:啟動keil如下:
  • 用單片機實現位邏輯運算
    推薦閱讀 MSP430單片機寫Info Memory MSP430F5438A單片機在寫Info Memory時,需要先把整頁數據擦除,才能寫進去。否則寫失敗。
  • 結合單片機學習板學習c語言之流水燈製作--intrins.h頭文件
    本文引用地址:http://www.eepw.com.cn/article/201608/294948.htm  源程序:  /*本程序結合STC89C51使用,晶振12M,中間用到串口中斷子程序是利用STC單片機的自定義ISP下載功能,自定義下載命令是FEH,關於自定義下載請參考《用51單片機就用STC51,手把手教你STC51的ISP
  • 51單片機彙編指令的記憶方法
    MCS-51指令雖多,但按功能可分為五類, 其中數據傳送類28條,算術運算類24條,邏輯操作類25條,控制轉移類17條,布爾位操作 類17條。在每類指令裡,根據其功能,抓住其源、 目的操作數的不同組合,再輔之以下方法,是完全能記住的。 我們約定,可能的目的操作數按(# data/direct/A/Rn/@Ri )順序表示。
  • 基於MSP430單片機編程器的設計
    本文提出一種採用MSP430F149單片機作為CPU控制核心的編程器。與51單片機編程器相比,MSP430單片機編程器增加了I2C存儲模塊,可無需電腦利用該編程器對晶片進行燒錄,使燒錄過程更方便、快捷。
  • 51單片機教程
    導讀:51單片機是最早應用的單片機,到現在為止也有很多都在用,優點,性價比非常高,簡單易學,在中國的市場佔有率還是蠻高的。目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。小到電話,玩具,手機,各類刷卡機,電腦鍵盤,彩電,冰箱,空調,電磁爐,大到汽車,工業自動控制,機器人,飛彈導航裝置,你可以用51單片機用它來做個鬧鐘,電飯煲定時控制器,電子門鎖,IC卡讀取識別器。電飯煲定時控制器如圖本文引用地址:http://www.eepw.com.cn/article/272993.htm