【正文】
務程序在附錄A中給出,這里給主線程服務程序的流程圖:圖54 主線程運行流程 本章小結本章針對上位機的編寫采用了新的方法,應用了先進的多線程技術,克服了平時流水線式的程序風格,注重了算法的引入。同時還介紹了基本的開發(fā)軟件,簡單的使用方法等,本章只給出核心程序及界面的編寫過程,具體的各個模塊請見附錄A。第六章系統(tǒng)調試系統(tǒng)調試分兩階段進行,第一階段對各個模塊進行單獨調試,第二階段時行系統(tǒng)聯合調試。 第一階段調試先測試電源模塊是否工作正常,分為空載測試和負載測試。空載測試:此時斷掉其它的接線,保留電源電路,以免出現不必要的損失。通電后電源指示燈正常,用萬用表測試,達到要求。負載測試:在正極和地之間接上10Ω水泥電阻,此時再測量電壓,達到要求,電源電路合格。接下來測試最小系統(tǒng)板模塊是否工作正常。CPU管腳測試:由于芯片是自行焊接,先確定各個管腳是否焊接完好,是否有短路。方法是用萬用表逐個測試,將萬用調到到二極管測試檔,先將萬用表的黑白兩個表筆接觸,聽到響聲,萬用表工作正常。再用萬用表逐個測量管腳。由于管腳比較多,應耐心聽。測試完畢,發(fā)現有個別管腳短路,發(fā)現在原理圖中這些管腳是接在一起的,說明CPU管腳與PCB接觸良好。緊接著上電,最小系統(tǒng)板電源顯示燈工作正常,測量最小系統(tǒng)板電源模塊電壓。將萬用表調到20V電壓檔,符合要求。插上JLink,打開電腦的Keil μVision4,打開任意STM32工程,點擊“build”,無錯誤,點擊“l(fā)oad”,此時下載程序正常,代碼成功燒入芯片,最小系統(tǒng)板工作正常。對于上位機和STM32則要測試其是否能正確發(fā)送與接收數據,此時需要借助串口調試助手。將RS232轉USB線插入電腦USB口后,連好控制電路,通電,各個指示燈已亮,工作正常。按正常步驟打開上位機,設置串口,點擊“走紙”,此時串口調試助手窗口顯示“0A 0A”,點擊“打印中文”,此時串口調試用手窗口顯示“1C 26”,工作正常。經過這些測試說明各個模塊工作正常,第一階段調試成功。 第二階段調試第二階段調試主要進行聯合調試,打開電腦上位機,連好線路,接通電源,先讓打印機自檢,出現在如下圖中數據,打印機工作正常。圖61 打印機初始化打印數據按圖53流程打開串口之后,在輸入窗口輸入“南京郵電大學”字樣后出現如下情況:圖62 亂碼再打印下也出現這種情況,仔細觀察下不難發(fā)再兩次的亂碼容量差不多,可能是哪些命令沒輸入。經查表發(fā)再漢字設置指令沒有發(fā)送,于是增加如下代碼,工作正常。Private Sub 打印中文ToolStripMenuItem_Click(ByVal sender As , ByVal e As ) Handles bytCmd(0) = 28 bytCmd(1) = 38 (bytCmd, 0, 2)End Sub最終打印效果如下圖所示:圖63 最終打印效果整個系統(tǒng)實物圖如下:圖64系統(tǒng)實物圖 本章小結本章是本課題的最后階段,針對各個模塊單獨進行了測試與調整,期間主要對電源模塊進行了散熱性能的優(yōu)化。其次則是對上位機程序的修改,在這個過程中要注重數據分析與整理,及時發(fā)現問題并解決問題。在多次調試之后系統(tǒng)穩(wěn)定性達到了設計要求,實現了基本功能。結束語本文主要介紹了基于CortexM3單片機進行微型熱敏打印機控制電路的開發(fā)流程。、ARM嵌入式和串口通信協(xié)議及PCB的設計。在畢業(yè)設計的這段時間內,通過不斷地嘗試、不斷地探索,嘗試了很多新的想法: 采用Visual Studio 2010開發(fā)上位機,這使得在功能及界面上變得更加靈活多變。 使用CortexM3單片機進行開發(fā),而不是MSP430單片機,緊跟時代的潮流,不能老使用以往的方案,而且運行速度大大提高 自行開發(fā)最小系統(tǒng)板,此次采用的是STM32F103VCT6,LQFP100腳封裝,焊接難度很大。由于受到了能力、時間等方面的制約,本系統(tǒng)在硬件、安全性和可靠性方面還有待進一步改善。由于編程水平有限,只實現了漢字、字母和數字的打印,而沒有實現特定符號及表格的打印。此外由于缺乏無線傳輸方面的開發(fā)經驗,沒有實現微型熱敏打印機的組網打印。另外當系統(tǒng)輸入的字符不正常時,可能會輸出亂碼??偨Y整個畢業(yè)設計過程,使得自己從軟件到硬件都有了一次提升,同時大大拓寬了知識面,同時也讓我充分感受到了ARM芯片的強大之處,也讓我認識到了做電子開發(fā)這一行必須緊跟時代前沿。致 謝經過為期三個月的畢業(yè)設計,微型打印機控制電路從最初的上位機開發(fā),再到硬件模塊的制作成功,整個系統(tǒng)的設計就全部完成了。在這段時間里,我的學習能力、動手能力和溝通能力都有了很大程度的提高。這不僅是我個人努力的成果,也歸功于老師的悉心指導和同學的無私幫助。通過設計微型打印機控制電路的開發(fā),我從中學到了關于人機界面軟件開發(fā)、串口通信、嵌入式程序設計等許多方面的知識。為了深入了解熱敏打印機,我向北京思普瑞特科技發(fā)展有限公司的工程師虛心求教;,我和我院的學長做了多次的交流;為了完成嵌入式程序的設計,我從圖書館查閱了大量的資料。我從中體會到了合作精神的重要,提升了人際交往的能力,也學到了寶貴的學習方法。特別要感謝指導我的張騰飛老師和自動化學院的研究生戴曉罡學長,正是你們負責的督促和耐心的指導,給了我不斷克服困難的勇氣。同時也要感謝ST公司STM32論壇的熱心網友和南郵自動化學院實驗室的負責同學。最后,向從百忙之中抽出時間審閱我論文和參加論文答辯的各位老師致以衷心的感謝!參考文獻[1] 李寧,基于MDK的SAM3處理器開發(fā)應用[M]. 北京:北京航空航天大學出版社,.[2] (英) Joseph Yiu著,ARM CorterxM3權威指南[M] 宋巖譯. 北京:北京航空航天大學出版社,2009.[3] 劉同法, 肖志剛, 彭繼衛(wèi). ARM CortexM3內核微控制器快速入門與應用[M]. 北京:北京航空航天大學出版社,2009.[4] 張綺文, 解書鋼. ARM嵌入式常用模塊與綜合系統(tǒng)設計實例精講[M]. 北京:電子工業(yè)出版社,2008.[5] 韓山,郭云,付海艷. ARM微處理器應用開發(fā)技術詳解與實例分析[M]. 北京:清華大學出版社,2007.[6] 侯殿有,才華. ARM嵌入式C編程標準教程[M].北京:人民郵電出版社, 2010 .[7] 王幸之,鐘愛琴,王雷,王閃. AT89 系列單片機原理與接口技術[M].北京:北京航空航天大學出版社,.[8] 鄧紅等, 用字位顯示接口驅動步進電機的設計方法[J],微計算機信息 2005 年第81 期.[9] 的高速行式熱敏打印機控制板的研制[J].電子技術應用,2004.[10] Jason Buxton,Thermal Printer FTP628MCL101 Production Specification [D]. FUJITSU .[11] Thearon Willis. Visual Basic 2005數據庫入門經典[M]. 楊浩 譯. 北京:清華大學出版社. 2007.[12] STMicroelectronics,STM32F103XX USER39。S MANUAL[D]. [出版者不詳], 2008.[13] Bill Evjen , Billy Hollis , Professional 2003[M] , John Wiley amp。 Sons , Inc . 2004.附錄A 上位機軟件部分代碼主線程服務程序 Sub MyThread1() Dim count As Integer Dim strRece As String While 39。bytTab(0) = () 39。 += (bytTab) If 0 Then count = ReDim buff(count) (buff, 0, count) If = 16進制 Then strRece = For i As Integer = 0 To count 1 strRece += Hex(buff(i)) strRece += Next += strRece Else += (buff) End If () = Len() () 39。自動滾動到底 End If End While End Sub串口設置 Private Sub Button1_Click(ByVal sender As , ByVal e As ) Handles Dim strBaud As String If Then () End If strBaud = If ( And strBaud ) Then = = CInt(strBaud) Else MsgBox(對不起,輸入錯誤,設定未改變!, , 警告) End If 39。設置串口 End Sub打開串口 Private Sub Button2_Click(ByVal sender As , ByVal e As ) Handles If = False Then Try () = 設備已連接 Catch ex As Exception MsgBox(, , 警告) Exit Sub End Try () End If 39。打開串口 End Sub開始接收 Private Sub Button3_Click(ByVal sender As , ByVal e As ) Handles Strt = New (AddressOf MyThread1) () bolSp = True 39。啟動串口線程 End Sub關閉串口 Private Sub Button5_Click(ByVal sender As , ByVal e As ) Handles If Then () Try () = 設備斷開 Catch ex As Exception MsgBox(, , 警告) End Try End If 39。關閉串口 End Sub串口暫停 Private Sub Button4_Click(ByVal sender As , ByVal e As ) Handles If bolSp Then 39。() () bolSp = False Else () () bolSp = True End If 39。暫停串口線程 End Sub Sub SPinit() Dim i As Integer獲取串口號 () i = 0 If 0 Then While i ((i)) i += 1 End While End If End Sub退出程序 Private Sub Button8_Click(ByVal sender As , ByVal e As ) Handles If Then ()