燒錄程序的本質
“燒錄”是比較專業的說法,很多初學者第一次聽這詞還以為跟火有關,莫名其妙的“燒錄”是啥意思?燒錄其實就是下載,燒錄程序就是下載程序。下載好理解了吧,下載電影,下載歌曲,讓播放器去播放。此處的下載程序跟下載歌曲的“下載”完全是一回事。有人會問,下載歌曲到手機,手機是成品,下載程序到單片機,單片機也是成品?新買回來的單片機不是一張白紙的電子元件嗎?其實,新買回來的單片機就是一個成品,它不是白紙,它內部已經嵌入了一段系統程序,這個系統程序就像你剛買回來的手機就幫你預裝了安卓系統一樣,只是它的用戶存儲區是空白的。比如手機,你往這個存儲區里存電影就可以看電影,存音樂就可以聽音樂。比如單片機,你往這個存儲區存不同的程序就可以讓單片機做不同的事。而預裝在新單片機內部的系統程序就是專門負責跟外部接口通訊,同時負責把hex格式的程序代碼存放在單片機內部正確的位置,這個就是燒錄程序(下載程序)的本質。這樣一比喻,所以.hex格式的燒錄文件跟.MP3格式的音樂文件在存儲本質上是一樣的。
再回顧總結一下,燒錄程序的本質是:把單片機當做一個存儲器,每一條程序指令都對應一個唯一的存儲地址,把這些指令以字節為單位一條條存儲到指定的存儲地址中,這就是燒錄程序的本質。對于STC89C52RC單片機,在下載程序時需要上位機軟件和一根USB轉串口線。上位機軟件負責把.hex格式的機器碼文件打開,機器碼文件里面記錄著每條程序指令所對應的地址信息,下載過程時,上位機軟件根據.hex文件記錄的指令內容和對應的地址信息,經過USB轉串口線,跟單片機的預置系統程序進行串口通訊,從而把.hex記錄的信息傳輸到單片機內部的flash存儲器中,實現了程序的燒錄下載。
燒錄程序所需的工具和軟件
(1)裝有XP或者WIN7系統的電腦一臺。
其它更高系統的我還沒測試過,應該問題也不大。
圖8.2.2
(2)帶9針串口、1顆LED燈、電源撥動開關、能5V電源供電的stc89c52rc單片機核心板一塊。
單片機的學習離不開硬件平臺的編程練習,本教程用的是堅鴻51學習板,此學習板的原理圖在第七節已經分享到附件資料里。大家也可以根據原理圖自己焊接一塊學習板來學習,或者用其它廠家帶有串口的單片機學習板來學習。
串口是用來單片機跟電腦通訊的接口,是STC89C52RC單片機下載程序的通道。LED燈用來觀察單片機是否正常運行程序。電源撥動開關方便燒錄程序時提供所需的斷電和上電的操作。本單片機系統是5V供電。
圖8.2.3
我之所以推薦主控芯片是CH340的USB轉RS232串口線,因為CH340的下載線在燒錄程序時很穩定可靠。這款USB轉串口線可以在淘寶購買到。
圖8.2.4
(4)5V供電的USB電源線一條。
此USB線可以從電腦的USB口取電,也可以從輸出5V的手機充電器處取電。但是我建議大家用輸出5V的手機充電器來供電,因為很多電腦的USB口供電干擾比較大,會影響程序燒錄。
圖8.2.5
(5)主控芯片是CH340的USB轉RS232串口線驅動安裝程序。
此驅動程序USB轉RS232串口線的廠家通常都會提供,但是建議用我在附件資料里推薦給大家的驅動程序,畢竟這個程序經過我本人驗證測試過。
圖8.2.6
(6)燒錄程序和串口助手功能都具備的“stc-isp-15xx-v6.85I”上位機軟件。
這是宏晶單片機官方免費提供的上位機軟件,可以在宏晶單片機的官網上下載獲取。這款軟件有很多功能,除了有下載程序和串口助手的功能外,還可以用來配置自動生成所需的初始化代碼。當然,本教程后面主要是用到此軟件的下載程序和串口助手這兩個功能。所以大家所選的軟件版本必須是v6.85I版本或者以上的版本,因為早些年有一些版本只有燒錄功能但是沒有串口助手的功能。
把.hex文件燒錄到單片機的操作流程
前面第6節內容已經教大家把一個驅動LED燈閃爍的C源代碼編譯成.hex文件的操作流程,同時在D盤的“stc89c52rc”文件夾里已經生成了一個“stc89c52rc.hex”的機器碼文件,現在就要教大家如何燒錄此文件到單片機內。此程序的功能是讓單片機驅動一顆LED燈閃爍。
圖8.3.1.1
圖8.3.1.2
圖8.3.1.3
第一步:安裝USB轉串口驅動程序。
上位機“stc-isp-15xx-v6.85I”燒錄軟件就是安裝在電腦端的用戶軟件,電腦跟單片機進行通訊,需要一根USB轉串口線,欲使USB轉串口線正常工作,必須預先安裝USB轉串口的驅動程序。具體的操作是這樣的:在本連載貼附件資料處下載“USB轉串口的驅動程序CH340.zip”文件壓縮包,解壓后打開此文件夾,找到“SETUP.EXE”這個安裝應用程序,雙擊啟動,在彈出的界面中,單擊“安裝”按鈕即可完成驅動程序的安裝。
圖8.3.2.1
圖8.3.2.2
圖8.3.2.3
圖8.3.2.4
第二步:硬件線路連接,同時記錄串口號。
把USB轉串口線插入電腦USB口,此時USB轉串口線的另外一端連接51學習板的9針串口。同時,電源線一端用輸出的5V手機充電器USB端口供電,電源線另一端連接51學習板的USB供電端口,此時可以通過51學習板的電源撥動開關來控制斷電和上電。然后是查找串口號,方法是:以電腦WIN7系統為例,右擊桌面“計算機”,單擊選擇下拉菜單的“管理”選項,在彈出的窗口中,點擊“設備管理器”選項切換到對應的設置窗口,雙擊“端口(COM和LPT)”選項,在展開的下拉選項中,會看到“USB-SERTAL CH340(COM3)”,這個COM3就是我們要記住的串口號,記住此串口號,后面的步驟要用到。你們的串口號不一定是COM3,請以你們電腦顯示的串口號為準。
圖8.3.3
第三步:打開上位機用戶軟件“stc-isp-15xx-v6.85I.exe”。
這個軟件可以在宏晶單片機的官網下載獲取,獲取到的軟件壓縮包只需解壓后就可以使用,不用安裝,
直接雙擊打開“stc-isp-15xx-v6.85I.exe”,此時會彈出“溫馨提示”的窗口,我們按“確定”就可以進入到真正的工作界面了。
圖8.3.4
第四步:選擇單片機型號。
在“單片機型號”的下拉菜單中選擇“STC89C/LE52RC”這個型號。如果中途彈出推薦選用其它型號的窗口,可以忽略它,我們用來學習只要認準“STC89C/LE52RC”這個型號就可以了。
第五步:設置串口號。
點擊“串口號”右側的選項,在“串口號”的下拉菜單中,選擇跟前面第二步所記錄一樣的串口號COM3(你們的串口號不一定是COM3,請根據你們的電腦實際顯示情況來選擇)。
第六步:設置最低波特率和最高波特率。
“最低波特率”設置為2400,,“最高波特率”設置為9600。波特率如果設置太高,可能會導致燒錄(下載)不成功。
第七步:導入.hex格式的機器碼文件。
點擊“打開程序文件”的按鈕,在彈出的對話框中,選擇D盤下“stc89c52rc”文件夾目錄下的“stc89c52rc.hex”,雙擊把“stc89c52rc.hex”導入到上位機用戶軟件。
圖8.3.8
第八步:啟動下載。
點擊“下載/編程”的按鈕,發現“正在檢測目標單片機。。”的提示信息,此時需要通過電源波動開關把51學習板重新斷電然后再上電才能正常下載,很多人也把這個重新上電的過程稱為“冷啟動”。之所以要重新斷電再上電,是因為單片機內部預置的系統程序只在上電短暫的瞬間才會檢查一下是否接收到需要重新燒錄程序的指令,如果沒有接收到燒錄指令,單片機整個話語權就由原來的系統程序轉交給我們的用戶程序來接管,所以此串口后面的時間就給我們用戶程序來使用。因此每次燒錄程序時,先啟動上位機的下載命令,此時上位機不斷發送請求下載的命令給單片機,但是此時單片機并不理會這些指令,因為此時單片機的話語權已經交給了我們的用戶程序,此時并不是預置系統程序在掌控,所以除非重新斷電然后再上電那一瞬間才會讓系統內置程序去檢測并且響應此下載命令。另外多說一句,其實不是所有廠家的單片機在燒錄程序時都需要“冷啟動”,也不是所有單片機都支持串口燒錄,各廠家的單片機燒錄程序方式會有一些差異,但基本原理是一樣的,大同小異。
圖8.3.9
第九步:“冷啟動”后觀察是否操作成功的信息。
執行完前面第九步的“冷啟動”后,如果發現有“。。。操作成功!”的提示信息,就說明程序下載成功了。此時會發現51學習板上面的一顆LED燈不斷閃爍,是因為我們的LED燈程序驅動它才開始閃爍的,說明我們的程序在單片機上正常工作了。
補充說明:
(1)以后只要每次重新編譯了C源代碼后,都會生成最新版本的.hex格式文件,所以每次燒錄程序時,必須重新返回第七步,重新執行一次導入最新版本.hex格式文件的操作,確保被燒錄的程序是最新版本的.hex燒錄文件。
51學習板下載程序失敗時的解決辦法
(1)可以先松一下單片機卡座,稍微挪動一下單片機,然后再卡緊單片機。卡座必須卡緊單片機,避免接觸不良。
(2)改變供電電源,很多電腦的USB口供電電源干擾非常大,嚴重影響下載程序,請把USB電源線插入到手機充電器5V的USB接口,效果顯著,明顯提高了下載的成功率。
(3)檢查確保所選擇的單片機型號是STC89C/LE52RC,如果軟件彈出推薦其它型號的單片機窗口,不用管它,我們就選STC89C/LE52RC。
(4)檢查STC-ISP燒寫軟件是否選擇匹配的COM口。
(5)單片機是靠串口燒錄程序進去的,單片機的串口是P3.0,P3.1兩根線經過232轉換芯片,然后才與USB轉串口線連接的。因此,在燒錄程序時,請確保P3.0,P3.1兩個IO口不能跳線連接到其它外圍元器件上。
(6)點擊“下載/編程”后,記得再斷電并且重新上電一次。看看是否燒錄成功。
(7)確保最低波特率一直設置為2400,最高波特率為9600。如果還不行再把最高波特率也改成2400試試。
(8)如果還不行,就退出軟件,拔掉USB轉串口線,同時斷電(必須把整根電源線拔出!),重新插入USB串口線,重新插入電源線開電,重新打開軟件。
(9)如果還不行,學習板先斷電(必須把整根電源線拔出!),然后重啟一次電腦。
(10)總之:如果還不行,就按上述步驟多折騰幾次。
(11)最后實在不行,就嘗試更換到其它USB口,或者嘗試更換到其它電腦上試試。
評論