Ⅰ 單片機的開發過程是怎樣的
單片機的開發過程: 這里所說的開發過程並不是一般書中所說的從任務分析開始,我們假設已設計並製作好硬體,下面就是編寫軟體的工作。在編寫軟體之前,首先要確定一些常數、地址,事實上這些常數、地址在設計階段已被直接或間接地確定下來了。如當某器件的連線設計好後,其地址也就被確定了,當器件的功能被確定下來後,其控制字也就被確定了。然後用文本編輯器(如EDIT、CCED等)編寫軟體,編寫好後,用編譯器對源程序文件編譯,查錯,直到沒有語法錯誤,除了極簡單的程序外,一般應用模擬機對軟體進行調試,直到程序運行正確為止。運行正確後,就可以寫片(將程序固化在EPROM中)。在源程序被編譯後,生成了擴展名為HEX的目標文件,一般編程器能夠識別這種格式的文件,只要將此文件調入即可寫片。在此,為使大家對整個過程有個認識,舉一例說明:
單片機試驗板ORG 0000H
LJMP START
ORG 040H
START:
MOV SP,#5FH ;設堆棧
LOOP:
NOP
LJMP LOOP ;循環
END ;結束
參考資料來源:吳鑒鷹吧
貢獻文檔:網路文庫《吳鑒鷹單片機項目實戰精講》
單片機開發板參考:吳鑒鷹單片機開發板(視頻教程詳細,資源豐富,適合 學習使用)
Ⅱ 51單片機實戰:與計算機非同步串列通信
猴!今兒扯串口,相對於並行——一口氣全把數據扔過去,串列顯得更加穩重——一位一位來。
串列就是這樣,只需要一條數據線(全雙工和同步串列時兩條),一位一位的傳過去。為了讓大家在直到你是在給我傳數據而不是外面的噪音或者是胡說八道,所以串列數據的各位要組裝幀(看正文中的 幀格式 )。乍一看,這種方式跟並行比肯定慢的一腿。但實際上,多虧了它的穩定性,可以在波特率極高的情況下依然保持穩定,這是並行所辦不到的(傳的快了或距離遠了就張牙舞爪了),所以發展到現在,串口已經把並口甩走幾條街啦。
並口傳輸的例子: 《51單片機實戰:液晶顯示器のLCD1602》
除此之外,串列傳輸分同步和非同步。同步除了傳輸數據外,還要傳輸時鍾信號,以保持雙方同步。另一種,非同步,就沒這么麻煩了,也是本例中要講到的,各自走各自的時鍾就好,只要幀格式和波特率都商量好是一樣的就好。
電平之前在文章 《51單片機實戰:液晶顯示器のLCD1602》 中介紹過,那裡只說了TTL,本例中由於要和計算機打交道,所以多了一種電平:RS-232C
在單片機中是TTL,電腦那邊傳出和接收都是RS232,所以兩種電平需要作轉換。
當當當!它就是干這活的。
舉個栗子,比如單片機從T1IN輸入TTL電平,轉換好的RS232電平就從R1OUT輸出。其他的照貓畫虎,這里不詳細說這個東西,因為咱們在Proteus里幹活,用不著轉換(Proteus光環)。
在此描述串列傳輸數據速率。
正兒八經的說,波特率乃 碼元 的傳輸速率,即每秒傳輸的碼元個數(碼元可以是任意進制的),並不是什麼每秒傳輸的比特數,大家注意。
波特來源於一個人的名字: Jean-Maurice-Émile Baud ot ,因此簡寫為Baud,單位符號:Bd。波特率可簡寫成Bd/s。
在串口通信中,其碼元就是二進制信號,所以波特率的數值等於比特率數值,但你不能說波特率就是比特率啊!
單片機的串口通信有四種方式(各方式具體是干什麼的,別著急,在後面),其中方式0和方式2的波特率是固定的。方式1和方式3的波特率是可變的,其脈沖周期由定時器1溢出產生。
其中 f 是系統晶振頻率,T1是計時器1, SMOD 是PCON中的最高位(PCON見相關寄存器的第一個)。
可以從上述公式看出,波特率不可變是因為直接與系統晶振頻率相關(晶振頻率不可變,除非換晶振),而可變是因為直接與T1的溢出率相關(溢出率可以改變)。
溢出率
在之前定時器應用的例子( 《51單片機實戰:定時器與數碼管的應用》 )中,我們計算的是溢出周期,也就是多長時間會溢出一次。這次我們用到的溢出率其實是同一個東西,取倒數就可以了。
詳見: 《51單片機實戰:定時器與數碼管的應用》 - 知識點 - 定時器/計數器 - 初值
11.0592MHz
為什麼要用這么蹩腳的數字作晶振頻率哈,就是跟這里有關。如果你已經用上述公式計算過串口方式1下的12MHz和11.0592MHz在9600波特率下的定時器初值,你就會發現,前者得出一個小數,而後者是個整數。
我們可沒辦法用小數賦初值,所以你若用近似的整數作初值,就意味著會產生誤差。
若用其他的晶振和波特率的話,請自行按前面的公式計算。
串列傳輸按比特來,一個個比特組成一個幀,幀需要一定的格式才能被雙方識別這是一個幀信息。
電源管理 寄存器,用於管理單片機的電源部分。
位元組地址: 87H ,不能位定址, reg52.h 中已定義,單片機復位時全部清零。
上表中出現的「串口方式」見下表的SM0和SM1。
串口控制 寄存器,用於設定串口工作方式。
位元組地址: 98H ,可位定址, reg52.h 中已定義,單片機復位時全部清零。
上表中波特率可變的方式,都由定時器1的溢出率控制。
當單片機接收到字元 a 時,點亮一個LED燈。傳送方式:9600波特率,8數據位,無校驗位,1停止位。
本例中我就不寫電腦端程序了,直接用現成的。
注意,這裡面我沒有放轉換電平轉換晶元(MAX232),只有在Proteus里可以這么干,現實中焊板子還是要做電平轉換的,這里這個軟體給簡化了。
COMPIM
虛擬終端
右下角那個東西是虛擬終端(Virtual Terminal),他可以直接截獲串口傳來的消息然後顯示出來。很方便做這方面調試時使用。
路徑: 邊欄 → instruments → virtual terminal
如果在調試的時候不小心把它的終端窗口關了,再次打開路徑: 菜單 → debug - virtual terminal ,注意是在啟動調試的情況下。
大年初二,拜訪完姥姥家就該看看單片機怎麼玩,你說是吧!這兩天快馬加鞭了,下一站:一周目大BOSS。各位加油。
Ⅲ MULTISIM怎麼模擬51單片機
1、⑴組建模擬電路
"" componet」對話框的「family」欄中先選取「805x」,="" 然後在「componet」欄下選取「8051」,最後單擊對話框右上角的「ok」按鈕。滑鼠箭頭將帶出一個「8052」模塊,在電子模擬平台上單擊滑鼠,將先彈出MCU向導對話框之一,第一欄是工作區路徑,第二欄是工作區取名,這里輸入「my mcu design1」,最後單擊下方的「Next」按鈕;
⑵再次彈出MCU向導對話框之二,共有4欄選項,第一欄為項目類型,一般選擇「Standard (標准) 」;第二欄選擇編程語言種類,單擊右側下拉箭頭,可以在「Assembly C匯編」和「C」語言之間選擇,這里選取「C」語言;則第三欄自動顯示「Hi-tech C51-Lite compiler」字樣; 第四欄可以輸入項目名稱,本文取名為「project1」,最後單擊下方的「Next」按鈕;
⑶再次彈出MCU向導對話框之三,有2個單選項:「Create emptyproject (創建空項目) 」和「Addsource file (添加源文件) 」, 這里選取「Add sourcefile」;下面欄中可以輸入後綴為「。 C」的源文件名,這里就用「LED001. c」最後單擊下方「Finish」按鈕完成。
⑷完成MCU向導對話框之後,這時能在電子模擬平台上顯示出原來調出單片機模塊U18051,右擊滑鼠退出元件操作。
⑸保存文件,在文件名欄輸入「led11」文件名,默認文件後綴「.ms10」。
⑹在電子模擬軟體Multisim10基本界面平台上,單擊主菜單「View /Design Toolbox」,在基本界面左側將打開「設計工具盒」窗口,單擊「led11」前的「 + 」號可以看到剛才命名的工作區「my mcudesign1」,在工作區下面是項目名「project1 」, 在項目名下面是源文件名「Led001. c」。
⑺編寫MCU源C語言程序(過程略);
⑻調出其他模擬元件,搭建單片機模擬電路,進行模擬;
2、51單片機用protues這個軟體模擬更好!裡面已經有現成的51模塊了。調用就可以用,電源、地、復位電路和時鍾等等都不用畫。只要把編好的程序下載到protues中的51單片機裡面就可以運行。外圍提供的器件可以自己搭建。非常好用。
3、可以參考《基於Multisim 10的51單片機模擬實戰教程:使用匯編和C語言》。
Ⅳ 51單片機接繼電器的原理圖如下,能不能幫我解釋一下原理
R1、DS1是指示用的,沒有控制意義,可以去掉,分析的時候不用管。
Q1受CPU控制,R4是基極限流,CPU輸出低電平時Q1導通,繼電器線圈有電流,繼電器吸合。
CPU輸出高電平時,Q1截止,繼電器線圈電流消失,繼電器釋放。
由於繼電器線圈本身相當於是一個電感,電流跳變的時候,線圈兩端會產生有反電勢,為了避免反電勢對電路中其他器件造成損壞,在線圈兩端加上續流二極體D1,對反電勢電壓進行續流。
使用這個電路的時候應注意Q1的射極電壓不能高於CPU的電源電壓,否則Q1不能完全截止,控制會失效。
Ⅳ 求用單片機製作簡易信號發生器的程序以及電路圖
<p>運放選OP07就可以了,由於DAC0832是單電源供電的,只能產握喚生正記性波形,所以利用外部運放來段滑凱實讓余現負極性波形的產生</p>
<p></p>